自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

armite的专栏

webkit和android交流armite@126.com

  • 博客(58)
  • 收藏
  • 关注

原创 PPT文档三

PPT文档要有一个流程,首先把项目的目标想清楚后,再想项目的内容和结构,最后想清楚实现方法。清晰地表达了目标之后,就是项目的内容和结构了,这两天大致地写了写,发现项目的内容比较多,而且结构比较复杂,只是用简单的文字来表达,就已经有二十多页了,这还没有把结构说清楚,关键是还没有设计好想清楚,那怎么办呢?这里想到了两个方法:一个是“顿悟”,一个是“渐悟”“顿悟”是指一直在潜意识中思考这个项...

2018-10-29 17:49:41 178

原创 PPT文档二

在一句话说清楚项目要做什么后,接下来就是要分析项目的组成模块及其结构了,首先大模块有两个,一个开发环境,一个运行环境,模块之间通过页面进行连接,其次是递归地进行这个过程,先从三层递归开始:第一层:如何能快速开发呢?一个所见即所得的界面,一个能不断增加,并且能复用的组件库等。如何丰富功能呢,尤其是扩展本地功能,即浏览器没有提供的能力,如播放器等。如何提高性能呢,移植优化blink。第二层:组...

2018-10-25 15:29:05 188

原创 要写一个PPT文档一

最近有个项目要主导,好久没有做些事情了,人都变懒了,本来想写一个PPT文档,让领导知道项目能做什么,让兄弟们知道项目都需要做什么,如何做比较好,但是憋了好长时间都没什么思路,今天领导催文档了,想要在这周看看初稿,那么就要在这周把文档写完,一天又过去了,依然没有思路,这怎么办呢?说说这个项目吧,首先一句话总结,打造一个快速开发页面的平台,及其功能丰富和性能高效的运行时。其次是分解为相互配合的...

2018-10-25 12:02:57 228

原创 chromium源码的下载和编译三

chromium生成编译工程文件需要用到gn,但是gn又在chromium的依赖库中需要gclient来下载,这是需要翻墙的,于是在github上搜索了一下gn,真的找到了一些源码镜像,但是发现其编译过程还是需要gn,这变成了蛋鸡问题了,于是在网上找了一个最新的gn可执行文件,运行gn args out/debug,发现生成过程还是需要用gclient同步一些依赖库,这又变成了蛋鸡问题。在看c...

2018-10-19 18:20:27 3850 2

原创 Chromium源码下载与编译二

chromium是一个开源项目,同时也依赖于其他很多的开源库,因此google写了一个管理多项目的工具gclient,gclient是一个python程序,会根据目录下的DEPS文件下载依赖库到相应的目录中,分析DEPS文件,会发现依赖库都是从googlesource上下载的,这需要翻墙才能做到,但是同时也发现下载的库很多,有些可能是用于调试或测试的,而且有些功能不用,可以不下载相应的依赖库,那么...

2018-10-18 18:18:25 646

原创 chromium源码下载与编译一

最近要做一个Android上的Hybrid项目,本来一直用WebKit,但是WebKit是在2012年移植到Android上的,已经不能支持最新的Web技术了,而且Android上的Chromium发展迅速,已经能够满足各种需求了。实际上现在才开始跟进Chromium,已经是很晚了,究其原因,可能有以下三方面原因吧:技术惯性,一直在WebCore上开发,也积累了一些经验,这导致对WebKi...

2018-10-17 18:20:12 2777

原创 176532版本webkit中RenderObject类结构

好久没看WebCore/render

2014-11-25 15:12:16 2207

原创 在android上使用cairo

cairo是一个2D库,在浏览器领域主要是mozilla firfox在用。webkit实际上也有用到cairo,主要是efl,gtk等,但是在android上,webkit用的是skia。因此在android要想用cairo就需要自己编译移植了。android上有Bitmap,这个直接对应于cairo的image surface就可以用,这个移植比较简单,主要是Bitma

