browser
文章平均质量分 84
落魂
这个作者很懒,什么都没留下…
展开
-
浏览器探究——回退和前进
浏览器探究——回退和前进前进:在菜单中点击前进功能主线程会执行BrowserActivity.onOptionsItemSelected,它会调用Controller.onOptionsItemSelected,在处理该菜单项时执行如下语句getCurrentTab().goForward();入口点很明确,就是调用了当前tab的goForward函数。Tab.goForward调用了原创 2012-02-21 21:31:24 · 3508 阅读 · 1 评论 -
浏览器探究——webkit部分——解析(1)HTML起源
浏览器探究——webkit部分——解析(1)HTML起源该篇只学习到数据从接收到,到创建Document,创建DocumentParser的过程。主要讲述到DocumentParser::appendBytesDocumentParser::finish的调用处,后续篇章会学习这两个函数的实现部分。 测试页面:First name: Last na原创 2012-03-27 18:16:14 · 4133 阅读 · 1 评论 -
浏览器探究——webkit部分——解析HTML(2)解码和HTMLTokenizer的处理
浏览器探究——webkit部分——解析HTML(2)解码和HTMLTokenizer的处理接解析HTML起源篇起源篇提到数据的处理会调用到如下的两个函数处DocumentParser::appendBytesDocumentParser::finish一个是解析过程中的,一个是解析完成的。而解析开始时,就是起源篇讲的Document,RenderView,DocumentPar原创 2012-04-05 19:45:56 · 4200 阅读 · 3 评论 -
浏览器探究——webkit部分——解析HTML(3)HTMLToken的处理
浏览器探究——webkit部分——解析HTML(3)HTMLToken的处理接HTMLTokenizer的处理篇上篇学习到HTMLTokenizer的处理,它是利用有穷状态自动机来完成词法解析的,把解码后的字符串作为输入,输出一个个的HTMLToken的。测试页面:First name: Last name: 它的调用栈如下:看下当前完原创 2012-04-10 16:29:26 · 3957 阅读 · 1 评论 -
浏览器探究——webkit部分——Button
浏览器探究——webkit部分——Button测试页面 DOM Tree*#document 0xcfbbf8 HTML 0xc7dba8 HEAD 0xcef368 BODY 0xcd4aa8 INPUT 0x9100b8 STYLE=height:30px; width:原创 2012-06-08 17:59:40 · 3233 阅读 · 0 评论 -
浏览器探究——APP层基本架构
App层的功能主要分几块:使用WebView的浏览器页面主体除WebView之外的UI页面的相关功能,如页内查找,前进,后退设置事件多窗口管理书签/历史记录 首先看构成主体框架的几个类BrowserActivityBrowserActivity继承自Activity,提供了对Browser应用生命周期的控制,事件的入口。这里的事件包括Key的事件,菜单的原创 2012-06-24 22:12:22 · 98 阅读 · 0 评论 -
浏览器探究——APP层基本架构
浏览器探究——APP层基本架构App层的功能主要分几块:使用WebView的浏览器页面主体除WebView之外的UI页面的相关功能,如页内查找,前进,后退设置事件多窗口管理书签/历史记录 首先看构成主体框架的几个类BrowserActivityBrowserActivity继承自Activity,提供了对Browser应用生命周期的控制,事件的入口。原创 2012-06-25 14:44:36 · 5210 阅读 · 8 评论 -
浏览器探究——Framework层基本架构
浏览器探究——Framework层基本架构Framework层的主要功能Framework层的webkik主要起到提供给APP层一个WebView控件,WebSettings设置,WebViewClient回调,WebChromeClient回调。这些用于上层APP实现浏览网页的功能。而对于下层,通过native的接口与c++层的WebKit对接,把上层需求传递给WebKit,把Web原创 2012-07-02 23:35:01 · 4326 阅读 · 4 评论 -
浏览器探究——APP层UI布局
浏览器探究——APP层UI布局 最外层的布局最外层的View是Activity的mActivity.getWindow().getDecorView(),显示为PhoneWindow$DecorView它的内部有FrameLayout为id/content,通过FrameLayout frameLayout = (FrameLayout) mActivity.getWindow()原创 2012-07-29 00:05:53 · 4697 阅读 · 6 评论 -
浏览器探究——下载
浏览器探究——下载当前我的机器还是无网络状态,以下讨论可能有错误长按一个链接,会调用到BrowserActivity.onContextItemSelected,进而调用Controller. onContextItemSelected。在处理该菜单项时,会调用当前WebView的requestFocusNodeHref。/** * Request the anchor o原创 2012-02-22 10:04:20 · 2249 阅读 · 1 评论 -
浏览器探究——执行网页跳转
浏览器探究——执行网页跳转Main线程中执行。UrlInputView控件UrlInputView执行OnEditorAction->finishInput/** *url/search input view *handling suggestions */public class UrlInputView extendsAutoCompleteTextView原创 2012-02-21 21:30:52 · 5112 阅读 · 11 评论 -
浏览器探究——下载
浏览器探究——下载当前还是无网络状态。长按一个链接,会调用到BrowserActivity.onContextItemSelected,进而调用Controller. onContextItemSelected。在处理该菜单项时,会调用当前WebView的requestFocusNodeHref。/** * Request the anchoror image element原创 2012-02-21 21:31:54 · 178 阅读 · 0 评论 -
浏览器探究——多窗口
浏览器探究——多窗口点击网址导航栏后面的多窗口的图标。会调用NavigationBarPhone.onClick。NavigationBarPhone该类创建了导航栏的各个控件,其中的onClick是各个控件点击的总入口。通过名字可以看出这个导航栏是指针对手机的,因为4.0即包含phone的需求又包含pad的需求。NavigationBarPhone是继承自Navigation原创 2012-02-22 10:05:01 · 3311 阅读 · 3 评论 -
浏览器探究——webkit部分——http请求
浏览器探究——webkit部分——http请求执行加载一个页面时,BrowserFrame的loadUrl会通过jni调用到WebCoreFrameBridge.cpp的LoadUrl中。Java层的BrowserFrame对应的是c层的WebCore::FrameWebCoreFrameBridge::LoadUrl这个函数会通过参数获取到url并用url创建一个WebCore::K原创 2012-02-24 15:14:40 · 6482 阅读 · 4 评论 -
浏览器探究——webkit部分——http响应
浏览器探究——webkit部分——http响应首先回忆下http发送的位置,在ResourceHandle::start中使用静态函数ResourceLoaderAndroid::start进行发送。这里创建了WebUrlLoader,它有个成员WebUrlLoadClient类,这个类有主要成员,WebFrame,WebCore::ResourceHandle,WebRequest,WebR原创 2012-03-05 19:11:29 · 3189 阅读 · 1 评论 -
浏览器探究——UserAgent
浏览器探究——UserAgent首先看APP层对UA的使用情况BrowserSettings对UA的维护在BrowserSettings.java中定义了几个固定的UA值。还包含了一个成员private WeakHashMap mCustomUserAgents;该成员记录的是某个WebSettings被用户额外的设置的UA情况。浏览器中有唯一的一个BrowserSettings。原创 2012-03-23 20:23:35 · 5044 阅读 · 3 评论 -
浏览器探究——webkit部分——资源加载进度
浏览器探究——webkit部分——资源加载进度该文看下在ResourceLoadNotifier::didXXX中对页面加载进度的处理。首先在ResourceLoadNotifier::didReceiveResponse中,通过Frame找到Page,然后通过Page找到ProgressTracker,然后ProgressTracker它负责计算和维护当前接收的进度情况,其中有成原创 2012-03-07 16:19:44 · 2752 阅读 · 1 评论 -
浏览器探究——webkit部分——HTMLinput标签
浏览器探究——webkit部分——HTMLinput标签测试页面First name: Last name: 这里不看DOM的构建以及layout和Rander的处理等,这里只关注下input标签的一些基本的处理情况。 HTMLInputElementHTML的Input标签的类结构。class HTMLInputElement : publicHT原创 2012-03-23 10:37:34 · 2995 阅读 · 2 评论 -
浏览器探究——WebKit部分——支持WML
浏览器探究——WebKit部分——支持WML开启宏定义Android的代码中本身已经对WML做了一定的支持了,但是默认情况下并没有开启,这些支持都在一个ENABLE_WML的宏定义中括起来了,可以grep下源代码看下有很多ENABLE(WML)括起来的代码。代码中需要的宏这个ENABLE的宏定义我查的在Source/JavaScriptCore/wtf/Platform.h中被定义原创 2012-03-12 12:06:02 · 2945 阅读 · 3 评论 -
浏览器探究——webkit部分——WebKit平台相关层基本架构
浏览器探究——webkit部分——WebKit平台相关层基本架构该部分研究的很浅,会有很多错误之处,请注意。这里主要先关注下Source/WebKit/android下的几个文件跟FrameWork层通过JNI关联的类在jni/目录下跟WebCore相关联的一些类在WebCoreSupport/目录下一些跟cache相关的和WebView对应的jni在nav/目录下 W原创 2012-07-28 23:36:21 · 2832 阅读 · 4 评论