久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【Chrome】如何在C++中增加給JavaScript調(diào)用的API

 昵稱3884271 2015-05-15

本文示例說明了如何在Chrome瀏覽器中增加JavaScript API,。為了簡化,,先假設(shè)是在已有的namespace中增加一個新的API,文章的最后將指出如果增加一下全新的namespace所需注意的事項,。


在繼續(xù)之前,,請確保你的Chrome瀏覽器中已安裝了一些擴展程序??梢栽诘刂窓谥休斎隿hrome://extensions查看已安裝的擴展程序,。下圖示例說明了我的瀏覽器中已安裝了Google Mail Checker擴展程序,我們將使用它來測試新增的API(測試可以使用任何擴展程序,,而不需指定這所示例的Google Mail checker),。


從上圖也同時示例了如何打開Chrome網(wǎng)上商店,我們需要進入該頁面查看已開發(fā)好的API,。進入頁面后按F12打開開發(fā)者工具,,并將開發(fā)者工具切換到控制臺。


在開發(fā)者工具的控制臺中,,輸入“chrome.management.un”其將顯示management namespace所支持的API,。


下面我們要做的,就是在management中增加showButton API,,用于顯示或隱藏擴展欄上(某)擴展程序的Icon,。增加showButton API大體上分成兩大部驟。步驟一為變更C++代碼,,步驟二為變更management.json接口描述文件,。下面逐步講解基于Chrome R28源碼的具體變更內(nèi)容,。


首先,在src\chrome\browser\extensions\api\management\management_api.h中增加一個新類的聲明,。當(dāng)showButton在Javascript中被調(diào)用時,,該類將負責(zé)進行后續(xù)處理,其RunImpl方法將會被調(diào)用,。
點擊(此處)折疊或打開

  1. class ManagementShowButtonFunction : public ManagementFunction {
  2. public:
  3.   DECLARE_EXTENSION_FUNCTION("management.showButton", MANAGEMENT_UNINSTALL)

  4. private:
  5.   virtual bool RunImpl() OVERRIDE;
  6. };
接著,,在src\chrome\browser\extensions\api\management\management_api.cc中增加新類的實現(xiàn)。RunImpl方法根據(jù)JavaScript所傳入的兩個參數(shù)調(diào)用SetBrowserActionVisibility函數(shù),,實現(xiàn)對擴展程序Icon的顯示和隱藏,。第一個參數(shù)為擴展程序的ID,第二個參數(shù)是一個布爾變量,,用于指示是顯示(true)抑或隱藏(false)擴展程序的Icon,。

點擊(此處)折疊或打開

  1. bool ManagementShowButtonFunction::RunImpl() {
  2.   std::string extension_id;
  3.   EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &extension_id));
  4.   bool enable;
  5.   EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(1, &enable));

  6.   const Extension* extension = service()->GetExtensionById(extension_id, true);
  7.   if (!extension) {
  8.     error_ = ErrorUtils::FormatErrorMessage(
  9.       keys::kNoExtensionError, extension_id);
  10.     return false;
  11.   }
  12.   service()->extension_prefs()->SetBrowserActionVisibility(extension, enable);
  13.   return true;
  14. }
最后,我們在src\chrome\common\api\management.json中增加showButton的描述,。請注意,,在該文件中存在functoins和events兩大部分,一定要將新增內(nèi)容放入functions部分,。為了防止變更JSON文件時出錯,,可以使用Notepad++,并在其上安裝JSLint和JSMin兩個插件,。在編輯完JSON文件后先調(diào)用Plugins->JSMin->JSFormat(Notepad++中的菜單命令),,然后是Plugins->JSLint->JSLint Current File檢查是否存在錯誤。


點擊(此處)折疊或打開

  1. {
  2.         "name" : "showButton",
  3.         "description" : "Show/Hide extension icon on extension bar.",
  4.         "parameters" : [
  5.           {
  6.             "name" : "id",
  7.             "type" : "string",
  8.             "description" : "This should be the id from an item of $ref:ExtensionInfo."
  9.           },
  10.          {
  11.             "name" : "enabled",
  12.             "type" : "boolean",
  13.             "description" : "Whether this item should be enabled or disabled."
  14.           }
  15.         ]
  16.       }
有了以上的變更后,,在編譯Chrome項目之前,,需手動重新編譯api項目,因為Chrome項目并不依賴于api項目,。重新編譯將使得在自動生成的GeneratedFunctionRegistry:: RegisterAll函數(shù)內(nèi)增加對ManagementShowButtonFunction的注冊,。


程序編譯完成后,我們可以在開發(fā)者工具的控制臺上測試showButton函數(shù),。下圖示例說明了通過調(diào)用該函數(shù)隱藏和顯示Google Mail Checker擴展程序的Icon,。


上面示例了如何在已存在的management namespace中增加一個API。在Chrome中,,JavaScript API的使用存在權(quán)限的概念,。如果新增API的同時也需新增namespace的話,需要注意在APIPermissionInfo::RegisterAllPermissions方法中注冊新增namespace的權(quán)限,,否則會出現(xiàn)頁面無法訪問新增API的問題,。


本文出自李云的博客,請務(wù)必保留此出處:http://blog./uid-26470037-id-3806341.html,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多