2013-06-05 14:39:17 5313 2

原创 最近的对wenkit进行的优化修改

1.系统类1.1 JSDOMWindowCustom.cpp  增加对plugin的直接js访问,统一plugin接口1.2 HTMLTextFormControlElement.cpp  设置输入框不能选择1.3 MainResourceLoader.cpp  去掉数据发送和接收监听1.4 EventHandler.cpp  去掉模拟的鼠标事件1.5 SocketStream

2013-06-05 12:00:36 2527 1

原创 总结一下对webcore的修改

1.增加提示打印类1.1Error.cpp,js执行错误打印1.2HTMLTokenizer.cpp,html解析错误打印1.3MainResourceLoader.cpp,主页打开失败提示1.4FontCacheFreeType.cpp,增加font加载失败打印2.系统修改类2.1CurrentTime.cpp,Timer时间获取用clock时间BackForwardLi

2012-11-26 18:28:22 2682 1

原创 关于tv app的一些想法

工作了6-7年了,一直是在机顶盒领域,一直和视频的检索和播放打交道,一直在做技术。以前是做iptv机顶盒的,现在是做互联网电视机顶盒的,在技术上的区别是不大的。通过这些年与电信,广电打交道,现在对产品有了一些小想法。无论是iptv还是cntv,都是在电视上看视频,直播的或是点播的。那么在显示上都是以web为主,用web来显示epg内容,用osd来显示状态。但是随着android

2012-05-09 14:18:06 2796 3

原创 做技术的伤痛

最近在青岛出差,做一个android4.0的项目,就是把ndk编译的webkit产品化到一个嵌入式终端上。这个项目是以webkit为核心的web式项目,也就是以webkit为舞台,在其上开发特定的web应用。但是webkit有个硬伤就是没有播放器,而播放器对嵌入式来说是相对比较复杂的,因为每个平台的播放芯片都是私有的,因此在webkit中用plugin的方式,把底层播放器的功能提供给j

2012-04-13 22:04:10 3116 8

原创 android ndk编译自己的webkit

android本来自带了webkit浏览器,但是要对其进行custom就需要android源代码才行,但是在没有源码的情况下,那么就需要用到ndk了,比如,我是在xoom上做custom webkit的。虽然ndk提供的库很少,而且没有skia,但是好在有bitmap,这样显示慢了点,没有硬加速,但不是不可能。webkit需要的第三方库,freetype,png,jpeg,sqlite

2011-12-15 14:30:24 8220 3

原创 移植webkit到c2的mips平台

最近在移植webkit到c2平台,移植是基于最新的webkit代码,应该是5月份的,好像svn是8****吧。移植中也遇到了不少的问题,现在记录一下,时间长,记不了太全了1.多线程问题,webkit初始化线程和事件处理线程都需要是主线程,这个限制了webkit

2011-08-16 15:38:59 3235

原创 好长时间没有写博客了

最近换了个工作,一切都比较忙现在好多了,以后争取每周写一到二篇呵呵。。。

2011-08-16 13:22:30 1885

原创 webkit中添加widget显示

<br />widget其实就是一个网页,这样可以理解为在当前webkit多显示一个网页。<br />因此最低层次也要在page中多实例一个frame,在往上就是多实例page了。<br /> <br />可以选择在page中多实例frame,<br />实际上在page中有个mainFrame,这个是当前网页的主窗口,<br />因此建一个需要和它平级的frame来显示widget,<br />这样frame和mainFrame只是共享一个page而已。<br /> <br />比较难处理的有两个方面,一

2011-05-06 17:12:00 2935

原创 webkit中JavaScriptCore目录的内容

