自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 更改chromium标签栏风格

chromium的标签栏是一种波浪式的风格,如下图所示,为了更改风格,需要先了解它的绘制原理:在src\chrome\browser\ui\views\tabs\tab_strip.cc中,有一个参数kTabHorizontalOffset。在每个标签按钮进行布局的时候,相邻的标签的边界会重叠在一起。如果啥也不管直接进行绘制的话,就会显示如下的效果。为了显示出边界效

2015-03-27 16:33:54 5618 3

原创 为chromium增加底部工具栏

有些浏览器会有一些底部工具条,如360的浏览器,它的底部工具条样例如下:模仿360,本文介绍如何修改chromium代码,在chromium的底部也加上一个工具条。首先浏览器的整个窗口的实现类是BrowserView,先在browser_view中加入相应的代码src\chrome\browser\ui\views\frame\browser_view.hscoped_p

2015-03-26 13:51:20 4647 5

原创 chromium中增加默认主题的一个方法

首先,chromium除了默认主题外,其它都是以chrome拓展的方式安装的,所以对于一个新的主题,需要定一个主题id,这个主题id可以先自己定一个,只要长度一致就可以了,但是主题id会有字母范围的限制,所以可以找一个现成的id,然后直接交换几个字母的位置就可以,后继这个id并不会真正用到。src\chrome\browser\themes\theme_service.ccconst cha

2015-03-18 15:16:03 2640

原创 安装程序“发布者:未知 ”问题

在开发人员打包安装程序后,在测试安装程序时,会发现操作系统报出如下的错误:您想允许来自未知发布者的以下程序对此计算机进行更改吗?发布者:未知这是微软操作系统中用户帐户控制的功能。用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和

2014-12-30 09:41:18 12532 1

原创 打包chromium浏览器

虽然chromium中提供了mini_installer安装程序,但是感觉并不是特别理想,安装起来会觉得像一个流氓软件,本篇文章会使用InstallShield对chromium的程序进行打包。1、安装InstallShield,目前我安装使用的是InstallShield 2014 Premier Edition。到下述网页填写自己的一些信息,会用邮件发送下载的地址。http://lea

2014-12-25 16:15:32 7377 3

原创 在chromium中加入默认的启动页

