1 创建WebUI页面
WebUI的资源在src/chrome.browser/resources下面,当创建WebUI资源时,需要遵循Web Development Style Guide 下面是一个简单的例子:
添加html页面
添加css文件
添加js文件
2 把资源文件添加到Chrome
使用src/chrome/browser/browser_resources.grd文件来添加资源文件。
src/chrome/browser/browser_resources.grd文件里面添加hello_world的html、css、js文件
3 为新的chrome URL添加URL标识
URL标识被存放在src/chrome/common/url_constants.*,在这里添加指向新资源的URL标识
4 添加本地化字符串
在html页面上显示的一些字符串,建议按照chrome的标准,进行本地化,这样方便输出多语言版本,存放字符串的文件为src/chrome/app/generated_resources.grd,这个文件内对应的是英文字符串,多语言文件存放在src/chrome/app/resources/generated_resources_*.xtb,例如中文的字符串对应文是generated_resources_zh-CN.xtb。
generated_resources.grd里面的字符串首位的空格都会忽略,添加的时候如果可以加一些特殊字符来区分,例如’<’、’>’、 ‘&’、 ‘"’、 ‘'’。其中translation id必须唯一,如果多个相同会编译错误。
5 添加处理chrome://hello-world/请求的WebUI类
接下来我们需要一个类来处理新资源URL的请求,通常这个类是继承自ChromeWebUI(WebUI对话框则是继承自HtmlDialogUI)
6 添加新资源到Chrome
将新添加的类添加到Chrome里面,如果添加新的类的话,需要在src/chrome/chrome_browser_ui.gypi文件中添加,这样可以在项目编译的时候链接这些文件。
7 添加WebUI URL的解析
Chrome WebUI工厂方法类里面添加处理新请求的代码
9 添加与js的回调
如果我们想通过js调用cC++去执行代码时,可以在对应的类里面添加
这个调用是异步的,必须等待C++那边去调用js函数来得到结果
创建WebUI对话框
创建WebUI对话框只与上面的有两个地方不同,处理请求的类必须继承自HtmlDialogUI类,创建一个HtmlDialogUIDelegate类来负责运行对话框。
1 修改继承的父类
2 创建HtmlDialogUIDelegate类来实例化对话框
你可以用HelloWorldDialog::ShowDialog()来调用这个新的对话框。
3 传递参数给WebUI对话框
通过HtmlDialogUIDelegate::GetDialogArgs()函数来传递参数给对话框。