19. 此时主资源的加载到此结束。
再来看看thirdparty/WebKit下的文件DocumentLoader.cpp中方法:
DocumentLoader::startLoadingMainResource()
我们之前分析的都是:该方法中的代码:
m_mainResource = m_fetcher->fetchMainResource(cachedResourceRequest, m_substituteData);
该方法中,之后有代码:m_mainResource->addClient(this);
10. 上面提到的代码执行的thirdparty/WebKIt下文件RawResource.cpp中方法:RawResource::appendData
该方法中有代码:
该方法中有代码:
- while (RawResourceClient* c = w.next())
- c->dataReceived(this, data, length);
这里执行的是DocumentLoader.cpp中方法:DocumentLoader::dataReceived
该方法中又会调用同文件中方法:DocumentLoader::commitData
9. 上面方法调用的是文件:thirdparty/WebKIt下文件ResourceLoader.cpp中方法:ResourceLoader::didReceiveData该方法中有代码: m_resource->appendData(data, length);
8. 上面提到的代码调用的是 content目录下文件:web_url_loader_impl.cc中方法:
WebURLLoaderImpl::Context::OnReceivedData
该方法中有代码: client_->didReceiveData(loader_, data, data_length, encoded_data_length);
- while (RawResourceClient* c = w.next())
- c->dataReceived(this, data, length);
这里执行的是DocumentLoader.cpp中方法:DocumentLoader::dataReceived
该方法中又会调用同文件中方法:DocumentLoader::commitData
--------------------------------------------------------------------------------
void ResourceDispatcher::OnReceivedData( request_info->peer->OnReceivedData(
- request_info->peer->OnReceivedData(
- data_ptr, data_length, encoded_data_length);
void ResourceDispatcher::DispatchMessage(const IPC::Message& message) {
child/resource_dispatcher.cc IPC_MESSAGE_HANDLER(ResourceMsg_DataReceived, OnReceivedData)
#2 0x00007fca0bb3841f in content::AsyncResourceHandler::OnReadCompleted(int, bool*) ()
from /opt/BrowserCrawl/cef/libcef.so
filter->Send(new ResourceMsg_DataReceived(
GetRequestID(), data_offset, bytes_read, encoded_data_length));
from /opt/BrowserCrawl/cef/libcef.so
#4 0x00007fca0bb3a0e6 in content::BufferedResourceHandler::ProcessResponse(bool*) ()
from /opt/BrowserCrawl/cef/libcef.so
#5 0x00007fca0bb3a5df in content::BufferedResourceHandler::OnReadCompleted(int, bool*) ()
from /opt/BrowserCrawl/cef/libcef.so
#6 0x00007fca0bb44780 in content::LayeredResourceHandler::OnReadCompleted(int, bool*) ()
from /opt/BrowserCrawl/cef/libcef.so
#7 0x00007fca0bb80040 in content::ResourceLoader::CompleteRead(int) () from /opt/BrowserCrawl/cef/libcef.so
#8 0x00007fca0bb7fda6 in content::ResourceLoader::OnReadCompleted(net::URLRequest*, int) ()
from /opt/BrowserCrawl/cef/libcef.so#9 0x00007fca0ae32f2b in net::URLRequest::NotifyReadCompleted(int) () from /opt/BrowserCrawl/cef/libcef.so
#10 0x00007fca0ae5e29c in net::URLRequestJob::NotifyReadComplete(int) () from /opt/BrowserCrawl/cef/libcef.so
#11 0x00007fca0ae54774 in net::URLRequestHttpJob::OnReadCompleted(int) () from /opt/BrowserCrawl/cef/libcef.so
bool URLRequestHttpJob::ReadRawData(
url_request/url_request_job.cc bool URLRequestJob::ReadRawDataHelper(IOBuffer* buf, int buf_size, int* bytes_read) {
bool URLRequestJob::ReadRawDataForFilter(int* bytes_read) {
bool URLRequestJob::ReadFilteredData(int* bytes_read) {
bool URLRequestJob::Read(IOBuffer* buf, int buf_size, int *bytes_read) {
url_request/url_request.cc bool URLRequest::Read(IOBuffer* dest, int dest_size, int* bytes_read) {
browser/loader/resource_loader.cc void ResourceLoader::ReadMore(int* bytes_read) {
void ResourceLoader::StartReading(bool is_continuation) {
void ResourceLoader::OnResponseStarted(net::URLRequest* unused) {
url_request/url_request.cc void URLRequest::NotifyResponseStarted() {
void URLRequestJob::NotifyHeadersComplete() {
url_request/url_request_http_job.cc void URLRequestHttpJob::NotifyHeadersComplete() {
void URLRequestHttpJob::SaveNextCookie() {
void URLRequestHttpJob::SaveCookiesAndNotifyHeadersComplete(int result) {
void URLRequestHttpJob::OnStartCompleted(int result) {
void URLRequestHttpJob::StartTransactionInternal() {