<br />1.assembler是jit编译中间码用到的汇编程序<br />2.bytecode中间码相关的类和定义<br />3.生成中间码的类实现,实际上是编译Node类<br />4.interpreter用来执行js的类,实际上就是执行CodeBlock<br />5.jit执行jit汇编程序的类<br />6.parser解析js用到的词法分析类,语法分析bison文件和Node类结构<br />7.runtime是js的执行环境中自带的类<br />8.wtf是WebCor和JavaScrip

2011-05-03 18:15:00 3038

原创 去年的webkit的js解析与执行

<br />现在用的是去年的webkit,一年来SquirrelFish也改动了很多,但是大体上还没有变。<br /> <br />js分为编译和执行两个主要过程,连接这两个过程的是CodeBlock结构。<br />执行分为两种情况,一个是虚拟执行CodeBlock的中间码,一个是jit把CodeBlock的中间码翻译成汇编再执行<br /> <br />编译也分为js解析和中间码生成两个过程,连接这两个过程的是Node结构。<br />解析也分为词法分析和语法分析两个过程,其中Lexer比较简单,Gra

2011-05-03 17:52:00 4356

原创 webkit中图片的解码过程

<br />从loader下载图片后,在ResouceLoader中会创建一个SharedBuffer保存图片员数据,<br />然后把SharedBuffer传给CachedImage,其多重继承于CachedResource和ImageObserver,<br />然后CachedImage传给成员BitMapImage,其继承于Image,用于在GraphicsContext中显示,<br />Image中也会引用SharedBuffer,并且也引用CachedImage,<br />然后BitMap

2011-04-07 17:18:00 6041 2

原创 扩展javascriptCore的功能

<br />javascriptCore是webkit原生的js解析器,2008年被重写改名为SquirrelFish,可以参考<br />http://www.webkit.org/blog/189/announcing-squirrelfish/<br /> <br />其实现的是ECMAScript edition 3,可以参考<br />http://en.wikipedia.org/wiki/ECMAScript<br /> <br />要做的扩展是:<br />1。在js解析失败时,打印出url

2011-03-31 14:17:00 3354 2

原创 新的webkit中html解析器

<br />DocumentLoader收到html后通过DocumentWriter调用HTMLDocumentParser::appendBytes,<br />然后通过DocumentWriter解码后,调用HTMLDocumentParser::append添加到HTMLInputStream中,<br />如果当前有js在执行,就调用HTMLPreloadScanner预先下载一些img和css资源,<br />如果有被suspend,就等待HTMLParserScheduler来resume,<

2011-03-25 16:18:00 4983

原创 webkit中FastMalloc的分析

<br />FastMalloc是google写的,主要是为了内存管理.<br /> <br />首先每个线程都有自己的TCMalloc_TheadCache结构,用来管理每个线程的heap,由PageHeapAllocation<TCMalloc_TheadCache>分配,<br /> <br />其次有个TCMalloc_Central_Freelist数组,这个是所有线程共享的用来获取进程heap的空内存,管理的Span结构<br />然后所有内存管理在TCMalloc_PageHeap,通过Pag

2011-03-24 18:06:00 4443

原创 关于的webkit的fastmalloc

webkit是用fastMalloc进行内存管理的,需要与NDEBUG是同时定义。除了GC中的JSCell外,其他的内存都会用fastMalloc来分配。JSCell因为需要进行回收,所以放到了一块能aligned的内存块中,因为GC的mark是根据其地址进行计算的。wtf/FastAllocBase.h中定义了一些关键的使用fastMalloc和fastFree的接口,其中fastMallocMatchValidateMalloc和fastMallocMatchValidateFree是为这块内存加上一个

2011-03-11 16:24:00 3950

原创 webkit的编译

webkit支持很多的porting,而每个porting的编译都不一样。但是webkit有一个perl脚本用来管理这些编译。build-webkit和webkitdirs.pm但是要深入开发时,必须要看懂编译系统,才能做自己的东西。其中qt用的是qmake来生成makefile,*.pro和*.priwince和efl用cmake来生成makefile,相关文件是CMakeLists.txt和CMakeLists${PORT}.txtgtk用autotools来生成makefile,其他的可以从webki

