




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Webkit 學(xué)習(xí)技巧 篇一:Webkit學(xué)習(xí)筆記 Webkit主要組成 WebKit主要包括三個(gè)部分WebCore、JavascriptCore及Ports部分 WebKit專注的核心部分主要是: 分析HtmlJavascript的解析布局渲染技術(shù) 分別在WebCore/htmlJavascriptCore和WebCore/rendering里面 1WebCore內(nèi)容 目錄結(jié)構(gòu) bindings 將DomBinding給JavascriptCore方面的代碼同時(shí)包含依據(jù)idl接口描述文件自動(dòng)生成對(duì)應(yīng)于JavascriptCore的Binding實(shí)現(xiàn)的腳本等內(nèi)容 bridge 主要包含NPPlugin方面的接口訪問等內(nèi)容 css 主要包括與css方面相關(guān)的內(nèi)容如解析、不同css規(guī)則的定義與實(shí)現(xiàn)、cssBinding給JS的接口定義等內(nèi)容; dom 主要包括dom方面相關(guān)的內(nèi)容如不同dom元素的定義與實(shí)現(xiàn)、domBinding給JS的接口定義等內(nèi)容 html 關(guān)于html方面相關(guān)的內(nèi)容如不同html元素的定義與實(shí)現(xiàn)、HTMLTokenizer及HTMLParser等內(nèi)容 load 主要包括裝載資源如html頁面、css、js及image等方面內(nèi)容; page 主要包括描述一個(gè)Web頁面所涉及的內(nèi)容如page、frame、frameview、frametree、setting、history、chrome、chromeclient等內(nèi)容; rendering 主要包括如何使用樣式組織布局、顯示html元素等方面內(nèi) plugins 主要包括瀏覽端如何實(shí)現(xiàn)NPPlugin方面的內(nèi)容 svg 主要包括與svg方面相關(guān)的內(nèi) xml 主要包括與xml方面相關(guān)的內(nèi)容如xmlparser、XPath、XSLT等 platform 主要包括與不同平臺(tái)或外部庫相關(guān)的內(nèi)容如graphics(圖形輸出方面)、network(網(wǎng)絡(luò)處理方面)、imagedecoders(解析不同圖片格式方面)等 主要數(shù)據(jù)結(jié)構(gòu) 為了更加簡(jiǎn)單有效的描述瀏覽網(wǎng)頁的內(nèi)容及過程WebKit為了明顯區(qū)分不同方面的內(nèi)容采取了不同的namespace如webcore、javascriptcore、webkit等webcore方面的主要數(shù)據(jù)結(jié)構(gòu)有:webcore:page、webcore:frame、 webcore:FrameLoader、webcore:FrameView、Document、DOMWindow、KJSProxy、DocumentLoader、ResourceHandle、ResourceRequest、ResouceResponse、MainResourceLoader、RenderObject、RenderView等 總的說來WebCore包含了瀏覽器引擎的核心部分如處理html、dom、css、svg、獲取資源、渲染頁面過程控制、回調(diào)/通知外殼程序以及與Javascript實(shí)現(xiàn)的Binding等等 2port的內(nèi)容 Port方面的主要內(nèi)容在于提供不同的Port接口供外部程序使用以及如何與外部程序交互因?yàn)閃ebKit中的其它兩部分WebCore、Javascript實(shí)現(xiàn)從邏輯上講是不直接提供接口給外部程序使用的同時(shí)為了完成瀏覽器的核心功能WebKit也需要從外部程序中通過Port接口的方式獲取一些支持 1WebCore交互接口 在WebKit源代碼目錄結(jié)構(gòu)中WebKit目錄下分別包含gtk、mac、qt、win、wx目錄其分別對(duì)應(yīng)不同的Port移植方式在每一個(gè)目錄下面都包括WebCoreSupport目錄而在不同的WebCoreSupport目錄下分別包含有對(duì)類接口 WebCore:ChromeClient、WebCore:ContextMenuClient、WebCore:DragClient、WebCore:EditorClient、WebCore:FrameLoaderClient、WebCore:InspectorClient等的實(shí)現(xiàn)它們代表外部程序提供給WebKit內(nèi)部使用的接口實(shí)現(xiàn)其中WebCore:ChromeClient、WebCore:FrameLoaderClient非常重要 2連接模塊loader 對(duì)WebCore中的page/loader等方面的類提供對(duì)應(yīng)Port的實(shí)現(xiàn)支持如 EventHandlerWin.cpp、FrameLoaderWin.cpp、DocumentLoaderWin.cpp、DocumentLoaderWin.cpp、WidgetWin.cpp、KeyEventWin.cpp等.Loader是在WebKit里面一個(gè)很重要的連接器通過loader發(fā)起IO下載網(wǎng)頁再通過loader發(fā)起解析已經(jīng)最后的渲染功能 3顯示模塊WebView和WebFrame WebView及WebFrame主要功能是方便外部程序嵌入WebKit不同的Port移植對(duì)WebView及WebFrame的定義及實(shí)現(xiàn)有所不同但其與WebCore中的Page、Frame之間的關(guān)系圖描述相一致 4chrome中對(duì)Port移植方面的實(shí)現(xiàn) 其基本上與其他Port移植類似其主要代碼在webkitglue目錄中可重點(diǎn)關(guān)注帶clientimpl.cc后綴的文件、webviewimpl.cc、webwidgetimpl.cc等但是其究竟如何創(chuàng)建原生windows窗口、如何創(chuàng)建Render進(jìn)程、Render進(jìn)程與創(chuàng)建 的原生windows窗口的關(guān)系如何等需要更進(jìn)一步深入研究Chrome如果能從上面提到的Port部分入手也許很快就可得到答案 5Android中對(duì)Port移植方面的實(shí)現(xiàn) 其實(shí)現(xiàn)有點(diǎn)特殊由于Andriod將WebKit以一個(gè)Java類接口的方式提供給Java環(huán)境使用(不像上面提到的Chrome、Safari等都是將WebKit以一個(gè)C+動(dòng)態(tài)或靜態(tài)庫的方式供C/C+外部程序調(diào)用)這樣WebKit內(nèi)部與外部即JavaVM的交互(如上面提到的ChromeClient、FrameLoaderClient接口實(shí)現(xiàn))需要一個(gè)Bridge類來協(xié)調(diào)處理同時(shí)WebView、WebFrame接口綁定給JavaVM的jni接口實(shí)現(xiàn)也需要通過這個(gè)Bridge來支持協(xié)調(diào)處理具體可詳細(xì)參考android源碼代碼中WebCoreplatformandroid目錄下的源文件 篇二:webkit開發(fā)學(xué)習(xí)筆記 由于工作需要最近在準(zhǔn)備一個(gè)介紹webkit的PPT文檔我個(gè)人斷斷續(xù)續(xù)學(xué)習(xí)webkit的代碼也有一年多了其間也閱讀了網(wǎng)上的一些webkit相關(guān)技術(shù)文章但中文的資料很少大部分都是english的有些E文資料還需要翻墻平常由于自已記性不好去年看過的一些模塊今年再去翻時(shí)竟然沒一點(diǎn)印象了悲劇? 所以借此機(jī)會(huì)把自已對(duì)webkit的理解先做下筆記以便于以后需要時(shí)可以方便查閱需要說明的是筆記記錄的有我個(gè)人的理解也有網(wǎng)上摘錄的片段和圖片不一定正確也會(huì)比較凌亂希望看到的朋友及時(shí)指正共同進(jìn)步 一 Webkit的由來 1十幾年前的故事 1994年Netscape瀏覽器曾占據(jù)整個(gè)瀏覽器市場(chǎng)的90%風(fēng)頭無二(也很囂張)但隨著微軟推出win95后把IE1.0做為win95的插件發(fā)布開始挑戰(zhàn)Netscape的霸主地位到發(fā)布IE4.x短短三年時(shí)間打敗Netscape這里面雖然說有與windows集成的原因但從本身的功能上來講IE從速度和對(duì)標(biāo)準(zhǔn)的支持上來講已真正打敗了Netscape 此階段的瀏覽器可稱為第一代瀏覽器它的主要特點(diǎn)是單窗口型式競(jìng)爭(zhēng)的最主要是訪問速度、兼容性原因:90年代都大多是用modem撥號(hào)上網(wǎng)56K/S 2Webkit出生 Apple公司在它的MacOSX里集成了基于KHTML改進(jìn)型的WebKit引擎的瀏覽器命名為:Safari當(dāng)年蘋果比較了Gecko和KHTML后之所以選擇了后者就因?yàn)樗鼡碛星逦脑创a結(jié)構(gòu)、極快的渲染速度(KHTML是由KDE小組開發(fā)的) 隨后apple將它開源 至此第二代瀏覽器基本上是三分天下: Trident:IE系列以Trident作為內(nèi)核引擎; Gecko:Firefox是基于Gecko開發(fā); WebKit:Safari,GoogleChrome,搜狗雙核瀏覽器(集成IE和chrome),QQ瀏覽器5 WebKit內(nèi)核在手機(jī)上的應(yīng)用也十分廣泛例如Google的手機(jī)Gphone、Apple的iPhone,NokiasSeries60browser等所使用的Browser內(nèi)核引擎都是基于WebKit 總結(jié): webkit 答:Webkit是一套瀏覽器排版代碼已開源主要由apple公司在維護(hù)強(qiáng)調(diào):webkit僅僅是一套排版引擎 舉個(gè)例子說明下: google的chrome是一個(gè)瀏覽器對(duì)吧那chrome主要包含以下模塊:外殼UI(多標(biāo)簽菜單狀態(tài)欄網(wǎng)址輸入欄等)讀取網(wǎng)絡(luò)數(shù)據(jù)的模塊排版解析模塊JS解析引擎外殼UI是google自已寫的js引擎是google寫的V8,讀取網(wǎng)絡(luò)數(shù)據(jù)模塊用的winhttp只有排版引擎用的webkit 不知道我說清楚了沒呵呵 WebKitisanopensourceWebcontentengineforbrowsersandotherapplications.Wevaluerealworldwebpatibility,standardspliance,stability,performance,security,portability,usability,andrelativeeaseofunderstandingandmodifyingthecode(hackability). 二Webkit編譯環(huán)境 Webkit的官網(wǎng):/retype/zoom/5b3f590ceff9aef8941e0617?pn=4x=0y=0raww=626rawh=719o=png600135113704808892.9791262.879type=picaimh=551.3099041533546md5sum=a27dea88b29041c789cb0213818b8bbcsign=171bf19a9bzoom=png=87947148147jpg=00target=blank點(diǎn)此查看 編譯運(yùn)行在VisualStudio中設(shè)置browser工程為主工程然后編譯可以順利編譯完成下面是運(yùn)行后的效果圖 4.最最簡(jiǎn)單的webkit學(xué)習(xí)環(huán)境ISee 5.Isee是一位中國(guó)人移植的webkit在winxp下用vsxx直接編譯即可調(diào)試用于學(xué)習(xí) 最好強(qiáng)烈支持也是一位同事推薦給我的后面的代碼走讀主要基于該環(huán)境 6.Isee還可以直接移植到wince平臺(tái)運(yùn)行噢 7.官網(wǎng): 備注:原作者已經(jīng)不再維護(hù)了所以webkit內(nèi)核的版本號(hào)有點(diǎn)老 8.webkit在vsxx中編譯 見: 三Webkit整體介紹 1.Webkit的結(jié)構(gòu)圖(以ISee架構(gòu)舉例): 篇三:WebKit學(xué)習(xí)文檔 WebKitgtk+學(xué)習(xí)文檔 簡(jiǎn)介WebKit是一個(gè)開源瀏覽器網(wǎng)頁排版引擎與之相應(yīng)的引擎有Gecko(MozillaFirefox等使用的排版引擎)和Trident(也稱為MSHTMLIE使用的排版引擎)同時(shí)WebKit也是蘋果MacOSX系統(tǒng)引擎框架版本的名稱主要用于SafariDashboardMail和其他一些MacOSX程序WebKit所包含的WebCore排版引擎和JSCore引擎來自于KDE的KHTML和KJS開源項(xiàng)目當(dāng)年蘋果比較了Gecko和KHTML后仍然選擇了后者就因?yàn)樗鼡碛星逦脑创a結(jié)構(gòu)、極快的渲染速度 目前使用WebKit引擎的瀏覽器主要有:Safari(apple出品)Midorichrome(google出品)等 AdobeAIR也采用了WebKit渲染HTML 一、用到的庫: 除了平臺(tái)相關(guān)的庫WebKit需要用到的一些主要的后臺(tái)庫有: ICU:InternationalComponentsforUnicode一個(gè)成熟廣泛使用的一套為C/C+和Java庫提供Unicode的全球化支持軟件; XSLT:eXtensibleStylesheetLanguageTransformation,W3C定義的用于XML文檔轉(zhuǎn)換的規(guī)范;Curl:一個(gè)利用URL語法的命令行數(shù)據(jù)傳輸工具基于libcurl Sqlite:SQLite是實(shí)現(xiàn)了SQL92標(biāo)準(zhǔn)的SQL數(shù)據(jù)庫引擎它能在一個(gè)庫里組合數(shù)據(jù)庫引擎和接口將所有數(shù)據(jù)存儲(chǔ)于單個(gè)文件; Gperf:一個(gè)很完美的哈希函數(shù)生成器;Flex:FastLex,快速詞法分析生成器;Bison:語法分析生成器可以將一段帶注釋的上下文無關(guān)語法轉(zhuǎn)化成LALR或GLR語法;Enchant:一個(gè)拼寫檢查庫提供單詞的拼寫檢查、糾錯(cuò)等功能; 二、代碼目錄結(jié)構(gòu) WebKitTools:一些測(cè)試WebKit實(shí)現(xiàn)功能的程序;WebKit:此目錄位于WebKit的最上層定義了與應(yīng)用相關(guān)的一些接口因此它是平臺(tái)相關(guān)的子目錄是對(duì)應(yīng)平臺(tái)的完整實(shí)現(xiàn): WebCore:WebKit的核心部分定義了瀏覽相關(guān)的數(shù)據(jù)IO、頁面加載、腳本分析、UIxml:提供xml相關(guān)的內(nèi)容;組織、事件處理、網(wǎng)絡(luò)分析、平臺(tái)相關(guān)的具體實(shí)現(xiàn)等內(nèi)容 html:提供html相關(guān)的內(nèi)容;其下的Canvas目錄定義了3D畫布以及WebGL庫相關(guān)的內(nèi)容; wml:WirelessMarkupLanguage;css:提供css相關(guān)的內(nèi)容;dom:提供dom相關(guān)的內(nèi)容;editing:編輯相關(guān)的功能;page:瀏覽相關(guān)內(nèi)容并非是我們看到的一個(gè)頁面在一次瀏覽會(huì)話中它只有一個(gè)實(shí)例;rendering:頁面渲染相關(guān)的內(nèi)容在對(duì)頁面腳本進(jìn)行DOM樹分析之后需要對(duì)這些元素進(jìn)行渲染和顯示; notification:內(nèi)部模塊間的事件通信;history:頁面瀏覽歷史記錄相關(guān)的內(nèi)容;svg:矢量圖形功能有選項(xiàng)svg; mathml:W3C為網(wǎng)頁中的數(shù)學(xué)表達(dá)式制定的規(guī)范;有編譯選項(xiàng)mathml;loader加載資源及Cache;: workers:“WebWorkers為WEB前端網(wǎng)頁上的腳本提供了一種能在后臺(tái)進(jìn)程中運(yùn)行的方法一旦它被創(chuàng)建WebWorkers就可以通過postMessage()向任務(wù)池發(fā)送任務(wù)請(qǐng)求執(zhí)行完之后再通過postMessage()返回消息給創(chuàng)建者指定的事件處理程序(通過onmessage進(jìn)行捕獲) WebWorkers進(jìn)程能夠在不影響用戶界面的情況下處理任務(wù)并且它還可以使用XMLHttpRequest來處理I/O無論responseXML和channel屬性是否為null” storage:WebStorage相關(guān)的內(nèi)容保存頁面的數(shù)據(jù)可以看成是Cookie的升級(jí);websockets:與網(wǎng)絡(luò)連接相關(guān)的內(nèi)容;bridge:主要包含NPPlugin(NetscapePlugin)方面的接口訪問等內(nèi)容;binding:Dom與JavaScriptCore綁定的功能; accessibility:提供控件的可用性相關(guān)的內(nèi)容accessibility常用來形容對(duì)一些特殊人群的功能支持比如殘障者、老人等; icu:里面放了專門為MacOSX10.4編譯的icu相關(guān)頭文件;platform:提供了平臺(tái)相關(guān)的具體實(shí)現(xiàn)如事件響應(yīng)、本地化、網(wǎng)絡(luò)連接等;plugins:插件相關(guān)內(nèi)容;ForwardingHeaders:頭文件; inspector:Inspector是WebKit提供的查看網(wǎng)頁源代碼DOM樹以及調(diào)試腳本的工具本目錄包含了實(shí)現(xiàn)此功能的內(nèi)容; English.lproj:本地化文件;Resources:資源圖標(biāo); WebCore.gyp:工程文件GYP(GenerateYoureProject)是google自己開發(fā)了一個(gè)腳本工具這個(gè)工具也是采用python編寫的它采用了自定義的一套規(guī)則用于生成各種工程文件; JavaScriptGlueJavaScriptCore:有關(guān)JavaScript的相關(guān)內(nèi)容包括了腳本解釋器、分析器以及執(zhí)行程序;PlanetWebkit:一個(gè)比較靈活的RSS閱讀器;Webkit網(wǎng)站上的Planet:一站式的Webkit開發(fā)與動(dòng)態(tài)信息; 三、體系結(jié)構(gòu) WebKit主要包括三部分:WebKitWebCore以及JavaScriptCore加上所使用的庫依托的平臺(tái)其基本的體系結(jié)構(gòu)(Architecture)如下所示: 注意有的模塊相對(duì)于下面的模塊有突出這是因?yàn)榇四K與下面幾個(gè)模塊直接相關(guān)比如WebCore模塊就與JavaScriptCore、Libraries和Platforms模塊直接相關(guān) 四、Webkit/gtk+中下層與gtk的接口 WebKit中實(shí)現(xiàn)網(wǎng)頁上所有信息的顯示一部分是由WebKit本身畫出來的一部分是利用gtk的接口實(shí)現(xiàn)部分對(duì)象的顯示其中本身畫出來的部分的代碼實(shí)現(xiàn)部分主要位于editing和rendering兩個(gè)目錄下利用gtk提供的一些控件的接口實(shí)現(xiàn)網(wǎng)頁上一些對(duì)象的顯示主要集中于platform/gtk/目錄下: ./platform/gtk/RenderThemeGtk.cpp ./platform/gtk/ContextMenuGtk.cpp ./platform/gtk/FileChooserGtk.cpp ./platform/gtk/WidgetGtk.cpp ./platform/gtk/Language.cpp ./platform/gtk/PasteboardGtk.cpp ./platform/gtk/CursorGtk.cpp ./platform/gtk/ContextMenuItemGtk.cpp ./platform/gtk/ScrollbarGtk.cpp ./platform/gtk/LocalizedStringsGtk.cpp ./platform/gtk/DragImageGtk.cpp ./platform/gtk/PlatformScreenGtk.cpp ./platform/gtk/PopupMenuGtk.cpp ./platform/gtk/PasteboardHelper.cpp ./platform/gtk/GRefPtrGtk.cpp ./platform/gtk/ScrollbarThemeGtk.cpp ./platform/gtk/ScrollViewGtk.cpp ./platform/gtk/ClipboardGtk.cpp ./platform/gtk/GtkPluginWidget.cpp ./platform/network/soup/ResourceHandleSoup.cpp ./platform/graphics/gtk/IconGtk.cpp ./platform/graphics/gtk/FontPlatformDataPango.cpp ./platform/graphics/gtk/ImageGtk.cpp ./platform/graphics/cairo/FontPlatformDataCairo.cpp ./plugins/gtk/PluginViewGtk.cpp 1、 各個(gè)文件實(shí)現(xiàn)的功能RenderThemeGtk.cpp 該文件主要實(shí)現(xiàn)了對(duì)一些基本控件的創(chuàng)建與屬性的設(shè)置例如:button,Toggle,Checkbox,RadioMenuList,Text,Background,Foreground,ListBox,Container,Entry,TreeView,MediaSlider等 ContextMenuGtk.cpp該文件主要是對(duì)文本菜單(ContextMenu)的創(chuàng)建FileChooserGtk.cpp該文件中包含兩個(gè)函數(shù):staticboolstringByAdoptingFileSystemRepresentation(gchar*systemFilename,Stringresult);該函數(shù)是得到systemFilename中所包含的文件的名稱通過result值返回 StringFileChooser:basenameForWidth(constFontfont,intwidth)const; 通過給定文本的字形名稱和一定的寬度從而得到該長(zhǎng)度下可以顯示最長(zhǎng)文本信息WidgetGtk.cpp 該文件主要是對(duì)widget的一些屬性的設(shè)置例如:光標(biāo)、焦點(diǎn)、顯示隱藏還有對(duì)widget自身的新建與銷毀等等 Language.cpp 該文件僅包含一個(gè)函數(shù): StringdefaultLanguage(); 該函數(shù)實(shí)現(xiàn)返回當(dāng)前默認(rèn)的語言類型 PasteboardGtk.cpp 該文件主要是對(duì)剪貼板的操作文件中所包含的函數(shù)主要有: staticvoidclipboardgetcontentscb(GtkClipboard*clipboard,GtkSelectionData*selectiondata,guintinfo,gpointerdata); 得到指定剪貼板當(dāng)前的內(nèi)容 staticvoidclipboardclearcontentscb(GtkClipboard*clipboard,gpointerdata); 清空指定剪貼板中當(dāng)前的內(nèi)容 Pasteboard*Pasteboard:generalPasteboard(); 創(chuàng)建一新的剪貼板 voidPasteboard:writeSelection(Range*selectedRange,boolcanSmartCopyOrDelete,Frame*frame); 存儲(chǔ)所選內(nèi)容至剪貼板中 voidPasteboard:writePlainText(constStringtext); 保存純文本至剪貼板中 voidPasteboard:writeURL(constKURLurl,constString,Frame*frame); 保存URL至剪貼板中 voidPasteboard:writeImage(Node*node,constKURL,constString); 保存圖片文件至剪貼板中 voidPasteboard:clear(); 清除默認(rèn)剪貼板中的內(nèi)容 PassRefPtrPasteboard:documentFragment(Frame*frame,PassRefPtrcontext,boolallowPlainText,boolchosePlainText); /欠缺 StringPasteboard:plainText(Frame*frame); 返回當(dāng)前剪貼板中的純文本內(nèi)容 CursorGtk.cpp 該文件主要實(shí)現(xiàn)了對(duì)各種不同光標(biāo)類型的的創(chuàng)建 ContextMenuItemGtk.cpp 該文件主要實(shí)現(xiàn)了對(duì)文本菜單的一些操作例如: staticconstchar*gtkStockIDFromContextMenuAction(constContextMenuActionaction);根據(jù)所操作的對(duì)象得到它所對(duì)應(yīng)的stockID GtkMenuItem*ContextMenuItem:createNativeMenuItem(constPlatformMenuItemDescriptionmenu); 創(chuàng)建菜單項(xiàng) voidContextMenuItem:setSubMenu(ContextMenu*menu); 篇四:WebKit學(xué)習(xí)大綱 webkit入門準(zhǔn)備 1.1.C+ a)Webkit代碼風(fēng)格 b) c) d) e) f) 2.2. a) b) c) 3.3. a) b) InlineConst構(gòu)造與析構(gòu)重載繼承泛式編程Vector/List/HashTableIterator智能指針面向?qū)ο缶幊虒?duì)象概念設(shè)計(jì)模式 4.4.調(diào)試、測(cè)試及工具 a)Gcc及Makefile b)Trace c)VC d)Gdb e)Alert及javascript調(diào)試 f)GUNbinary工具 g)JsUnit h)Javascript框架Dojo i)JsDoc j)JsLint k)HTMLValidator l)Dominspector m)Xmlspy n)標(biāo)準(zhǔn)測(cè)試用例 5.5.性能分析 a)Gprof 6.6.Socket 7.7.編譯原理 a)詞法 b)語法 8.8.操作系統(tǒng) a)Linux線程 b)Linux內(nèi)存 c)編譯與鏈接 9.體系結(jié)構(gòu)詳解 1.瀏覽器功能結(jié)構(gòu) 2.瀏覽器結(jié)構(gòu) 3.Webkit體系結(jié)構(gòu) 4.WebKit目錄結(jié)構(gòu) 5.WebKit編譯 10.HTML引擎詳解 1.HTML語法 2.DomCore 3.DomEvent 4.DomHtml 5.焦點(diǎn)處理 6.HTML擴(kuò)展 11.JS引擎詳解 1.Javascript語法 2.JSBinding 3.JSInterpreter 4.GarbageCollect 5.javascript擴(kuò)展 12.CSS排版詳解 1.CSS語法 2.DomCSS 3.DomStyle 4.Paint 5.CSS風(fēng)格擴(kuò)展 13.CURL、SSL詳解 1.Loader 2.Curl 3.HTTP 4.SSL 14.XML引擎詳解 1.XML 2.Ajax 15.TCMalloc內(nèi)存管理機(jī)制 1.內(nèi)存池 2.TcMalloc 16.其它 1.WebKit外殼封裝 2.Plugin插件機(jī)制 篇五:webkit用例審核及處理方法(初稿)leo webkit用例審核及處理方法 1.前言 Webkit官方用例大約有3萬現(xiàn)已通過自動(dòng)化方式將一半的用例添加進(jìn)入日常的LayoutTests測(cè)試集中還有一般需要人工地過濾看不過的原因 2.用例類型說明及舉例 按照測(cè)試用例給出的預(yù)期結(jié)果類型可以將用例分為:文本型(TextResult)、圖片型(PixelResult)、Render樹型(RenderTreeResult)、HTML型(工具暫不支持)、其他特殊類型(例如預(yù)期是音頻、pdf文件的用例暫不支持) 文本型:測(cè)試結(jié)果標(biāo)注為TextResult預(yù)期文件為expected.txt內(nèi)容是:該用例使用瀏覽器打開后顯示的文字信息如果有圖片也不會(huì)出現(xiàn)在txt文件里的用例源碼js有testRunner.dumpAsText()或testRunner.dumpAsText(false)調(diào)用例如: 圖片型:測(cè)試結(jié)果標(biāo)注為PixelResult預(yù)期文件為expected.png:該用例使用瀏覽器打開完全后的截屏文件用例源碼js有testRunner.dumpAsText(true)調(diào)用 Render樹型:測(cè)試結(jié)果標(biāo)注為RenderTreeResult預(yù)期文件一般會(huì)給出expected.txt和expected.png目前只做txt的對(duì)比效率較高txt內(nèi)容是該用例使用瀏覽器排版之后的RenderTree結(jié)構(gòu)用例源碼js沒有調(diào)用testRunner.dumpAsText()這樣的方法(目前還沒出錯(cuò)不知道其他不通過的用例會(huì)不會(huì)存在誤判)例如: Html型:暫時(shí)不支持測(cè)試給出的預(yù)期文件是expected.html主要是根據(jù)預(yù)期文件類型來判斷 其他類型:用例給出的預(yù)期文件是txt、png、html以外的其他類型比如expected.pdfexpected.audio等主要是根據(jù)預(yù)期文件類型判斷這些特殊用例不支持測(cè)試 更詳細(xì)的介紹說明見附件LayoutTests測(cè)試用例編寫.docx 3.不通過用例處理方法和歸類 3.1處理方法 對(duì)于目前還未通過測(cè)試的15k用例建立excel表格記錄分析處理結(jié)果表格設(shè)計(jì)如下: 測(cè)試同學(xué)目前需要做的工作:根據(jù)該文檔的說明逐一分析未通過用例將分析的結(jié)果填入表格 開發(fā)同學(xué)根據(jù)表格信息快速定位進(jìn)一步分析根本原因或者修改用例或者查內(nèi)核缺陷優(yōu)先級(jí)高的問題已注明提t(yī)apd開發(fā)優(yōu)先解決這些問題個(gè)別內(nèi)核缺陷會(huì)轉(zhuǎn)給項(xiàng)目組其他相關(guān)開發(fā)同學(xué)跟進(jìn) 3.2歸類 對(duì)不通過的用例結(jié)果和基準(zhǔn)對(duì)比分析原因歸類分為: 1、(用例在)目錄測(cè)試時(shí)crash:測(cè)試該用例目錄時(shí)該用例必現(xiàn)crash但是單獨(dú)測(cè)試該用例時(shí)并不會(huì)crash原因應(yīng)該和前后用例行為有關(guān)需要整個(gè)目錄測(cè)試復(fù)現(xiàn)問題解決處理方法:提t(yī)apdbug 2、內(nèi)核crash:用例使用瀏覽器打開過程必然crash處理方法:提t(yī)apdbug 3、工具crash:用例不會(huì)在瀏覽器打開過程crash但是單獨(dú)測(cè)試時(shí)比如crash處理方法:提t(yī)apdbug 4、(測(cè)試用例)內(nèi)核不支持:測(cè)試用例調(diào)用了某些js方法需要內(nèi)核專門支持測(cè)試而增加的目前X5內(nèi)核還不能支持處理方法:將分析的原因填入對(duì)應(yīng)的excel表格調(diào)用的特殊js對(duì)象描述清楚方便后期確定是否實(shí)現(xiàn)支持 5、(測(cè)試用例)工具不支持:測(cè)試用例中testRunner調(diào)用了某些js方法并未實(shí)現(xiàn)例如testRunner.display()處理方法:將分析的原因填入對(duì)應(yīng)的excel表格調(diào)用的特殊方法描述清楚方便后期繼續(xù)跟進(jìn) 6、(測(cè)試工具)類型判斷錯(cuò)誤:工具判斷出來的用例類型和用例給出的基準(zhǔn)文件判斷的類型不一致處理方法:將原因填入對(duì)應(yīng)的excel表格 7、內(nèi)核缺陷:工具和內(nèi)核對(duì)用例測(cè)試完全支持測(cè)試結(jié)果和預(yù)期存在差異判定為內(nèi)核邏輯缺陷處理方法:將原因填入對(duì)應(yīng)excel表格 8、html型用例:用例給出的預(yù)期文件是expected.html工具暫不支持測(cè)試處理方法:將原因填入對(duì)應(yīng)excel表格 9、其他類型用例:用例給出的預(yù)期文件類型不是txt、png、html(htm)之一的工具暫不支持處理方法:將原因填入對(duì)應(yīng)excel表格 10、其他原因:不能歸入前9類的另類原因 4.審核步驟、歸類及處理方法 注:所有提t(yī)apd的bug請(qǐng)標(biāo)題注明LayoutTests處理人leolincao、totorima 首先打開目錄對(duì)應(yīng)的Details.html文件逐一審核未通過的用例 4.1分析Crash用例 Details.html文件中注明是CrashedDummyResult該用例測(cè)試過程crash 1、單獨(dú)測(cè)試該用例是否crash如果沒有crash歸類為:目錄測(cè)試時(shí)crash 2、使用瀏覽器打開該用例如果crash歸類為:內(nèi)核crash提t(yī)apd;否則歸類為:工具crash提t(yī)apd 4.2分析Timeout用例 Details.html文件中用例后面有黃色底色的TIMEDOUT標(biāo)識(shí)用例 TIMEDOUT用例大多數(shù)原因是用例調(diào)用的部分js對(duì)象方法不支持導(dǎo)致js執(zhí)行中止;js執(zhí)行了testRunner.waitUntilDone()但testRunner.waitUntilDone()未能執(zhí)行 1、查看用例源碼包括html和js資源文件 2、閱讀主要的js代碼是否存在特殊的js對(duì)象調(diào)用 如果存在window調(diào)用了未知的js對(duì)象(testRunner例外)歸類為:內(nèi)核不支持記錄下window調(diào)用的未知js對(duì)象名稱 如果存在testRunner調(diào)用js方法除了一下這些方法外還存在其他方法歸類為:工具不支持記錄下testRunner調(diào)用的未知js對(duì)象名稱testRunner支持的方法有:clearAllDatabases()、dumpAsText()(包括帶參和不帶參)、dumpChildFramesAsText()、dumpDatabaseCallbacks()、notifyDone()、overridePreference()、setAppCacheMaximumSize()、setCanOpenWindows()、setDatabaseQuota()、setXssAuditorEnabled()、waitUntilDone() 3、還不能確定的歸類為:其他原因 4.3預(yù)期文件找不到 Details.html文件中如果測(cè)試結(jié)果Expectedresult欄為空(圖片類型用例PixelResult例外)可以判斷為預(yù)期文件找不到先到platform/m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國(guó)環(huán)境美化及園藝服務(wù)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 服務(wù)貿(mào)易統(tǒng)計(jì)培訓(xùn)課件
- 學(xué)生學(xué)習(xí)風(fēng)格與個(gè)性化教學(xué)策略
- 教師職業(yè)發(fā)展與教學(xué)質(zhì)量的提升策略研究
- 退換貨培訓(xùn)課件
- 教育數(shù)字化轉(zhuǎn)型中的技術(shù)革新與挑戰(zhàn)
- 智慧城市公共服務(wù)平臺(tái)的數(shù)據(jù)管理與分析
- 鋼結(jié)構(gòu)焊接培訓(xùn)課件
- 教育大數(shù)據(jù)在教學(xué)管理中的創(chuàng)新應(yīng)用
- 抖音商戶短視頻播放量分析反饋制度
- 銀行基礎(chǔ)知識(shí)詳解
- 【汽車銷售服務(wù)有限公司銷售量問題探究10000字(論文)】
- 散熱器安裝施工方案與技術(shù)措施
- 在線語言學(xué)習(xí)行業(yè)競(jìng)爭(zhēng)格局分析
- 第十四講 建設(shè)鞏固國(guó)防和強(qiáng)大人民軍隊(duì)PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 山東工商學(xué)院金融學(xué)期末復(fù)習(xí)題及參考答案
- 國(guó)開2023年春《理工英語1》機(jī)考網(wǎng)考期末復(fù)習(xí)資料參考答案
- 信息資源管理(馬費(fèi)成-第三版)復(fù)習(xí)重點(diǎn)
- 2023年歷年真題考試:管理會(huì)計(jì)(一)歷年真題匯編(共139題)
- 正交異性鋼橋面板計(jì)算
- DB14-T 2611-2022雁門關(guān)農(nóng)牧交錯(cuò)帶 肉羊顆粒飼料調(diào)制加工技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論