基于chromium24的HTML5特性实现(Custom search providers)

本文介绍了如何利用Chromium24中的JavaScript接口window.external.AddSearchProvider()和window.external.IsSearchProviderInstalled()实现搜索引擎的添加与管理。通过v8::Extension子类实现JS外部扩展,不修改WebKit代码。浏览器需下载XML文件并解析其内容,使用net::URLFetcher进行文件下载,URLFetcherDelegate处理下载完成后的回调,TemplateURLParser进行XML解析。
摘要由CSDN通过智能技术生成

   该特性主要包含两个js接口:window.external.AddSearchProvider(sUrl) 和 pdwResult = window.external.IsSearchProviderInstalled(sUrl)。主要功能是可以通过js来提示用户添加和管理搜索引擎。可以参见这个网页的介绍。

    既然是js接口,那么首要的任务就是让v8能够识别这两个函数。自然的想法是在WebCore中增加C++文件External.cpp及相应的External.idl,就像其他的js调用所做的那样。但chromium中用了另外一种js外部扩展的方法,即继承v8::Extension类,将要实现的函数写到子类里,可以参见external_extension.cc文件的实现。按我的猜测V8如果通过正常途径无法识别js函数,就会找v8::Extension类中是否有同名函数可供使用。这种外部扩展的方法可以完全的绕过WebKit,不修改其任何代码。

    通过标准的介绍可以知道,AddSearchProvider函数的参数是一个xml文件,那么浏览器需要做的事情有两件:一是下载该xml文件,二是解析xml文件的内容。

    chromium通过net::URLFetcher这个类来下载文件,向其传入url等参数构建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值