原创 chromium中MessageLoop指針的實現

和許多客戶端程序一樣,chromium中同樣使用到了多線程,每個線程可能包括一個消息循環MessageLoop,它通過調用current函數返回,因爲MessageLoop是線程的私有數據,線程內共享而線程間不共享,這就使用到了線程局部存

原创 延遲構造實例LazyInstance

延遲構造實例,簡單來說就是一個類在沒有用到的時候先佔着一個坑,只有當真正用到的時候纔開始倒入資源開始構造。最常見的就是我們平時用到的單例模式,實現的代碼如下: template<typename Type> class CSingleto

原创 在windows下編譯chromium

最近自己的成長目標想從模塊設計轉到系統架構上,剛好大組有個瀏覽器調研的任務,而chromium又是google開源的瀏覽器,所以開始對它進行了一些前期研究。這個過程十分不容易,我對windows下的開發環境瞭解得太少,光是編譯就花了我很大

原创 爲chromium增加底部工具欄

有些瀏覽器會有一些底部工具條,如360的瀏覽器,它的底部工具條樣例如下: 模仿360,本文介紹如何修改chromium代碼,在chromium的底部也加上一個工具條。 首先瀏覽器的整個窗口的實現類是BrowserView,先在brows

原创 chromium中的消息循環

這篇文章會更加深入地講解chromium的線程,通常爲了保證ui的響應速度,防止io阻塞和複雜計算卡死ui,會把io任務和複雜計算的任務放到其它線程中運行。由於反覆創建線程會增加系統負擔,在設計的時候通常不會把任務交給線程,在線程運行完成

原创 安裝程序“發佈者:未知 ”問題

在開發人員打包安裝程序後,在測試安裝程序時,會發現操作系統報出如下的錯誤: 您想允許來自未知發佈者的以下程序對此計算機進行更改嗎? 發佈者:未知 這是微軟操作系統中用戶帳戶控制的功能。 用戶帳戶控制(User Account Cont

原创 chromium進程間通信-ChannelProxy

這篇文章主要介紹的是chromium進程間通信使用到的ChannelProxy類。爲了從更宏觀的角度來理解這個類,先來看一下它的類圖。 它包含一個重要的屬性就是Context,Context包含有以下的成員: 1、channel_,它封

原创 更改chromium標籤欄風格

chromium的標籤欄是一種波浪式的風格,如下圖所示,爲了更改風格,需要先了解它的繪製原理: 在src\chrome\browser\ui\views\tabs\tab_strip.cc中,有一個參數kTabHorizontalOf

原创 chromium的安裝程序

這篇文章主要簡單講解chromium的安裝程序mini_installer 在編譯mini_installer時,要更改編譯的參數把component設置爲static_library,不然編譯出來的mini_staller會報“mini

原创 chromium進程間通信-ChannelImpl

我們先來了解chromium進程間通信的方式--命名管道。管道(Pipe)可能理解成是用於進程間通信的一段共享內存,創建管道的進程稱爲管道服務端server,連接到一個管道的進程爲管道客戶端client。命名管道有一個唯一的名稱以區分於存

原创 在chromium源碼中增加默認的搜索引擎

接下的文章會涉及對chromium源代碼的修改,會從一些簡單的方向修改chromium的功能。本篇文章介紹如何在chromium中增加一個默認的搜索引擎。 以增加我們國家的搜索引擎--中國搜索 http://www.chinaso.co

原创 chromium顯示頁面(一)

最近在進行校園招聘,也有一段時間沒有更新博客了。這篇文章是關於chromium如何組織網頁的顯示的,在講解顯示之前,需要了解一下這些類在顯示中過程中起到什麼作用。整體的類圖如下 RenderProcessHostImpl:對應一個Ren

原创 chromium書籤欄實現

本篇文章主要講解chromium書籤欄的實現,主要是想以某一個UI爲切入點,更加了解chromium中的UI實現。書籤欄的UI界面如下圖所示,它包含以下元素: apps_page_shortcut_:一個指向WebUI的按鈕,指向chr

原创 chromium中增加默認主題的一個方法

首先,chromium除了默認主題外,其它都是以chrome拓展的方式安裝的,所以對於一個新的主題,需要定一個主題id,這個主題id可以先自己定一個,只要長度一致就可以了,但是主題id會有字母範圍的限制,所以可以找一個現成的id,然後直接

原创 打包chromium瀏覽器

雖然chromium中提供了mini_installer安裝程序,但是感覺並不是特別理想,安裝起來會覺得像一個流氓軟件,本篇文章會使用InstallShield對chromium的程序進行打包。 1、安裝InstallShield,目前我