如何在android上打印dom樹(shù),render樹(shù),display string database 怎么找到hub protei...
在做chromium的時(shí)候,我們?cè)赿ebug的時(shí)候經(jīng)常使用dumprendertree去打印網(wǎng)頁(yè)對(duì)應(yīng)的dom樹(shù)等內(nèi)容。
但是在剛接觸android的時(shí)候,一直非常煩惱怎么用android自帶的browser去打印出來(lái)這些內(nèi)容。
幸好的是,framework里面提供了一些接口,讓我們可以實(shí)現(xiàn)這個(gè)功能。
于是,寫(xiě)了個(gè)新的feature,在android的browser里面,按下menu鍵,就會(huì)增加三個(gè)新的選項(xiàng)。點(diǎn)擊響應(yīng)的選項(xiàng),就會(huì)打印出來(lái)相對(duì)應(yīng)的tree.
廢話不多說(shuō),直接貼code。
在browser的app中做下列修改:
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index 49fc4a4..08a240f 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -80,6 +80,18 @@
<item
android:id="@+id/save_snapshot_menu_id"
android:title="@string/menu_save_snapshot" />
+ <!--Add print_dom_tree by chao S -->
+ <item
+ android:id="@+id/print_dom_tree"
+ android:title="@string/dom_tree_title" />
+ <item
+ android:id="@+id/print_render_tree"
+ android:title="@string/render_tree_title" />
+ <item
+ android:id="@+id/print_display_tree"
+ android:title="@string/display_tree_title" />
+
+ <!--Add print_dom_tree by chao E -->
</group>
<group
android:id="@+id/SNAPSHOT_MENU">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 870d0c7..c5dbf50 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -908,7 +908,11 @@
<!-- The description of the suggestion that lets the user search the web for the query currently
in the text field. -->
<string name="search_the_web">Search the web</string>
-
+ <!-- Add print_dom_tree by chao S -->
+ <string name="dom_tree_title">Print Dom tree</string>
+ <string name="render_tree_title">Print render tree</string>
+ <string name="display_tree_title">Print display tree</string>
+ <!-- Add print_dom_tree by chao E -->
<!-- HTML5 dialogs -->
<!-- Used as a status bar notification when the browser is running out of space trying to allocate or increase the database quota for an HTML5 databae or application cache. -->
<string name="webstorage_outofspace_notification_title">Browser storage full</string>
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 358e746..ac3d813 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1967,6 +1967,23 @@ public class Controller extends FjController
if (source == null) break;
new SaveSnapshotTask(source).execute();
break;
+ // -- Add print_dom_tree by chao
+ case R.id.print_dom_tree:
+ final Tab dom = getTabControl().getCurrentTab();
+ dom.getWebViewClassic().dumpDomTree(true);
+ break;
+
+ case R.id.print_render_tree:
+ final Tab render = getTabControl().getCurrentTab();
+ render.getWebViewClassic().dumpRenderTree(true);
+ break;
+
+ case R.id.print_display_tree:
+ final Tab display = getTabControl().getCurrentTab();
+ display.getWebViewClassic().dumpDisplayTree();
+ break;
+
+ // Add print_dom_tree by chao --
case R.id.page_info_menu_id:
showPageInfo();
在framework中做下列修改:
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 4bfce04..d6c7cf3 100755
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -5339,7 +5339,10 @@ public final class WebViewClassic extends FjWebViewClassic
* debug only
*/
public void dumpDomTree(boolean toFile) {
- mWebViewCore.sendMessage(EventHub.DUMP_DOMTREE, toFile ? 1 : 0, 0);
+ // -- Add print_dom_tree by chao
+ //mWebViewCore.sendMessage(EventHub.DUMP_DOMTREE, toFile ? 1 : 0, 0);
+ mWebViewCore.sendMessage(EventHub.DUMP_DOMTREE, toFile ? 1 : 1, 0);
+ // Add print_dom_tree by chao --
}
/**
@@ -5349,7 +5352,10 @@ public final class WebViewClassic extends FjWebViewClassic
* debug only
*/
public void dumpRenderTree(boolean toFile) {
- mWebViewCore.sendMessage(EventHub.DUMP_RENDERTREE, toFile ? 1 : 0, 0);
+ // -- Add print_dom_tree by chao
+ // mWebViewCore.sendMessage(EventHub.DUMP_RENDERTREE, toFile ? 1 : 0, 0);
+ mWebViewCore.sendMessage(EventHub.DUMP_RENDERTREE, toFile ? 1 : 1, 0);
+ // Add print_dom_tree by chao --
}
/**
extern/webkit中的修改如下:
diff --git a/Source/WebKit/android/AndroidLog.h b/Source/WebKit/android/AndroidLog.h
index f034d35..2efab96 100644
--- a/Source/WebKit/android/AndroidLog.h
+++ b/Source/WebKit/android/AndroidLog.h
@@ -37,12 +37,18 @@
#ifdef ANDROID_DOM_LOGGING
#include <stdio.h>
extern FILE* gDomTreeFile;
-#define DOM_TREE_LOG_FILE "/sdcard/domTree.txt"
+// -- Add print_dom_tree by chao
+// #define DOM_TREE_LOG_FILE "/sdcard/domTree.txt"
+#define DOM_TREE_LOG_FILE "/data/local/domTree.txt"
+// Add print_dom_tree by chao --
#define DUMP_DOM_LOGD(...) { if (gDomTreeFile) \
fprintf(gDomTreeFile, __VA_ARGS__); else ALOGD(__VA_ARGS__); }
extern FILE* gRenderTreeFile;
-#define RENDER_TREE_LOG_FILE "/sdcard/renderTree.txt"
+// -- Add print_dom_tree by chao
+// #define RENDER_TREE_LOG_FILE "/sdcard/renderTree.txt"
+#define RENDER_TREE_LOG_FILE "/data/local/renderTree.txt"
+// Add print_dom_tree by chao --
#define DUMP_RENDER_LOGD(...) { if (gRenderTreeFile) \
fprintf(gRenderTreeFile, __VA_ARGS__); else ALOGD(__VA_ARGS__); }
#else
@@ -50,8 +56,12 @@ extern FILE* gRenderTreeFile;
#define DUMP_RENDER_LOGD(...) ((void)0)
#endif /* ANDROID_DOM_LOGGING */
-#define DISPLAY_TREE_LOG_FILE "/sdcard/displayTree.txt"
-#define LAYERS_TREE_LOG_FILE "/sdcard/layersTree.plist"
+// -- Add print_dom_tree by chao
+//#define DISPLAY_TREE_LOG_FILE "/sdcard/displayTree.txt"
+//#define LAYERS_TREE_LOG_FILE "/sdcard/layersTree.plist"
+#define DISPLAY_TREE_LOG_FILE "/data/local/displayTree.txt"
+#define LAYERS_TREE_LOG_FILE "/data/local/layersTree.plist"
+// Add print_dom_tree by chao --
#define FLOAT_RECT_FORMAT "[x=%.2f,y=%.2f,w=%.2f,h=%.2f]"
#define FLOAT_RECT_ARGS(fr) fr.x(), fr.y(), fr.width(), fr.height()
本文為極度寒冰原創(chuàng)
如何在android上打印dom樹(shù),render樹(shù),display
1 : 1, 0);+ \/\/ Add print_dom_tree by chao --}\/** extern\/webkit中的修改如下:diff --git a\/Source\/WebKit\/android\/AndroidLog.h b\/Source\/WebKit\/android\/AndroidLog.hindex f034d35..2efab96 100644--- a\/Source\/WebKit\/android\/AndroidLog.h+++ b\/Source\/WebKit\/android\/AndroidLo...
android中dom含義
dom 這種方式就是將XML加載成內(nèi)存樹(shù),可以對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行增刪查改 SAX 這種方式就是事件驅(qū)動(dòng),速度快內(nèi)存占用少,缺點(diǎn)就是不能對(duì)XML增加和刪除節(jié)點(diǎn)
如何在移動(dòng)設(shè)備上調(diào)試html5開(kāi)發(fā)的網(wǎng)頁(yè)
1、打開(kāi)手機(jī)web檢查器。通過(guò)【設(shè)置】>【Safari】>【高級(jí)】>【W(wǎng)eb檢查器】打開(kāi)。見(jiàn)下圖(點(diǎn)擊查看大圖),并且你會(huì)看到該選項(xiàng)下面對(duì)電腦操作的相應(yīng)描述,照做就好。2.鏈接電腦(Mac)2.1 先在手機(jī)Safari中打開(kāi)你想調(diào)試的網(wǎng)頁(yè),并用數(shù)據(jù)線連接到電腦(我這里是Mac)2.2 再在電腦上打開(kāi)Safari點(diǎn)擊【Deve...
如何解決css3動(dòng)畫(huà)在android機(jī)上卡頓現(xiàn)象
1. 頁(yè)面是否重繪 如果每加載一次動(dòng)畫(huà) dom樹(shù)都重新繪制 肯定會(huì)造成卡頓 absolute脫離下文檔流試試 2. 調(diào)用手機(jī)硬件加速 opacity:1 3. 再下來(lái) 估計(jì)就是手機(jī)硬件的問(wèn)題了
android中怎么解析復(fù)雜的xml文件
Android對(duì)XML文件解析的方法主要有3種。 通常有三種方式:DOM、SAX和PULL,下面就分別針對(duì)這三種方式來(lái)進(jìn)行討論。文件內(nèi)容如下所示:那么就是要對(duì)此XML文件做解析。下面我們就分別用DOM,SAX和PULL三種方式,分別對(duì)此XML文件做解析。DOM方式DOM方式解析xml是先把xml文檔都讀到內(nèi)存中,然后再用DOM API來(lái)訪問(wèn)樹(shù)形結(jié)構(gòu),并獲取...
混合開(kāi)發(fā)之JavaScriptInterfaceAndroid端交互
我們?cè)趧?chuàng)建WebView時(shí)候就會(huì)創(chuàng)建啟動(dòng)Chromium ,Chromium中有webCore引擎和JsCore引擎。WebCore負(fù)責(zé)對(duì)HTML解析,CSS解析,渲染UI,調(diào)試信息等部分。Android Browser 用來(lái)主要用WebView來(lái)加載和渲染html網(wǎng)頁(yè),來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)瀏覽功能。主要從網(wǎng)頁(yè)的 URL 到構(gòu)建完 DOM 樹(shù),接著 從 DOM 樹(shù)到構(gòu)建完 WebKit 的繪圖...
ReactNative架構(gòu)解析-一張圖了解Fabric
回到上圖,到這里我們就找到了粉紅色部分代表的react-native-renderer部分作為JS側(cè)的render入口了。react-native-renderer和react配合,在react的render和commit階段共同工作,但是這次不同的是,針對(duì)Native(Android\/iOS)環(huán)境,不需要react-native-renderer去生成DOM樹(shù),而是轉(zhuǎn)換為Native能理解的樹(shù)形結(jié)構(gòu),我們稱...
谷歌社區(qū)說(shuō)|Android 開(kāi)發(fā)者的跨平臺(tái) - Flutter or Compose ?
在跨平臺(tái)開(kāi)發(fā)中,Compose 與 compose-jb 有差異,Compose 通過(guò)多個(gè)模塊實(shí)現(xiàn)多平臺(tái)支持。Compose for Wear OS 已發(fā)布穩(wěn)定版。Compose 的組件在 Android 上可以顯示布局邊界,代碼可被混淆,性能優(yōu)化通過(guò)虛擬 Dom 樹(shù)實(shí)現(xiàn)。三、Flutter 的角色 對(duì)于 Android 開(kāi)發(fā)者而言,F(xiàn)lutter 提供了單代碼庫(kù)的優(yōu)勢(shì),能夠...
linux下如何開(kāi)啟DOM 解析器
1.DOM標(biāo)準(zhǔn) DOM(Document Object Model,文檔對(duì)象模型)是W3C制定的一套規(guī)范標(biāo)準(zhǔn),即規(guī)定了解析文件的接口。各種語(yǔ)言可以按照DOM規(guī)范去實(shí)現(xiàn)這些接口,給出解析文件的解析器。各種基于DOM規(guī)范解析器必須按照DOM規(guī)范在內(nèi)存中建立數(shù)據(jù),DOM規(guī)范的核心是樹(shù)模型。對(duì)于解析XML文件的解析器,解析器通過(guò)讀入XML文件在...
DOM是什么?
通過(guò) JavaScript,您可以重構(gòu)整個(gè) HTML 文檔。您可以添加、移除、改變或重排頁(yè)面上的項(xiàng)目。要改變頁(yè)面的某個(gè)東西,JavaScript 就需要對(duì) HTML 文檔中所有元素進(jìn)行訪問(wèn)的入口。這個(gè)入口,連同對(duì) HTML 元素進(jìn)行添加、移動(dòng)、改變或移除的方法和屬性,都是通過(guò)文檔對(duì)象模型來(lái)獲得的(DOM)。在 1998 年,W3C 發(fā)布...
相關(guān)評(píng)說(shuō):
西昌市摩擦: ______ 1、然后點(diǎn)擊突然沖擊(讓蜘蛛獲得魔法效果)、僵尸守衛(wèi)(反視)、無(wú)情獵人.2、輔助符文可以帶來(lái)迅捷和水行,增加蜘蛛的移動(dòng)速度,提高她的支援能力.3、蜘蛛打野天賦符文.這套符文可以讓蜘蛛的跑圖能力更強(qiáng),電死傷害的爆發(fā)也更高.當(dāng)然也可以帶精密系統(tǒng).4、蜘蛛出門(mén)可以帶一把裝有可重復(fù)使用藥水和眼睛的野戰(zhàn)刀進(jìn)行檢查.5、整體裝備參考:五速鞋、紅罰結(jié)界能量回聲、面具、魔杖、冰杖、仲雅.6、女妖也可以根據(jù)陣容出來(lái),在鞋子后面換.一般路人被罰或者藍(lán)罰,綠罰的很少,但基本都是綠罰.易理斯蜘蛛的野技能等級(jí)W或者Q,主Q和輔W.本文,蜘蛛打野天賦最新,蜘蛛打野天賦到此就分享完畢,希望對(duì)大家有所幫助.
西昌市摩擦: ______ 絕對(duì)零度是熱力學(xué)的最低溫度,熱力學(xué)溫標(biāo)的單位是K(開(kāi)爾文),絕對(duì)零度就是0K(約為-273.15℃或-459.67℉).在此溫度下,物體分子沒(méi)有動(dòng)能,但仍然存在勢(shì)能,此時(shí)內(nèi)能為最小值.然而,絕對(duì)零度在現(xiàn)實(shí)中是無(wú)法達(dá)到的,只是理論的下限值.物體的溫度實(shí)際上就是原子在物體內(nèi)部的運(yùn)動(dòng).當(dāng)我們感到一個(gè)物體比較熱的時(shí)候,就意味著它的原子在快速運(yùn)動(dòng):當(dāng)我們感到一個(gè)物體比較冷的時(shí)候,則意味著其內(nèi)部的原子運(yùn)動(dòng)速度較慢.我們的身體是通過(guò)熱或冷來(lái)感覺(jué)這種運(yùn)動(dòng)的,而物理學(xué)家則是絕對(duì)溫標(biāo)或稱開(kāi)爾文溫標(biāo)來(lái)測(cè)量溫度的.
西昌市摩擦: ______ 1、《星界邊年記》是連載于起點(diǎn)中文網(wǎng)的一部科幻小說(shuō).2、作者是仁馀金.
西昌市摩擦: ______ 1、吉普牧馬人Jeep?最新的Rock-Trac分時(shí)四驅(qū)系統(tǒng)是Jeep?牧馬人Rubicon(羅賓漢)超強(qiáng)攀爬能力的核心所在,也是目前業(yè)內(nèi)最專業(yè)的機(jī)械式四驅(qū)系統(tǒng).2、Jeep?牧馬人車型自誕生以來(lái),就一直被作為全世界越野愛(ài)好者的終極向往,它象征著自由和激情,以及對(duì)更純粹生活方式的理解和追求.
西昌市摩擦: ______ 是的.這是官方的公告: 各位尊敬的京東網(wǎng)友們,為了給大家提供一個(gè)更簡(jiǎn)便和實(shí)惠的購(gòu)物平臺(tái),京東商城決定: 自今日起,不限金額、不分會(huì)員級(jí)別、不分品類全場(chǎng)免運(yùn)費(fèi)!雖然這是為了迎接618推出的優(yōu)惠舉措,但是并不僅限于6月份.而是長(zhǎng)期全場(chǎng)免運(yùn)費(fèi)!今后高級(jí)會(huì)員主要通過(guò)發(fā)放高價(jià)值優(yōu)惠券和瘋狂特價(jià)品限制會(huì)員級(jí)別購(gòu)買(mǎi)來(lái)實(shí)現(xiàn)!這是一個(gè)有利于所有會(huì)員的優(yōu)惠措施,所以請(qǐng)高級(jí)會(huì)員們能夠給予理解! 祝大家購(gòu)物愉快!
西昌市摩擦: ______ 白人以白為美.也因?yàn)槭郎媳緵](méi)有白人,白人也是從黃種人進(jìn)化出來(lái)的.好不容易進(jìn)化成白人了,自然不愿意看到過(guò)去的丑樣子.因此,對(duì)黃種人歧視就不難理解了. 白人...
西昌市摩擦: ______ 1、我的飛信也經(jīng)常這樣,還有時(shí)候提示:飛信正式商用,要收費(fèi).2、郁悶.3、移動(dòng)那邊的解釋是版本低了.
西昌市摩擦: ______ 熬米粥時(shí)熬到一半放干蜜棗比較好
西昌市摩擦: ______ 你好,引產(chǎn)后接近一個(gè)月,可以穿短褲頭出門(mén).也可以吃西瓜,最好不要吃冰箱里的.常溫下的水果都可以吃.
西昌市摩擦: ______ 太原儂儂名人藝術(shù)的學(xué)歷是本科!現(xiàn)在你想學(xué)習(xí)藝術(shù)的話最好就是進(jìn)入藝術(shù)學(xué)校