2011-03-11 11:13:00 3222

原创 webkit的键盘事件分发过程

<br /><br />1.找到当前的focus Frame<br />2.调用Frame event keyEvent,传入参数为PlatformKeyboardEvent<br />3.找到当前的focus node用于处理事件<br />4.判断当前的事件是否问题控制按键<br />5.分发KeyUP和Char类型事件并直接返回结果<br />6.建立一个新的PlatformKeyboardEvent keyDownEvent,并且把它变成RawKeyDown类型<br />7.根据keyDownEv

2011-01-30 11:47:00 5011

原创 更新的vimrc

<br /><br />  1 set number<br />  2 set list<br />  3 set listchars=tab:>-,trail:-<br />  4 set expandtab<br />  5 set tabstop=4<br />  6 set shiftwidth=4<br />  7 set incsearch<br />  8 set hlsearch<br />  9 set wildmenu<br /> 10 set wildmode=list,full<br

2010-12-15 21:27:00 1968

原创 怎么做选择这么难???

<br />以前的选择失败,就不说了,太多了,说出来就太后悔了。<br /><br /><br />就说今年吧,<br />年初找房子,被中介忽悠了,选择失败,赔了3千多。<br />年中又找了个房子,选择又失败,赔了2千多。<br />后来选择了现在这个,但是马上就要再找了,哎~~~<br /><br /><br />最郁闷的是上个月终于可以跳槽了,<br />但是被现公司领导一忽悠,留了下来,<br />结果是承诺一个没兑现,<br />现在还要受不到信任,<br />不知道能不能得到相应的待遇了,<b

2010-12-15 21:24:00 1209

原创 OWB的IFrame没有析构bug

<br />OWB中WebView对应着WebCore::Page,<br />其中mainFrame是用来打开网页的主要Frame,<br />WebFrame对应者WebCore::Frame,<br />在网页中打开,iframe时,也会建立一个WebFrame来对应Frame打开网页,<br />但是在Frame切换网页时,会把其内容放到Cache中,<br />但是WebFrame却没有被析构,因此Frame也没有析构,<br />这会导致内存泄漏。<br /> <br />解决方法是在Frame

2010-11-24 21:44:00 1075

原创 webkit中修改Timer的时间

<br />WebKit的timer计时用的是UTC时间,<br />但是机顶盒在启动时是没有UTC时间的,所以在启动后,ntp同步会影响到timer<br />因此需要改Timer的计时方法。<br /> <br />OWB的WebKit中每个Thread有一个自己的Timer队列,<br />在Timer<T>需要shot时,会添加到这个Timers队列中。<br /> <br />在Timers中有一个外部SharedTimer用来shot这些Timers,<br />在主线程中是MainShared

2010-11-23 15:07:00 1405

原创 WebKite的资源是否重新下载的检查

<br />在CachedResource中保存着该资源的response,<br />在资源的url相同时,会根据缓存策略处理当前资源,<br />如果需要验证下载,则建立新的CachedResource其中有指向当前的exsiting<br /> <br />然后在发送请求时,增加相应的字段就ok了。

2010-11-22 18:47:00 878

原创 webkit的history

<br />有个全局的PageCache用来保存HistoryItem的page,<br />这个随时可能被删掉,因为它只是一个cache而已,<br />这里要注意,CachedPage不等于Page,CachedFame不等于Frame,<br />它们只是保存了page和mainFrame中的只要变量。<br /> <br />page下的BackForwardList用来保存历史记录,<br />这个类很简单,就是保存着HistoryItem的vetor和hash。<br /> <br />在Fra

2010-11-22 17:18:00 1752

原创 webkit的EventListner触发

