zoukankan      html  css  js  c++  java
  • (FFOS Gecko)

    当我们实现了一个module,并且通过navigator.mozCustomModule访问

    根据module的实现方式的不同,有几种不同的做法。

    1. XPCOM component(Javascript实现): 

      在chrome.manifest中配置(加粗部分):

    component {ComponentID} CustomModule.js
    contract ContractID {ComponentID}
    category JavaScript-navigator-property mozCustomModule ContractID

      以TCPSocket为例:

    component {cda91b22-6472-11e1-aa11-834fec09cd0a} TCPSocket.js
    contract @mozilla.org/tcp-socket;1 {cda91b22-6472-11e1-aa11-834fec09cd0a}
    category JavaScript-navigator-property mozTCPSocket @mozilla.org/tcp-socket;1

    2. XPCOM C/C++ 实现:

      同下文WebIDL C/C++ 实现

    3. WebIDL Javascript实现:

      在定义webidl时,通过NavigatorProperty来指定(加粗部分):

    [NavigatorProperty="mozCustomModule"]
    interface CustomModule {
        // methods and properties definition 
    };

      以Alarms为例:

    [NavigatorProperty="mozAlarms",
     JSImplementation="@mozilla.org/alarmsManager;1",
     CheckPermissions="alarms",
     Pref="dom.mozAlarms.enabled"]
    interface AlarmsManager {
      DOMRequest getAll();
      DOMRequest add(any date, DOMString respectTimezone, optional any data);
      void remove(unsigned long id);
    };

    4. WebIDL C/C++ 实现:

      此中情形略微复杂,需要手动写一些code。

      (1)在gecko/dom/webidl/Navigator.webidl中添加一个属性:

    partial interface Navigator {
      readonly attribute CustomModule mozCustomModule;
    };

      (2)在gecko/dom/base/Navigator.h中声明一个方法:

    // 注意方法名:Get + 属性名(第一个字母大写)
    CustomModule* GetMozCustomModule(ErrorResult& aRv);

      (3)在gecko/dom/base/Navigator.cpp中实现上一步声明的方法:

    CustomModule* GetMozCustomModule(ErrorResult& aRv) {
      return new CustomModule();      
    }

    TODO:

      sample code

  • 相关阅读:
    【Nginx+Tomcat】高性能负载均衡的Tomcat集群
    【JS-Excel】使用JS导出表格数据、附带解决科学计数法等问题
    【Util】日期工具类总结
    【SpringMVC】url映射传参
    【Linux+Windows】Linux,Windows打包发布到Tomcat并修改映射的ip地址
    【Spring】解决返回json乱码问题
    【API】高德地图API JS实现获取坐标和回显点标记
    ELK-Python(二)
    ELK-Python(一)
    zookeeper集群
  • 原文地址:https://www.cnblogs.com/code-4-fun/p/4654850.html
Copyright © 2011-2022 走看看