谷歌浏览器的源码分析(28)

 上一次说到使用WinHTTP函数来创建HTTP连接,并且使用它来发送请求,那么数据接收回来,当然也是从它那里接收的,因此下面来分析它的接收数据的几个函数,然后再来看看chrome里收到数据后发送到那里处理。在WinHTTP里使用WinHttpOpen函数来创建HTTP连接,然后使用WinHttpConnect连接需要下载数据的网站,接着调函数WinHttpOpenRequest来创建一个...
阅读(7215) 评论(1)

谷歌浏览器的源码分析(27)

 上一次说到怎么样开始把任务发送出去,也就是调用函数BeginRequestInternal来把URL请求发送,它的代码如下:#001  void ResourceDispatcherHost::BeginRequestInternal(URLRequest* request,#002                                                   ...
阅读(5841) 评论(0)

谷歌浏览器的源码分析(26)

 消息的流通过程,是一个不同类相互交流的过程,如果不了解这个过程,根本就不知道这些类是怎么样相互协作的。由于上一次说到ViewHostMsg_RequestResource消息已经发送出来,它的处理过徎其实就是一般资源的消息处理过程,下面就来看看这个消息的处理过程,如下:1.       base::MessagePumpWin::Run函数消息2.       base::Messa...
阅读(10231) 评论(5)

谷歌浏览器的源码分析(25)

 上一次说到需要把显示的网络连接地址变成一个资源的消息发送出去,它是通过函数ResourceHandle::create来实现的,但这个函数到底是怎么样实现的呢?现在就分析它的实现代码,了解它怎么样把资源变换成消息,并且通过IPC机制把消息发送到资源下载进程去。数ResourceHandle::create的代码如下:#001  PassRefPtr ResourceHandle::cre...
阅读(6411) 评论(2)

谷歌浏览器的源码分析(24)

继续上一次的分析,这里开始把连接址和其它相关的信息传送frame_->loader()->load函数里面,那么在这个函数里面到底是怎么样处理的呢,只有去分析它的代码,我们才能找到它的答案,现在就来开始看吧,如下:#001  void FrameL...
阅读(6616) 评论(1)

谷歌浏览器的源码分析(23)

 继续上一次来分析LoadRequest的代码,在分析这个函数代码之前,先看看WebFrame类的继承层次关系,如下:class WebFrame : public base::RefCounted {WebFrame是一个接口类,但它先继承引用计数类RefCounted,这样对于这个对象多次访问,就可以使用引用计数来判断对象的生命周期了。对于base::RefCounted的语法,其...
阅读(6786) 评论(4)

谷歌浏览器的源码分析(22)

 上一次说到消息转发,并分析了RenderThread类里处理消息的函数,其实大部份的消息都是在RenderView类里的OnMessageReceived函数处理,比如浏览的消息也是在这里处理。它的代码如下:#001  void RenderView::OnMessageReceived(const IPC::Message& message) {#002    // Let the...
阅读(6381) 评论(0)

谷歌浏览器的源码分析(21)

 上一次说到类RenderThread和类RenderView把消息处理,那么这两个类是怎么样处理消息的呢?又是怎么样处理浏览的消息呢?现在就带着这两个问题去分析它的源码,理解它处理消息的方法。类RenderThread处理消息的代码如下:#001  void RenderThread::OnMessageReceived(const IPC::Message& msg) {#002 ...
阅读(6545) 评论(3)

谷歌浏览器的源码分析(20)

 上一次介绍到把网页连接地址生成一个消息通过IPC机制把消息发送出去,那么IPC的通讯机制是怎么样的呢?又是发送给谁呢?由于这个浏览器是使用多进程的架构来工作的,所以进程之间就需要相互交流,这种交流是就是通讯,可以从源码里看到它是使用IPC的机制来通讯,实际采用的技术,就是Windows的命名管道的方式。可以看到这段代码:#001  bool Channel::CreatePipe(c...
阅读(6658) 评论(2)

谷歌浏览器的源码分析(19)

 继续上一次分析到类WebContents的Navigate函数,在这个函数里通过参数entry传送入来,这样它只需要根据这个参数去下载网页回来显示,应就可以了吧,但到底是怎么样工作的呢?这需要深入去分析它,才知道它是什么样的结果。#001  #002  bool WebContents::Navigate(const NavigationEntry& entry, bool relo...
阅读(6820) 评论(5)

谷歌浏览器的源码分析(18)

 现在继续分析浏览器去下载网页的过程,上一次说到需要分析函数NavigateToPendingEntry,在这个函数又是怎么去处理下载网页的呢?那就需要分析它的源码了,如下:#001  void NavigationController::NavigateToPendingEntry(bool reload) {#002    TabContents* from_contents = ...
阅读(6328) 评论(2)

谷歌浏览器的源码分析(17)

 当输入的网页连接传送给LoadURL函数之后,还需要处理很多内容,其实这是由类NavigationController来管理的,NavigationController类主要就是管理加载网页、退回、前进等等控制。#001  void NavigationController::LoadURL(const GURL& url,#002                          ...
阅读(6316) 评论(1)
    个人资料
    • 访问:5606853次
    • 积分:73290
    • 等级:
    • 排名:第25名
    • 原创:1589篇
    • 转载:61篇
    • 译文:11篇
    • 评论:2088条
    文章存档
    最新评论