webkit to Chromium/load/rtsp/dns

a.webkit to chromium to webkit

ResourceLoaderAndroid to chromium// for file
1.ResourceLoaderAndroid::start
2.WebUrlLoader::start (convert "ResourceRequest" to "WebRequest")
3.WebUrlLoaderClient::start
4.WebRequest::start
5.URLRequest::start()//chromium
6.URLRequest::StartJob(URLRequestJobManager::CreateJob)//create different job
//URLRequest::StartInternal() for 4.0
7.job.start()//depending on defferent job.
8.URLRequestFileJob::Start()//PostTask(FROM_HERE, NewRunnableMethod(this, &URLRequestFileJob::DidResolve)
9.URLRequestFileJob::DidResolve
10.NotifyHeadersComplete()
11.URLRequest::ResponseStarted(URLRequest ){delegate_->OnResponseStarted(this);}
12.WebRequest::OnResponseStarted(URLRequest);//create WebResponse.
//pass URLRequest to webkit, so get the type

13.WebUrlLoaderClient::didReceiveResponse.

 

b.  click to load

TitleBarXlarge->onClick
TitleBarBase->onAction
Controller->handleNewIntent
IntentHandler->onNewIntent
Controller->openTabAndShow

 

c rtsp protocal to other application

PolicyChecker::continueAfterNavigationPolicy
FrameLoaderClientAndroid::canHandleRequest
WebFrame::canHandleRequest
BrowserFrame::handleUrl
CallbackProxy::shouldOverrideUrlLoading
CallbackProxy::handlemessage:OVERRIDE_URL
CallbackProxy::uiOverrideUrlLoading
WebViewClient::shouldOverrideUrlLoading
Controller::shouldOverrideUrlLoading
UrlHandler::shouldOverrideUrlLoading

 

d. chromium's job

  { "http", URLRequestHttpJob::Factory },
  { "https", URLRequestHttpJob::Factory },
  { "file", URLRequestFileJob::Factory },
#ifndef ANDROID
  { "ftp", URLRequestFtpJob::Factory },
  { "about", URLRequestAboutJob::Factory },
  { "data", URLRequestDataJob::Factory },

 

e. apache dns

Socket()//httpconnection
tryAllAddresses() //InetAddress.getAllByName
startupSocket
impl.connect(dstAddress, dstPort);
?impl
PlainSocketImpl

PlainSocketImpl.connect
socksConnect
socksRequestConnection

posted @ 2012-04-05 22:03  cascais  阅读(248)  评论(0编辑  收藏  举报