WebKit/Chromium
hursing
我不会告诉你他是一只葵鼠哒 O(∩_∩)O
展开
-
Web开发须知的浏览器内幕 缓存与存储篇(2)
本文禁止转载,由UC浏览器内部出品。3. HTTP Cache综述HTTP Cache是完全按照IETF规范实现的,最新的RFC规范地址是 https://tools.ietf.org/html/rfc7234。它的作用就是保存可缓存的响应以备重新使用,在下次请求时可减少响应时间和网络带宽。只有GET和HEAD method会缓存。浏览器的优化浏览器是过滤了部分没有意义进行缓存的响应头才保存到磁盘原创 2016-09-23 11:06:55 · 4531 阅读 · 0 评论 -
WebCore::Widget浅探
研究方法:WebKit的xcode工程里以Widget为关键字全局搜索,查看相关函数名与注释新建一个使用了UIWebView的工程,运行时lldb里image lookup与Widget有关的类探寻:Widget.h里有以下注释:// The Widget class serves as a base class for three kinds of objects: //原创 2013-03-18 20:31:00 · 4618 阅读 · 0 评论 -
识别浏览器的JavaScript引擎的方法
答案来自StackOverflow,打开这个网页http://jsbin.com/opuvas即可,这个网页也是答题者自己写的。二维码是这个网址。网页内有统计访问量,作者想知道对多少人有用,建议尊重原创,不要复制这个网页。对PC浏览器和移动浏览器都可用。其原理是这段js:window.onload = function() { var v8string = 'fun原创 2013-10-19 10:58:05 · 3812 阅读 · 0 评论 -
Chromium项目文化
Chromium是一个开源的浏览器项目,官方网站列出了许多文档。 官网最值得学习的地方:许多指引写得非常细致,能以老师教导学生的态度去叙述如何工作,而不是为了写文档而写文档,例如“不要害怕问问题,总有人会在IRC上帮到你”。多数文章写得很好很凝练,没法抽取主要信息,全文翻译又太耗时,不如直接看原文。所以只需要筛选出有用的信息,而不用自己总结什么。虽然一些文档会偏旧,但胜在齐全,特别是工作规范类的文原创 2014-07-22 17:14:10 · 6811 阅读 · 3 评论 -
iOS Safari/WebKit对DeviceOrientationEvent的实现
背景知识:Apple官方只发现一个文档:https://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/DeviceOrientationEventClassRef/DeviceOrientationEvent/DeviceOrientationEvent.html连个例子都没原创 2013-06-08 18:00:28 · 15099 阅读 · 0 评论 -
使用支持SPDY协议的Wireshark截包(含spdyshark插件)
本文基于前三篇文章,请先阅读:Linux Mint + Apache2.2搭建SSL/HTTPS/SPDY服务器Wireshark+Apache2.4解密SSLv3Linux Mint下编译安装支持SPDY协议的Wireshark原创 2014-03-07 10:51:38 · 9488 阅读 · 1 评论 -
Linux Mint + Apache2.2搭建SSL/HTTPS/SPDY服务器
1、安装apachesudo apt-get install apache22、配置SSL,支持HTTPS这步的作用是启用SSL模块和令网站支持SSL协议。cd到 /etc/apache2/sites-enabled ,然后执行sudo ln -s ../sites-available/default-ssl .cd到 /etc/apache2/mods-enabled ,原创 2014-02-27 14:43:50 · 5712 阅读 · 0 评论 -
网页在Safari快速滚动和回弹的原理: -webkit-overflow-scrolling : touch;的实现
现在很多for Mobile的H5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼。要实现这个效果很简单,只需要加一行css代码即可:-webkit-overflow-scrolling : touch;可用以下网页测试: scroll .container {原创 2013-06-27 13:50:04 · 109896 阅读 · 2 评论 -
iOS Safari/WebKit对DeviceMotionEvent的实现
请先阅读《iOS Safari/WebKit对DeviceOrientationEvent的实现》,本文是姐妹篇。简单地描述一下区别,后面会更详细对比:DeviceOrientationEvent是获取方向,得到device静止时的绝对值;DeviceMotionEvent是获取移动速度,得到device移动时相对之前某个时间的差值比。背景知识:Apple官方依然只原创 2013-06-09 14:40:06 · 12618 阅读 · 0 评论 -
Chromium的智能指针/引用计数/Callback/Bind
本文算是个笔记整理,不解释基本概念,有做相关工作的人才看懂哦。一、自动释放指针智能指针分两类,对有和没有引用计数实现的类做区分。没有引用计数的类,使用scoped_ptr。这个模板类中的D是指Deleter,代表如何删除T。引入Deleter最简单的原因就是对数组需要使用delete[]操作符,实际上有4个默认的Deleter。3个Deleter都是通过重载括号运算符来执行实际的delete操作,原创 2014-08-23 14:24:14 · 6547 阅读 · 0 评论 -
Chromium的沙盒Sandbox
代码位置:http://src.chromium.org/viewvc/chrome/trunk/src/sandbox/Android使用和Linux一样的代码。http://src.chromium.org/viewvc/chrome/trunk/src/sandbox/linux/1.设计目的/目标纯粹地为了安全。sandbox本身就意味着程序要使用多进程架构。做到安全的方法就是让可能不安全原创 2014-08-23 14:28:39 · 10530 阅读 · 0 评论 -
Web开发须知的浏览器内幕 缓存与存储篇(1)
本文禁止转载,由UC浏览器内部出品。0.前言大纲浏览器缓存和存储相关的功能分为四类:加载流程 Memory CacheApplication Cache(简称AppCache)HTTP CacheCookie StorageJavascript API Web StorageIndexed DatabaseFile APICache Storage(Service Worker的原创 2016-09-23 11:02:28 · 5678 阅读 · 0 评论 -
网页浏览器发展方向总结
经过国内厂商的几轮营销轰炸,不少人都知道了浏览器有内核的概念,那么相对地,就有外壳/应用层(Shell)。十年前,用户就只对外壳有认知,直到今天这几个东西仍是标配:在HTML5/CSS3的时代,内核向Web OS发展,用户感受到在浏览器里能体验的东西越来越多。W3C被开源项目推进而制定出了很多新标准,浏览器渐渐演绎成操作系统虚拟机,模拟系统SDK提供各种API给Javascript访问系统设备。开原创 2014-09-02 14:00:22 · 5824 阅读 · 2 评论 -
利用javascript和canvas获取UIWebView网页里的图片(不用再下载)
在UIWebView网页里要获取img标签的图片,网上的方法都是通过获取到URL然后自己再下载一遍,耗流量、耗时间、不能通过验证。这里是利用UIWebView的stringByEvaluatingJavaScriptFromString函数,执行一段js,返回图片数据。具体的方式有两种:原创 2013-10-19 09:54:28 · 14218 阅读 · 20 评论 -
Mac OS X编译最新webkit(2013-03-15)
安装Xcode,4.5版本或以上。必须要安装的方式,不能copy。xcode菜单Xcode->Preferences...->Downloads->Components栏选择Command Line Tools的Install。不做这步的话,可能会出现warning:“The specified SDK “Current OS X” does not appear to have all原创 2013-03-18 20:30:35 · 5818 阅读 · 2 评论 -
SPDY、HTTP/2、QUIC协议
1 SPDY协议1.1 概述SPDY为speedy(单词原意:快速的)的缩写,读音也就是speedy。SPDY协议已发布过4个草案,分别为版本1、2、3、3.1。目前版本4已在试验阶段,但未发布,Chromium里已有一些针对版本4的代码。SPDY对比HTTP的优势:复用连接,可在一个TCP连接上传送多个资源。应对了TCP慢启动的特性。请求分优先级,重要的资源优先传送。 H原创 2014-04-02 11:27:20 · 73040 阅读 · 4 评论 -
Chromium项目文化(续)
文化 文化一词,涵盖的是设计思想/理念、工作原则等精神领域的追求,也可以说是技术情怀,它是如此大型的Chromium项目能良好运作的基石,所以单独做一个总结。 1.竖立宗旨 把开源项目也运作得一家公司,对应于企业文化,Chromium提出了自己的宗旨:为用户创造更安全、更快速和更稳定的上网体验。阅读后面的章节你会发现原创 2014-09-17 18:07:34 · 3848 阅读 · 0 评论 -
Android4.4系统浏览器Chromium实现的加载模块与流程
本文只描述Http网络请求相关的信息,Https、Spdy、file、ftp、websocket等的类型只提及在哪里出现关系分支。 下面是加载流程的xmind导出图,最好另存为到本地用看图软件看。看图提示:从上往下是根据堆栈倒置过来画的流程“..."表示省略IPC机制的代码图中有一些地方省略了Callback机制的代码同一父节点表示在此父函数内按顺序执行大部分类名和函数名已代表了其功能和意义,还可原创 2014-08-21 11:36:45 · 9306 阅读 · 1 评论 -
Linux Mint 15下编译Chromium for Android
首先得看官方文档,大部分操作步骤就是那样,我就不翻译了,只做补充。https://code.google.com/p/chromium/wiki/AndroidBuildInstructions1. 在执行这步sudo ./install-build-deps-android.sh前,修改这个脚本,把if /usr/bin/lsb_release -r -s | grep -q "12原创 2013-07-08 14:57:09 · 3694 阅读 · 0 评论 -
iOS Safari和UIWebView对orientationchange事件的实现
背景知识:Safari Web Content Guide中关于orientationchange的文档:http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_re原创 2013-06-07 19:56:40 · 6347 阅读 · 1 评论 -
iOS调用WebView私有API的方法
WebView的私有API请查看《UIWebView体系结构(七)WebView》。先上代码吧- (void)modifyUA{ id webView = [uiWebViewInstance valueForKeyPath:@"_internal.browserView._webView"]; [webView performSelector:@selector(set原创 2013-06-14 17:04:22 · 9977 阅读 · 3 评论 -
iOS WebCore的WebEvent和EventHandler
WebEvent是iOS专有的类,负责封装和携带从UIKit得到的系统事件信息,并由WebKit层的WAKResponder子类传递到WebCore的EventHandler。UIKit层的逻辑可参考《iOS私有API(三) UIWebView下的手势识别器gestureRecognizer》,WebKit层的相关类可参考《WebCore::Widget浅探》。开源码中WebEvent的声原创 2013-06-18 16:22:30 · 4153 阅读 · 0 评论 -
iOS的QuickTime Plugin
当UIWebView播放视频时,可以看到view hierarchy里有FigPluginView的身影。这个类来自于QuickTime Plugin,plugin的路径为:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1原创 2013-05-07 18:13:57 · 6435 阅读 · 9 评论 -
利用IDA和LLDB探索WebCore的C++类的继承关系
开刀的类名叫 PluginWidgetIOS,利用lldb可以得到:(lldb) image lookup -r -s PluginWidgetIOS7 symbols match the regular expression 'PluginWidgetIOS' in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSim原创 2013-05-02 17:54:57 · 4590 阅读 · 0 评论 -
UIWebView体系结构(三)UIWebDocumentView和WebView
WebView是UIWebDocumentView最重要的组合对象,先讲WebView吧。WebView的声明如下:(代码好长,点此跳过)@interface WebView : WAKView{ WebViewPrivate *_private;}+ (void)registerViewClass:(Class)arg1 representationClass:(Cl原创 2013-04-10 10:07:47 · 11106 阅读 · 1 评论 -
UIWebView体系结构(五)_UIWebViewScrollView和UIWebScrollView
_UIWebViewScrollView的继承链为:_UIWebViewScrollView->UIWebScrollView->UIScrollView。通过反编译可以得到实现。_UIWebViewScrollView和UIWebScrollView的实现为:(代码好长,点此跳过)@interface UIWebScrollView : UIScrollView- (void)d原创 2013-04-10 17:43:46 · 8988 阅读 · 0 评论 -
xcode使用lldb的python脚本查看WebKit的WTF::String和Vector等基础类
webkit关于gdb的wiki:http://trac.webkit.org/wiki/GDB它是自带了gdb和lldb的python脚本的,路径分别在webkit workingcopy/Tools/gdb/webkit.py 直接看脚本内容http://trac.webkit.org/browser/trunk/Tools/gdb/webkit.pywebkit workingc原创 2013-03-28 11:24:04 · 3891 阅读 · 0 评论 -
UIWebView体系结构(四)UIWebBrowserView
UIWebBrowserView的声明如下:(代码好长,点此跳过)@interface UIWebBrowserView : UIWebDocumentView { UIWebFormAccessory *_accessory; NSObject *_input; DOMNode *_currentAssistedNode; DOMNode *_assis原创 2013-04-10 11:13:52 · 14834 阅读 · 0 评论 -
UIWebView结构体系(二)UIWebTiledView和WAKWindow
UIWebTiledView是UIWebBrowserView->UIWebDocumentView->UIWebTiledView继承链中的老爷子,但这三个类的职能却是MVC的关系,UIWebBrowserView是Controller,UIWebDocumentView是Model,UIWebTiledView是View。(这也是我第一次见到这样的设计,很有意思)它的声明为: (代码好长,原创 2013-04-09 10:52:23 · 5226 阅读 · 0 评论 -
Mac Safari VS Mobile Safari开启的宏
宏Mac OS X 10.7 Safari Mobile Safari iOS6.1模拟器版Mobile Safari开了Mac Safari没开的声明位置原创 2013-03-26 13:49:39 · 3031 阅读 · 0 评论 -
iOS的WebThread
当用到UIWebView、UITextField、UITextView等类时,就会看到WebThread线程:在lldb中搜索(lldb) image lookup -r -s [wW]ebThread会有超过一百个结果。对于普通开发者而言,WebThread最有意义的东西恐怕是UIWebView的私有API- (void)_setDrawInWebThread:(BO原创 2013-05-08 11:23:45 · 11943 阅读 · 2 评论 -
谈谈iOS的Safari和UIWebView
打开iOS4.3上的iPad Safari,再跟iOS6.1上的对比,也许你会觉得4.3没有标签栏,不够好用,但那个多窗口的设计却又非常酷。iPhone上的Safari 4.3也和iPad差不多。这个多窗口的设计,影响了那个年代的第三方浏览器,UC啊,QQ啊都这么学。可是后来呢,iPad上的诸多第三方浏览器都是有标签栏的,Safari估计是被骂多了,在iOS5开始也这么干。可是其实原创 2013-05-09 10:56:54 · 8435 阅读 · 0 评论 -
Mac10.9和iOS7新公开的框架JavaScriptCore.framework
官网的介绍:The JavaScript Core framework (JavaScriptCore.framework) provides Objective-C wrapper classes for many standard JavaScript objects. Use this framework to evaluate JavaScript code and p原创 2013-06-18 17:48:30 · 6568 阅读 · 1 评论 -
查找MobileSafari WebKit revision number的方法
Mobile Safari是开源的Mac Safari的iOS版本,然而iOS WebKit并不完全开源,只公开了部分的WebCore和JavaScriptCore。有时需要知道iOS Safari的WebKit revision number是对应www.webkit.org上的哪个,可以这么看。用Mobile Safari打开http://www.whatsmyuseragent.原创 2013-06-17 12:58:02 · 4800 阅读 · 0 评论 -
UIWebView体系结构(一)概貌
UIWebView属于UIKit,封装了WebKit.framework的WebView;WebView组合管理了WebCore.framework的Page,并提供了各种Clients;Page管理了Main Frame,Main Frame管理了sub Frame(FrameTree)。UIWebView层(点击图片查看全图):WebView层(点击图片查看全图原创 2013-04-08 12:49:27 · 9309 阅读 · 1 评论 -
UIWebView体系结构(六)UIWebView
UIWebView的实际成员变量都由UIWebViewInternal保存,UIWebViewInternal的声明如下:@interface UIWebViewInternal : NSObject{ UIScrollView *scroller; UIWebBrowserView *browserView; UICheckeredPatternView *ch原创 2013-04-16 16:28:49 · 10256 阅读 · 0 评论 -
iOS WebCore的wak目录
《iOS的WebThread》中提到:iOS的WebCore开源码,6.1版本的下载地址为:http://opensource.apple.com/release/ios-61/比起webkit.org上的Mac开源码,会多了个wak目录,内有21个文件。今天认真看了下全目录,还果然挖掘出好多信息。这21个文件的文件名,8个以WAK开头,6个以WebCoreThre原创 2013-05-10 15:12:28 · 3936 阅读 · 0 评论 -
UIWebView体系结构(八)各个Client综述
各种Clients会有些共性:1.WebCore会声明抽象基类,各Controller持有基类类型的指针2.由第三方创建Client并传递指针给Controller,Controller析构时会通知Client,Client此时删除自身。例如void WebChromeClient::chromeDestroyed(){ delete this;}3.自身脱离W原创 2013-06-14 16:41:05 · 4085 阅读 · 0 评论 -
cloc统计WebKit的代码量
2013年 6月 5日 星期三 16时52分43秒 CST 最新完整update的webkit代码。cloc是开源的,下载地址 http://sourceforge.net/projects/cloc/下载了perl版。结果:Cyan:Downloads liuhx$ perl cloc-1.58.pl /Users/liuhx/Desktop/webkit 135856 te原创 2013-06-05 18:03:34 · 3159 阅读 · 1 评论 -
UIWebView体系结构(七)WebView
在《iOS WebCore的wak目录》中证实了iOS的WebKit是想尽可能复用Mac上的代码,所以WebView在iOS和Mac上差不多。Mac WebView的参考文档:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Referenc原创 2013-06-06 12:21:59 · 7956 阅读 · 0 评论