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

  • 相关阅读:
    bootstrap-treeview 父子节点的全选与取消全选
    Nginx 中 proxy_pass 的斜杠问题
    Nginx 安装 echo-nginx-module 模块
    Nginx 内置变量与正则
    SpringBoot 整合 FastDFS
    CentOS7 搭建 FastDFS 环境
    配置 Idea + EmmyLua插件开发环境
    SpringBoot 整合 RabbitMQ
    数据结构笔记-环形队列
    SpringBoot 通过自定义 Mybatis 拦截器,实现 SQL 的改写
  • 原文地址:https://www.cnblogs.com/code-4-fun/p/4654850.html
Copyright © 2011-2022 走看看