WebKit
文章平均质量分 57
sauphy
这个作者很懒,什么都没留下…
展开
-
Webkit分析传入的url到真正网络模块发起加载请求
WebCore::ResourceHandle::start()>>d->m_job = new QNetworkReplyHandler(this, QNetworkReplyHandler::AsynchronousLoad, d->m_defersLoading); 真正的加载交由平台Port完成,针对Request创建一个异步的加载处理WebCore::Resourc原创 2015-11-16 00:25:25 · 899 阅读 · 0 评论 -
Webkit 绘制图像的过程记录
GraphicsContext::drawImage()# 最终调度平台上下文的drawImage进行绘制图像RenderImage::paintIntoRectRenderImage::paintReplaced()RenderReplaced::paint()RenderImage::paint()# 关于图像元素的绘制入口点InlineBox::paint原创 2015-11-16 01:12:46 · 418 阅读 · 0 评论 -
Webkit 网络加载到DOM树创建的堆栈记录
##加载完毕数据到开始DOM树的创建QNetworkReplyHandler -> ResourceLoader -> MainResourceLoader -> FrameLoader -> DocumentLoader -> DocumentWriter -> DocumentParser -> HTMLTreeBuilder -> HTMLConstructionSite-> Node / RenderObject原创 2015-11-15 23:49:02 · 577 阅读 · 0 评论 -
WebKit之多进程模型2
相信你一定有这样的经历:打开很多个页面,不幸的是其中某个页面不响应了或者崩溃了,随之而来的是更不幸的事,所有页面都不响应或者都崩溃了。最让人崩溃的是其中一些页面还有未保存或者未发送的信息!这绝对是不堪回首的过去。但是,现在好了,现代浏览器很多都支持多进程模型,这个模型可以很好地避免上面的问题,虽然它很复杂而且也有自身的问题,例如更多的资源消耗,但是它的优势也是非常明显地。chrom转载 2015-11-20 00:09:28 · 427 阅读 · 0 评论 -
WebKit之IDL的binding
WebKit最神奇的一点是JS能调到内核部分(c/c++),这是WebOS向外提供扩展能力的关键(实现或扩展W3C API)。要搞清楚一个JS的方法是如何调到后面c/c++的实现颇费周折,其实就是要把IDL和Bindings弄懂,先解释一下这两个名词:IDL:接口定义语言,详细解释可见http://trac.webkit.org/wiki/WebKitIDLBindings:Web转载 2015-11-20 00:33:25 · 477 阅读 · 0 评论 -
WebKit之Chrome和ChromeHost
摘要:浏览器的GUI接口分成两种,一种是控件的绘制,另一种则是同应用息息相关的窗口交互操作。本文主要介绍后一种,在WebKit里面,称之为宿主窗口。Chrome类为WebKit内核定义了一系列的宿主窗口相关的操作接口,并最终在不同的实现中由ChromeClient类的派生类来实现,比如,在Qt里面的ChromeClientQt类。本文将介绍Chrome类在WebKit中的作用,以及在移植WebKi转载 2015-11-20 00:41:47 · 343 阅读 · 0 评论 -
WebKit之js解析和执行初始
## 测试页面 Test-JSC function on_click() { alert("hello"); } Click## 页面加载阶段JSC::evaluate(exec, source, thisValue, exception);JSValue JSMainThreadExecState::evaluate(exec, jsSourc原创 2015-11-21 17:27:32 · 1853 阅读 · 0 评论 -
WebKit之WebGL初识
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正。本次的demo的运行结果照亮世界上次绘制了一个像甜甜圈一样的圆环体模型,虽然没有涉及特别的新知识,但是也算成功的绘制出了3D模型了吧。那么,这次转载 2015-11-16 23:53:48 · 679 阅读 · 0 评论 -
Webkit之多进程分析
在WebKit模块化分析>>中说到WebKit2中的多进程模型。多进程模型已经是浏览器的基本架构要素,下面展开分析一下WebKit2中的多进程模型。协作决定接口,确立责任分工后,对于模块或系统间最重要的事莫过于接口定义,而且是有着简洁明确的定义。对于WebKit2中三个进程中的交互也是相当频繁和多样,如果使用传统的查表法对应解析执行,就会面临巨大的维护成本。WebKit2使用了转载 2015-11-17 00:27:58 · 1008 阅读 · 0 评论 -
Webkit之Port类(ChromeClientQt类)
## 需要Port的类ChromeClientQt:实现宿主窗口、刷新窗口、内容、滚动条、滚动、坐标转换、页面Size变迁、 布局更新、窗口/页面Size、焦点、获取焦点、创建/关闭窗口、窗口显示、模式显示 工具栏/状态栏/状态文本/滚动栏/菜单栏、size可变、运行alert/prompt/confirm、 是否可中断js。m原创 2015-11-21 21:13:02 · 735 阅读 · 0 评论 -
WebKit之架构模型
1. Creating Frame转载 2015-11-21 22:46:23 · 372 阅读 · 0 评论 -
webKit之扩展JSC的三种方法
一.基础知识首先WebKit IDL并非完全遵循Web IDL,只是借鉴使用。WebKit官网提供了一份说明(WebKitIDL),比如Web IDL称"operation”(操作), 而WebKitIDL称为"method"(方法), 另外Web IDL也不像WebKitIDL那样将属性和参数分开。 为JavaScript绑定对象,可以使用module来定义所从属的模转载 2015-11-16 23:56:32 · 799 阅读 · 0 评论 -
Webkit之JSC Binding解析
WebCore与JavaScriptCore之间使用了Proxy模式,WebCore为JSC提供了一层binding层做为封装。Webkit参照W3C Web IDL(之前称为Language Bindings for DOM Specifications)描述DOM接口,但不完全相同。其完整的名称为WebKitIDL, 详细的定义可以参考下面的链接: http:转载 2015-11-16 23:59:04 · 756 阅读 · 0 评论 -
WebKit之平台相关的实现类 && IDL自动生成类
## 平台相关的类DragClientQtDumpRenderTreeSupportQtEditCommandQtFrameLoaderClientQtFrameNetworkingContextQtGeolocationPermissionClientQtIconDatabaseClientQtInspectorClientQtInspectorServerQtPageClie原创 2015-11-21 21:42:34 · 561 阅读 · 0 评论 -
Webkit之RenderLayer创建的场景
##RenderLayer树RenderLayer树是基于Render树建立起来的一颗新的树。同样,RenderLayer节点和Render节点不是一一对应关系,而是一对多的关系。那么哪些情况下的RenderObject节点需要建立新的RenderLayer节点呢?a) DOM树的document节点对应的RenderView节点b) DOM树中的doc原创 2015-11-16 22:18:11 · 494 阅读 · 0 评论 -
webkit之分析收集
1、webkit引擎分析介绍http://wenku.baidu.com/view/b7207e1fff00bed5b8f31d05.html2、webkit之js与dom事件分析http://wenku.baidu.com/view/936bbb7da26925c52cc5bfd0.html3、Webkit常用操作的总结http://blog.csdn.n转载 2015-11-16 23:26:45 · 276 阅读 · 0 评论 -
WebKit之IDL分析
WebkitIDL介绍原创 2015-11-16 23:50:48 · 379 阅读 · 0 评论 -
Webkit之加载流程概述
之前写了几篇加载流程的说明,是从下向上看,有点只见树木不见森林的感觉。经过最近一段时间的学习,有了能加以概括抽象的方法。WebKit加载流程和页面组成是直接相关的,页面就是WebKit要加载的对象。所以WebKit负责加载的类也与负责页面管理的类相对应。Apple关于WebView的说明里清楚表现了页面视图上的MVC结构:一个页面从元素上也有其层次结构,并且和加载类对应转载 2015-11-17 00:07:23 · 425 阅读 · 0 评论 -
页面相关的数据存储Cache
页面可用的缓存包括:Http Cache, Local Storage, Session Storage以及Application Cache. 它们都可以用来减少请求数量,以提高页面的性能及减少流量消耗,这对于移动端的浏览器来说更为重要 (另外还有Memory Cache, 不过对于前端工程而言是透明的)。Http Cache最为常用的缓存机制。相对后三项属于浏览器内转载 2015-11-17 00:12:30 · 481 阅读 · 0 评论 -
Webkit之插件扩展
在Safari里有一个单例对象WebPluginDatabase负责管理本地的插件,每个plugin对应一个WebBasePluginPackage,存放在plugins里。在第一次调用sharedDatabase()会遍历当前系统有哪些可用的插件,并加到列表中管理。每个插件有其支持的MIME types和文件扩展名(Extension),在加载完成后,还会向WebView注册这些信息,以转载 2015-11-17 00:21:31 · 1983 阅读 · 0 评论 -
Webkit之video事件流程分析
HTML的每个元素都可以让JavaScript在某些事件发生时,进行处理。就比如onclick="clickButton()"之类的属性设定。像下面这篇博客所讲的一样,在WebKit中每个元素都有其对应的JS绑定的实现:[WebKit]为JavaScript Binding添加新DOM对象的三种方式及实作对于视频元素,可以对应看看JSHTMLMe转载 2015-11-17 00:24:22 · 816 阅读 · 0 评论 -
Webkit之JS/C++互调关系
## JSC Class关系图## 执行js-scripta.HTMLDocumentParser::runScriptsForPausedTreeBuilderb.HTMLScriptRunner::executec.HTMLScriptRunner::runScriptd.ScriptElement::executeScripte.ScriptC原创 2015-11-21 22:30:52 · 2278 阅读 · 0 评论 -
Webkit之QStyle样式
1)QStyle的继承关系。#QObject->QStyle->QCommonStyle->QProxyStyle->子类化#Webkit内:QProxyStyle中存放一个指针,指向具体平台的Q--Style对象(Window、Unix、Mac、S60、wince..)2)QStyle的常用API#polish(QPalette & p):构造式样(Q原创 2015-11-17 22:14:07 · 408 阅读 · 0 评论 -
Webkit之常用对象API梳理
1)Node#NodeType nodeType()//获取节点类型#ContainerNode parentNode()//容器节点#Element parentElement()//父亲元素#Node>>previousSibling()、nextSibling()//前后节点>>childNodes()、firstChild()、lastChi原创 2015-11-17 21:53:35 · 1527 阅读 · 0 评论 -
Webkit之编译Chrome
#编译步骤S1.安装Microsoft Visual Studio 2005。Chrome的官方开发网站上说也支持Visual Studio 2008编译Chrome。S2. 安装VS 2005 SP1。S3. 安装 Windows 2008 SDK 。按照网上说法,如果是Visual Studio 2008 ,就不需要安装这个了。S4. 配置Windows 200原创 2015-11-17 22:38:02 · 778 阅读 · 0 评论 -
WebKit之零散记忆
1、Document::attach()>> 创建RenderArena = adoptPtr(new RenderArena);>> 创建RenderView:setRenderer(new (m_renderArena.get()) RenderView(this, view()));>> TreeScope::attach();2、detach()>>原创 2015-11-17 23:21:54 · 384 阅读 · 0 评论 -
WebKit之HTMLInputElement介绍
1)HTMLInputElement a,继承关系。 ->EventTarget、ScriptWrappable ->Node ->ContainerNode ->Element ->StyledElement ->HTMLElement、FormAssociate原创 2015-11-17 22:09:15 · 1445 阅读 · 0 评论 -
WebKit之智能指针
1)RefPtr#变量被赋值时,引用计数加1。#当这个变量赋值给其他变量时,引用计数减1。2)PassRefPtr#变量被赋值时,引用计数加1。#当这个变量赋值给其他变量时,引用计数减1。#当PassRefPtr变量赋值给另外一个PassRefPtr或者RefPtr变量时,其本身的计数器将会变成0。1. 局部变量建议使用RefPt原创 2015-11-17 22:07:06 · 517 阅读 · 0 评论 -
WebKit之目录结构简介
【WebKit的QT树状结构】1)WebProcess:main()函数入口。2)WebKit2 IPC、PluginProcess、WebEvent UIProcess:认证UI、下载UI、登陆UI、插件UI、地理UI、CookieProxyUI、WebIcon、WebResourceLoad、WebDatabase WebProce原创 2015-11-17 22:16:34 · 779 阅读 · 0 评论 -
Webkit之QStyle介绍
本文介绍了如何使用qt提供的接口来设计自己的GUI风格(look and feel),并通过一个具体的例子(使QSpinBox垂直显示)来详细说明过程。运行环境:redhat 9.0,qt-x11-free-31.Qt的风格a) Qt简介 Qt是一个跨平台的C++图形用户界面应用程序开发库,使用Qt可以开发出高质量的图形用户接口,它是完全面向对象的、易于扩展且允许真正的组件编程转载 2015-11-17 22:33:57 · 331 阅读 · 0 评论 -
DOS之创建项目之目录架构
@echo offset c_bugName=CLQT-set bugName="%c_bugName%%1"echo %bugName%d:cd d:/cd CLQT_JIRAmkdir %bugName%cd %bugName%mkdir Reply PG MT CT Release原创 2015-11-17 22:26:11 · 336 阅读 · 0 评论 -
Webkit之理解Layout
一个网页从文本信息到最后的渲染结果,要经过很多复杂的过程,前面介绍过DOM树、Render树的创建,也阐述了页面如果被渲染的,其实,这两者中间还有一个非常重要的步骤――布局计算,这是因为在渲染每个元素之前,渲染引擎必须知道它的位置大小等布局信息,我们把计算这些信息的过程称之为布局。布局根据其计算的范围大致可以分为两类,第一类是对整个Render树进行的计算,第二类是对Render树中某个子转载 2015-11-19 01:35:17 · 393 阅读 · 0 评论 -
WebKit之WebSocket的初步源码分析2
static PassRefPtr ThreadableWebSocketChannel::create(ScriptExecutionContext*, WebSocketChannelClient*);>>其中WebSocketChannelClient是指WebSocket对象>>该类是一个抽象类(virtual void connect(const KURL&, const S原创 2015-12-10 17:38:45 · 926 阅读 · 0 评论 -
Webkit之CSS基础介绍
## 概述先谈谈HTML网页的开发者们所遭遇地痛苦和悲惨的经历。在CSS出现前或者出现早期,HTML因为要设计不同风格和样式的元素,所以在不停地加入很多新的元素来表示,例如p,span。然后,问题还是存在,那就是大量的使用表格(Table)元素来排列网页中的元素,这导致一些不好的问题,其一,Table经常嵌Table,导致网页较大,消耗带宽,其二,被搜索引擎解析后,其内容变得杂乱无章。庆幸转载 2015-11-19 01:36:42 · 738 阅读 · 0 评论 -
Webkit之理解CSS实现
# CSS在WebKit和Chromium中的实现## 概述前面章节介绍了CSS的三种基本要素,大概可以分成选择器,各种基本样式和CSS3引入的变形、变换和动画等。本章在此基础上,着重介绍CSS是如何在WebKit和Chromium得到支持的。首先介绍的是CSS解析器,而后分别阐述上面三种基本要素如何在WebKit和Chromium中实现的。接前面章节,这里仍然以之前的CS转载 2015-11-19 01:35:57 · 396 阅读 · 0 评论 -
WebKit之WebGL实现
# WebGL及在WebKit和Chromium中的实现## 概述前面章节介绍了Canvas2D,同时也介绍了在canvas中同样也可以绘制3D图形,也就是Canvas3D或者称为WebGL。同Canvas2D不一样的是,WebGL标准草案不是由W3C来起草的,而是Khronos组织来负责的,目前很多浏览器支持WebGL,例如Firefox, Chrome, Safari(仅限Ma转载 2015-11-20 00:02:50 · 2803 阅读 · 0 评论 -
WebKit之Canvas2D实现
转载请注明原文地址:http://blog.csdn.net/milado_nju/article/details/7293012# Canvas 2D及其在WebKit和Chromium中的实现## 概述Canvas是HTML5新引入的元素,它是一个画布。开发者可以用JavaScript脚本在该元素上绘制任意图形(2D或者3D)。Canvas元素有两个属性“width”和转载 2015-11-20 00:03:37 · 1097 阅读 · 0 评论 -
WebKit之网络栈
转载请注明原文地址:http://blog.csdn.net/milado_nju## 概述前面讲到Chromium的资源加载机制,在调用栈上,提到URLRequest之后就戛然而止,在这之下就是Chromium的网络模块部分,它是在Browser进程中工作的,这部分其实包含很多内容,例如调用栈,Cookie,磁盘缓存,域名解析,网络协议,代理,安全机制等。它们的主要作用是使用转载 2015-11-20 00:06:06 · 392 阅读 · 0 评论 -
WebKit之文本资源解码
本文描述了Webkit文本资源解码时,编码格式的选择问题。这里的文本资源是指HTML/XML、CSS,以及JS文件等。如果没有明确说明,本文提到的“文本解码器”均特指TextResourceDecoder类。文本资源解码器由TextResourceDecoder类表示。该类主要是对文本资源进行编码检测,以确定最终的编码格式;而进行实际的文本解码是m_codec成员,其类型为TextCodec的转载 2015-11-20 00:23:24 · 703 阅读 · 0 评论 -
WebKit之WebSocket
WebSocket是HTML5的一个重要特性,能提供client和server的双向通信,是很多WebAPP做网络通信的首选,不过它在Android的WebKit中并不支持,也就造就了socket.io的流行。在我们云OS中当然不能漏掉这个特性,我这周的任务就是要在云OS的Webkit中支持websocket,以此让WebApp能直接调用websocket API。某些平台的webkit(转载 2015-11-20 00:34:32 · 1201 阅读 · 0 评论