blob: d256886913a172b952b3eb590cbe3bd565f35be1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
---
title: 创建一个新的协议
slug: Mozilla/IPDL/Creating_a_New_Protocol
translation_of: Mozilla/IPDL/Creating_a_New_Protocol
---
<p><font><font>这是有关如何向构建中添加新IPDL协议的详细信息的快速入门。</font><font>您应该首先</font></font><a href="https://developer.mozilla.org/en/IPDL/Tutorial" title="zh / IPDL /教程"><font><font>了解IPDL的工作原理</font></font></a><font><font>!</font></font></p>
<h3 id="创建协议文件"><font><font>创建协议文件</font></font></h3>
<p><font><font>协议文件应与实现它的代码位于同一目录中。</font><font>协议名称以P开头,并且协议文件必须命名为PProtocolName.ipdl。</font><font>IPDL协议应位于mozilla命名空间或子命名空间中。</font></font></p>
<p><font><font>要将文件连接到构建,需要将IPDL文件添加到最近的moz.build文件中的IPDL_SOURCES。</font><font>有关</font><font>示例,</font><font>请参见</font></font> <a href="http://mxr.mozilla.org/mozilla-central/source/dom/ipc/moz.build?rev=8a595b6c5750#71">dom/ipc/moz.build</a> <font><font>。</font></font></p>
<h3 id="协议层次结构"><font><font>协议层次结构</font></font></h3>
<p><font><font>除非您正在从事某些特殊项目,否则您的协议将适合多进程插件或选项卡的协议层次结构。</font><font>插件的顶级协议是PPluginModule。</font><font>选项卡的顶级协议是PContent。</font><font>您应该知道哪种协议将管理新协议,以及会导致哪些生存期问题。</font><font>如有疑问,请在#content频道中询问IRC。</font></font></p>
<h3 id="建立新协议"><font><font>建立新协议</font></font></h3>
<p><font><font>要构建新的协议声明并生成标头,请在</font></font>ipc/ipdl<font><font>中创建:</font></font></p>
<pre><code>make -C objdir/ipc/ipdl</code></pre>
<p><font><font>如果存在协议级别的错误,则IPDL编译器将打印相关的错误消息并停止。</font><font>要查看生成的标题,请在中查看</font></font><code><em>objdir</em>/ipc/ipdl/_ipdlheaders</code><font><font>。</font></font></p>
<h3 id="创建实现"><font><font>创建实现</font></font></h3>
<p><font><font>C ++实现从IPDL生成的抽象类PNewProtocolParent和PNewProtocolChild继承。</font><font>它必须实现抽象方法以在每一侧接收适当的消息。</font><font>可以从生成的PNewProtocolParent.h和PNewProtocolChild.h标头中读取方法签名。</font></font></p>
<h3 id="编写测试"><font><font>编写测试</font></font></h3>
<p><font><font>PBrowser管理的协议必须使用带有的mochitest-chrome测试框架进行测试</font></font><code><browser remote="true"></code><font><font>。</font><font>出于测试目的,可以在JPW包装器上使用同步调用。</font><font>使用xpcshell测试框架可以测试与特定窗口无关的协议,该框架在Electrolysis中具有其他原语,用于在内容过程中启动和运行JS命令。</font></font></p>
|