<br />EventTarget是事件的核心类,Node的多继承于这个类,<br />这个类是一个纯虚基类,因此是一个接口类,<br />其中比较重要的接口有几类:<br />1.添加和删除Listener,这些是虚函数,子类中可以重新实现<br />2.分发Event,有一个虚函数,和一个函数,这样子类可以有自己的个性<br />3.添加,删除和获取属性Listener<br />4.fire触发Listener函数,这个函数不需要有子类的实现<br /> <br />Event类内容:<br />ty

2010-11-10 15:37:00 1312

原创 webkit中image的下载

<br />img标签对应HTMLImageElement类,<br />在创建对象时,会创建一个属性 ImageLoader的对象,<br />其中CachedImage是下载后保存的地方。<br /> <br />在HTMLEImageElement对象attched时,会创建一个RenderImage对象,<br />这个对象就是用来显示图片的。<br /> <br /> 

2010-10-23 14:33:00 1163 1

原创 webkit的CachedImage管理解析

<br />CachedImage继承于CachedResouce和ImageObserver,<br />其中Image是存放原始数据和decoder数据用的。<br />创建自BitmapImage,其中ImageSource用来保存关键数据的,raw和decoder,<br />而且还是解码器的包含类。

2010-10-21 18:23:00 1167

原创 webkit的loader结构解析

<br />Frame用FrameLoader来下载网页。<br />FrameLoader处理loader与Frame有关的内容,如网页的解析等。<br />FrameLoader中的DocumentLoader是用了下载网页html文本的, 其中MainResouceLoader是网络下载用的。<br /><br /><br />Document中的DocLoader是用来下载image/css/script的。<br />Cache是一个全局变量,用来保存所有的子资源。<br />Loader是为Ca

2010-10-21 14:58:00 1037

原创 webkit的loader结构解析

<br />Frame用FrameLoader来下载网页。<br />FrameLoader处理loader与Frame有关的内容,如网页的解析等。<br />FrameLoader中的DocumentLoader是用了下载网页html文本的, 其中MainResouceLoader是网络下载用的。<br /><br /><br />Document中的DocLoader是用来下载image/css/script的。<br />Cache是一个全局变量,用来保存所有的子资源。<br />Loader是为Ca

2010-10-21 14:58:00 832

原创 更新vimrc

<br /><br />set number<br />set list<br />set listchars=tab:>-,trail:-<br />set expandtab<br />set tabstop=2<br />set shiftwidth=2<br />set incsearch<br />set hlsearch<br />set wildmenu<br />set wildmode=list,full<br />set autoindent<br />set cindent<br />

2010-08-22 12:22:00 526

原创 webkit的attribute

<br />1.NamedNodeMap是所有Attribute的vector及其接口<br /> <br />2.Attribute是一个属性name=value对的数据及其接口<br /> <br />3.Attr是属性的Node节点,用于dom和js<br /> <br />4.NamedMappedAttrMap多了classname用于CSS<br /> <br />5.mappedAttribute多了Declaration用于CSS

2010-08-06 14:54:00 697

原创 用sdk的tools来打包apk

<br />tools里会用到android建立project,emulator用来pc上运行程序, adb用来调试程序<br /> <br />ant,keytool,jarsigner是打包时用的<br /> <br />1.建立工程:<br />android create project /<br />--target <target_ID>/<br />--name <your_project_name>/<br />--path path/to/your/project/<br />--acti

2010-08-06 00:30:00 1058

原创 css的sytle解析

<br />css的解析使用了flex的词法解析和bison的语法解析。<br /> <br />首先以flex分析WebCore/css/tokenizer.flex生成c++源文件tokenizer.cpp,<br />但是flex不能直接处理双字节,所以makeTokenizer.pl会再处理一下tokenizer.cpp<br /> <br />然后bison会根据CSSGrammar.y生成c++源文件CSSGrammar.cpp,<br />这是语法分析文件,和CSSParser.cpp配合生成

2010-08-05 23:57:00 1464

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除