在chromium源码中增加默认的搜索引擎

接下的文章会涉及对chromium源代码的修改,会从一些简单的方向修改chromium的功能。本篇文章介绍如何在chromium中增加一个默认的搜索引擎。

以增加我们国家的搜索引擎--中国搜索 http://www.chinaso.com/ 为例

1、首先需要定义一下搜索引擎

在src/chrome/browser/search_engines/prepopulated_engines.json文件中,定义了许多默认的搜索引擎,我们在该文件中,搜索www.sogou.com,参考sogou的定义,在该文件中增加一条chinaso的配置。

name:“中国搜索”的utf8编码。

keyword:上图配置中第二列关键字。

favicon_url:网站图标,通常都会有,就在网站后边加个favicon.ico

search_url:这个是关键,需要根据搜索站点的url格式,拼出一个搜索的url,当用户在地址栏输入query后,会用query替换{searchTerms}

type:搜索引擎的type,按照例子造了一个。

id:prepopulated_engines.json文件上边有说明,“The following unique IDs are available:11, 12, 14, 18, 19, 20..... “,随便选一个。

    "yandex_ua": {
      "name": "\u042f\u043d\u0434\u0435\u043a\u0441",
      "keyword": "yandex.ua",
      "favicon_url": "http://yandex.ua/favicon.ico",
      "search_url": "http://yandex.ua/yandsearch?text={searchTerms}",
      "suggest_url": "http://suggest.yandex.net/suggest-ff.cgi?part={searchTerms}",
      "type": "SEARCH_ENGINE_YANDEX",
      "id": 15
    },

    "chinaso": {
      "name": "\u4e2d\u56fd\u641c\u7d22",
      "keyword": "chinaso.com",
      "favicon_url": "http://www.chinaso.com/favicon.ico",
      "search_url": "http://www.chinaso.com/search/pagesearch.htm?q={searchTerms}",
      "type": "SEARCH_ENGINE_CHINASO",
      "id": 11
    },
    // UMA-only engines ////////////////////////////////////////////////////////

    // The following engines are not included in any of the country lists. They
    // are listed in |kAllEngines|, however, so that GetEngineType can find them
    // for UMA reporting purposes.

2、配置中文默认搜索引擎。

在src\chrome\browser\search_engines\template_url_prepopulate_data.cc中修改

在engines_CN中加入“chinaso“,就是prepopulated_engines.json定义的搜索引擎

// China
const PrepopulatedEngine* engines_CN[] =
	{ &chinaso, &baidu, &sogou, &soso, &google };

在kAllEngines中也加入“chinaso“,这个在GetEngineType函数中会用到。

// A list of all the engines that we know about.

const PrepopulatedEngine* kAllEngines[] = {
  ......
  &yahoo_vn,     &yahoo_za,     &yandex_ru,    &yandex_tr,    &yandex_ua,
  &chinaso,
  // UMA-only engines:
  ......
}

3、增加一个搜索引擎类型

src/chrome/browser/search_engines/search_engine_type.h

在SearchEngineType的SEARCH_ENGINE_MAX之前,增加一项SEARCH_ENGINE_CHINASO

重新编译后就能在设置->搜索中看到我们添加的默认搜索引擎。

时间: 2024-10-28 22:53:05

在chromium源码中增加默认的搜索引擎的相关文章

Chromium源码--视频播放流程分析(拨开云雾)

转载请注明出处: http://www.cnblogs.com/fangkm/p/3791964.html 在PC浏览器中播放视频,大部分视频网站都是采用flash播放器,这多亏了Adobe Flash Player庞大的装机量.但Flash Player对于浏览器来说就是一个插件,插件内部下载flv流.解析flv视频格式.播放视频等流程与浏览器都没有太大关系.浏览器新标准HTML5中增加了视频支持,如:<video src="movie.ogg"> </video&

android源码中修改wifi热点默认始终开启

在项目\frameworks\base\wifi\java\android\net\wifi\WifiStateMachine.java里面,有如下的代码,是设置wifi热点保持状态的:如下: private class HotspotAutoDisableObserver extends ContentObserver { public HotspotAutoDisableObserver(Handler handler) { super(handler); mContext.getConte

chromium浏览器开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 1.找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 2.获取depot_tools,解压,设置环境变量; 3.gclient获取python和git,svn,设置环境变量: 4.fetch–nohooks chromium –nosvn=true 获取源码: 5.gclientsyn

chromium浏览器高级开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 获取depot_tools,解压,设置环境变量; gclient获取python和git,svn,设置环境变量: fetch–nohooks chromium –nosvn=true 获取源码: gclientsync --force

浏览器开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 获取depot_tools,解压,设置环境变量; gclient获取python和git,svn,设置环境变量: fetch–nohooks chromium –nosvn=true 获取源码: gclientsync --force

Redis源码中的CRC校验码(crc16、crc64)原理浅析

在阅读Redis源码的时候,看到了两个文件:crc16.c.crc64.c.下面我抛砖引玉,简析一下原理. CRC即循环冗余校验码,是信息系统中一种常见的检错码.大学课程中的"计算机网络"."计算机组成"等课程中都有提及.我们可能都了解它的数学原理,在试卷上手工计算一个CRC校验码,并不是难事.但是计算机不是人,现实世界中的数学原理需要转化为计算机算法才能实现目的.实际上作为计算机专业背景人并不会经常使用或接触到CRC的计算机算法实现的原理,通常是电子学科背景的人士

从源码中浅析Android中如何利用attrs和styles定义控件

一直有个问题就是,Android中是如何通过布局文件,就能实现控件效果的不同呢?比如在布局文件中,我设置了一个TextView,给它设置了textColor,它就能够改变这个TextView的文本的颜色.这是如何做到的呢?我们分3个部分来看这个问题1.attrs.xml  2.styles.xml  3.看组件的源码. 1.attrs.xml: 我们知道Android的源码中有attrs.xml这个文件,这个文件实际上定义了所有的控件的属性,就是我们在布局文件中设置的各类属性 你可以找到attr

[原创]chromium源码阅读-进程间通信IPC.消息的接收与应答

chromium源码阅读-进程间通信IPC.消息的接收与应答 chromium源码阅读-进程间通信IPC.消息的接收与应答 介绍 chromium进程间通信在win32下是通过命名管道的方式实现的,最后的数据都是以二进制流的方式进行传播,pickle类就是负责消息的封包与解包功能,它将各种数据已二进制的形式写到内存缓冲区中,在实际通信的时候通过与其他一些辅助类与模板函数来实现具体数据结构的写与读.本文主要介绍的是chromium在将消息发送与接收过程中,以及chromium如何通过各种消息宏与C

Android源码中的FLAG为何使用16进制

1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /** * This view does not want keystrokes. Use with TAKES_FOCUS_MASK when * calling setFlags. */ private static final int NOT_FOCUSABLE = 0x00000000; /** * This view wants keystrokes. Us