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

  • 相关阅读:
    awk学习
    Redis快速入门
    Redis源码研究—基础知识
    稳定模式在RESTful架构中的应用
    解析Google集群资源管理系统Omega
    在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud
    在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad
    在Ubuntu 14.04 64bit上安装网易云音乐Linux版本(最新官方版)
    各数据库连接maven配置
    maven POM.xml 标签详解
  • 原文地址:https://www.cnblogs.com/code-4-fun/p/4654850.html
Copyright © 2011-2022 走看看