谷歌瀏覽器的原始碼分析 32

2021-04-21 21:21:57 字數 754 閱讀 7452

上一次說到在類resourcedispatcher會收到接收http資料訊息,並進一步處理資料。那麼resourcedispatcher類又把接收到的資料發往何處呢?這是需要我們去搞懂它的。通過進一步的跟蹤,會發現在resourcedispatcher::onreceiveddata函式呼叫webcore::resourcehandleinternal類來處理,也就是把接收到的資料拋給webcore來處理了。如下面的**:

#001void resourcedispatcher::onreceiveddata(int request_id,

#002sharedmemoryhandle shm_handle,

#003int data_len)

#029}

上面第27行**就是呼叫webcore裡類resourcehandleinternal::onreceiveddata函式,這樣就把資料儲存到webcore裡面,也就是webkit裡面了。經過如下面的呼叫過程:

1)webcore::resourceloader::didreceivedata

2)webcore::subresourceloader::didreceivedata

3)webcore::loader::didreceivedata

4)webcore::cachedimage::data

這裡就是把影象的資料快取起來,以便後面呼叫渲染引擎來顯示。這一次就分析到這裡,總算把資料怎麼樣放到webkit裡搞清楚了,下一次再來看看webkit是怎麼樣把資料顯示出來的。

谷歌瀏覽器的原始碼分析 8

上一次說到處理wm char訊息,當使用者每鍵入乙個字元時,萬能連線框就會去進行一次查詢的過程,然後把智慧型提示資訊顯示出來。說到autocompleteedit handlekeystroke函式的操作,那麼它為什麼需要凍結這個函式的使用呢?現在就來分析這部份的內容。如下 scopedfreeze...

谷歌瀏覽器的原始碼分析 30

上次說到函式winhttpreaddata 通過上面的函式可以看到,當資料接收完成後,就會呼叫docallback函式處理接收到的資料。docallback函式的 如下 看到這裡又是乙個 函式c run的通知,它是呼叫開始建立這個連線時設定的 物件。如果是http請求,那麼這個請求 函式是物件url...

谷歌瀏覽器的原始碼分析 2

上面顯示了多種語言的動態連線庫資源,其中zh cn是簡體中文的。接著開啟資源檔案的字串編輯,如下圖 把上面的字串修改為 關於 可多公尺 然後把這個工程重新編譯一下,就會生成下面的檔案 然後執行自己編譯的可多公尺,就會顯示出修改的成果,如下圖 可以看到關於對話方塊的標題,就變成我上面修改的了。這樣學習...