启动页的配置选项如图所示:启动页的默认配置由src\chrome\browser\prefs\session_startup_pref.cc生成在RegisterProfilePrefs函数中,可以看到配置的选项。 registry->RegisterIntegerPref( prefs::kRestoreOnStartup, TypeToPrefVa

2014-12-23 13:41:12 6505 3

原创 修改chromium的国际化资源

chromium的国际化资源文件大部分在目录src\chrome\app\resources下,例如我们在设置中选取一句话。系统->关闭 Chromium 后继续运行后台应用在资源文件src\chrome\app\resources\chromium_strings_zh-CN.xtb,可以找到这句话关闭 Chromium 后继续运行后台应用它其实对应的是src/chrome/ap

2014-12-23 11:15:59 4516 5

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

接下的文章会涉及对chromium源代码的修改,会从一些简单的方向修改chromium的功能。本篇文章介绍如何在chromium中增加一个默认的搜索引擎。以增加我们国家的搜索引擎--中国搜索 http://www.chinaso.com/ 为例1、首先需要定义一下搜索引擎在src/chrome/browser/search_engines/prepopulated_engines.

2014-12-23 09:55:11 5659 2

原创 chromium的安装程序

这篇文章主要简单讲解chromium的安装程序mini_installer在编译mini_installer时,要更改编译的参数把component设置为static_library,不然编译出来的mini_staller会报“mini_installer.exe is incompatible with the component build”的错误python build\gyp_ch

2014-12-14 18:45:14 5853 1

原创 chromium书签栏实现

本篇文章主要讲解chromium书签栏的实现,主要是想以某一个UI为切入点,更加了解chromium中的UI实现。书签栏的UI界面如下图所示,它包含以下元素:apps_page_shortcut_:一个指向WebUI的按钮,指向chrome://apps/,该按钮总是显示。overflow_button_:当书签栏长度不足够显示全部标签时,会显示该按钮,点击后出现下拉菜单,用于显示剩下

2014-12-07 12:39:49 4274 1

原创 chromium设置UI的实现

在打开chromium的设置时,chromium会导向一个chrome://settings/的页面,这种UI的实现方式跟其它的UI实现方式有一些区别的,它本质上是一个html页面,能通过javascript与浏览器中的C++代码通信,这种实现称为WebUI,类似的页面可以参考chrome://about/中列出来的页面。类似设置页面这种UI,本身并没有特别复杂的功能,只负责一些数据显示和存储工作

2014-12-03 10:49:46 7864

原创 chromium的BrowserWindow

理解了chromium中的一些进程和线程的设计后,目前代码阅读的方向转变到chromium的UI。chromium的ui框架是跨平台的,chromium中与ui相关的所有控件,几乎都继承自View(ui/views/view.h),通过树形结构,views组成一个控件或一个页面。在chromium中view的分层如下图所示,Widget可以说是整个UI的根,RootView是整个View控件树

2014-11-27 09:38:51 4943 1

原创 chromium的RenderProcess的启动

一个RenderProcess与一个Browser进程中的RenerProcessHost对应,RenderProcess在RenderProcessHostImpl的Init函数中被创建。Init函数主要进行以下几个工作:1、建立与RenderProcess进行通信的管道,管道的名称为channel_id。2、将管道名称channel_id作为子进程启动的参数,调用ChildPr

2014-11-26 13:26:13 4957 2

原创 chromium显示页面(二)

在上一篇博文中介绍了chromium中WebContents类

2014-11-17 23:39:36 4916

原创 chromium显示页面(一)

最近在进行校园招聘,也有一段时间没有更新博客了。在组强w

2014-11-16 10:51:45 4342

翻译 chromium源代码结构

本篇文章是http://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-code

2014-11-07 17:41:13 7458

原创 chromium进程间通信-ChannelProxy

这篇文章主要介绍的是chromium进程间通信使用到的ChannelProxy类。它包含一个重要的属性就是Context,再往下看Context的成员:1、channel_,它封装了进程间通信用到的管道,是Channel类的一个实例,而在Channel类中,底层的通信都是由ChannelImpl实现的,Channel通过调用ChannelImpl来实现相关的操作。Channel继承的是Send

2014-11-05 14:49:06 3622

原创 chromium进程间通信-ChannelImpl

在讲解chromium通信的方式之前,我们先来了解chromium

2014-11-02 15:58:10 3331

原创 chromium中的消息循环

这篇文章会更加深入地讲解chromium的线程,通常为了保证ui的响应速度,防止io阻塞和复杂计算卡死ui,会把io任务和复杂计算的任务放到其它线程中运行。由于反复创建线程会增加系统负担,在设计的时候通常不会把任务交给线程,在线程运行完成后直接退出线程。chromium中每一个线程都会有一个消息循环MessageLoop,接收来自其它线程的任务,在处理完成后接着处理下一个任务,当没有任务时,挂起线

2014-11-01 18:21:39 5263

原创 chromium启动过程-线程篇

不得不说,chromium的工程的确太庞大,一开始都不知道从哪切入看代码,上网去查了许多资料,终于弄得有点思路,现在总结总结,希望也能给后来人一些帮助。我编译的环境是windows 7 sp1和vs2013,编译的是windows环境下的chromium。chromium的入口就是chrome_initial/app/chrome_exe_main_win.cc。可以在源码中找到入口函

2014-10-30 08:44:51 4405

原创 延迟构造实例LazyInstance

延迟构造实例,简单来说就是一个类在没有用到的时候先占着一个坑,只有当真正用到的时候才开始倒入资源开始构造。最常见的就是我们平时用到的单例模式,实现的代码如下:这个类的只有在调用GetInstance才对 m_pInstance进行初始化,就体现了用到才实例化的思想。这样做的好处是加速程序的启动过程,比如一个界面的菜单对象,当你还没有点击菜单之前就创造了,那他一定会影响软件的启动性能。在ch

2014-10-27 08:53:44 3898

原创 chromium中MessageLoop指针的实现

和许多客户端程序一样,chromium中同样使用到了多线程,每个线程可能包括一个消息循环MessageLoop,它通过调用current函数返回,因为MessageLoop是线程的私有数据,线程内共享而线程间不共享,这就使用到了线程局部存储(Thread Local Storage,TLS)技术。TLS技术在不同的操作系统中通过不同的系统调用实现,它为线程提供一种保存私有数据的方法,使线程的私

2014-10-27 08:32:42 2936

原创 在windows下编译chromium

最近自己的成长目标想从模块设计转到系统架构上,刚好大组有个浏览器调研的任务,而chromium又是google开源的浏览器,所以开始对它进行了一些前期研究。这个过程十分不容易,我对windows下的开发环境了解得太少,光是编译就花了我很大的工夫,我把这里边遇到的问题记录下来。开发环境:windows7专业版,sp1vs2013        我不想自己折腾自己,把原来的vs删了

2014-10-27 08:23:54 11005

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除