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