• chromium下webui、extension的demo


    一、webui的demo    
          想给chromium增加一个页面,类似于download页面一样。先写个helloworld吧。
    1、写前端代码。定义好js要调用的接口,拷贝一份模板代码,写好html、css、js,放到src/chrome/browser/resources/目录下。webui的资源文件是打包在chrome.dll下的,需要把前端代码信息记录到src\chrome\browser\browser_resources.grd文件中,在该文件中定义的ID会在C++代码中用上。
     
    2、添加本地化显示到src\chrome\app\generated_resources.grd。
          <message name="IDS_HELLO_WORLD_TITLE" desc="A happy message saying hello to the world">
            Hello World!
          </message>
          <message name="IDS_HELLO_WORLD_WELCOME_TEXT" desc="Message welcoming the user to the hello world page">
            Welcome to this fancy Hello World page
            <ph name="WELCOME_NAME"> $1<ex>Chromium User</ex> </ph>!
          </message>
         定义的这些ID会在C++代码中用上。
     
    3、添加chromium前缀的url
    src\chrome\common\url_constants.h
         extern const char kChromeUIHelloWorldURL[];
         extern const char kChromeUIHelloWorldHost[];
    src\chrome\common\url_constants.cc
         const char kChromeUIHelloWorldURL[] = "chrome://hello-world/";
         const char kChromeUIHelloWorldHost[] = "hello-world";
     
    4、添加C++代码
    hello_world_ui.h、hello_world_ui.cpp 存放在src\chrome\browser\ui\webui目录下。
     
    5、添加C++代码位置到gyp中,hello_world_ui.h和hello_world_ui.cc到src\chrome\chrome_browser_ui.gypi。(工程里搜索不到,可能非必需的)
     
    6、添加打开响应到src\chrome\browser\ui\webui\chrome_web_ui_controller_factory.cc。
    这样子就把chrome://url跟hello_world_ui关联起来了。
     
    7、编译完成之后,地址栏输入chrome://hello-world/,可测试。
    测试结果如下:
         
         以上步骤全部参考自:http://www.chromium.org/developers/webui。目前这份文档比较旧,在我这用的版本中有些函数、类无法使用,需要查找、修改。
     
    附上找到的几个函数变化:
         从下边可以看到新的类取代了旧的类。
     
     
     
    函数更换
    BrowserShowHtmlDialog-->ShowWebDialog
     
    验证代码下载地址:https://files.cnblogs.com/cswuyg/chromium_webui_helloworld.zip
     
    二、extension的demo
     
    1、完成 manifest.json、popup.html.....
    2、通过chrome的扩展程序,载入开发中的扩展程序即可。
     
    这个非常简单。
     
    验证代码下载地址:https://files.cnblogs.com/cswuyg/chromium_extension-helloworld.zip
     
    三、两者之简单比较
      对于写前端的人来说,webui的回调函数名必须告诉C++程序员,这点不太方便,耦合得很紧密。而extension的回调函数,却是在调用的时候告诉浏览器,js函数可以写成匿名函数。研究webui可以参考download(入口:src\chrome\browser\ui\webui\downloads_dom_handler.cc),研究内部extension可以参考bookmarks(入口:src\chrome\browser\bookmarks\bookmark_manager_extension_api.cc)。
  • 相关阅读:
    hibernate>悲观锁和乐观锁 小强斋
    hibernate>查询语言hql 小强斋
    hibernate>查询语言hql 小强斋
    hibernate>Collection映射 小强斋
    【java&&jni】jni入门篇
    【C++ Primer】第十三章 类继承
    【android&&jni&&NDk】详细介绍每一步,让你轻松掌握android JNI NDk
    【android】错误集锦及解决办法
    【Android】入门级连接网络示例: 网页浏览和播放网络MP3
    【python】入门第一篇
  • 原文地址:https://www.cnblogs.com/cswuyg/p/2934500.html
Copyright © 2020-2023  润新知