summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/AndroidTests/AndroidManifest.xml21
-rw-r--r--tests/AndroidTests/res/values/strings.xml3
-rw-r--r--tests/AndroidTests/res/xml/searchable.xml11
-rwxr-xr-xtests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java2
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/BitwiseStreamsTest.java33
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/CdmaSmsTest.java255
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/DatabaseGeneralTest.java245
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/NeighboringCellInfoTest.java55
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/SMSTest.java25
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/SearchManagerTest.java204
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/SearchableActivity.java30
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/SearchablesTest.java50
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/SuggestionProvider.java110
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/TextUtilsTest.java1
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProvider.java211
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProviderTest.java82
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/os/MemoryFileTest.java194
-rw-r--r--tests/CoreTests/android/location/LocationManagerProximityTest.java5
-rw-r--r--tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java19
-rw-r--r--tests/CoreTests/com/android/internal/telephony/PhoneNumberUtilsTest.java7
-rw-r--r--tests/CoreTests/com/android/internal/telephony/SMSDispatcherTest.java36
-rw-r--r--tests/DpiTest/AndroidManifest.xml2
-rw-r--r--tests/DpiTest/res/values-largeScreen/strings.xml19
-rw-r--r--tests/DpiTest/res/values-normalScreen/strings.xml19
-rw-r--r--tests/DpiTest/res/values-smallScreen/strings.xml19
-rw-r--r--tests/DpiTest/res/values/strings.xml19
-rw-r--r--tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java1
-rw-r--r--tests/DumpRenderTree/AndroidManifest.xml8
-rw-r--r--tests/DumpRenderTree/assets/results/layout_tests_failed.txt978
-rw-r--r--tests/DumpRenderTree/assets/results/layout_tests_nontext.txt2427
-rw-r--r--tests/DumpRenderTree/assets/results/layout_tests_passed.txt1244
-rwxr-xr-xtests/DumpRenderTree/assets/run_layout_tests.py41
-rwxr-xr-xtests/DumpRenderTree/assets/run_reliability_tests.py172
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java73
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java80
-rwxr-xr-xtests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java23
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java64
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java104
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java42
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTest.java166
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestActivity.java290
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestsAutoTest.java209
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java153
-rw-r--r--tests/FrameworkTest/AndroidManifest.xml11
-rw-r--r--tests/FrameworkTest/src/com/android/frameworktest/accessibility/AccessibilityTestService.java167
-rw-r--r--tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java2
-rw-r--r--tests/FrameworkTest/tests/src/com/android/frameworktest/accessibility/RecycleAccessibilityEventTest.java81
-rw-r--r--tests/backup/Android.mk4
-rw-r--r--tests/backup/AndroidManifest.xml7
-rw-r--r--tests/backup/backup_helper_test.cpp24
-rw-r--r--tests/backup/src/com/android/backuptest/BackupTestActivity.java78
-rw-r--r--tests/backup/src/com/android/backuptest/BackupTestAgent.java32
-rw-r--r--tests/backup/src/com/android/backuptest/BackupTestService.java43
-rwxr-xr-xtests/backup/test_backup.sh27
-rwxr-xr-xtests/backup/test_restore.sh53
-rw-r--r--tests/permission/Android.mk14
-rw-r--r--tests/permission/AndroidManifest.xml33
-rw-r--r--tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java182
-rw-r--r--tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java136
-rw-r--r--tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java141
-rw-r--r--tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java50
-rw-r--r--tests/permission/src/com/android/framework/permission/tests/SettingsPermissionsTests.java54
-rw-r--r--tests/permission/src/com/android/framework/permission/tests/SmsManagerPermissionTest.java85
-rw-r--r--tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java409
64 files changed, 8302 insertions, 1083 deletions
diff --git a/tests/AndroidTests/AndroidManifest.xml b/tests/AndroidTests/AndroidManifest.xml
index 843d844..55d4d64 100644
--- a/tests/AndroidTests/AndroidManifest.xml
+++ b/tests/AndroidTests/AndroidManifest.xml
@@ -206,6 +206,12 @@
<meta-data android:name="com.android.unit_tests.reference" android:resource="@xml/metadata" />
</provider>
+ <!-- Application components used for content tests -->
+ <provider android:name=".content.MemoryFileProvider"
+ android:authorities="com.android.unit_tests.content.MemoryFileProvider"
+ android:process=":MemoryFileProvider">
+ </provider>
+
<!-- Application components used for os tests -->
<service android:name=".os.MessengerService"
@@ -213,7 +219,20 @@
</service>
<!-- Application components used for search manager tests -->
- <!-- TODO: Removed temporarily - need to be replaced using mocks -->
+
+ <activity android:name=".SearchableActivity"
+ android:label="Searchable Activity">
+ <intent-filter>
+ <action android:name="android.intent.action.SEARCH" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="android.app.searchable"
+ android:resource="@xml/searchable" />
+ </activity>
+
+ <provider android:name=".SuggestionProvider"
+ android:authorities="com.android.unit_tests.SuggestionProvider">
+ </provider>
<!-- Used to test IPC. -->
<service android:name=".binder.BinderTestService"
diff --git a/tests/AndroidTests/res/values/strings.xml b/tests/AndroidTests/res/values/strings.xml
index 21c72cf..49d8ae7 100644
--- a/tests/AndroidTests/res/values/strings.xml
+++ b/tests/AndroidTests/res/values/strings.xml
@@ -50,5 +50,8 @@
<item quantity="other">Some dogs</item>
</plurals>
+ <string name="searchable_label">SearchManager Test</string>
+ <string name="searchable_hint">A search hint</string>
+
<!-- <string name="layout_six_text_text">F</string> -->
</resources>
diff --git a/tests/AndroidTests/res/xml/searchable.xml b/tests/AndroidTests/res/xml/searchable.xml
index a40d53d..9d293b5 100644
--- a/tests/AndroidTests/res/xml/searchable.xml
+++ b/tests/AndroidTests/res/xml/searchable.xml
@@ -15,7 +15,12 @@
-->
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
- android:label="SearchManagerTest"
- android:hint="SearchManagerTest Hint"
-/>
+ android:label="@string/searchable_label"
+ android:hint="@string/searchable_hint"
+ android:searchSuggestAuthority="com.android.unit_tests.SuggestionProvider"
+ >
+ <actionkey android:keycode="KEYCODE_CALL"
+ android:suggestActionMsgColumn="suggest_action_msg_call" />
+
+</searchable> \ No newline at end of file
diff --git a/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java b/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java
index 3daa8ab..fb1b9ad 100755
--- a/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java
@@ -507,7 +507,7 @@ public class AppCacheTest extends AndroidTestCase {
try {
// Spin lock waiting for call back
synchronized(r) {
- getPm().freeStorage(idealStorageSize, pi);
+ getPm().freeStorage(idealStorageSize, pi.getIntentSender());
long waitTime = 0;
while(!r.isDone() && (waitTime < MAX_WAIT_TIME)) {
r.wait(WAIT_TIME_INCR);
diff --git a/tests/AndroidTests/src/com/android/unit_tests/BitwiseStreamsTest.java b/tests/AndroidTests/src/com/android/unit_tests/BitwiseStreamsTest.java
index a935247..c5562b3 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/BitwiseStreamsTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/BitwiseStreamsTest.java
@@ -25,6 +25,8 @@ import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;
+import java.util.Random;
+
public class BitwiseStreamsTest extends AndroidTestCase {
private final static String LOG_TAG = "BitwiseStreamsTest";
@@ -39,7 +41,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
BitwiseInputStream inStream = new BitwiseInputStream(outBuf);
byte[] inBufDup = new byte[inBuf.length];
inStream.skip(offset);
- for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
+ for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8);
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
@@ -53,7 +55,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
inStream.skip(offset);
byte[] inBufDup = new byte[inBuf.length];
- for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
+ for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8);
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
@@ -67,7 +69,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
inStream.skip(offset);
byte[] inBufDup = new byte[inBuf.length];
- for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
+ for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8);
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
@@ -84,12 +86,33 @@ public class BitwiseStreamsTest extends AndroidTestCase {
BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
inStream.skip(offset);
byte[] inBufDup = new byte[inBuf.length];
- for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
+ for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8);
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
@SmallTest
public void testFive() throws Exception {
+ Random random = new Random();
+ int iterations = 10000;
+ int[] sizeArr = new int[iterations];
+ int[] valueArr = new int[iterations];
+ BitwiseOutputStream outStream = new BitwiseOutputStream(iterations * 4);
+ for (int i = 0; i < iterations; i++) {
+ int x = random.nextInt();
+ int size = (x & 0x07) + 1;
+ int value = x & (-1 >>> (32 - size));
+ sizeArr[i] = size;
+ valueArr[i] = value;
+ outStream.write(size, value);
+ }
+ BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
+ for (int i = 0; i < iterations; i++) {
+ assertEquals(valueArr[i], inStream.read(sizeArr[i]));
+ }
+ }
+
+ @SmallTest
+ public void testSix() throws Exception {
int num_runs = 10;
long start = android.os.SystemClock.elapsedRealtime();
for (int run = 0; run < num_runs; run++) {
@@ -104,7 +127,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
inStream.skip(offset);
byte[] inBufDup = new byte[inBuf.length];
- for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
+ for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8);
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
long end = android.os.SystemClock.elapsedRealtime();
diff --git a/tests/AndroidTests/src/com/android/unit_tests/CdmaSmsTest.java b/tests/AndroidTests/src/com/android/unit_tests/CdmaSmsTest.java
index b3e88e1..f0ba573 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/CdmaSmsTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/CdmaSmsTest.java
@@ -30,10 +30,12 @@ import android.test.suitebuilder.annotation.SmallTest;
import java.util.Iterator;
+import java.lang.Integer;
+
import android.util.Log;
public class CdmaSmsTest extends AndroidTestCase {
- private final static String LOG_TAG = "Cdma_Sms_Test";
+ private final static String LOG_TAG = "CDMA";
@SmallTest
public void testUserData7bitGsm() throws Exception {
@@ -103,6 +105,24 @@ public class CdmaSmsTest extends AndroidTestCase {
assertEquals(userData.msgEncoding, revBearerData.userData.msgEncoding);
assertEquals(userData.payloadStr.length(), revBearerData.userData.numFields);
assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
+ userData.payloadStr = "More @ testing\nis great^|^~woohoo";
+ revBearerData = BearerData.decode(BearerData.encode(bearerData));
+ assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
+ SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
+ concatRef.refNumber = 0xEE;
+ concatRef.msgCount = 2;
+ concatRef.seqNumber = 2;
+ concatRef.isEightBits = true;
+ SmsHeader smsHeader = new SmsHeader();
+ smsHeader.concatRef = concatRef;
+ byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
+ userData.userDataHeader = smsHeader;
+ revBearerData = BearerData.decode(BearerData.encode(bearerData));
+ assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
+ SmsHeader decodedHeader = revBearerData.userData.userDataHeader;
+ assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
+ assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
+ assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
}
@SmallTest
@@ -136,6 +156,212 @@ public class CdmaSmsTest extends AndroidTestCase {
}
@SmallTest
+ public void testMonolithicOne() throws Exception {
+ String pdu = "0003200010010410168d2002010503060812011101590501c706069706180000000701c108" +
+ "01c00901800a01e00b01030c01c00d01070e05039acc13880f018011020566";
+ BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
+ assertEquals(bearerData.messageType, BearerData.MESSAGE_TYPE_SUBMIT);
+ assertEquals(bearerData.messageId, 1);
+ assertEquals(bearerData.priority, BearerData.PRIORITY_EMERGENCY);
+ assertEquals(bearerData.privacy, BearerData.PRIVACY_CONFIDENTIAL);
+ assertEquals(bearerData.userAckReq, true);
+ assertEquals(bearerData.readAckReq, true);
+ assertEquals(bearerData.deliveryAckReq, true);
+ assertEquals(bearerData.reportReq, false);
+ assertEquals(bearerData.numberOfMessages, 3);
+ assertEquals(bearerData.alert, BearerData.ALERT_HIGH_PRIO);
+ assertEquals(bearerData.language, BearerData.LANGUAGE_HEBREW);
+ assertEquals(bearerData.callbackNumber.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
+ assertEquals(bearerData.callbackNumber.numberMode,
+ CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
+ assertEquals(bearerData.callbackNumber.ton, CdmaSmsAddress.TON_UNKNOWN);
+ assertEquals(bearerData.callbackNumber.numberPlan, CdmaSmsAddress.NUMBERING_PLAN_UNKNOWN);
+ assertEquals(bearerData.callbackNumber.numberOfDigits, 7);
+ assertEquals(bearerData.callbackNumber.address, "3598271");
+ assertEquals(bearerData.displayMode, BearerData.DISPLAY_MODE_USER);
+ assertEquals(bearerData.depositIndex, 1382);
+ assertEquals(bearerData.userResponseCode, 5);
+ assertEquals(bearerData.msgCenterTimeStamp.year, 2008);
+ assertEquals(bearerData.msgCenterTimeStamp.month, 11);
+ assertEquals(bearerData.msgCenterTimeStamp.monthDay, 1);
+ assertEquals(bearerData.msgCenterTimeStamp.hour, 11);
+ assertEquals(bearerData.msgCenterTimeStamp.minute, 1);
+ assertEquals(bearerData.msgCenterTimeStamp.second, 59);
+ assertEquals(bearerData.validityPeriodAbsolute, null);
+ assertEquals(bearerData.validityPeriodRelative, 193);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.year, 1997);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.month, 5);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.monthDay, 18);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0);
+ assertEquals(bearerData.deferredDeliveryTimeRelative, 199);
+ assertEquals(bearerData.hasUserDataHeader, false);
+ assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII);
+ assertEquals(bearerData.userData.numFields, 2);
+ assertEquals(bearerData.userData.payloadStr, "hi");
+ }
+
+ @SmallTest
+ public void testMonolithicTwo() throws Exception {
+ String pdu = "0003200010010410168d200201050306081201110159050192060697061800000007013d0" +
+ "801c00901800a01e00b01030c01c00d01070e05039acc13880f018011020566";
+ BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
+ assertEquals(bearerData.messageType, BearerData.MESSAGE_TYPE_SUBMIT);
+ assertEquals(bearerData.messageId, 1);
+ assertEquals(bearerData.priority, BearerData.PRIORITY_EMERGENCY);
+ assertEquals(bearerData.privacy, BearerData.PRIVACY_CONFIDENTIAL);
+ assertEquals(bearerData.userAckReq, true);
+ assertEquals(bearerData.readAckReq, true);
+ assertEquals(bearerData.deliveryAckReq, true);
+ assertEquals(bearerData.reportReq, false);
+ assertEquals(bearerData.numberOfMessages, 3);
+ assertEquals(bearerData.alert, BearerData.ALERT_HIGH_PRIO);
+ assertEquals(bearerData.language, BearerData.LANGUAGE_HEBREW);
+ assertEquals(bearerData.callbackNumber.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
+ assertEquals(bearerData.callbackNumber.numberMode,
+ CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
+ assertEquals(bearerData.callbackNumber.ton, CdmaSmsAddress.TON_UNKNOWN);
+ assertEquals(bearerData.callbackNumber.numberPlan, CdmaSmsAddress.NUMBERING_PLAN_UNKNOWN);
+ assertEquals(bearerData.callbackNumber.numberOfDigits, 7);
+ assertEquals(bearerData.callbackNumber.address, "3598271");
+ assertEquals(bearerData.displayMode, BearerData.DISPLAY_MODE_USER);
+ assertEquals(bearerData.depositIndex, 1382);
+ assertEquals(bearerData.userResponseCode, 5);
+ assertEquals(bearerData.msgCenterTimeStamp.year, 2008);
+ assertEquals(bearerData.msgCenterTimeStamp.month, 11);
+ assertEquals(bearerData.msgCenterTimeStamp.monthDay, 1);
+ assertEquals(bearerData.msgCenterTimeStamp.hour, 11);
+ assertEquals(bearerData.msgCenterTimeStamp.minute, 1);
+ assertEquals(bearerData.msgCenterTimeStamp.second, 59);
+ assertEquals(bearerData.validityPeriodAbsolute, null);
+ assertEquals(bearerData.validityPeriodRelative, 61);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.year, 1997);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.month, 5);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.monthDay, 18);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0);
+ assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0);
+ assertEquals(bearerData.deferredDeliveryTimeRelative, 146);
+ assertEquals(bearerData.hasUserDataHeader, false);
+ assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII);
+ assertEquals(bearerData.userData.numFields, 2);
+ assertEquals(bearerData.userData.payloadStr, "hi");
+ }
+
+ @SmallTest
+ public void testUserDataHeaderConcatRefFeedback() throws Exception {
+ BearerData bearerData = new BearerData();
+ bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
+ bearerData.messageId = 55;
+ SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
+ concatRef.refNumber = 0xEE;
+ concatRef.msgCount = 2;
+ concatRef.seqNumber = 2;
+ concatRef.isEightBits = true;
+ SmsHeader smsHeader = new SmsHeader();
+ smsHeader.concatRef = concatRef;
+ byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
+ SmsHeader decodedHeader = SmsHeader.fromByteArray(encodedHeader);
+ assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
+ assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
+ assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
+ assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
+ assertEquals(decodedHeader.portAddrs, null);
+ UserData userData = new UserData();
+ userData.payloadStr = "User Data Header (UDH) feedback test";
+ userData.userDataHeader = smsHeader;
+ bearerData.userData = userData;
+ byte[] encodedSms = BearerData.encode(bearerData);
+ BearerData revBearerData = BearerData.decode(encodedSms);
+ decodedHeader = revBearerData.userData.userDataHeader;
+ assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
+ assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
+ assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
+ assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
+ assertEquals(decodedHeader.portAddrs, null);
+ }
+
+ @SmallTest
+ public void testUserDataHeaderIllegalConcatRef() throws Exception {
+ BearerData bearerData = new BearerData();
+ bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
+ bearerData.messageId = 55;
+ SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
+ concatRef.refNumber = 0x10;
+ concatRef.msgCount = 0;
+ concatRef.seqNumber = 2;
+ concatRef.isEightBits = true;
+ SmsHeader smsHeader = new SmsHeader();
+ smsHeader.concatRef = concatRef;
+ byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
+ SmsHeader decodedHeader = SmsHeader.fromByteArray(encodedHeader);
+ assertEquals(decodedHeader.concatRef, null);
+ concatRef.isEightBits = false;
+ encodedHeader = SmsHeader.toByteArray(smsHeader);
+ decodedHeader = SmsHeader.fromByteArray(encodedHeader);
+ assertEquals(decodedHeader.concatRef, null);
+ concatRef.msgCount = 1;
+ concatRef.seqNumber = 2;
+ encodedHeader = SmsHeader.toByteArray(smsHeader);
+ decodedHeader = SmsHeader.fromByteArray(encodedHeader);
+ assertEquals(decodedHeader.concatRef, null);
+ concatRef.msgCount = 1;
+ concatRef.seqNumber = 0;
+ encodedHeader = SmsHeader.toByteArray(smsHeader);
+ decodedHeader = SmsHeader.fromByteArray(encodedHeader);
+ assertEquals(decodedHeader.concatRef, null);
+ concatRef.msgCount = 2;
+ concatRef.seqNumber = 1;
+ encodedHeader = SmsHeader.toByteArray(smsHeader);
+ decodedHeader = SmsHeader.fromByteArray(encodedHeader);
+ assertEquals(decodedHeader.concatRef.msgCount, 2);
+ assertEquals(decodedHeader.concatRef.seqNumber, 1);
+ }
+
+ @SmallTest
+ public void testUserDataHeaderMixedFeedback() throws Exception {
+ BearerData bearerData = new BearerData();
+ bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
+ bearerData.messageId = 42;
+ SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
+ concatRef.refNumber = 0x34;
+ concatRef.msgCount = 5;
+ concatRef.seqNumber = 2;
+ concatRef.isEightBits = false;
+ SmsHeader.PortAddrs portAddrs = new SmsHeader.PortAddrs();
+ portAddrs.destPort = 88;
+ portAddrs.origPort = 66;
+ portAddrs.areEightBits = false;
+ SmsHeader smsHeader = new SmsHeader();
+ smsHeader.concatRef = concatRef;
+ smsHeader.portAddrs = portAddrs;
+ byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
+ SmsHeader decodedHeader = SmsHeader.fromByteArray(encodedHeader);
+ assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
+ assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
+ assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
+ assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
+ assertEquals(decodedHeader.portAddrs.destPort, portAddrs.destPort);
+ assertEquals(decodedHeader.portAddrs.origPort, portAddrs.origPort);
+ assertEquals(decodedHeader.portAddrs.areEightBits, portAddrs.areEightBits);
+ UserData userData = new UserData();
+ userData.payloadStr = "User Data Header (UDH) feedback test";
+ userData.userDataHeader = smsHeader;
+ bearerData.userData = userData;
+ byte[] encodedSms = BearerData.encode(bearerData);
+ BearerData revBearerData = BearerData.decode(encodedSms);
+ decodedHeader = revBearerData.userData.userDataHeader;
+ assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
+ assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
+ assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
+ assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
+ assertEquals(decodedHeader.portAddrs.destPort, portAddrs.destPort);
+ assertEquals(decodedHeader.portAddrs.origPort, portAddrs.origPort);
+ assertEquals(decodedHeader.portAddrs.areEightBits, portAddrs.areEightBits);
+ }
+
+ @SmallTest
public void testReplyOption() throws Exception {
String pdu1 = "0003104090011648b6a794e0705476bf77bceae934fe5f6d94d87450080a0180";
BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
@@ -298,22 +524,6 @@ public class CdmaSmsTest extends AndroidTestCase {
}
@SmallTest
- public void testMsgCenterTimeStampFeedback() throws Exception {
- BearerData bearerData = new BearerData();
- bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
- bearerData.messageId = 0;
- bearerData.hasUserDataHeader = false;
- UserData userData = new UserData();
- userData.payloadStr = "test message center timestamp";
- bearerData.userData = userData;
- bearerData.timeStamp = HexDump.hexStringToByteArray("112233445566");
- byte []encodedSms = BearerData.encode(bearerData);
- BearerData revBearerData = BearerData.decode(encodedSms);
- assertEquals(HexDump.toHexString(bearerData.timeStamp),
- HexDump.toHexString(revBearerData.timeStamp));
- }
-
- @SmallTest
public void testPrivacyIndicator() throws Exception {
String pdu1 = "0003104090010c485f4194dfea34becf61b840090140";
BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
@@ -486,4 +696,15 @@ public class CdmaSmsTest extends AndroidTestCase {
assertEquals(revBearerData.displayModeSet, true);
assertEquals(revBearerData.displayMode, bearerData.displayMode);
}
+
+ @SmallTest
+ public void testIs91() throws Exception {
+ String pdu1 = "000320001001070c2039acc13880";
+ BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
+ assertEquals(bd1.callbackNumber.address, "3598271");
+ String pdu4 = "000320001001080c283c314724b34e";
+ BearerData bd4 = BearerData.decode(HexDump.hexStringToByteArray(pdu4));
+ assertEquals(bd4.userData.payloadStr, "ABCDEFG");
+ }
+
}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/DatabaseGeneralTest.java b/tests/AndroidTests/src/com/android/unit_tests/DatabaseGeneralTest.java
index d775dc2..0991e8c 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/DatabaseGeneralTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/DatabaseGeneralTest.java
@@ -175,6 +175,7 @@ public class DatabaseGeneralTest extends TestCase implements PerformanceTestCase
assertEquals("+" + PHONE_NUMBER, number);
c.close();
+ /*
c = mDatabase.query("phones", null,
"PHONE_NUMBERS_EQUAL(num, '5551212')", null, null, null, null);
assertNotNull(c);
@@ -183,6 +184,7 @@ public class DatabaseGeneralTest extends TestCase implements PerformanceTestCase
number = c.getString(c.getColumnIndexOrThrow("num"));
assertEquals("+" + PHONE_NUMBER, number);
c.close();
+ */
c = mDatabase.query("phones", null,
"PHONE_NUMBERS_EQUAL(num, '011" + PHONE_NUMBER + "')", null, null, null, null);
@@ -203,85 +205,97 @@ public class DatabaseGeneralTest extends TestCase implements PerformanceTestCase
c.close();
}
+
+ private void phoneNumberCompare(String phone1, String phone2, boolean equal)
+ throws Exception {
+ String[] temporalPhoneNumbers = new String[2];
+ temporalPhoneNumbers[0] = phone1;
+ temporalPhoneNumbers[1] = phone2;
+
+ Cursor cursor = mDatabase.rawQuery(
+ "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
+ temporalPhoneNumbers);
+ try {
+ assertNotNull(cursor);
+ assertTrue(cursor.moveToFirst());
+ if (equal) {
+ assertEquals(String.format("Unexpectedly, \"%s != %s\".", phone1, phone2),
+ "equal", cursor.getString(0));
+ } else {
+ assertEquals(String.format("Unexpectedly, \"%s\" == \"%s\".", phone1, phone2),
+ "not equal", cursor.getString(0));
+ }
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ }
+
+ private void assertPhoneNumberEqual(String phone1, String phone2) throws Exception {
+ phoneNumberCompare(phone1, phone2, true);
+ }
+
+ private void assertPhoneNumberNotEqual(String phone1, String phone2) throws Exception {
+ phoneNumberCompare(phone1, phone2, false);
+ }
+
/**
* Tests international matching issues for the PHONE_NUMBERS_EQUAL function.
*
* @throws Exception
*/
+ @SmallTest
public void testPhoneNumbersEqualInternationl() throws Exception {
- Cursor c;
- String[] phoneNumbers = new String[2];
+ assertPhoneNumberEqual("1", "1");
+ assertPhoneNumberEqual("123123", "123123");
+ assertPhoneNumberNotEqual("123123", "923123");
+ assertPhoneNumberNotEqual("123123", "123129");
+ assertPhoneNumberNotEqual("123123", "1231234");
+ assertPhoneNumberNotEqual("123123", "0123123");
+ assertPhoneNumberEqual("650-253-0000", "6502530000");
+ assertPhoneNumberEqual("650-253-0000", "650 253 0000");
+ assertPhoneNumberEqual("650 253 0000", "6502530000");
+ assertPhoneNumberEqual("+1 650-253-0000", "6502530000");
+ assertPhoneNumberEqual("001 650-253-0000", "6502530000");
+ assertPhoneNumberEqual("0111 650-253-0000", "6502530000");
// Russian trunk digit
- phoneNumbers[0] = "+79161234567"; // globablly dialable number
- phoneNumbers[1] = "89161234567"; // in-country dialable number
- c = mDatabase.rawQuery(
- "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
- phoneNumbers);
- assertTrue(c.moveToFirst());
- assertEquals("equal", c.getString(0));
- c.close();
+ assertPhoneNumberEqual("+79161234567", "89161234567");
// French trunk digit
- phoneNumbers[0] = "+33123456789"; // globablly dialable number
- phoneNumbers[1] = "0123456789"; // in-country dialable number
- c = mDatabase.rawQuery(
- "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
- phoneNumbers);
- assertTrue(c.moveToFirst());
- assertEquals("equal", c.getString(0));
- c.close();
-
+ assertPhoneNumberEqual("+33123456789", "0123456789");
// Trunk digit for city codes in the Netherlands
- phoneNumbers[0] = "+31771234567"; // globablly dialable number
- phoneNumbers[1] = "0771234567"; // in-country dialable number
- c = mDatabase.rawQuery(
- "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
- phoneNumbers);
- assertTrue(c.moveToFirst());
- assertEquals("equal", c.getString(0));
- c.close();
+ assertPhoneNumberEqual("+31771234567", "0771234567");
// Test broken caller ID seen on call from Thailand to the US
- phoneNumbers[0] = "+66811234567"; // in address book
- phoneNumbers[1] = "166811234567"; // came in from the network
- c = mDatabase.rawQuery(
- "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
- phoneNumbers);
- assertTrue(c.moveToFirst());
- assertEquals("equal", c.getString(0));
- c.close();
+ assertPhoneNumberEqual("+66811234567", "166811234567");
// Test the same in-country number with different country codes
- phoneNumbers[0] = "+33123456789";
- phoneNumbers[1] = "+1123456789";
- c = mDatabase.rawQuery(
- "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
- phoneNumbers);
- assertTrue(c.moveToFirst());
- assertEquals("not equal", c.getString(0));
- c.close();
+ assertPhoneNumberNotEqual("+33123456789", "+1123456789");
// Test one number with country code and the other without
- phoneNumbers[0] = "5125551212";
- phoneNumbers[1] = "+15125551212";
- c = mDatabase.rawQuery(
- "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
- phoneNumbers);
- assertTrue(c.moveToFirst());
- assertEquals("equal", c.getString(0));
- c.close();
+ assertPhoneNumberEqual("5125551212", "+15125551212");
// Test two NANP numbers that only differ in the area code
- phoneNumbers[0] = "5125551212";
- phoneNumbers[1] = "6505551212";
- c = mDatabase.rawQuery(
- "SELECT CASE WHEN PHONE_NUMBERS_EQUAL(?, ?) THEN 'equal' ELSE 'not equal' END",
- phoneNumbers);
- assertTrue(c.moveToFirst());
- assertEquals("not equal", c.getString(0));
- c.close();
+ assertPhoneNumberNotEqual("5125551212", "6505551212");
+
+ // Japanese phone numbers
+ assertPhoneNumberEqual("090-1234-5678", "+819012345678");
+ assertPhoneNumberEqual("090(1234)5678", "+819012345678");
+ assertPhoneNumberEqual("090-1234-5678", "+81-90-1234-5678");
+
+ // Equador
+ assertPhoneNumberEqual("+593(800)123-1234", "8001231234");
+ assertPhoneNumberEqual("+593-2-1234-123", "21234123");
+
+ // Two continuous 0 at the beginning of the phone string should not be
+ // treated as trunk prefix.
+ assertPhoneNumberNotEqual("008001231234", "8001231234");
+
+ // Confirm that the bug found before does not re-appear.
+ assertPhoneNumberNotEqual("080-1234-5678", "+819012345678");
}
@MediumTest
@@ -509,9 +523,14 @@ public class DatabaseGeneralTest extends TestCase implements PerformanceTestCase
Cursor c;
mDatabase.execSQL("CREATE TABLE tokens (" +
"token TEXT COLLATE unicode," +
- "source INTEGER " +
+ "source INTEGER," +
+ "token_index INTEGER," +
+ "tag TEXT" +
+ ");");
+ mDatabase.execSQL("CREATE TABLE tokens_no_index (" +
+ "token TEXT COLLATE unicode," +
+ "source INTEGER" +
");");
- String[] cols = new String[]{"token", "source"};
Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
"SELECT _TOKENIZE(NULL, NULL, NULL, NULL)", null));
@@ -523,60 +542,152 @@ public class DatabaseGeneralTest extends TestCase implements PerformanceTestCase
"SELECT _TOKENIZE('tokens', 10, 'some string', NULL)", null));
Assert.assertEquals(3, DatabaseUtils.longForQuery(mDatabase,
- "SELECT _TOKENIZE('tokens', 1, 'some string ok', ' ')", null));
-
+ "SELECT _TOKENIZE('tokens', 11, 'some string ok', ' ', 1, 'foo')", null));
+ Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT _TOKENIZE('tokens', 11, 'second field', ' ', 1, 'bar')", null));
+
+ Assert.assertEquals(3, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT _TOKENIZE('tokens_no_index', 20, 'some string ok', ' ')", null));
+ Assert.assertEquals(3, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT _TOKENIZE('tokens_no_index', 21, 'foo bar baz', ' ', 0)", null));
+
// test Chinese
String chinese = new String("\u4eac\u4ec5 \u5c3d\u5f84\u60ca");
Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase,
- "SELECT _TOKENIZE('tokens', 1,'" + chinese + "', ' ')", null));
+ "SELECT _TOKENIZE('tokens', 12,'" + chinese + "', ' ', 1)", null));
String icustr = new String("Fr\u00e9d\u00e9ric Hj\u00f8nnev\u00e5g");
Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase,
- "SELECT _TOKENIZE('tokens', 1, '" + icustr + "', ' ')", null));
+ "SELECT _TOKENIZE('tokens', 13, '" + icustr + "', ' ', 1)", null));
- Assert.assertEquals(7, DatabaseUtils.longForQuery(mDatabase,
+ Assert.assertEquals(9, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens;", null));
String key = DatabaseUtils.getHexCollationKey("Frederic Hjonneva");
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(13, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
key = DatabaseUtils.getHexCollationKey("Hjonneva");
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(13, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
key = DatabaseUtils.getHexCollationKey("some string ok");
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals("foo", DatabaseUtils.stringForQuery(mDatabase,
+ "SELECT tag from tokens where token GLOB '" + key + "*'", null));
key = DatabaseUtils.getHexCollationKey("string");
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals("foo", DatabaseUtils.stringForQuery(mDatabase,
+ "SELECT tag from tokens where token GLOB '" + key + "*'", null));
key = DatabaseUtils.getHexCollationKey("ok");
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-
+ Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals("foo", DatabaseUtils.stringForQuery(mDatabase,
+ "SELECT tag from tokens where token GLOB '" + key + "*'", null));
+
+ key = DatabaseUtils.getHexCollationKey("second field");
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals("bar", DatabaseUtils.stringForQuery(mDatabase,
+ "SELECT tag from tokens where token GLOB '" + key + "*'", null));
+ key = DatabaseUtils.getHexCollationKey("field");
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals("bar", DatabaseUtils.stringForQuery(mDatabase,
+ "SELECT tag from tokens where token GLOB '" + key + "*'", null));
+
key = DatabaseUtils.getHexCollationKey(chinese);
String[] a = new String[1];
a[0] = key;
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token= ?", a));
+ Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token= ?", a));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token= ?", a));
a[0] += "*";
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB ?", a));
+ Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB ?", a));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB ?", a));
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token= '" + key + "'", null));
+ Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token= '" + key + "'", null));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token= '" + key + "'", null));
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
key = DatabaseUtils.getHexCollationKey("\u4eac\u4ec5");
Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
+ key = DatabaseUtils.getHexCollationKey("\u5c3d\u5f84\u60ca");
+ Log.d("DatabaseGeneralTest", "key = " + key);
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
"SELECT count(*) from tokens where token GLOB 'ab*'", null));
+
+ key = DatabaseUtils.getHexCollationKey("some string ok");
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT count(*) from tokens_no_index where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(20, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens_no_index where token GLOB '" + key + "*'", null));
+
+ key = DatabaseUtils.getHexCollationKey("bar");
+ Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT count(*) from tokens_no_index where token GLOB '" + key + "*'", null));
+ Assert.assertEquals(21, DatabaseUtils.longForQuery(mDatabase,
+ "SELECT source from tokens_no_index where token GLOB '" + key + "*'", null));
}
@MediumTest
diff --git a/tests/AndroidTests/src/com/android/unit_tests/NeighboringCellInfoTest.java b/tests/AndroidTests/src/com/android/unit_tests/NeighboringCellInfoTest.java
new file mode 100644
index 0000000..2bdf1dd
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/NeighboringCellInfoTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.unit_tests;
+
+import android.test.AndroidTestCase;
+import android.telephony.NeighboringCellInfo;
+import android.test. suitebuilder.annotation.SmallTest;
+
+public class NeighboringCellInfoTest extends AndroidTestCase {
+ @SmallTest
+ public void testConstructor() {
+ NeighboringCellInfo empty = new NeighboringCellInfo();
+ assertEquals(NeighboringCellInfo.UNKNOWN_RSSI, empty.getRssi());
+ assertEquals(NeighboringCellInfo.UNKNOWN_CID, empty.getCid());
+
+ int rssi = 31;
+ int cid = 0xffffffff;
+ NeighboringCellInfo max = new NeighboringCellInfo(rssi, cid);
+ assertEquals(rssi, max.getRssi());
+ assertEquals(cid, max.getCid());
+ }
+
+ @SmallTest
+ public void testGetAndSet() {
+ int rssi = 16;
+ int cid = 0x12345678;
+ NeighboringCellInfo nc = new NeighboringCellInfo();
+ nc.setRssi(rssi);
+ nc.setCid(cid);
+ assertEquals(rssi, nc.getRssi());
+ assertEquals(cid, nc.getCid());
+ }
+
+ @SmallTest
+ public void testToString() {
+ NeighboringCellInfo empty = new NeighboringCellInfo();
+ assertEquals("[/ at /]", empty.toString());
+
+ NeighboringCellInfo nc = new NeighboringCellInfo(16, 0x12345678);
+ assertEquals("[12345678 at 16]", nc.toString());
+ }
+}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/SMSTest.java b/tests/AndroidTests/src/com/android/unit_tests/SMSTest.java
index 360352b..9d44fd9 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/SMSTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/SMSTest.java
@@ -69,10 +69,15 @@ public class SMSTest extends AndroidTestCase {
SmsHeader header = sms.getUserDataHeader();
assertNotNull(header);
-
- Iterator<SmsHeader.Element> elements = header.getElements().iterator();
- assertNotNull(elements);
-
+ assertNotNull(header.concatRef);
+ assertEquals(header.concatRef.refNumber, 42);
+ assertEquals(header.concatRef.msgCount, 2);
+ assertEquals(header.concatRef.seqNumber, 1);
+ assertEquals(header.concatRef.isEightBits, true);
+ assertNotNull(header.portAddrs);
+ assertEquals(header.portAddrs.destPort, 2948);
+ assertEquals(header.portAddrs.origPort, 9200);
+ assertEquals(header.portAddrs.areEightBits, false);
pdu = "07914140279510F6440A8111110301003BF56080207130238A3B0B05040B8423F"
+ "000032A0202362E3130322E3137312E3135302F524E453955304A6D7135514141"
@@ -81,9 +86,15 @@ public class SMSTest extends AndroidTestCase {
header = sms.getUserDataHeader();
assertNotNull(header);
-
- elements = header.getElements().iterator();
- assertNotNull(elements);
+ assertNotNull(header.concatRef);
+ assertEquals(header.concatRef.refNumber, 42);
+ assertEquals(header.concatRef.msgCount, 2);
+ assertEquals(header.concatRef.seqNumber, 2);
+ assertEquals(header.concatRef.isEightBits, true);
+ assertNotNull(header.portAddrs);
+ assertEquals(header.portAddrs.destPort, 2948);
+ assertEquals(header.portAddrs.origPort, 9200);
+ assertEquals(header.portAddrs.areEightBits, false);
/*
* UCS-2 encoded SMS
diff --git a/tests/AndroidTests/src/com/android/unit_tests/SearchManagerTest.java b/tests/AndroidTests/src/com/android/unit_tests/SearchManagerTest.java
index f3c1542..c4f1ab6 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/SearchManagerTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/SearchManagerTest.java
@@ -23,7 +23,10 @@ import android.app.ISearchManager;
import android.app.SearchManager;
import android.content.ComponentName;
import android.content.Context;
+import android.os.Bundle;
+import android.os.RemoteException;
import android.os.ServiceManager;
+import android.server.search.SearchableInfo;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
@@ -37,12 +40,11 @@ import android.util.AndroidRuntimeException;
* com.android.unit_tests/android.test.InstrumentationTestRunner
*/
public class SearchManagerTest extends ActivityInstrumentationTestCase2<LocalActivity> {
-
- // If non-zero, enable a set of tests that start and stop the search manager.
- // This is currently disabled because it's causing an unwanted jump from the unit test
- // activity into the contacts activity. We'll put this back after we disable that jump.
- private static final int TEST_SEARCH_START = 0;
-
+
+ private ComponentName SEARCHABLE_ACTIVITY =
+ new ComponentName("com.android.unit_tests",
+ "com.android.unit_tests.SearchableActivity");
+
/*
* Bug list of test ideas.
*
@@ -88,7 +90,30 @@ public class SearchManagerTest extends ActivityInstrumentationTestCase2<LocalAct
super.setUp();
Activity testActivity = getActivity();
- mContext = (Context)testActivity;
+ mContext = testActivity;
+ }
+
+ private ISearchManager getSearchManagerService() {
+ return ISearchManager.Stub.asInterface(
+ ServiceManager.getService(Context.SEARCH_SERVICE));
+ }
+
+ // Checks that the search UI is visible.
+ private void assertSearchVisible() {
+ SearchManager searchManager = (SearchManager)
+ mContext.getSystemService(Context.SEARCH_SERVICE);
+ assertTrue("SearchManager thinks search UI isn't visible when it should be",
+ searchManager.isVisible());
+ }
+
+ // Checks that the search UI is not visible.
+ // This checks both the SearchManager and the SearchManagerService,
+ // since SearchManager keeps a local variable for the visibility.
+ private void assertSearchNotVisible() {
+ SearchManager searchManager = (SearchManager)
+ mContext.getSystemService(Context.SEARCH_SERVICE);
+ assertFalse("SearchManager thinks search UI is visible when it shouldn't be",
+ searchManager.isVisible());
}
/**
@@ -97,29 +122,7 @@ public class SearchManagerTest extends ActivityInstrumentationTestCase2<LocalAct
*/
@MediumTest
public void testSearchManagerInterfaceAvailable() {
- ISearchManager searchManager1 = ISearchManager.Stub.asInterface(
- ServiceManager.getService(Context.SEARCH_SERVICE));
- assertNotNull(searchManager1);
- }
-
- /**
- * The goal of this test is to confirm that we can *only* obtain a search manager
- * interface from an Activity context.
- */
- @MediumTest
- public void testSearchManagerContextRestrictions() {
- SearchManager searchManager1 = (SearchManager)
- mContext.getSystemService(Context.SEARCH_SERVICE);
- assertNotNull(searchManager1);
-
- Context applicationContext = mContext.getApplicationContext();
- // this should fail, because you can't get a SearchManager from a non-Activity context
- try {
- applicationContext.getSystemService(Context.SEARCH_SERVICE);
- assertFalse("Shouldn't retrieve SearchManager from a non-Activity context", true);
- } catch (AndroidRuntimeException e) {
- // happy here - we should catch this.
- }
+ assertNotNull(getSearchManagerService());
}
/**
@@ -135,38 +138,129 @@ public class SearchManagerTest extends ActivityInstrumentationTestCase2<LocalAct
SearchManager searchManager2 = (SearchManager)
mContext.getSystemService(Context.SEARCH_SERVICE);
assertNotNull(searchManager2);
- assertSame( searchManager1, searchManager2 );
+ assertSame(searchManager1, searchManager2 );
}
-
+
+ @MediumTest
+ public void testSearchables() {
+ SearchManager searchManager = (SearchManager)
+ mContext.getSystemService(Context.SEARCH_SERVICE);
+ SearchableInfo si;
+
+ si = searchManager.getSearchableInfo(SEARCHABLE_ACTIVITY, false);
+ assertNotNull(si);
+ assertFalse(searchManager.isDefaultSearchable(si));
+ si = searchManager.getSearchableInfo(SEARCHABLE_ACTIVITY, true);
+ assertNotNull(si);
+ assertTrue(searchManager.isDefaultSearchable(si));
+ si = searchManager.getSearchableInfo(null, true);
+ assertNotNull(si);
+ assertTrue(searchManager.isDefaultSearchable(si));
+ }
+
+ /**
+ * Tests that rapid calls to start-stop-start doesn't cause problems.
+ */
+ @MediumTest
+ public void testSearchManagerFastInvocations() throws Exception {
+ SearchManager searchManager = (SearchManager)
+ mContext.getSystemService(Context.SEARCH_SERVICE);
+ assertNotNull(searchManager);
+ assertSearchNotVisible();
+
+ searchManager.startSearch(null, false, SEARCHABLE_ACTIVITY, null, false);
+ assertSearchVisible();
+ searchManager.stopSearch();
+ searchManager.startSearch(null, false, SEARCHABLE_ACTIVITY, null, false);
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+ }
+
+ /**
+ * Tests that startSearch() is idempotent.
+ */
+ @MediumTest
+ public void testStartSearchIdempotent() throws Exception {
+ SearchManager searchManager = (SearchManager)
+ mContext.getSystemService(Context.SEARCH_SERVICE);
+ assertNotNull(searchManager);
+ assertSearchNotVisible();
+
+ searchManager.startSearch(null, false, SEARCHABLE_ACTIVITY, null, false);
+ searchManager.startSearch(null, false, SEARCHABLE_ACTIVITY, null, false);
+ assertSearchVisible();
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+ }
+
+ /**
+ * Tests that stopSearch() is idempotent and can be called when the search UI is not visible.
+ */
+ @MediumTest
+ public void testStopSearchIdempotent() throws Exception {
+ SearchManager searchManager = (SearchManager)
+ mContext.getSystemService(Context.SEARCH_SERVICE);
+ assertNotNull(searchManager);
+ assertSearchNotVisible();
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+
+ searchManager.startSearch(null, false, SEARCHABLE_ACTIVITY, null, false);
+ assertSearchVisible();
+ searchManager.stopSearch();
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+ }
+
/**
* The goal of this test is to confirm that we can start and then
* stop a simple search.
*/
-
- @MediumTest
- public void testSearchManagerInvocations() {
+ @MediumTest
+ public void testSearchManagerInvocations() throws Exception {
SearchManager searchManager = (SearchManager)
mContext.getSystemService(Context.SEARCH_SERVICE);
assertNotNull(searchManager);
-
- // TODO: make a real component name, or remove this need
- final ComponentName cn = new ComponentName("", "");
-
- if (TEST_SEARCH_START != 0) {
- // These tests should simply run to completion w/o exceptions
- searchManager.startSearch(null, false, cn, null, false);
- searchManager.stopSearch();
-
- searchManager.startSearch("", false, cn, null, false);
- searchManager.stopSearch();
-
- searchManager.startSearch("test search string", false, cn, null, false);
- searchManager.stopSearch();
-
- searchManager.startSearch("test search string", true, cn, null, false);
- searchManager.stopSearch();
- }
- }
+ assertSearchNotVisible();
-}
+ // These tests should simply run to completion w/o exceptions
+ searchManager.startSearch(null, false, SEARCHABLE_ACTIVITY, null, false);
+ assertSearchVisible();
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+
+ searchManager.startSearch("", false, SEARCHABLE_ACTIVITY, null, false);
+ assertSearchVisible();
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+
+ searchManager.startSearch("test search string", false, SEARCHABLE_ACTIVITY, null, false);
+ assertSearchVisible();
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+ searchManager.startSearch("test search string", true, SEARCHABLE_ACTIVITY, null, false);
+ assertSearchVisible();
+ searchManager.stopSearch();
+ assertSearchNotVisible();
+ }
+
+ @MediumTest
+ public void testSearchDialogState() throws Exception {
+ SearchManager searchManager = (SearchManager)
+ mContext.getSystemService(Context.SEARCH_SERVICE);
+ assertNotNull(searchManager);
+
+ Bundle searchState;
+
+ // search dialog not visible, so no state should be stored
+ searchState = searchManager.saveSearchDialog();
+ assertNull(searchState);
+
+ searchManager.startSearch("test search string", true, SEARCHABLE_ACTIVITY, null, false);
+ searchState = searchManager.saveSearchDialog();
+ assertNotNull(searchState);
+ searchManager.stopSearch();
+ }
+
+}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/SearchableActivity.java b/tests/AndroidTests/src/com/android/unit_tests/SearchableActivity.java
new file mode 100644
index 0000000..53f40e9
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/SearchableActivity.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.unit_tests;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class SearchableActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ finish();
+ }
+
+}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/SearchablesTest.java b/tests/AndroidTests/src/com/android/unit_tests/SearchablesTest.java
index bdf67ba..ecc8dfe 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/SearchablesTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/SearchablesTest.java
@@ -20,6 +20,7 @@ import android.app.SearchManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
@@ -71,19 +72,19 @@ public class SearchablesTest extends AndroidTestCase {
* TODO: The metadata source needs to be mocked out because adding
* searchability metadata via this test is causing it to leak into the
* real system. So for now I'm just going to test for existence of the
- * GoogleSearch app (which is searchable).
+ * GlobalSearch app (which is searchable).
*/
- public void testSearchableGoogleSearch() {
+ public void testSearchableGlobalSearch() {
// test basic array & hashmap
Searchables searchables = new Searchables(mContext);
searchables.buildSearchableList();
// test linkage from another activity
// TODO inject this via mocking into the package manager.
- // TODO for now, just check for searchable GoogleSearch app (this isn't really a unit test)
+ // TODO for now, just check for searchable GlobalSearch app (this isn't really a unit test)
ComponentName thisActivity = new ComponentName(
- "com.android.googlesearch",
- "com.android.googlesearch.GoogleSearch");
+ "com.android.globalsearch",
+ "com.android.globalsearch.GlobalSearch");
SearchableInfo si = searchables.getSearchableInfo(thisActivity);
assertNotNull(si);
@@ -92,7 +93,7 @@ public class SearchablesTest extends AndroidTestCase {
Context appContext = si.getActivityContext(mContext);
assertNotNull(appContext);
MoreAsserts.assertNotEqual(appContext, mContext);
- assertEquals("Google Search", appContext.getString(si.getHintId()));
+ assertEquals("Android Search", appContext.getString(si.getHintId()));
assertEquals("Google", appContext.getString(si.getLabelId()));
}
@@ -306,6 +307,14 @@ public class SearchablesTest extends AndroidTestCase {
throws PackageManager.NameNotFoundException {
return mRealContext.createPackageContext(packageName, flags);
}
+
+ /**
+ * Message broadcast. Pass through for now.
+ */
+ @Override
+ public void sendBroadcast(Intent intent) {
+ mRealContext.sendBroadcast(intent);
+ }
}
/**
@@ -361,7 +370,8 @@ public class SearchablesTest extends AndroidTestCase {
@Override
public List<ResolveInfo> queryIntentActivities(Intent intent, int flags) {
assertNotNull(intent);
- assertEquals(intent.getAction(), Intent.ACTION_SEARCH);
+ assertTrue(intent.getAction().equals(Intent.ACTION_SEARCH)
+ || intent.getAction().equals(Intent.ACTION_WEB_SEARCH));
switch (mSearchablesMode) {
case SEARCHABLES_PASSTHROUGH:
return mRealPackageManager.queryIntentActivities(intent, flags);
@@ -375,7 +385,8 @@ public class SearchablesTest extends AndroidTestCase {
@Override
public ResolveInfo resolveActivity(Intent intent, int flags) {
assertNotNull(intent);
- assertEquals(intent.getAction(), SearchManager.INTENT_ACTION_GLOBAL_SEARCH);
+ assertTrue(intent.getAction().equals(Intent.ACTION_WEB_SEARCH)
+ || intent.getAction().equals(SearchManager.INTENT_ACTION_GLOBAL_SEARCH));
switch (mSearchablesMode) {
case SEARCHABLES_PASSTHROUGH:
return mRealPackageManager.resolveActivity(intent, flags);
@@ -438,6 +449,29 @@ public class SearchablesTest extends AndroidTestCase {
throw new UnsupportedOperationException();
}
}
+
+ /**
+ * Get the activity information for a particular activity.
+ *
+ * @param name The name of the activity to find.
+ * @param flags Additional option flags.
+ *
+ * @return ActivityInfo Information about the activity, if found, else null.
+ */
+ @Override
+ public ActivityInfo getActivityInfo(ComponentName name, int flags)
+ throws NameNotFoundException {
+ assertNotNull(name);
+ MoreAsserts.assertNotEqual(name, "");
+ switch (mSearchablesMode) {
+ case SEARCHABLES_PASSTHROUGH:
+ return mRealPackageManager.getActivityInfo(name, flags);
+ case SEARCHABLES_MOCK_ZERO:
+ throw new NameNotFoundException();
+ default:
+ throw new UnsupportedOperationException();
+ }
+ }
}
}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/SuggestionProvider.java b/tests/AndroidTests/src/com/android/unit_tests/SuggestionProvider.java
new file mode 100644
index 0000000..bc61e27
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/SuggestionProvider.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.unit_tests;
+
+import android.app.SearchManager;
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.Intent;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+
+/** Simple test provider that runs in the local process.
+ *
+ * Used by {@link SearchManagerTest}.
+ */
+public class SuggestionProvider extends ContentProvider {
+ private static final String TAG = "SuggestionProvider";
+
+ private static final int SEARCH_SUGGESTIONS = 1;
+
+ private static final UriMatcher sURLMatcher = new UriMatcher(
+ UriMatcher.NO_MATCH);
+
+ static {
+ sURLMatcher.addURI("*", SearchManager.SUGGEST_URI_PATH_QUERY,
+ SEARCH_SUGGESTIONS);
+ sURLMatcher.addURI("*", SearchManager.SUGGEST_URI_PATH_QUERY + "/*",
+ SEARCH_SUGGESTIONS);
+ }
+
+ private static final String[] COLUMNS = new String[] {
+ "_id",
+ SearchManager.SUGGEST_COLUMN_TEXT_1,
+ SearchManager.SUGGEST_COLUMN_INTENT_ACTION,
+ SearchManager.SUGGEST_COLUMN_QUERY
+ };
+
+ public SuggestionProvider() {
+ }
+
+ @Override
+ public boolean onCreate() {
+ return true;
+ }
+
+ @Override
+ public Cursor query(Uri url, String[] projectionIn, String selection,
+ String[] selectionArgs, String sort) {
+ int match = sURLMatcher.match(url);
+ switch (match) {
+ case SEARCH_SUGGESTIONS:
+ String query = url.getLastPathSegment();
+ MatrixCursor cursor = new MatrixCursor(COLUMNS);
+ String[] suffixes = { "", "a", " foo", "XXXXXXXXXXXXXXXXX" };
+ for (String suffix : suffixes) {
+ addRow(cursor, query + suffix);
+ }
+ return cursor;
+ default:
+ throw new IllegalArgumentException("Unknown URL: " + url);
+ }
+ }
+
+ private void addRow(MatrixCursor cursor, String string) {
+ long id = cursor.getCount();
+ cursor.newRow().add(id).add(string).add(Intent.ACTION_SEARCH).add(string);
+ }
+
+ @Override
+ public String getType(Uri url) {
+ int match = sURLMatcher.match(url);
+ switch (match) {
+ case SEARCH_SUGGESTIONS:
+ return SearchManager.SUGGEST_MIME_TYPE;
+ default:
+ throw new IllegalArgumentException("Unknown URL: " + url);
+ }
+ }
+
+ @Override
+ public int update(Uri url, ContentValues values, String where, String[] whereArgs) {
+ throw new UnsupportedOperationException("update not supported");
+ }
+
+ @Override
+ public Uri insert(Uri url, ContentValues initialValues) {
+ throw new UnsupportedOperationException("insert not supported");
+ }
+
+ @Override
+ public int delete(Uri url, String where, String[] whereArgs) {
+ throw new UnsupportedOperationException("delete not supported");
+ }
+}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/TextUtilsTest.java b/tests/AndroidTests/src/com/android/unit_tests/TextUtilsTest.java
index 51e841c..7720041 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/TextUtilsTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/TextUtilsTest.java
@@ -276,6 +276,7 @@ public class TextUtilsTest extends TestCase {
Spannable s3 = new SpannableString(s1);
s3.setSpan(new StyleSpan(0), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TextPaint p = new TextPaint();
+ p.setFlags(p.getFlags() & ~p.DEV_KERN_TEXT_FLAG);
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 3; j++) {
diff --git a/tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProvider.java b/tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProvider.java
new file mode 100644
index 0000000..b31ce18
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProvider.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.unit_tests.content;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.UriMatcher;
+import android.content.res.AssetFileDescriptor;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.net.Uri;
+import android.os.MemoryFile;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/** Simple test provider that runs in the local process. */
+public class MemoryFileProvider extends ContentProvider {
+ private static final String TAG = "MemoryFileProvider";
+
+ private static final String DATA_FILE = "data.bin";
+
+ // some random data
+ public static final byte[] TEST_BLOB = new byte[] {
+ -12, 127, 0, 3, 1, 2, 3, 4, 5, 6, 1, -128, -1, -54, -65, 35,
+ -53, -96, -74, -74, -55, -43, -69, 3, 52, -58,
+ -121, 127, 87, -73, 16, -13, -103, -65, -128, -36,
+ 107, 24, 118, -17, 97, 97, -88, 19, -94, -54,
+ 53, 43, 44, -27, -124, 28, -74, 26, 35, -36,
+ 16, -124, -31, -31, -128, -79, 108, 116, 43, -17 };
+
+ private SQLiteOpenHelper mOpenHelper;
+
+ private static final int DATA_ID_BLOB = 1;
+ private static final int HUGE = 2;
+ private static final int FILE = 3;
+
+ private static final UriMatcher sURLMatcher = new UriMatcher(
+ UriMatcher.NO_MATCH);
+
+ static {
+ sURLMatcher.addURI("*", "data/#/blob", DATA_ID_BLOB);
+ sURLMatcher.addURI("*", "huge", HUGE);
+ sURLMatcher.addURI("*", "file", FILE);
+ }
+
+ private static class DatabaseHelper extends SQLiteOpenHelper {
+ private static final String DATABASE_NAME = "local.db";
+ private static final int DATABASE_VERSION = 1;
+
+ public DatabaseHelper(Context context) {
+ super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ db.execSQL("CREATE TABLE data (" +
+ "_id INTEGER PRIMARY KEY," +
+ "_blob TEXT, " +
+ "integer INTEGER);");
+
+ // insert alarms
+ ContentValues values = new ContentValues();
+ values.put("_id", 1);
+ values.put("_blob", TEST_BLOB);
+ values.put("integer", 100);
+ db.insert("data", null, values);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
+ Log.w(TAG, "Upgrading test database from version " +
+ oldVersion + " to " + currentVersion +
+ ", which will destroy all old data");
+ db.execSQL("DROP TABLE IF EXISTS data");
+ onCreate(db);
+ }
+ }
+
+
+ public MemoryFileProvider() {
+ }
+
+ @Override
+ public boolean onCreate() {
+ mOpenHelper = new DatabaseHelper(getContext());
+ try {
+ OutputStream out = getContext().openFileOutput(DATA_FILE, Context.MODE_PRIVATE);
+ out.write(TEST_BLOB);
+ out.close();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ return true;
+ }
+
+ @Override
+ public Cursor query(Uri url, String[] projectionIn, String selection,
+ String[] selectionArgs, String sort) {
+ throw new UnsupportedOperationException("query not supported");
+ }
+
+ @Override
+ public String getType(Uri url) {
+ int match = sURLMatcher.match(url);
+ switch (match) {
+ case DATA_ID_BLOB:
+ return "application/octet-stream";
+ case FILE:
+ return "application/octet-stream";
+ default:
+ throw new IllegalArgumentException("Unknown URL");
+ }
+ }
+
+ @Override
+ public AssetFileDescriptor openAssetFile(Uri url, String mode) throws FileNotFoundException {
+ int match = sURLMatcher.match(url);
+ switch (match) {
+ case DATA_ID_BLOB:
+ String sql = "SELECT _blob FROM data WHERE _id=" + url.getPathSegments().get(1);
+ return getBlobColumnAsAssetFile(url, mode, sql);
+ case HUGE:
+ try {
+ MemoryFile memoryFile = new MemoryFile(null, 5000000);
+ memoryFile.writeBytes(TEST_BLOB, 0, 1000000, TEST_BLOB.length);
+ memoryFile.deactivate();
+ return AssetFileDescriptor.fromMemoryFile(memoryFile);
+ } catch (IOException ex) {
+ throw new FileNotFoundException("Error reading " + url + ":" + ex.toString());
+ }
+ case FILE:
+ File file = getContext().getFileStreamPath(DATA_FILE);
+ ParcelFileDescriptor fd =
+ ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
+ return new AssetFileDescriptor(fd, 0, AssetFileDescriptor.UNKNOWN_LENGTH);
+ default:
+ throw new FileNotFoundException("No files supported by provider at " + url);
+ }
+ }
+
+ private AssetFileDescriptor getBlobColumnAsAssetFile(Uri url, String mode, String sql)
+ throws FileNotFoundException {
+ if (!"r".equals(mode)) {
+ throw new FileNotFoundException("Mode " + mode + " not supported for " + url);
+ }
+ try {
+ SQLiteDatabase db = mOpenHelper.getReadableDatabase();
+ MemoryFile file = simpleQueryForBlobMemoryFile(db, sql);
+ if (file == null) throw new FileNotFoundException("No such entry: " + url);
+ AssetFileDescriptor afd = AssetFileDescriptor.fromMemoryFile(file);
+ file.deactivate();
+ // need to dup and then close? openFileHelper() doesn't do that though
+ return afd;
+ } catch (IOException ex) {
+ throw new FileNotFoundException("Error reading " + url + ":" + ex.toString());
+ }
+ }
+
+ private MemoryFile simpleQueryForBlobMemoryFile(SQLiteDatabase db, String sql) throws IOException {
+ Cursor cursor = db.rawQuery(sql, null);
+ try {
+ if (!cursor.moveToFirst()) {
+ return null;
+ }
+ byte[] bytes = cursor.getBlob(0);
+ MemoryFile file = new MemoryFile(null, bytes.length);
+ file.writeBytes(bytes, 0, 0, bytes.length);
+ return file;
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ }
+
+ @Override
+ public int update(Uri url, ContentValues values, String where, String[] whereArgs) {
+ throw new UnsupportedOperationException("update not supported");
+ }
+
+ @Override
+ public Uri insert(Uri url, ContentValues initialValues) {
+ throw new UnsupportedOperationException("insert not supported");
+ }
+
+ @Override
+ public int delete(Uri url, String where, String[] whereArgs) {
+ throw new UnsupportedOperationException("delete not supported");
+ }
+}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProviderTest.java b/tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProviderTest.java
new file mode 100644
index 0000000..f88a9da
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/content/MemoryFileProviderTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.unit_tests.content;
+
+import android.content.ContentResolver;
+import android.net.Uri;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import java.io.InputStream;
+import java.util.Arrays;
+
+/**
+ * Tests reading a MemoryFile-based AssestFile from a ContentProvider running
+ * in a different process.
+ */
+public class MemoryFileProviderTest extends AndroidTestCase {
+
+ // reads from a cross-process AssetFileDescriptor for a MemoryFile
+ @MediumTest
+ public void testRead() throws Exception {
+ ContentResolver resolver = getContext().getContentResolver();
+ Uri uri = Uri.parse("content://com.android.unit_tests.content.MemoryFileProvider/data/1/blob");
+ byte[] buf = new byte[MemoryFileProvider.TEST_BLOB.length];
+ InputStream in = resolver.openInputStream(uri);
+ assertNotNull(in);
+ int count = in.read(buf);
+ assertEquals(buf.length, count);
+ assertEquals(-1, in.read());
+ in.close();
+ assertTrue(Arrays.equals(MemoryFileProvider.TEST_BLOB, buf));
+ }
+
+ // tests that we don't leak file descriptors or virtual address space
+ @MediumTest
+ public void testClose() throws Exception {
+ ContentResolver resolver = getContext().getContentResolver();
+ // open enough file descriptors that we will crash something if we leak FDs
+ // or address space
+ for (int i = 0; i < 1025; i++) {
+ Uri uri = Uri.parse("content://com.android.unit_tests.content.MemoryFileProvider/huge");
+ InputStream in = resolver.openInputStream(uri);
+ assertNotNull("Failed to open stream number " + i, in);
+ assertEquals(1000000, in.skip(1000000));
+ byte[] buf = new byte[MemoryFileProvider.TEST_BLOB.length];
+ int count = in.read(buf);
+ assertEquals(buf.length, count);
+ assertTrue(Arrays.equals(MemoryFileProvider.TEST_BLOB, buf));
+ in.close();
+ }
+ }
+
+ // tests that we haven't broken AssestFileDescriptors for normal files.
+ @MediumTest
+ public void testFile() throws Exception {
+ ContentResolver resolver = getContext().getContentResolver();
+ Uri uri = Uri.parse("content://com.android.unit_tests.content.MemoryFileProvider/file");
+ byte[] buf = new byte[MemoryFileProvider.TEST_BLOB.length];
+ InputStream in = resolver.openInputStream(uri);
+ assertNotNull(in);
+ int count = in.read(buf);
+ assertEquals(buf.length, count);
+ assertEquals(-1, in.read());
+ in.close();
+ assertTrue(Arrays.equals(MemoryFileProvider.TEST_BLOB, buf));
+ }
+
+}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/os/MemoryFileTest.java b/tests/AndroidTests/src/com/android/unit_tests/os/MemoryFileTest.java
index 508afcf..18b3d63 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/os/MemoryFileTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/os/MemoryFileTest.java
@@ -17,18 +17,21 @@
package com.android.unit_tests.os;
import android.os.MemoryFile;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
-import junit.framework.TestCase;
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.IOException;
-
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
-public class MemoryFileTest extends TestCase {
+public class MemoryFileTest extends AndroidTestCase {
private void compareBuffers(byte[] buffer1, byte[] buffer2, int length) throws Exception {
for (int i = 0; i < length; i++) {
@@ -94,6 +97,187 @@ public class MemoryFileTest extends TestCase {
file.close();
}
+ // Tests for the IndexOutOfBoundsException cases in read().
+
+ private void readIndexOutOfBoundsException(int offset, int count, String msg)
+ throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", testString.length);
+ try {
+ file.writeBytes(testString, 0, 0, testString.length);
+ InputStream is = file.getInputStream();
+ byte[] buffer = new byte[testString.length + 10];
+ try {
+ is.read(buffer, offset, count);
+ fail(msg);
+ } catch (IndexOutOfBoundsException ex) {
+ // this is what should happen
+ } finally {
+ is.close();
+ }
+ } finally {
+ file.close();
+ }
+ }
+
+ @SmallTest
+ public void testReadNegativeOffset() throws Exception {
+ readIndexOutOfBoundsException(-1, 5,
+ "read() with negative offset should throw IndexOutOfBoundsException");
+ }
+
+ @SmallTest
+ public void testReadNegativeCount() throws Exception {
+ readIndexOutOfBoundsException(5, -1,
+ "read() with negative length should throw IndexOutOfBoundsException");
+ }
+
+ @SmallTest
+ public void testReadOffsetOverflow() throws Exception {
+ readIndexOutOfBoundsException(testString.length + 10, 5,
+ "read() with offset outside buffer should throw IndexOutOfBoundsException");
+ }
+
+ @SmallTest
+ public void testReadOffsetCountOverflow() throws Exception {
+ readIndexOutOfBoundsException(testString.length, 11,
+ "read() with offset + count outside buffer should throw IndexOutOfBoundsException");
+ }
+
+ // Test behavior of read() at end of file
+ @SmallTest
+ public void testReadEOF() throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", testString.length);
+ try {
+ file.writeBytes(testString, 0, 0, testString.length);
+ InputStream is = file.getInputStream();
+ try {
+ byte[] buffer = new byte[testString.length + 10];
+ // read() with count larger than data should succeed, and return # of bytes read
+ assertEquals(testString.length, is.read(buffer));
+ compareBuffers(testString, buffer, testString.length);
+ // Read at EOF should return -1
+ assertEquals(-1, is.read());
+ } finally {
+ is.close();
+ }
+ } finally {
+ file.close();
+ }
+ }
+
+ // Tests that close() is idempotent
+ @SmallTest
+ public void testCloseClose() throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", 1000000);
+ byte[] data = new byte[512];
+ file.writeBytes(data, 0, 0, 128);
+ file.close();
+ file.close();
+ }
+
+ // Tests that we can't read from a closed memory file
+ @SmallTest
+ public void testCloseRead() throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", 1000000);
+ file.close();
+
+ try {
+ byte[] data = new byte[512];
+ assertEquals(128, file.readBytes(data, 0, 0, 128));
+ fail("readBytes() after close() did not throw IOException.");
+ } catch (IOException e) {
+ // this is what should happen
+ }
+ }
+
+ // Tests that we can't write to a closed memory file
+ @SmallTest
+ public void testCloseWrite() throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", 1000000);
+ file.close();
+
+ try {
+ byte[] data = new byte[512];
+ file.writeBytes(data, 0, 0, 128);
+ fail("writeBytes() after close() did not throw IOException.");
+ } catch (IOException e) {
+ // this is what should happen
+ }
+ }
+
+ // Tests that we can't call allowPurging() after close()
+ @SmallTest
+ public void testCloseAllowPurging() throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", 1000000);
+ byte[] data = new byte[512];
+ file.writeBytes(data, 0, 0, 128);
+ file.close();
+
+ try {
+ file.allowPurging(true);
+ fail("allowPurging() after close() did not throw IOException.");
+ } catch (IOException e) {
+ // this is what should happen
+ }
+ }
+
+ // Tests that we don't leak file descriptors or mmap areas
+ @LargeTest
+ public void testCloseLeak() throws Exception {
+ // open enough memory files that we should run out of
+ // file descriptors or address space if we leak either.
+ for (int i = 0; i < 1025; i++) {
+ MemoryFile file = new MemoryFile("MemoryFileTest", 5000000);
+ file.writeBytes(testString, 0, 0, testString.length);
+ file.close();
+ }
+ }
+
+ @SmallTest
+ public void testIsMemoryFile() throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", 1000000);
+ FileDescriptor fd = file.getFileDescriptor();
+ assertNotNull(fd);
+ assertTrue(fd.valid());
+ assertTrue(MemoryFile.isMemoryFile(fd));
+ file.close();
+
+ assertFalse(MemoryFile.isMemoryFile(FileDescriptor.in));
+ assertFalse(MemoryFile.isMemoryFile(FileDescriptor.out));
+ assertFalse(MemoryFile.isMemoryFile(FileDescriptor.err));
+
+ File tempFile = File.createTempFile("MemoryFileTest",".tmp", getContext().getFilesDir());
+ assertNotNull(file);
+ FileOutputStream out = null;
+ try {
+ out = new FileOutputStream(tempFile);
+ FileDescriptor fileFd = out.getFD();
+ assertNotNull(fileFd);
+ assertFalse(MemoryFile.isMemoryFile(fileFd));
+ } finally {
+ if (out != null) {
+ out.close();
+ }
+ tempFile.delete();
+ }
+ }
+
+ @SmallTest
+ public void testFileDescriptor() throws Exception {
+ MemoryFile file = new MemoryFile("MemoryFileTest", 1000000);
+ MemoryFile ref = new MemoryFile(file.getFileDescriptor(), file.length(), "r");
+ byte[] buffer;
+
+ // write to original, read from reference
+ file.writeBytes(testString, 0, 2000, testString.length);
+ buffer = new byte[testString.length];
+ ref.readBytes(buffer, 2000, 0, testString.length);
+ compareBuffers(testString, buffer, testString.length);
+
+ file.close();
+ ref.close(); // Doesn't actually do anything, since the file descriptor is not dup(2):ed
+ }
+
private static final byte[] testString = new byte[] {
3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3, 3, 8, 3, 2, 7, 9, 5, 0, 2, 8, 8, 4, 1, 9, 7, 1, 6, 9, 3, 9, 9, 3, 7, 5, 1, 0, 5, 8, 2, 0, 9, 7, 4, 9, 4, 4, 5, 9, 2, 3, 0, 7, 8, 1, 6, 4,
0, 6, 2, 8, 6, 2, 0, 8, 9, 9, 8, 6, 2, 8, 0, 3, 4, 8, 2, 5, 3, 4, 2, 1, 1, 7, 0, 6, 7, 9, 8, 2, 1, 4, 8, 0, 8, 6, 5, 1, 3, 2, 8, 2, 3, 0, 6, 6, 4, 7, 0, 9, 3, 8, 4, 4, 6, 0, 9, 5, 5, 0, 5, 8, 2, 2, 3, 1, 7, 2,
diff --git a/tests/CoreTests/android/location/LocationManagerProximityTest.java b/tests/CoreTests/android/location/LocationManagerProximityTest.java
index 3f43bcf..e82d878 100644
--- a/tests/CoreTests/android/location/LocationManagerProximityTest.java
+++ b/tests/CoreTests/android/location/LocationManagerProximityTest.java
@@ -26,6 +26,7 @@ import android.location.LocationManager;
import android.provider.Settings;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.MediumTest;
+import android.test.suitebuilder.annotation.Suppress;
import android.util.Log;
/**
@@ -37,9 +38,11 @@ import android.util.Log;
* adb shell am instrument -e class android.location.LocationManagerProximityTest \
* -w android.core/android.test.InstrumentationTestRunner
*
- * This test requires that the "Allow mock locations" setting be enabled
+ * This test requires that the "Allow mock locations" setting be enabled.
+ * To ensure reliable results, all location providers should be disabled.
*
*/
+@Suppress
@MediumTest
public class LocationManagerProximityTest extends AndroidTestCase {
diff --git a/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java b/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java
index 5df8991..3a9c511 100644
--- a/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java
+++ b/tests/CoreTests/com/android/internal/telephony/GsmAlphabetTest.java
@@ -28,18 +28,20 @@ public class GsmAlphabetTest extends TestCase {
@SmallTest
public void test7bitWithHeader() throws Exception {
- byte[] data = new byte[3];
- data[0] = (byte) 1;
- data[1] = (byte) 2;
- data[2] = (byte) 2;
+ SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
+ concatRef.refNumber = 1;
+ concatRef.seqNumber = 2;
+ concatRef.msgCount = 2;
+ concatRef.isEightBits = true;
SmsHeader header = new SmsHeader();
- header.add(new SmsHeader.Element(SmsHeader.CONCATENATED_8_BIT_REFERENCE, data));
+ header.concatRef = concatRef;
- String message = "aaaaaaaaaabbbbbbbbbbcccccccccc";
- byte[] userData = GsmAlphabet.stringToGsm7BitPackedWithHeader(message, header.toByteArray());
+ String message = "aaaaaaaaaabbbbbbbbbbcccccccccc";
+ byte[] userData = GsmAlphabet.stringToGsm7BitPackedWithHeader(message,
+ SmsHeader.toByteArray(header));
int septetCount = GsmAlphabet.countGsmSeptets(message, false);
String parsedMessage = GsmAlphabet.gsm7BitPackedToString(
- userData, header.toByteArray().length+1, septetCount, 1);
+ userData, SmsHeader.toByteArray(header).length+2, septetCount, 1);
assertEquals(message, parsedMessage);
}
@@ -306,4 +308,3 @@ public class GsmAlphabetTest extends TestCase {
GsmAlphabet.gsm8BitUnpackedToString(unpacked, 1, unpacked.length - 1));
}
}
-
diff --git a/tests/CoreTests/com/android/internal/telephony/PhoneNumberUtilsTest.java b/tests/CoreTests/com/android/internal/telephony/PhoneNumberUtilsTest.java
index e8bd239..577d384 100644
--- a/tests/CoreTests/com/android/internal/telephony/PhoneNumberUtilsTest.java
+++ b/tests/CoreTests/com/android/internal/telephony/PhoneNumberUtilsTest.java
@@ -93,6 +93,13 @@ public class PhoneNumberUtilsTest extends TestCase {
assertEquals(b[i], bRet[i]);
}
+ bRet = PhoneNumberUtils.networkPortionToCalledPartyBCDWithLength("+17005550020");
+ assertEquals(8, bRet.length);
+ assertEquals(bRet[0], 7);
+ for (int i = 1; i < 8; i++) {
+ assertEquals(b[i - 1], bRet[i]);
+ }
+
bRet = PhoneNumberUtils.networkPortionToCalledPartyBCD("7005550020");
assertEquals("7005550020",
PhoneNumberUtils.calledPartyBCDToString(bRet, 0, bRet.length));
diff --git a/tests/CoreTests/com/android/internal/telephony/SMSDispatcherTest.java b/tests/CoreTests/com/android/internal/telephony/SMSDispatcherTest.java
index 5d5d1f9..8a66614 100644
--- a/tests/CoreTests/com/android/internal/telephony/SMSDispatcherTest.java
+++ b/tests/CoreTests/com/android/internal/telephony/SMSDispatcherTest.java
@@ -34,35 +34,38 @@ public class SMSDispatcherTest extends AndroidTestCase {
public void testCMT1() throws Exception {
SmsMessage sms;
SmsHeader header;
- Iterator<SmsHeader.Element> elements;
String[] lines = new String[2];
-
- lines[0] = "+CMT: ,158";
+
+ lines[0] = "+CMT: ,158";
lines[1] = "07914140279510F6440A8111110301003BF56080426101748A8C0B05040B"
+ "8423F000035502010106276170706C69636174696F6E2F766E642E776170"
+ "2E6D6D732D6D65737361676500AF848D0185B4848C8298524F347839776F"
+ "7547514D4141424C3641414141536741415A4B554141414141008D908918"
+ "802B31363530323438363137392F545950453D504C4D4E008A808E028000"
+ "88058103093A8083687474703A2F2F36";
-
+
sms = SmsMessage.newFromCMT(lines);
header = sms.getUserDataHeader();
assertNotNull(header);
assertNotNull(sms.getUserData());
-
- elements = header.getElements().iterator();
- assertNotNull(elements);
+ assertNotNull(header.concatRef);
+ assertEquals(header.concatRef.refNumber, 85);
+ assertEquals(header.concatRef.msgCount, 2);
+ assertEquals(header.concatRef.seqNumber, 1);
+ assertEquals(header.concatRef.isEightBits, true);
+ assertNotNull(header.portAddrs);
+ assertEquals(header.portAddrs.destPort, 2948);
+ assertEquals(header.portAddrs.origPort, 9200);
+ assertEquals(header.portAddrs.areEightBits, false);
}
-
+
@MediumTest
public void testCMT2() throws Exception {
SmsMessage sms;
SmsHeader header;
- Iterator<SmsHeader.Element> elements;
String[] lines = new String[2];
-
lines[0] = "+CMT: ,77";
lines[1] = "07914140279510F6440A8111110301003BF56080426101848A3B0B05040B8423F"
@@ -71,12 +74,17 @@ public class SMSDispatcherTest extends AndroidTestCase {
sms = SmsMessage.newFromCMT(lines);
header = sms.getUserDataHeader();
- System.out.println("header = " + header);
assertNotNull(header);
assertNotNull(sms.getUserData());
-
- elements = header.getElements().iterator();
- assertNotNull(elements);
+ assertNotNull(header.concatRef);
+ assertEquals(header.concatRef.refNumber, 85);
+ assertEquals(header.concatRef.msgCount, 2);
+ assertEquals(header.concatRef.seqNumber, 2);
+ assertEquals(header.concatRef.isEightBits, true);
+ assertNotNull(header.portAddrs);
+ assertEquals(header.portAddrs.destPort, 2948);
+ assertEquals(header.portAddrs.origPort, 9200);
+ assertEquals(header.portAddrs.areEightBits, false);
}
@MediumTest
diff --git a/tests/DpiTest/AndroidManifest.xml b/tests/DpiTest/AndroidManifest.xml
index f71cff2..64ad7be 100644
--- a/tests/DpiTest/AndroidManifest.xml
+++ b/tests/DpiTest/AndroidManifest.xml
@@ -16,6 +16,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.test.dpi">
+ <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="3" />
+ <supports-screens android:smallScreens="true" />
<application android:label="DpiTest">
<activity android:name="DpiTestActivity" android:label="DpiTest">
<intent-filter>
diff --git a/tests/DpiTest/res/values-largeScreen/strings.xml b/tests/DpiTest/res/values-largeScreen/strings.xml
new file mode 100644
index 0000000..f4dd543
--- /dev/null
+++ b/tests/DpiTest/res/values-largeScreen/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <string name="act_title">DpiTest: Large Screen</string>
+</resources>
diff --git a/tests/DpiTest/res/values-normalScreen/strings.xml b/tests/DpiTest/res/values-normalScreen/strings.xml
new file mode 100644
index 0000000..256d696
--- /dev/null
+++ b/tests/DpiTest/res/values-normalScreen/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <string name="act_title">DpiTest: Normal Screen</string>
+</resources>
diff --git a/tests/DpiTest/res/values-smallScreen/strings.xml b/tests/DpiTest/res/values-smallScreen/strings.xml
new file mode 100644
index 0000000..cdb4ac9
--- /dev/null
+++ b/tests/DpiTest/res/values-smallScreen/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <string name="act_title">DpiTest: Small Screen</string>
+</resources>
diff --git a/tests/DpiTest/res/values/strings.xml b/tests/DpiTest/res/values/strings.xml
new file mode 100644
index 0000000..ef924ac
--- /dev/null
+++ b/tests/DpiTest/res/values/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <string name="act_title">DpiTest: Unknown Screen</string>
+</resources>
diff --git a/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java b/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
index 3759622..5a9f3f5 100644
--- a/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
+++ b/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
@@ -34,6 +34,7 @@ public class DpiTestActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ this.setTitle(R.string.act_title);
LinearLayout root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);
diff --git a/tests/DumpRenderTree/AndroidManifest.xml b/tests/DumpRenderTree/AndroidManifest.xml
index 0e33d62..efa4113 100644
--- a/tests/DumpRenderTree/AndroidManifest.xml
+++ b/tests/DumpRenderTree/AndroidManifest.xml
@@ -23,13 +23,15 @@
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="TestShellActivity" android:launchMode="singleTop">
- </activity>
+ <activity android:name="TestShellActivity" android:launchMode="singleTop" />
+ <activity android:name="ReliabilityTestActivity" />
</application>
<instrumentation android:name=".LayoutTestsAutoRunner"
android:targetPackage="com.android.dumprendertree"
android:label="Layout test automation runner"
/>
- <uses-permission android:name="android.permission.INTERNET"></uses-permission>
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WRITE_SDCARD" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
diff --git a/tests/DumpRenderTree/assets/results/layout_tests_failed.txt b/tests/DumpRenderTree/assets/results/layout_tests_failed.txt
index 3cec40d..651b324 100644
--- a/tests/DumpRenderTree/assets/results/layout_tests_failed.txt
+++ b/tests/DumpRenderTree/assets/results/layout_tests_failed.txt
@@ -1,280 +1,698 @@
-/sdcard/android/layout_tests/fast/replaced/image-map-bug16782.html : different length
-/sdcard/android/layout_tests/fast/replaced/table-percent-height.html : different length
-/sdcard/android/layout_tests/fast/replaced/image-map.html : different length
-/sdcard/android/layout_tests/fast/dynamic/paused-event-dispatch.html : @offset: 117
-/sdcard/android/layout_tests/fast/text/plain-text-line-breaks.html : different length
-/sdcard/android/layout_tests/fast/text/zero-width-characters.html : different length
-/sdcard/android/layout_tests/fast/text/reset-drag-on-mouse-down.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/encoding/invalid-xml.html : different length
-/sdcard/android/layout_tests/fast/encoding/char-decoding-mac.html : different length
-/sdcard/android/layout_tests/fast/encoding/frame-default-enc.html : @offset: 0
-/sdcard/android/layout_tests/fast/encoding/mailto-always-utf-8.html : different length
-/sdcard/android/layout_tests/fast/encoding/char-decoding.html : different length
-/sdcard/android/layout_tests/fast/encoding/url-host-name-non-ascii.html : different length
-/sdcard/android/layout_tests/fast/encoding/idn-security.html : different length
-/sdcard/android/layout_tests/fast/encoding/percent-escaping.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/encoding/xml-utf-8-default.xml : different length
-/sdcard/android/layout_tests/fast/encoding/char-encoding-mac.html : different length
-/sdcard/android/layout_tests/fast/encoding/charset-koi8-u.html : @offset: 147
-/sdcard/android/layout_tests/fast/encoding/preload-encoding.html : different length
-/sdcard/android/layout_tests/fast/workers/worker-location.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/workers/worker-constructor.html : different length
-/sdcard/android/layout_tests/fast/workers/worker-terminate.html : different length
-/sdcard/android/layout_tests/fast/workers/worker-gc.html : different length
-/sdcard/android/layout_tests/fast/workers/worker-navigator.html : different length
-/sdcard/android/layout_tests/fast/workers/worker-replace-global-constructor.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/workers/worker-replace-self.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/workers/worker-event-listener.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/overflow/scroll-vertical-not-horizontal.html : different length
-/sdcard/android/layout_tests/fast/events/onunload.html : different length
-/sdcard/android/layout_tests/fast/events/mouseup-outside-document.html : different length
-/sdcard/android/layout_tests/fast/events/offsetX-offsetY.html : different length
-/sdcard/android/layout_tests/fast/events/scroll-event-does-not-bubble.html : different length
-/sdcard/android/layout_tests/fast/events/mouseover-mouseout.html : different length
-/sdcard/android/layout_tests/fast/events/option-tab.html : different length
-/sdcard/android/layout_tests/fast/events/popup-blocking-click-in-iframe.html : different length
-/sdcard/android/layout_tests/fast/events/onchange-passwordfield.html : different length
-/sdcard/android/layout_tests/fast/events/drag-in-frames.html : different length
-/sdcard/android/layout_tests/fast/events/frame-tab-focus.html : different length
-/sdcard/android/layout_tests/fast/events/autoscroll-in-textfield.html : different length
-/sdcard/android/layout_tests/fast/events/arrow-navigation.html : different length
-/sdcard/android/layout_tests/fast/events/fire-scroll-event.html : different length
-/sdcard/android/layout_tests/fast/events/mouseclick-target-and-positioning.html : different length
-/sdcard/android/layout_tests/fast/events/keydown-keypress-focus-change.html : @offset: 172
-/sdcard/android/layout_tests/fast/events/input-image-scrolled-x-y.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/events/dblclick-addEventListener.html : different length
-/sdcard/android/layout_tests/fast/events/frame-programmatic-focus.html : different length
-/sdcard/android/layout_tests/fast/events/related-target.html : different length
-/sdcard/android/layout_tests/fast/events/content-changed-during-drop.html : different length
-/sdcard/android/layout_tests/fast/events/onload-fires-twice.html : different length
-/sdcard/android/layout_tests/fast/events/autoscroll-with-non-scrollable-parent.html : different length
-/sdcard/android/layout_tests/fast/events/window-events-capture.html : different length
-/sdcard/android/layout_tests/fast/events/onchange-click-hang.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/events/onload-webkit-before-webcore.html : @offset: 105
-/sdcard/android/layout_tests/fast/events/window-events-bubble2.html : different length
-/sdcard/android/layout_tests/fast/events/js-keyboard-event-creation.html : different length
-/sdcard/android/layout_tests/fast/events/event-view-toString.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/events/onchange-select-popup.html : different length
-/sdcard/android/layout_tests/fast/events/access-key-self-destruct.html : different length
-/sdcard/android/layout_tests/fast/events/scrollbar-double-click.html : different length
-/sdcard/android/layout_tests/fast/events/onunload-clears-onbeforeunload.html : different length
-/sdcard/android/layout_tests/fast/events/tabindex-focus-chain.html : @offset: 0
-/sdcard/android/layout_tests/fast/events/capture-on-target.html : different length
-/sdcard/android/layout_tests/fast/events/window-events-bubble.html : different length
-/sdcard/android/layout_tests/fast/events/mouseup-from-button2.html : different length
-/sdcard/android/layout_tests/fast/events/frame-click-focus.html : different length
-/sdcard/android/layout_tests/fast/events/mouseout-on-window.html : different length
-/sdcard/android/layout_tests/fast/events/keypress-insert-tab.html : @offset: 85
-/sdcard/android/layout_tests/fast/events/mouseout-dead-subframe.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/events/iframe-object-onload.html : different length
-/sdcard/android/layout_tests/fast/events/onunload-not-on-body.html : different length
-/sdcard/android/layout_tests/fast/events/mousemove-after-drag-over-scrollbar.html : different length
-/sdcard/android/layout_tests/fast/events/contextmenu-scrolled-page-with-frame.html : different length
-/sdcard/android/layout_tests/fast/events/key-events-in-input-button.html : different length
-/sdcard/android/layout_tests/fast/events/arrow-keys-on-body.html : different length
-/sdcard/android/layout_tests/fast/events/ondragenter.html : different length
-/sdcard/android/layout_tests/fast/events/scroll-to-anchor-in-overflow-hidden.html : different length
-/sdcard/android/layout_tests/fast/events/autoscroll-nonscrollable-iframe-in-scrollable-div.html : different length
-/sdcard/android/layout_tests/fast/events/keypress-focus-change.html : different length
-/sdcard/android/layout_tests/fast/events/key-events-in-input-text.html : different length
-/sdcard/android/layout_tests/fast/events/drag-outside-window.html : @offset: 20
-/sdcard/android/layout_tests/fast/events/selectstart-during-autoscroll.html : different length
-/sdcard/android/layout_tests/fast/events/click-count.html : different length
-/sdcard/android/layout_tests/fast/events/onchange-searchfield.html : different length
-/sdcard/android/layout_tests/fast/events/special-key-events-in-input-text.html : different length
-/sdcard/android/layout_tests/fast/events/keydown-keypress-preventDefault.html : @offset: 228
-/sdcard/android/layout_tests/fast/events/mouse-click-events.html : different length
-/sdcard/android/layout_tests/fast/events/onsearch-enter.html : different length
-/sdcard/android/layout_tests/fast/events/mouseover-mouseout2.html : different length
-/sdcard/android/layout_tests/fast/events/open-window-from-another-frame.html : different length
-/sdcard/android/layout_tests/fast/events/init-events.html : different length
-/sdcard/android/layout_tests/fast/events/onchange-textfield.html : different length
-/sdcard/android/layout_tests/fast/events/onclick-list-marker.html : different length
-/sdcard/android/layout_tests/fast/events/anchor-image-scrolled-x-y.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/html/tab-order.html : @offset: 246
-/sdcard/android/layout_tests/fast/js/exception-sequencing-binops.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/js/recursion-limit-equal.html : different length
-/sdcard/android/layout_tests/fast/js/exception-sequencing-binops2.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/js/math-transforms.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/js/try-catch-crash.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/js/navigator-mimeTypes-length.html : different length
-/sdcard/android/layout_tests/fast/js/global-constructors.html : different length
-/sdcard/android/layout_tests/fast/js/uncaught-exception-line-number.html : different length
-/sdcard/android/layout_tests/fast/js/exceptions-thrown-in-callbacks.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/js/toString-and-valueOf-override.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/js/exception-sequencing.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/js/exception-codegen-crash.html : different length
-/sdcard/android/layout_tests/fast/dom/HTMLDocument/activeElement.html : different length
-/sdcard/android/layout_tests/fast/dom/HTMLDocument/hasFocus.html : different length
-/sdcard/android/layout_tests/fast/dom/HTMLSelectElement/listbox-select-reset.html : different length
-/sdcard/android/layout_tests/fast/dom/Element/offsetLeft-offsetTop-body-quirk.html : different length
-/sdcard/android/layout_tests/fast/dom/DOMException/XPathException.html : different length
-/sdcard/android/layout_tests/fast/dom/getElementsByClassName/010.xml : different length
-/sdcard/android/layout_tests/fast/dom/getElementsByClassName/011.xml : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-resize-and-move-arguments.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-function-name-getter-precedence.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-xy-properties.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/console-functions.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-screen-properties.html : @offset: 65
-/sdcard/android/layout_tests/fast/dom/Window/window-properties.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/dom/Window/window-onFocus.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/new-window-opener.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/dom/Window/window-open-pending-url.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/setting-properties-on-closed-window.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/dom/Window/dom-access-from-closure-window.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-resize.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-custom-prototype.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/dom-access-from-closure-iframe.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/Plug-ins.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/get-set-properties.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-scroll-arguments.html : different length
-/sdcard/android/layout_tests/fast/dom/Window/window-early-properties.html : different length
-/sdcard/android/layout_tests/fast/dom/StyleSheet/ownerNode-lifetime-2.html : different length
-/sdcard/android/layout_tests/fast/dom/dom-constructors.html : different length
-/sdcard/android/layout_tests/fast/dom/assign-to-window-status.html : different length
-/sdcard/android/layout_tests/fast/dom/gc-8.html : different length
-/sdcard/android/layout_tests/fast/dom/object-embed-plugin-scripting.html : different length
-/sdcard/android/layout_tests/fast/dom/gc-9.html : different length
-/sdcard/android/layout_tests/fast/dom/NamedNodeMap-setNamedItem-crash.html : different length
-/sdcard/android/layout_tests/fast/dom/wrapper-classes.html : different length
-/sdcard/android/layout_tests/fast/dom/select-selectedIndex.html : different length
-/sdcard/android/layout_tests/fast/dom/document-width-height-force-layout.html : @offset: 142
-/sdcard/android/layout_tests/fast/dom/client-width-height.html : @offset: 119
-/sdcard/android/layout_tests/fast/dom/clone-node-form-elements-with-attr.html : different length
-/sdcard/android/layout_tests/fast/dom/dom-add-optionelement.html : different length
-/sdcard/android/layout_tests/fast/dom/location-assign.html : different length
-/sdcard/android/layout_tests/fast/dom/javascript-backslash.html : different length
-/sdcard/android/layout_tests/fast/dom/global-constructors.html : different length
-/sdcard/android/layout_tests/fast/dom/client-width-height-quirks.html : @offset: 115
-/sdcard/android/layout_tests/fast/dom/javascript-url-crash-function.html : different length
-/sdcard/android/layout_tests/fast/dom/location-hash.html : different length
-/sdcard/android/layout_tests/fast/dom/constructors-cached.html : different length
-/sdcard/android/layout_tests/fast/dom/documenturi-can-hold-arbitrary-string.html : different length
-/sdcard/android/layout_tests/fast/dom/documenturi-not-affected-by-base-tag.html : different length
-/sdcard/android/layout_tests/fast/dom/open-and-close-by-DOM.html : different length
-/sdcard/android/layout_tests/fast/dom/document_write_params.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/dom/tabindex-clamp.html : different length
-/sdcard/android/layout_tests/fast/dom/constructors-cached-navigate.html : different length
-/sdcard/android/layout_tests/fast/dom/frame-loading-via-document-write.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/dom/ImageDocument-image-deletion.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-text-plain.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/advanced-get.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-text-plain-latin-1.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-multipart-form-data.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-always-utf-8.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/post-append-query.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items-x-www-form-urlencoded.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-overwrite-query.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-x-www-form-urlencoded.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items-text-plain.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-text-plain.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/post-text-plain-with-accept-charset.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/post-text-plain.html : different length
-/sdcard/android/layout_tests/fast/forms/mailto/advanced-put.html : different length
-/sdcard/android/layout_tests/fast/forms/listbox-typeahead-scroll.html : different length
-/sdcard/android/layout_tests/fast/forms/select-empty-list.html : different length
-/sdcard/android/layout_tests/fast/forms/select-accesskey.html : different length
-/sdcard/android/layout_tests/fast/forms/focus2.html : different length
-/sdcard/android/layout_tests/fast/forms/password-doubleclick-selection.html : different length
-/sdcard/android/layout_tests/fast/forms/textfield-inside-anchor.html : different length
-/sdcard/android/layout_tests/fast/forms/input-maxlength.html : different length
-/sdcard/android/layout_tests/fast/forms/input-text-option-delete.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/forms/selection-functions.html : @offset: 306
-/sdcard/android/layout_tests/fast/forms/textfield-to-password-on-focus.html : different length
-/sdcard/android/layout_tests/fast/forms/focus-selection-textarea.html : different length
-/sdcard/android/layout_tests/fast/forms/enter-clicks-buttons.html : different length
-/sdcard/android/layout_tests/fast/forms/menulist-no-renderer-onmousedown.html : different length
-/sdcard/android/layout_tests/fast/forms/select-display-none-style-resolve.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/forms/radio_checked_name.html : @offset: 303
-/sdcard/android/layout_tests/fast/forms/select-double-onchange.html : different length
-/sdcard/android/layout_tests/fast/forms/button-enter-click.html : different length
-/sdcard/android/layout_tests/fast/forms/11423.html : different length
-/sdcard/android/layout_tests/fast/forms/search-click-in-placeholder.html : @offset: 1
-/sdcard/android/layout_tests/fast/forms/autofocus-opera-003.html : @offset: 51
-/sdcard/android/layout_tests/fast/forms/search-hidden-cancel-button.html : different length
-/sdcard/android/layout_tests/fast/forms/willvalidate-004.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-paste-newline.html : different length
-/sdcard/android/layout_tests/fast/forms/drag-into-textarea.html : different length
-/sdcard/android/layout_tests/fast/forms/onselect-textfield.html : different length
-/sdcard/android/layout_tests/fast/forms/input-implicit-length-limit.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/forms/form-and-frame-interaction-retains-values.html : different length
-/sdcard/android/layout_tests/fast/forms/input-appearance-focus.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/forms/slider-transformed.html : different length
-/sdcard/android/layout_tests/fast/forms/listbox-select-all.html : different length
-/sdcard/android/layout_tests/fast/forms/textfield-onchange-deletion.html : different length
-/sdcard/android/layout_tests/fast/forms/focus-control-to-page.html : different length
-/sdcard/android/layout_tests/fast/forms/select-type-ahead-non-latin.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-no-scroll-on-blur.html : @offset: 79
-/sdcard/android/layout_tests/fast/forms/focus-selection-input.html : different length
-/sdcard/android/layout_tests/fast/forms/listbox-onchange.html : different length
-/sdcard/android/layout_tests/fast/forms/button-spacebar-click.html : different length
-/sdcard/android/layout_tests/fast/forms/search-event-delay.html : different length
-/sdcard/android/layout_tests/fast/forms/search-cancel-button-mouseup.html : different length
-/sdcard/android/layout_tests/fast/forms/select-enter-key.html : different length
-/sdcard/android/layout_tests/fast/forms/drag-out-of-textarea.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-hard-linewrap.html : different length
-/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-keyboard.html : different length
-/sdcard/android/layout_tests/fast/forms/dragging-to-disabled-file-input.html : different length
-/sdcard/android/layout_tests/fast/forms/input-radio-checked-tab.html : @offset: 115
-/sdcard/android/layout_tests/fast/forms/plaintext-mode-1.html : different length
-/sdcard/android/layout_tests/fast/forms/option-in-optgroup-removal.html : different length
-/sdcard/android/layout_tests/fast/forms/search-display-none-cancel-button.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/forms/check-box-enter-key.html : different length
-/sdcard/android/layout_tests/fast/forms/input-select-on-click.html : different length
-/sdcard/android/layout_tests/fast/forms/button-state-restore.html : different length
-/sdcard/android/layout_tests/fast/forms/access-key.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-scrolled-endline-caret.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-type-spaces.html : different length
-/sdcard/android/layout_tests/fast/forms/slider-mouse-events.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-selection-preservation.html : different length
-/sdcard/android/layout_tests/fast/forms/slider-onchange-event.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-appearance-wrap.html : different length
-/sdcard/android/layout_tests/fast/forms/onselect-textarea.html : different length
-/sdcard/android/layout_tests/fast/forms/textarea-initial-caret-position.html : different length
-/sdcard/android/layout_tests/fast/forms/listbox-selection.html : different length
-/sdcard/android/layout_tests/fast/css/variables/color-hex-test.html : different length
-/sdcard/android/layout_tests/fast/css/dashboard-region-parser.html : different length
-/sdcard/android/layout_tests/fast/css/hover-affects-child.html : different length
-/sdcard/android/layout_tests/fast/css/html-attr-case-sensitivity.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/css/computed-style.html : different length
-/sdcard/android/layout_tests/fast/css/getComputedStyle-transform.html : different length
-/sdcard/android/layout_tests/fast/css/computed-style-without-renderer.html : different length
-/sdcard/android/layout_tests/fast/parser/entity-comment-in-iframe.html : @offset: 0
-/sdcard/android/layout_tests/fast/parser/external-entities.xml : different length
-/sdcard/android/layout_tests/fast/parser/script-tag-with-trailing-slash.html : different length
-/sdcard/android/layout_tests/fast/parser/comment-in-iframe.html : @offset: 0
-/sdcard/android/layout_tests/fast/parser/xml-declaration-missing-ending-mark.html : different length
-/sdcard/android/layout_tests/fast/parser/entity-end-script-tag.html : different length
-/sdcard/android/layout_tests/fast/parser/tabindex-parsing.html : different length
-/sdcard/android/layout_tests/fast/history/subframe-is-visited.html : different length
-/sdcard/android/layout_tests/fast/history/window-open.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/history/go-back-to-changed-name.html : different length
-/sdcard/android/layout_tests/fast/loader/cancel-load-during-port-block-timer.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/loader/local-iFrame-source-from-local.html : different length
-/sdcard/android/layout_tests/fast/loader/null-request-after-willSendRequest.html : different length
-/sdcard/android/layout_tests/fast/loader/stop-provisional-loads.html : different length
-/sdcard/android/layout_tests/fast/loader/xmlhttprequest-missing-file-exception.html : different length
-/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash-2.html : different length
-/sdcard/android/layout_tests/fast/loader/plain-text-document.html : different length
-/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash.html : different length
-/sdcard/android/layout_tests/fast/loader/local-image-from-local.html : different length
-/sdcard/android/layout_tests/fast/loader/local-CSS-from-local.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/loader/local-JavaScript-from-local.html : different length
-/sdcard/android/layout_tests/fast/loader/data-url-encoding-svg.html : different length
-/sdcard/android/layout_tests/fast/loader/opaque-base-url.html : @offset: 129
-/sdcard/android/layout_tests/fast/canvas/canvas-alphaImageData-behavior.html : different length
-/sdcard/android/layout_tests/fast/canvas/pointInPath.html : different length
-/sdcard/android/layout_tests/fast/canvas/toDataURL-supportedTypes.html : different length
-/sdcard/android/layout_tests/fast/canvas/canvas-getImageData.html : different length
-/sdcard/android/layout_tests/fast/canvas/canvas-longlived-context.html : TIMEDOUT
-/sdcard/android/layout_tests/fast/canvas/canvas-save-restore-with-path.html : different length
-/sdcard/android/layout_tests/fast/canvas/set-colors.html : different length
-/sdcard/android/layout_tests/fast/frames/viewsource-empty-attribute-value.html : different length
-/sdcard/android/layout_tests/fast/frames/frame-deep-nested-resize.html : different length
-/sdcard/android/layout_tests/fast/frames/iframe-window-focus.html : different length
-/sdcard/android/layout_tests/fast/frames/frameElement-widthheight.html : different length
-/sdcard/android/layout_tests/fast/frames/removal-before-attach-crash.html : different length
-/sdcard/android/layout_tests/fast/frames/frame-js-url-clientWidth.html : different length
+/sdcard/android/layout_tests/webarchive/loading/test-loading-archive.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement16.html
+/sdcard/android/layout_tests/media/video-error-does-not-exist.html
+/sdcard/android/layout_tests/media/audio-constructor.html
+/sdcard/android/layout_tests/media/video-start.html
+/sdcard/android/layout_tests/media/video-loopend.html
+/sdcard/android/layout_tests/media/video-play-empty-events.html
+/sdcard/android/layout_tests/media/constructors.html
+/sdcard/android/layout_tests/media/video-append-source.html
+/sdcard/android/layout_tests/media/unsupported-rtsp.html
+/sdcard/android/layout_tests/media/video-dom-autoplay.html
+/sdcard/android/layout_tests/media/video-currentTime-set2.html
+/sdcard/android/layout_tests/media/video-poster.html
+/sdcard/android/layout_tests/media/video-source-media.html
+/sdcard/android/layout_tests/media/video-muted.html
+/sdcard/android/layout_tests/media/progress-event.html
+/sdcard/android/layout_tests/media/video-source-type.html
+/sdcard/android/layout_tests/media/video-seek-past-end-playing.html
+/sdcard/android/layout_tests/media/video-dom-src.html
+/sdcard/android/layout_tests/media/remove-from-document.html
+/sdcard/android/layout_tests/media/video-end.html
+/sdcard/android/layout_tests/media/video-src-change.html
+/sdcard/android/layout_tests/media/video-seekable.html
+/sdcard/android/layout_tests/media/video-click-dblckick-standalone.html
+/sdcard/android/layout_tests/media/video-src-set.html
+/sdcard/android/layout_tests/media/video-seeking.html
+/sdcard/android/layout_tests/media/video-controls-transformed.html
+/sdcard/android/layout_tests/media/loopend-limits.html
+/sdcard/android/layout_tests/media/video-volume.html
+/sdcard/android/layout_tests/media/video-size.html
+/sdcard/android/layout_tests/media/video-width-height.html
+/sdcard/android/layout_tests/media/video-loopstart.html
+/sdcard/android/layout_tests/media/video-source.html
+/sdcard/android/layout_tests/media/video-currentTime.html
+/sdcard/android/layout_tests/media/video-dom-loopstart.html
+/sdcard/android/layout_tests/media/broken-video.html
+/sdcard/android/layout_tests/media/video-buffered.html
+/sdcard/android/layout_tests/media/video-load-readyState.html
+/sdcard/android/layout_tests/media/video-dom-end.html
+/sdcard/android/layout_tests/media/fallback.html
+/sdcard/android/layout_tests/media/video-load-networkState.html
+/sdcard/android/layout_tests/media/unsupported-tracks.html
+/sdcard/android/layout_tests/media/video-dom-start.html
+/sdcard/android/layout_tests/media/video-seek-past-end-paused.html
+/sdcard/android/layout_tests/media/video-play-pause-events.html
+/sdcard/android/layout_tests/media/video-autoplay.html
+/sdcard/android/layout_tests/media/video-controls.html
+/sdcard/android/layout_tests/media/loopstart-limits.html
+/sdcard/android/layout_tests/media/video-src-source.html
+/sdcard/android/layout_tests/media/video-currentTime-set.html
+/sdcard/android/layout_tests/media/video-source-type-params.html
+/sdcard/android/layout_tests/media/video-no-autoplay.html
+/sdcard/android/layout_tests/media/video-pause-empty-events.html
+/sdcard/android/layout_tests/media/video-play-pause-exception.html
+/sdcard/android/layout_tests/media/video-dom-loopend.html
+/sdcard/android/layout_tests/media/video-loopcount.html
+/sdcard/android/layout_tests/media/video-src-remove.html
+/sdcard/android/layout_tests/media/video-src.html
+/sdcard/android/layout_tests/media/video-error-abort.html
+/sdcard/android/layout_tests/media/video-dom-loopcount.html
+/sdcard/android/layout_tests/media/progress-event-total.html
+/sdcard/android/layout_tests/media/audio-constructor-src.html
+/sdcard/android/layout_tests/plugins/throw-on-dealloc.html
+/sdcard/android/layout_tests/plugins/invoke.html
+/sdcard/android/layout_tests/plugins/plugin-remove-subframe.html
+/sdcard/android/layout_tests/plugins/netscape-identifier-conversion.html
+/sdcard/android/layout_tests/plugins/call-as-function-test.html
+/sdcard/android/layout_tests/plugins/npruntime.html
+/sdcard/android/layout_tests/plugins/netscape-construct.html
+/sdcard/android/layout_tests/plugins/root-object-premature-delete-crash.html
+/sdcard/android/layout_tests/plugins/netscape-get-property-return-value.html
+/sdcard/android/layout_tests/plugins/mouse-events.html
+/sdcard/android/layout_tests/plugins/return-error-from-new-stream-doesnt-invoke-destroy-stream.html
+/sdcard/android/layout_tests/plugins/destroy-stream-twice.html
+/sdcard/android/layout_tests/plugins/jsobjc-simple.html
+/sdcard/android/layout_tests/plugins/embed-attributes-setting.html
+/sdcard/android/layout_tests/plugins/inner-html-display-none.html
+/sdcard/android/layout_tests/plugins/netscape-invoke-default.html
+/sdcard/android/layout_tests/plugins/undefined-property-crash.html
+/sdcard/android/layout_tests/plugins/netscape-plugin-setwindow-size-2.html
+/sdcard/android/layout_tests/plugins/jsobjc-dom-wrappers.html
+/sdcard/android/layout_tests/plugins/plugin-javascript-access.html
+/sdcard/android/layout_tests/plugins/getintidentifier-special-values.html
+/sdcard/android/layout_tests/plugins/geturl-replace-query.html
+/sdcard/android/layout_tests/plugins/netscape-destroy-plugin-script-objects.html
+/sdcard/android/layout_tests/plugins/open-and-close-window-with-plugin.html
+/sdcard/android/layout_tests/plugins/netscape-enumerate.html
+/sdcard/android/layout_tests/plugins/get-url-that-the-resource-load-delegate-will-disallow.html
+/sdcard/android/layout_tests/plugins/netscape-plugin-setwindow-size.html
+/sdcard/android/layout_tests/plugins/embed-inside-object.html
+/sdcard/android/layout_tests/plugins/netscape-throw-exception.html
+/sdcard/android/layout_tests/plugins/get-url-with-blank-target.html
+/sdcard/android/layout_tests/plugins/bindings-test.html
+/sdcard/android/layout_tests/editing/input/textarea-arrow-navigation.html
+/sdcard/android/layout_tests/editing/inserting/typing-tab-designmode.html
+/sdcard/android/layout_tests/editing/inserting/5994480-2.html
+/sdcard/android/layout_tests/editing/execCommand/queryCommandState-01.html
+/sdcard/android/layout_tests/editing/execCommand/5543472-3.html
+/sdcard/android/layout_tests/editing/execCommand/enabling-and-selection.html
+/sdcard/android/layout_tests/editing/execCommand/5658933-2.html
+/sdcard/android/layout_tests/editing/execCommand/insert-line-break-no-scroll.html
+/sdcard/android/layout_tests/editing/execCommand/enabling-and-selection-2.html
+/sdcard/android/layout_tests/editing/execCommand/delete-no-scroll.html
+/sdcard/android/layout_tests/editing/execCommand/forward-delete-no-scroll.html
+/sdcard/android/layout_tests/editing/execCommand/19089.html
+/sdcard/android/layout_tests/editing/execCommand/unlink.html
+/sdcard/android/layout_tests/editing/execCommand/5543472-2.html
+/sdcard/android/layout_tests/editing/execCommand/copy-without-selection.html
+/sdcard/android/layout_tests/editing/execCommand/findString-diacriticals.html
+/sdcard/android/layout_tests/editing/execCommand/5658933-3.html
+/sdcard/android/layout_tests/editing/execCommand/createLink.html
+/sdcard/android/layout_tests/editing/execCommand/5543472-1.html
+/sdcard/android/layout_tests/editing/execCommand/5939887.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-into-anchor-text.html
+/sdcard/android/layout_tests/editing/pasteboard/copy-crash.html
+/sdcard/android/layout_tests/editing/pasteboard/5665299.html
+/sdcard/android/layout_tests/editing/pasteboard/5761530-1.html
+/sdcard/android/layout_tests/editing/pasteboard/copy-in-password-field.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-plaintext-user-select-none.html
+/sdcard/android/layout_tests/editing/pasteboard/drag-image-in-about-blank-frame.html
+/sdcard/android/layout_tests/editing/pasteboard/4744008.html
+/sdcard/android/layout_tests/editing/pasteboard/4922709.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-013.html
+/sdcard/android/layout_tests/editing/pasteboard/5780697-2.html
+/sdcard/android/layout_tests/editing/pasteboard/4840662.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-table-002.html
+/sdcard/android/layout_tests/editing/selection/drag-text-delay.html
+/sdcard/android/layout_tests/editing/selection/skip-non-editable-1.html
+/sdcard/android/layout_tests/editing/selection/move-by-line-003.html
+/sdcard/android/layout_tests/editing/selection/anchor-focus1.html
+/sdcard/android/layout_tests/editing/selection/getRangeAt.html
+/sdcard/android/layout_tests/editing/selection/select-all-textarea.html
+/sdcard/android/layout_tests/editing/selection/doubleclick-whitespace.html
+/sdcard/android/layout_tests/editing/selection/after-line-break.html
+/sdcard/android/layout_tests/editing/selection/legal-positions.html
+/sdcard/android/layout_tests/editing/selection/anchor-focus3.html
+/sdcard/android/layout_tests/editing/selection/toString.html
+/sdcard/android/layout_tests/editing/selection/extend-selection-bidi.html
+/sdcard/android/layout_tests/editing/selection/inactive-selection.html
+/sdcard/android/layout_tests/editing/selection/removeAllRanges.html
+/sdcard/android/layout_tests/editing/selection/5209984.html
+/sdcard/android/layout_tests/editing/selection/skip-non-editable-2.html
+/sdcard/android/layout_tests/editing/selection/toString-1.html
+/sdcard/android/layout_tests/editing/selection/anchor-focus2.html
+/sdcard/android/layout_tests/editing/selection/move-begin-end.html
+/sdcard/android/layout_tests/editing/selection/move-left-right.html
+/sdcard/android/layout_tests/editing/selection/click-before-and-after-table.html
+/sdcard/android/layout_tests/editing/undo/undo-iframe-location-change.html
+/sdcard/android/layout_tests/editing/deleting/pruning-after-merge-1.html
+/sdcard/android/layout_tests/editing/deleting/5546763.html
+/sdcard/android/layout_tests/editing/deleting/5729680.html
+/sdcard/android/layout_tests/editing/deleting/4916235-1.html
+/sdcard/android/layout_tests/editing/deleting/delete-ligature-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-ligature-003.html
+/sdcard/android/layout_tests/editing/deleting/5890684.html
+/sdcard/android/layout_tests/editing/deleting/smart-editing-disabled.html
+/sdcard/android/layout_tests/editing/deleting/delete-ligature-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-all-text-in-text-field-assertion.html
+/sdcard/android/layout_tests/accessibility/image-map1.html
+/sdcard/android/layout_tests/accessibility/aria-labelledby-on-input.html
+/sdcard/android/layout_tests/accessibility/content-editable.html
+/sdcard/android/layout_tests/accessibility/frame-with-title.html
+/sdcard/android/layout_tests/accessibility/textarea-insertion-point-line-number.html
+/sdcard/android/layout_tests/accessibility/table-with-rules.html
+/sdcard/android/layout_tests/accessibility/aria-describedby-on-input.html
+/sdcard/android/layout_tests/accessibility/radio-button-checkbox-size.html
+/sdcard/android/layout_tests/accessibility/table-detection.html
+/sdcard/android/layout_tests/accessibility/th-as-title-ui.html
+/sdcard/android/layout_tests/accessibility/table-with-aria-role.html
+/sdcard/android/layout_tests/accessibility/accesskey.html
+/sdcard/android/layout_tests/accessibility/image-map2.html
+/sdcard/android/layout_tests/accessibility/iframe-bastardization.html
+/sdcard/android/layout_tests/accessibility/aria-spinbutton.html
+/sdcard/android/layout_tests/accessibility/button-press-action.html
+/sdcard/android/layout_tests/accessibility/table-cell-spans.html
+/sdcard/android/layout_tests/accessibility/table-cells.html
+/sdcard/android/layout_tests/accessibility/double-title.html
+/sdcard/android/layout_tests/accessibility/lists.html
+/sdcard/android/layout_tests/accessibility/plugin.html
+/sdcard/android/layout_tests/accessibility/table-sections.html
+/sdcard/android/layout_tests/accessibility/textarea-selected-text-range.html
+/sdcard/android/layout_tests/accessibility/input-image-url.html
+/sdcard/android/layout_tests/accessibility/aria-range-value.html
+/sdcard/android/layout_tests/accessibility/table-one-cell.html
+/sdcard/android/layout_tests/accessibility/internal-link-anchors2.html
+/sdcard/android/layout_tests/accessibility/table-nofirstbody.html
+/sdcard/android/layout_tests/accessibility/table-modification-crash.html
+/sdcard/android/layout_tests/accessibility/radio-button-group-members.html
+/sdcard/android/layout_tests/accessibility/aria-link-supports-press.html
+/sdcard/android/layout_tests/accessibility/document-attributes.html
+/sdcard/android/layout_tests/accessibility/table-notbody.html
+/sdcard/android/layout_tests/accessibility/aria-range.html
+/sdcard/android/layout_tests/accessibility/bounds-for-range.html
+/sdcard/android/layout_tests/accessibility/table-attributes.html
+/sdcard/android/layout_tests/accessibility/textarea-line-for-index.html
+/sdcard/android/layout_tests/accessibility/aria-slider.html
+/sdcard/android/layout_tests/accessibility/document-links.html
+/sdcard/android/layout_tests/accessibility/legend.html
+/sdcard/android/layout_tests/accessibility/aria-roles.html
+/sdcard/android/layout_tests/accessibility/nochildren-elements.html
+/sdcard/android/layout_tests/accessibility/internal-link-anchors.html
+/sdcard/android/layout_tests/fast/replaced/image-map-bug16782.html
+/sdcard/android/layout_tests/fast/replaced/table-percent-height.html
+/sdcard/android/layout_tests/fast/replaced/image-map.html
+/sdcard/android/layout_tests/fast/dynamic/paused-event-dispatch.html
+/sdcard/android/layout_tests/fast/text/plain-text-line-breaks.html
+/sdcard/android/layout_tests/fast/text/zero-width-characters.html
+/sdcard/android/layout_tests/fast/text/reset-drag-on-mouse-down.html
+/sdcard/android/layout_tests/fast/encoding/invalid-xml.html
+/sdcard/android/layout_tests/fast/encoding/char-decoding-mac.html
+/sdcard/android/layout_tests/fast/encoding/frame-default-enc.html
+/sdcard/android/layout_tests/fast/encoding/mailto-always-utf-8.html
+/sdcard/android/layout_tests/fast/encoding/char-decoding.html
+/sdcard/android/layout_tests/fast/encoding/url-host-name-non-ascii.html
+/sdcard/android/layout_tests/fast/encoding/idn-security.html
+/sdcard/android/layout_tests/fast/encoding/percent-escaping.html
+/sdcard/android/layout_tests/fast/encoding/xml-utf-8-default.xml
+/sdcard/android/layout_tests/fast/encoding/char-encoding-mac.html
+/sdcard/android/layout_tests/fast/encoding/yahoo-mail.html
+/sdcard/android/layout_tests/fast/encoding/charset-koi8-u.html
+/sdcard/android/layout_tests/fast/encoding/ahram-org-eg.html
+/sdcard/android/layout_tests/fast/encoding/noscript-in-head.html
+/sdcard/android/layout_tests/fast/workers/worker-location.html
+/sdcard/android/layout_tests/fast/workers/worker-constructor.html
+/sdcard/android/layout_tests/fast/workers/stress-js-execution.html
+/sdcard/android/layout_tests/fast/workers/worker-terminate.html
+/sdcard/android/layout_tests/fast/workers/worker-gc.html
+/sdcard/android/layout_tests/fast/workers/worker-navigator.html
+/sdcard/android/layout_tests/fast/workers/worker-replace-global-constructor.html
+/sdcard/android/layout_tests/fast/workers/worker-replace-self.html
+/sdcard/android/layout_tests/fast/workers/worker-event-listener.html
+/sdcard/android/layout_tests/fast/selectors/lang-inheritance.html
+/sdcard/android/layout_tests/fast/selectors/lang-vs-xml-lang.html
+/sdcard/android/layout_tests/fast/selectors/lang-inheritance2.html
+/sdcard/android/layout_tests/fast/overflow/scroll-vertical-not-horizontal.html
+/sdcard/android/layout_tests/fast/events/onunload.html
+/sdcard/android/layout_tests/fast/events/mouseup-outside-document.html
+/sdcard/android/layout_tests/fast/events/offsetX-offsetY.html
+/sdcard/android/layout_tests/fast/events/scroll-event-does-not-bubble.html
+/sdcard/android/layout_tests/fast/events/mouseover-mouseout.html
+/sdcard/android/layout_tests/fast/events/option-tab.html
+/sdcard/android/layout_tests/fast/events/popup-blocking-click-in-iframe.html
+/sdcard/android/layout_tests/fast/events/tabindex-focus-blur-all.html
+/sdcard/android/layout_tests/fast/events/onchange-passwordfield.html
+/sdcard/android/layout_tests/fast/events/drag-in-frames.html
+/sdcard/android/layout_tests/fast/events/frame-tab-focus.html
+/sdcard/android/layout_tests/fast/events/autoscroll-in-textfield.html
+/sdcard/android/layout_tests/fast/events/arrow-navigation.html
+/sdcard/android/layout_tests/fast/events/fire-scroll-event.html
+/sdcard/android/layout_tests/fast/events/attempt-scroll-with-no-scrollbars.html
+/sdcard/android/layout_tests/fast/events/mouseclick-target-and-positioning.html
+/sdcard/android/layout_tests/fast/events/keydown-keypress-focus-change.html
+/sdcard/android/layout_tests/fast/events/input-image-scrolled-x-y.html
+/sdcard/android/layout_tests/fast/events/dblclick-addEventListener.html
+/sdcard/android/layout_tests/fast/events/frame-programmatic-focus.html
+/sdcard/android/layout_tests/fast/events/context-onmousedown-event.html
+/sdcard/android/layout_tests/fast/events/content-changed-during-drop.html
+/sdcard/android/layout_tests/fast/events/autoscroll-with-non-scrollable-parent.html
+/sdcard/android/layout_tests/fast/events/window-events-capture.html
+/sdcard/android/layout_tests/fast/events/onchange-click-hang.html
+/sdcard/android/layout_tests/fast/events/onload-webkit-before-webcore.html
+/sdcard/android/layout_tests/fast/events/window-events-bubble2.html
+/sdcard/android/layout_tests/fast/events/js-keyboard-event-creation.html
+/sdcard/android/layout_tests/fast/events/event-view-toString.html
+/sdcard/android/layout_tests/fast/events/onchange-select-popup.html
+/sdcard/android/layout_tests/fast/events/access-key-self-destruct.html
+/sdcard/android/layout_tests/fast/events/scrollbar-double-click.html
+/sdcard/android/layout_tests/fast/events/onunload-clears-onbeforeunload.html
+/sdcard/android/layout_tests/fast/events/tabindex-focus-chain.html
+/sdcard/android/layout_tests/fast/events/capture-on-target.html
+/sdcard/android/layout_tests/fast/events/window-events-bubble.html
+/sdcard/android/layout_tests/fast/events/mouseup-from-button2.html
+/sdcard/android/layout_tests/fast/events/frame-click-focus.html
+/sdcard/android/layout_tests/fast/events/mouseout-on-window.html
+/sdcard/android/layout_tests/fast/events/keypress-insert-tab.html
+/sdcard/android/layout_tests/fast/events/mouseout-dead-subframe.html
+/sdcard/android/layout_tests/fast/events/iframe-object-onload.html
+/sdcard/android/layout_tests/fast/events/onunload-not-on-body.html
+/sdcard/android/layout_tests/fast/events/mousemove-after-drag-over-scrollbar.html
+/sdcard/android/layout_tests/fast/events/contextmenu-scrolled-page-with-frame.html
+/sdcard/android/layout_tests/fast/events/key-events-in-input-button.html
+/sdcard/android/layout_tests/fast/events/arrow-keys-on-body.html
+/sdcard/android/layout_tests/fast/events/ondragenter.html
+/sdcard/android/layout_tests/fast/events/pointer-events.html
+/sdcard/android/layout_tests/fast/events/scroll-to-anchor-in-overflow-hidden.html
+/sdcard/android/layout_tests/fast/events/autoscroll-nonscrollable-iframe-in-scrollable-div.html
+/sdcard/android/layout_tests/fast/events/keypress-focus-change.html
+/sdcard/android/layout_tests/fast/events/key-events-in-input-text.html
+/sdcard/android/layout_tests/fast/events/pointer-events-2.html
+/sdcard/android/layout_tests/fast/events/drag-outside-window.html
+/sdcard/android/layout_tests/fast/events/click-count.html
+/sdcard/android/layout_tests/fast/events/onchange-searchfield.html
+/sdcard/android/layout_tests/fast/events/special-key-events-in-input-text.html
+/sdcard/android/layout_tests/fast/events/keydown-keypress-preventDefault.html
+/sdcard/android/layout_tests/fast/events/mouse-click-events.html
+/sdcard/android/layout_tests/fast/events/onsearch-enter.html
+/sdcard/android/layout_tests/fast/events/mouseover-mouseout2.html
+/sdcard/android/layout_tests/fast/events/open-window-from-another-frame.html
+/sdcard/android/layout_tests/fast/events/init-events.html
+/sdcard/android/layout_tests/fast/events/onchange-textfield.html
+/sdcard/android/layout_tests/fast/events/onclick-list-marker.html
+/sdcard/android/layout_tests/fast/events/anchor-image-scrolled-x-y.html
+/sdcard/android/layout_tests/fast/html/tab-order.html
+/sdcard/android/layout_tests/fast/regex/test1.html
+/sdcard/android/layout_tests/fast/js/kde/garbage-n.html
+/sdcard/android/layout_tests/fast/js/kde/Number.html
+/sdcard/android/layout_tests/fast/js/kde/string-2-n.html
+/sdcard/android/layout_tests/fast/js/kde/encode_decode_uri.html
+/sdcard/android/layout_tests/fast/js/kde/string-1-n.html
+/sdcard/android/layout_tests/fast/js/exception-sequencing-binops.html
+/sdcard/android/layout_tests/fast/js/recursion-limit-equal.html
+/sdcard/android/layout_tests/fast/js/exception-sequencing-binops2.html
+/sdcard/android/layout_tests/fast/js/math-transforms.html
+/sdcard/android/layout_tests/fast/js/try-catch-crash.html
+/sdcard/android/layout_tests/fast/js/array-iterate-backwards.html
+/sdcard/android/layout_tests/fast/js/navigator-mimeTypes-length.html
+/sdcard/android/layout_tests/fast/js/global-constructors.html
+/sdcard/android/layout_tests/fast/js/uncaught-exception-line-number.html
+/sdcard/android/layout_tests/fast/js/exceptions-thrown-in-callbacks.html
+/sdcard/android/layout_tests/fast/js/toString-and-valueOf-override.html
+/sdcard/android/layout_tests/fast/js/function-toString-parentheses.html
+/sdcard/android/layout_tests/fast/js/large-expressions.html
+/sdcard/android/layout_tests/fast/js/exception-sequencing.html
+/sdcard/android/layout_tests/fast/js/exception-codegen-crash.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/activeElement.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-special-properties.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/url-getset.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/hasFocus.html
+/sdcard/android/layout_tests/fast/dom/HTMLSelectElement/listbox-select-reset.html
+/sdcard/android/layout_tests/fast/dom/Document/early-document-access.html
+/sdcard/android/layout_tests/fast/dom/Element/offsetLeft-offsetTop-body-quirk.html
+/sdcard/android/layout_tests/fast/dom/DOMException/XPathException.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/010.xml
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/011.xml
+/sdcard/android/layout_tests/fast/dom/Window/window-resize-and-move-arguments.html
+/sdcard/android/layout_tests/fast/dom/Window/timeout-released-on-close.html
+/sdcard/android/layout_tests/fast/dom/Window/window-function-name-getter-precedence.html
+/sdcard/android/layout_tests/fast/dom/Window/window-xy-properties.html
+/sdcard/android/layout_tests/fast/dom/Window/console-functions.html
+/sdcard/android/layout_tests/fast/dom/Window/window-screen-properties.html
+/sdcard/android/layout_tests/fast/dom/Window/window-properties.html
+/sdcard/android/layout_tests/fast/dom/Window/window-onFocus.html
+/sdcard/android/layout_tests/fast/dom/Window/new-window-opener.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-pending-url.html
+/sdcard/android/layout_tests/fast/dom/Window/setting-properties-on-closed-window.html
+/sdcard/android/layout_tests/fast/dom/Window/dom-access-from-closure-window.html
+/sdcard/android/layout_tests/fast/dom/Window/window-resize.html
+/sdcard/android/layout_tests/fast/dom/Window/closure-access-after-navigation-window.html
+/sdcard/android/layout_tests/fast/dom/Window/window-special-properties.html
+/sdcard/android/layout_tests/fast/dom/Window/dom-access-from-closure-iframe.html
+/sdcard/android/layout_tests/fast/dom/Window/Plug-ins.html
+/sdcard/android/layout_tests/fast/dom/Window/get-set-properties.html
+/sdcard/android/layout_tests/fast/dom/Window/window-scroll-arguments.html
+/sdcard/android/layout_tests/fast/dom/Window/window-early-properties.html
+/sdcard/android/layout_tests/fast/dom/StyleSheet/ownerNode-lifetime-2.html
+/sdcard/android/layout_tests/fast/dom/dom-constructors.html
+/sdcard/android/layout_tests/fast/dom/assign-to-window-status.html
+/sdcard/android/layout_tests/fast/dom/gc-8.html
+/sdcard/android/layout_tests/fast/dom/object-embed-plugin-scripting.html
+/sdcard/android/layout_tests/fast/dom/node-filter-gc.html
+/sdcard/android/layout_tests/fast/dom/noscript-canvas-in-created-html-document.html
+/sdcard/android/layout_tests/fast/dom/DOMParser-assign-variable.html
+/sdcard/android/layout_tests/fast/dom/timer-clear-interval-in-handler.html
+/sdcard/android/layout_tests/fast/dom/implementation-createHTMLDocument.html
+/sdcard/android/layout_tests/fast/dom/iframe-document.html
+/sdcard/android/layout_tests/fast/dom/document-all-input.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-href-put-crash.html
+/sdcard/android/layout_tests/fast/dom/getelementsbytagnamens-mixed-namespaces.html
+/sdcard/android/layout_tests/fast/dom/object-plugin-hides-properties.html
+/sdcard/android/layout_tests/fast/dom/gc-2.html
+/sdcard/android/layout_tests/fast/dom/computed-style-set-property.html
+/sdcard/android/layout_tests/fast/dom/inner-text-001.html
+/sdcard/android/layout_tests/fast/dom/css-selectorText.html
+/sdcard/android/layout_tests/fast/dom/replace-first-child.html
+/sdcard/android/layout_tests/fast/dom/importNode-null.html
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex-multiple.html
+/sdcard/android/layout_tests/fast/dom/gc-9.html
+/sdcard/android/layout_tests/fast/dom/NamedNodeMap-setNamedItem-crash.html
+/sdcard/android/layout_tests/fast/dom/wrapper-classes.html
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex.html
+/sdcard/android/layout_tests/fast/dom/document-width-height-force-layout.html
+/sdcard/android/layout_tests/fast/dom/gc-acid3.html
+/sdcard/android/layout_tests/fast/dom/client-width-height.html
+/sdcard/android/layout_tests/fast/dom/global-constructors.html
+/sdcard/android/layout_tests/fast/dom/client-width-height-quirks.html
+/sdcard/android/layout_tests/fast/dom/javascript-url-crash-function.html
+/sdcard/android/layout_tests/fast/dom/location-hash.html
+/sdcard/android/layout_tests/fast/dom/constructors-cached.html
+/sdcard/android/layout_tests/fast/dom/non-numeric-values-numeric-parameters.html
+/sdcard/android/layout_tests/fast/dom/documenturi-can-hold-arbitrary-string.html
+/sdcard/android/layout_tests/fast/dom/documenturi-not-affected-by-base-tag.html
+/sdcard/android/layout_tests/fast/dom/open-and-close-by-DOM.html
+/sdcard/android/layout_tests/fast/dom/set-frame-src-while-running-script-in-frame.html
+/sdcard/android/layout_tests/fast/dom/document_write_params.html
+/sdcard/android/layout_tests/fast/dom/namednodemap-namelookup.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-replace-crash.html
+/sdcard/android/layout_tests/fast/dom/htmlcollection-detectability.html
+/sdcard/android/layout_tests/fast/dom/documenturi-assigned-junk-implies-relative-urls-do-not-resolve.html
+/sdcard/android/layout_tests/fast/dom/collection-namedItem-via-item.html
+/sdcard/android/layout_tests/fast/dom/set-inner-text-newlines.html
+/sdcard/android/layout_tests/fast/dom/document-dir-property.html
+/sdcard/android/layout_tests/fast/dom/undetectable-style-filter.html
+/sdcard/android/layout_tests/fast/dom/tabindex-clamp.html
+/sdcard/android/layout_tests/fast/dom/constructors-cached-navigate.html
+/sdcard/android/layout_tests/fast/dom/frame-loading-via-document-write.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Borrowed/od_20000608.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Borrowed/namespace-nodes.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Borrowed/rs_20010831.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Borrowed/sr_20021217.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Borrowed/kd_20010423.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Borrowed/cz_20030217.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_boolean_expr.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_core_functions.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_location_path.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_node_test.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_literal_expr.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_predicate_list.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_parser.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_nodeset_expr.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_numeric_expr.html
+/sdcard/android/layout_tests/fast/xpath/4XPath/Core/test_step.html
+/sdcard/android/layout_tests/fast/xpath/ancestor-axis.html
+/sdcard/android/layout_tests/fast/xpath/string-value.html
+/sdcard/android/layout_tests/fast/xpath/name-null-namespace.html
+/sdcard/android/layout_tests/fast/xpath/id-simple.html
+/sdcard/android/layout_tests/fast/xpath/id-path.html
+/sdcard/android/layout_tests/fast/xpath/implicit-node-args.html
+/sdcard/android/layout_tests/fast/xpath/text-nodes.html
+/sdcard/android/layout_tests/fast/xpath/invalid-functions.html
+/sdcard/android/layout_tests/fast/xpath/xpath-namespaces.html
+/sdcard/android/layout_tests/fast/xpath/xpath-functional-test.html
+/sdcard/android/layout_tests/fast/xpath/complex-id.html
+/sdcard/android/layout_tests/fast/xpath/attr-namespace.html
+/sdcard/android/layout_tests/fast/xpath/substring-after.html
+/sdcard/android/layout_tests/fast/xpath/evaluate-twice.html
+/sdcard/android/layout_tests/fast/xpath/empty-string-substring.html
+/sdcard/android/layout_tests/fast/xpath/document-order.html
+/sdcard/android/layout_tests/fast/xpath/nodeset-duplicates.html
+/sdcard/android/layout_tests/fast/xpath/nan-to-boolean.html
+/sdcard/android/layout_tests/fast/xpath/reverse-axes.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-text-plain.html
+/sdcard/android/layout_tests/fast/forms/mailto/advanced-get.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-text-plain-latin-1.html
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-multipart-form-data.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-always-utf-8.html
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items.html
+/sdcard/android/layout_tests/fast/forms/mailto/post-append-query.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items-x-www-form-urlencoded.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-overwrite-query.html
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-x-www-form-urlencoded.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items-text-plain.html
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-text-plain.html
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii.html
+/sdcard/android/layout_tests/fast/forms/mailto/post-text-plain-with-accept-charset.html
+/sdcard/android/layout_tests/fast/forms/mailto/post-text-plain.html
+/sdcard/android/layout_tests/fast/forms/mailto/advanced-put.html
+/sdcard/android/layout_tests/fast/forms/listbox-typeahead-scroll.html
+/sdcard/android/layout_tests/fast/forms/select-empty-list.html
+/sdcard/android/layout_tests/fast/forms/select-accesskey.html
+/sdcard/android/layout_tests/fast/forms/focus2.html
+/sdcard/android/layout_tests/fast/forms/password-doubleclick-selection.html
+/sdcard/android/layout_tests/fast/forms/textfield-inside-anchor.html
+/sdcard/android/layout_tests/fast/forms/textarea-trailing-newline.html
+/sdcard/android/layout_tests/fast/forms/legend-access-key.html
+/sdcard/android/layout_tests/fast/forms/input-maxlength.html
+/sdcard/android/layout_tests/fast/forms/selection-functions.html
+/sdcard/android/layout_tests/fast/forms/textfield-to-password-on-focus.html
+/sdcard/android/layout_tests/fast/forms/select-reset.html
+/sdcard/android/layout_tests/fast/forms/focus-selection-textarea.html
+/sdcard/android/layout_tests/fast/forms/enter-clicks-buttons.html
+/sdcard/android/layout_tests/fast/forms/radio_checked_name.html
+/sdcard/android/layout_tests/fast/forms/radio-check-click-and-drag.html
+/sdcard/android/layout_tests/fast/forms/select-double-onchange.html
+/sdcard/android/layout_tests/fast/forms/button-enter-click.html
+/sdcard/android/layout_tests/fast/forms/search-click-in-placeholder.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-003.html
+/sdcard/android/layout_tests/fast/forms/search-hidden-cancel-button.html
+/sdcard/android/layout_tests/fast/forms/dragging-to-file-input.html
+/sdcard/android/layout_tests/fast/forms/textarea-paste-newline.html
+/sdcard/android/layout_tests/fast/forms/drag-into-textarea.html
+/sdcard/android/layout_tests/fast/forms/onselect-textfield.html
+/sdcard/android/layout_tests/fast/forms/input-implicit-length-limit.html
+/sdcard/android/layout_tests/fast/forms/form-and-frame-interaction-retains-values.html
+/sdcard/android/layout_tests/fast/forms/slider-transformed.html
+/sdcard/android/layout_tests/fast/forms/listbox-select-all.html
+/sdcard/android/layout_tests/fast/forms/textfield-onchange-deletion.html
+/sdcard/android/layout_tests/fast/forms/focus-control-to-page.html
+/sdcard/android/layout_tests/fast/forms/select-type-ahead-non-latin.html
+/sdcard/android/layout_tests/fast/forms/textarea-no-scroll-on-blur.html
+/sdcard/android/layout_tests/fast/forms/focus-selection-input.html
+/sdcard/android/layout_tests/fast/forms/listbox-onchange.html
+/sdcard/android/layout_tests/fast/forms/button-spacebar-click.html
+/sdcard/android/layout_tests/fast/forms/search-event-delay.html
+/sdcard/android/layout_tests/fast/forms/search-cancel-button-mouseup.html
+/sdcard/android/layout_tests/fast/forms/select-enter-key.html
+/sdcard/android/layout_tests/fast/forms/drag-out-of-textarea.html
+/sdcard/android/layout_tests/fast/forms/textarea-hard-linewrap.html
+/sdcard/android/layout_tests/fast/forms/dragging-to-disabled-file-input.html
+/sdcard/android/layout_tests/fast/forms/input-radio-checked-tab.html
+/sdcard/android/layout_tests/fast/forms/plaintext-mode-1.html
+/sdcard/android/layout_tests/fast/forms/check-box-enter-key.html
+/sdcard/android/layout_tests/fast/forms/input-select-on-click.html
+/sdcard/android/layout_tests/fast/forms/button-state-restore.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-elementFromPoint.html
+/sdcard/android/layout_tests/fast/forms/select-set-inner.html
+/sdcard/android/layout_tests/fast/forms/missing-action.html
+/sdcard/android/layout_tests/fast/forms/access-key.html
+/sdcard/android/layout_tests/fast/forms/textarea-scrolled-endline-caret.html
+/sdcard/android/layout_tests/fast/forms/textarea-scrollbar-height.html
+/sdcard/android/layout_tests/fast/forms/textarea-type-spaces.html
+/sdcard/android/layout_tests/fast/forms/slider-mouse-events.html
+/sdcard/android/layout_tests/fast/forms/textarea-selection-preservation.html
+/sdcard/android/layout_tests/fast/forms/slider-onchange-event.html
+/sdcard/android/layout_tests/fast/forms/add-remove-form-elements-stress-test.html
+/sdcard/android/layout_tests/fast/forms/onchange-enter-submit.html
+/sdcard/android/layout_tests/fast/forms/textarea-appearance-wrap.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-006.html
+/sdcard/android/layout_tests/fast/forms/onselect-textarea.html
+/sdcard/android/layout_tests/fast/forms/textarea-initial-caret-position.html
+/sdcard/android/layout_tests/fast/forms/listbox-selection.html
+/sdcard/android/layout_tests/fast/css/variables/color-hex-test.html
+/sdcard/android/layout_tests/fast/css/dashboard-region-parser.html
+/sdcard/android/layout_tests/fast/css/text-align.html
+/sdcard/android/layout_tests/fast/css/hover-affects-child.html
+/sdcard/android/layout_tests/fast/css/html-attr-case-sensitivity.html
+/sdcard/android/layout_tests/fast/css/computed-style.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-transform.html
+/sdcard/android/layout_tests/fast/css/computed-style-without-renderer.html
+/sdcard/android/layout_tests/fast/css/invalid-percentage-property.html
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-iframe.html
+/sdcard/android/layout_tests/fast/parser/external-entities.xml
+/sdcard/android/layout_tests/fast/parser/script-tag-with-trailing-slash.html
+/sdcard/android/layout_tests/fast/parser/comment-in-iframe.html
+/sdcard/android/layout_tests/fast/parser/external-entities-in-xslt.xml
+/sdcard/android/layout_tests/fast/parser/xml-declaration-missing-ending-mark.html
+/sdcard/android/layout_tests/fast/parser/entity-end-script-tag.html
+/sdcard/android/layout_tests/fast/parser/tabindex-parsing.html
+/sdcard/android/layout_tests/fast/history/subframe-is-visited.html
+/sdcard/android/layout_tests/fast/history/window-open.html
+/sdcard/android/layout_tests/fast/history/history_reload.html
+/sdcard/android/layout_tests/fast/history/go-back-to-changed-name.html
+/sdcard/android/layout_tests/fast/loader/cancel-load-during-port-block-timer.html
+/sdcard/android/layout_tests/fast/loader/local-iFrame-source-from-local.html
+/sdcard/android/layout_tests/fast/loader/null-request-after-willSendRequest.html
+/sdcard/android/layout_tests/fast/loader/stop-provisional-loads.html
+/sdcard/android/layout_tests/fast/loader/xmlhttprequest-missing-file-exception.html
+/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash-2.html
+/sdcard/android/layout_tests/fast/loader/plain-text-document.html
+/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash.html
+/sdcard/android/layout_tests/fast/loader/frame-creation-removal.html
+/sdcard/android/layout_tests/fast/loader/local-image-from-local.html
+/sdcard/android/layout_tests/fast/loader/local-CSS-from-local.html
+/sdcard/android/layout_tests/fast/loader/local-JavaScript-from-local.html
+/sdcard/android/layout_tests/fast/loader/data-url-encoding-svg.html
+/sdcard/android/layout_tests/fast/loader/opaque-base-url.html
+/sdcard/android/layout_tests/fast/xsl/sort-locale.xml
+/sdcard/android/layout_tests/fast/xsl/transformToFragment-XML-declaration.html
+/sdcard/android/layout_tests/fast/xsl/extra-lf-at-end.html
+/sdcard/android/layout_tests/fast/xsl/xslt-doc-noenc.xml
+/sdcard/android/layout_tests/fast/xsl/import-after-comment.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-processor.html
+/sdcard/android/layout_tests/fast/xsl/sort-unicode.xml
+/sdcard/android/layout_tests/fast/xsl/default-html.html
+/sdcard/android/layout_tests/fast/xsl/nbsp-in-stylesheet.html
+/sdcard/android/layout_tests/fast/xsl/xslt-string-parameters.html
+/sdcard/android/layout_tests/fast/xsl/xslt-entity-enc.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-text.html
+/sdcard/android/layout_tests/fast/xsl/xslt-nested-stylesheets.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-url.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-doc-enc.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-recursion.xml
+/sdcard/android/layout_tests/fast/xsl/exslt-node-set.xml
+/sdcard/android/layout_tests/fast/xsl/subframe-location.html
+/sdcard/android/layout_tests/fast/xsl/xslt-second-level-import.xml
+/sdcard/android/layout_tests/fast/xsl/dtd-in-source-document.xml
+/sdcard/android/layout_tests/fast/xsl/mozilla-tests.xml
+/sdcard/android/layout_tests/fast/canvas/canvas-alphaImageData-behavior.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-non-invertible.html
+/sdcard/android/layout_tests/fast/canvas/pointInPath.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-infinity.html
+/sdcard/android/layout_tests/fast/canvas/toDataURL-supportedTypes.html
+/sdcard/android/layout_tests/fast/canvas/canvas-getImageData.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-skewed.html
+/sdcard/android/layout_tests/fast/canvas/canvas-longlived-context.html
+/sdcard/android/layout_tests/fast/canvas/canvas-save-restore-with-path.html
+/sdcard/android/layout_tests/fast/canvas/set-colors.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-nan.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-identity.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-multiply.html
+/sdcard/android/layout_tests/fast/frames/viewsource-empty-attribute-value.html
+/sdcard/android/layout_tests/fast/frames/frame-deep-nested-resize.html
+/sdcard/android/layout_tests/fast/frames/iframe-window-focus.html
+/sdcard/android/layout_tests/fast/frames/frameElement-widthheight.html
+/sdcard/android/layout_tests/fast/frames/removal-before-attach-crash.html
+/sdcard/android/layout_tests/fast/frames/frame-js-url-clientWidth.html
+/sdcard/android/layout_tests/fast/frames/frame-length-fractional.html
+/sdcard/android/layout_tests/fast/frames/frame-limit.html
+/sdcard/android/layout_tests/fast/frames/frame-display-none-focus.html
+/sdcard/android/layout_tests/fast/frames/iframe-name-and-id.html
+/sdcard/android/layout_tests/fast/reflections/teardown-crash.html
+/sdcard/android/layout_tests/fast/reflections/reflection-computed-style.html
+/sdcard/android/layout_tests/transforms/2d/transform-2d.html
+/sdcard/android/layout_tests/transforms/2d/compound-2d-transforms.html
+/sdcard/android/layout_tests/transforms/2d/transform-value-types.html
+/sdcard/android/layout_tests/transforms/2d/computed-style-origin.html
+/sdcard/android/layout_tests/transforms/2d/transform-accuracy.html
+/sdcard/android/layout_tests/wml/variable-reference-valid.html
+/sdcard/android/layout_tests/wml/go-task-get-method-external-deck-with-href.html
+/sdcard/android/layout_tests/wml/variable-reference-invalid-character.html
+/sdcard/android/layout_tests/wml/go-task-animation.html
+/sdcard/android/layout_tests/wml/go-task-get-method-external-deck.html
+/sdcard/android/layout_tests/wml/go-task-get-method-same-deck.html
+/sdcard/android/layout_tests/animations/animation-css-rule-types.html
+/sdcard/android/layout_tests/animations/animation-events-create.html
+/sdcard/android/layout_tests/animations/animation-start-event-destroy-renderer.html
+/sdcard/android/layout_tests/animations/combo-transform-translate+scale.html
+/sdcard/android/layout_tests/animations/simultaneous-start-transform.html
+/sdcard/android/layout_tests/animations/lineheight-animation.html
+/sdcard/android/layout_tests/animations/import.html
+/sdcard/android/layout_tests/animations/simultaneous-start-left.html
+/sdcard/android/layout_tests/animations/fill-unset-properties.html
+/sdcard/android/layout_tests/animations/keyframes-to-missing.html
+/sdcard/android/layout_tests/animations/multiple-keyframes.html
+/sdcard/android/layout_tests/animations/matrix-anim.html
+/sdcard/android/layout_tests/animations/keyframes-comma-separated.html
+/sdcard/android/layout_tests/animations/change-one-anim.html
+/sdcard/android/layout_tests/animations/keyframes-rule.html
+/sdcard/android/layout_tests/animations/generic-from-to.html
+/sdcard/android/layout_tests/animations/big-rotation.html
+/sdcard/android/layout_tests/animations/animation-controller-drt-api.html
+/sdcard/android/layout_tests/animations/keyframe-timing-functions.html
+/sdcard/android/layout_tests/animations/keyframes-from-missing.html
+/sdcard/android/layout_tests/animations/transition-and-animation-1.html
+/sdcard/android/layout_tests/animations/computed-style.html
+/sdcard/android/layout_tests/animations/animation-iteration-event-destroy-renderer.html
+/sdcard/android/layout_tests/animations/keyframes.html
+/sdcard/android/layout_tests/animations/multiple-animations.html
+/sdcard/android/layout_tests/animations/animation-end-event-destroy-renderer.html
+/sdcard/android/layout_tests/animations/change-keyframes-name.html
+/sdcard/android/layout_tests/animations/combo-transform-rotate+scale.html
+/sdcard/android/layout_tests/animations/change-keyframes.html
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/010.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/001.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/002.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/003.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/004.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/005.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/006.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/007.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/008.xml
+/sdcard/android/layout_tests/traversal/hixie-node-iterator/009.xml
+/sdcard/android/layout_tests/storage/domstorage/localstorage/index-get-and-set.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/onstorage-attribute-setattribute.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/clear.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/enumerate-storage.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/simple-usage.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/simple-events.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/onstorage-attribute-markup.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/iframe-events.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/delete-removal.html
+/sdcard/android/layout_tests/storage/domstorage/localstorage/window-open.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/index-get-and-set.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/onstorage-attribute-setattribute.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/clear.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/enumerate-storage.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/simple-usage.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/simple-events.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/onstorage-attribute-markup.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/iframe-events.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/delete-removal.html
+/sdcard/android/layout_tests/storage/domstorage/sessionstorage/window-open.html
+/sdcard/android/layout_tests/storage/domstorage/window-attributes-exist.html
+/sdcard/android/layout_tests/storage/open-database-empty-version.html
+/sdcard/android/layout_tests/storage/close-during-stress-test.html
+/sdcard/android/layout_tests/storage/execute-sql-args.html
+/sdcard/android/layout_tests/storage/quota-tracking.html
+/sdcard/android/layout_tests/storage/transaction_callback_exception_crash.html
+/sdcard/android/layout_tests/storage/multiple-databases-garbage-collection.html
+/sdcard/android/layout_tests/storage/empty-statement.html
+/sdcard/android/layout_tests/storage/multiple-transactions.html
+/sdcard/android/layout_tests/storage/success-callback.html
+/sdcard/android/layout_tests/storage/sql-data-types.html
+/sdcard/android/layout_tests/security/set-form-autocomplete-attribute.html
+/sdcard/android/layout_tests/security/autocomplete-cleared-on-back.html
+/sdcard/android/layout_tests/security/block-test.html
+/sdcard/android/layout_tests/transitions/transition-shorthand-delay.html
+/sdcard/android/layout_tests/transitions/transition-drt-api-delay.html
+/sdcard/android/layout_tests/transitions/opacity-transition-zindex.html
+/sdcard/android/layout_tests/transitions/shorthand-transitions.html
+/sdcard/android/layout_tests/transitions/hang-with-bad-transition-list.html
+/sdcard/android/layout_tests/transitions/zero-duration-in-list.html
+/sdcard/android/layout_tests/transitions/shorthand-border-transitions.html
+/sdcard/android/layout_tests/transitions/zero-duration-with-non-zero-delay-end.html
+/sdcard/android/layout_tests/transitions/repeated-firing-background-color.html
+/sdcard/android/layout_tests/transitions/start-transform-transition.html
diff --git a/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt b/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt
index c9e166c..eb5b6e0 100644
--- a/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt
+++ b/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt
@@ -1,3 +1,770 @@
+/sdcard/android/layout_tests/webarchive/loading/cache-expired-subresource.html
+/sdcard/android/layout_tests/webarchive/test-css-import.html
+/sdcard/android/layout_tests/webarchive/test-img-src.html
+/sdcard/android/layout_tests/webarchive/archive-empty-frame-dom.html
+/sdcard/android/layout_tests/webarchive/test-frameset.html
+/sdcard/android/layout_tests/webarchive/test-body-background.html
+/sdcard/android/layout_tests/webarchive/test-input-src.html
+/sdcard/android/layout_tests/webarchive/archive-empty-frame-source.html
+/sdcard/android/layout_tests/webarchive/doctype.html
+/sdcard/android/layout_tests/webarchive/test-css-url-resources-inline-styles.html
+/sdcard/android/layout_tests/webarchive/test-table-background.html
+/sdcard/android/layout_tests/webarchive/test-object-data.html
+/sdcard/android/layout_tests/webarchive/test-css-url-resources-in-stylesheets.html
+/sdcard/android/layout_tests/webarchive/archive-with-unencoded-url.html
+/sdcard/android/layout_tests/webarchive/test-link-href.html
+/sdcard/android/layout_tests/webarchive/test-duplicate-resources.html
+/sdcard/android/layout_tests/webarchive/test-xml-stylesheet.xml
+/sdcard/android/layout_tests/webarchive/test-td-background.html
+/sdcard/android/layout_tests/webarchive/test-script-src.html
+/sdcard/android/layout_tests/media/video-transformed.html
+/sdcard/android/layout_tests/media/video-display-toggle.html
+/sdcard/android/layout_tests/media/audio-controls-rendering.html
+/sdcard/android/layout_tests/media/video-controls-visible-audio-only.html
+/sdcard/android/layout_tests/media/video-zoom.html
+/sdcard/android/layout_tests/media/video-controls-rendering.html
+/sdcard/android/layout_tests/media/video-aspect-ratio.html
+/sdcard/android/layout_tests/media/video-layer-crash.html
+/sdcard/android/layout_tests/plugins/netscape-dom-access.html
+/sdcard/android/layout_tests/plugins/embed-attributes-style.html
+/sdcard/android/layout_tests/editing/input/emacs-ctrl-o.html
+/sdcard/android/layout_tests/editing/style/style-3681552-fix-001.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-013.html
+/sdcard/android/layout_tests/editing/style/style-3690704-fix.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-005.html
+/sdcard/android/layout_tests/editing/style/style-boundary-002.html
+/sdcard/android/layout_tests/editing/style/remove-underline-after-paragraph.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-009.html
+/sdcard/android/layout_tests/editing/style/5228141.html
+/sdcard/android/layout_tests/editing/style/block-style-004.html
+/sdcard/android/layout_tests/editing/style/apple-style-editable-mix.html
+/sdcard/android/layout_tests/editing/style/unbold-in-bold.html
+/sdcard/android/layout_tests/editing/style/typing-style-001.html
+/sdcard/android/layout_tests/editing/style/remove-underline-from-stylesheet.html
+/sdcard/android/layout_tests/editing/style/relative-font-size-change-004.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-010.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-002.html
+/sdcard/android/layout_tests/editing/style/style-3681552-fix-002.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-006.html
+/sdcard/android/layout_tests/editing/style/style-boundary-003.html
+/sdcard/android/layout_tests/editing/style/block-style-001.html
+/sdcard/android/layout_tests/editing/style/smoosh-styles-001.html
+/sdcard/android/layout_tests/editing/style/font-family-with-space.html
+/sdcard/android/layout_tests/editing/style/5084241.html
+/sdcard/android/layout_tests/editing/style/5065910.html
+/sdcard/android/layout_tests/editing/style/block-style-005.html
+/sdcard/android/layout_tests/editing/style/remove-underline-across-paragraph-in-bold.html
+/sdcard/android/layout_tests/editing/style/5279521.html
+/sdcard/android/layout_tests/editing/style/non-inheritable-styles.html
+/sdcard/android/layout_tests/editing/style/5046875-1.html
+/sdcard/android/layout_tests/editing/style/style-3998892-fix.html
+/sdcard/android/layout_tests/editing/style/remove-underline-in-bold.html
+/sdcard/android/layout_tests/editing/style/typing-style-002.html
+/sdcard/android/layout_tests/editing/style/relative-font-size-change-001.html
+/sdcard/android/layout_tests/editing/style/4916887.html
+/sdcard/android/layout_tests/editing/style/remove-underline-across-paragraph.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-011.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-003.html
+/sdcard/android/layout_tests/editing/style/remove-underline.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-007.html
+/sdcard/android/layout_tests/editing/style/style-boundary-004.html
+/sdcard/android/layout_tests/editing/style/5017613-1.html
+/sdcard/android/layout_tests/editing/style/block-style-002.html
+/sdcard/android/layout_tests/editing/style/smoosh-styles-002.html
+/sdcard/android/layout_tests/editing/style/block-style-006.html
+/sdcard/android/layout_tests/editing/style/fontsize-1.html
+/sdcard/android/layout_tests/editing/style/5046875-2.html
+/sdcard/android/layout_tests/editing/style/typing-style-003.html
+/sdcard/android/layout_tests/editing/style/relative-font-size-change-002.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-012.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-004.html
+/sdcard/android/layout_tests/editing/style/designmode.html
+/sdcard/android/layout_tests/editing/style/block-styles-007.html
+/sdcard/android/layout_tests/editing/style/style-boundary-001.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-008.html
+/sdcard/android/layout_tests/editing/style/style-boundary-005.html
+/sdcard/android/layout_tests/editing/style/underline.html
+/sdcard/android/layout_tests/editing/style/5017613-2.html
+/sdcard/android/layout_tests/editing/style/block-style-003.html
+/sdcard/android/layout_tests/editing/style/smoosh-styles-003.html
+/sdcard/android/layout_tests/editing/style/remove-underline-after-paragraph-in-bold.html
+/sdcard/android/layout_tests/editing/style/highlight.html
+/sdcard/android/layout_tests/editing/style/table-selection.html
+/sdcard/android/layout_tests/editing/style/relative-font-size-change-003.html
+/sdcard/android/layout_tests/editing/style/create-block-for-style-001.html
+/sdcard/android/layout_tests/editing/unsupported-content/table-delete-001.html
+/sdcard/android/layout_tests/editing/unsupported-content/table-type-after.html
+/sdcard/android/layout_tests/editing/unsupported-content/table-delete-002.html
+/sdcard/android/layout_tests/editing/unsupported-content/table-type-before.html
+/sdcard/android/layout_tests/editing/unsupported-content/table-delete-003.html
+/sdcard/android/layout_tests/editing/unsupported-content/list-delete-001.html
+/sdcard/android/layout_tests/editing/unsupported-content/list-type-after.html
+/sdcard/android/layout_tests/editing/unsupported-content/list-type-before.html
+/sdcard/android/layout_tests/editing/unsupported-content/list-delete-003.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-011.html
+/sdcard/android/layout_tests/editing/inserting/4960120-1.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-023.html
+/sdcard/android/layout_tests/editing/inserting/insert-paragraph-04.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-007.html
+/sdcard/android/layout_tests/editing/inserting/5058163-2.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-019.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-at-tabspan-003.html
+/sdcard/android/layout_tests/editing/inserting/5607069-2.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-quoted-003.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-003.html
+/sdcard/android/layout_tests/editing/inserting/4875189-1.html
+/sdcard/android/layout_tests/editing/inserting/typing-003.html
+/sdcard/android/layout_tests/editing/inserting/insert-3907422-fix.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-020.html
+/sdcard/android/layout_tests/editing/inserting/before-after-input-element.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-004.html
+/sdcard/android/layout_tests/editing/inserting/insert-paragraph-01.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-016.html
+/sdcard/android/layout_tests/editing/inserting/4959067.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-008.html
+/sdcard/android/layout_tests/editing/inserting/insert-text-at-tabspan-001.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-001.html
+/sdcard/android/layout_tests/editing/inserting/paragraph-separator-02.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-013.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-025.html
+/sdcard/android/layout_tests/editing/inserting/insert-3654864-fix.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-009.html
+/sdcard/android/layout_tests/editing/inserting/return-key-with-selection-002.html
+/sdcard/android/layout_tests/editing/inserting/editable-html-element.html
+/sdcard/android/layout_tests/editing/inserting/5418891.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-quoted-005.html
+/sdcard/android/layout_tests/editing/inserting/insert-tab-002.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-005.html
+/sdcard/android/layout_tests/editing/inserting/line-break.html
+/sdcard/android/layout_tests/editing/inserting/5549929-3.html
+/sdcard/android/layout_tests/editing/inserting/typing-tab-designmode-forms.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-010.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-022.html
+/sdcard/android/layout_tests/editing/inserting/insert-paragraph-03.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-006.html
+/sdcard/android/layout_tests/editing/inserting/5058163-1.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-018.html
+/sdcard/android/layout_tests/editing/inserting/paragraph-separator-in-table-2.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-at-tabspan-002.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-quoted-002.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-002.html
+/sdcard/android/layout_tests/editing/inserting/typing-002.html
+/sdcard/android/layout_tests/editing/inserting/insert-3800346-fix.html
+/sdcard/android/layout_tests/editing/inserting/insert-text-at-tabspan-003.html
+/sdcard/android/layout_tests/editing/inserting/typing-around-image-001.html
+/sdcard/android/layout_tests/editing/inserting/insert-text-with-newlines.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-003.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-015.html
+/sdcard/android/layout_tests/editing/inserting/insert-at-end-02.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-027.html
+/sdcard/android/layout_tests/editing/inserting/insert-3659587-fix.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-007.html
+/sdcard/android/layout_tests/editing/inserting/insert-tab-004.html
+/sdcard/android/layout_tests/editing/inserting/editable-inline-element.html
+/sdcard/android/layout_tests/editing/inserting/insert-3851164-fix.html
+/sdcard/android/layout_tests/editing/inserting/paragraph-separator-01.html
+/sdcard/android/layout_tests/editing/inserting/5156401-2.html
+/sdcard/android/layout_tests/editing/inserting/4960120-2.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-012.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-024.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-008.html
+/sdcard/android/layout_tests/editing/inserting/insert-paragraph-05.html
+/sdcard/android/layout_tests/editing/inserting/multiple-lines-selected.html
+/sdcard/android/layout_tests/editing/inserting/insert-3778059-fix.html
+/sdcard/android/layout_tests/editing/inserting/return-key-with-selection-001.html
+/sdcard/android/layout_tests/editing/inserting/5607069-3.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-quoted-004.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-004.html
+/sdcard/android/layout_tests/editing/inserting/insert-tab-001.html
+/sdcard/android/layout_tests/editing/inserting/4875189-2.html
+/sdcard/android/layout_tests/editing/inserting/5549929-2.html
+/sdcard/android/layout_tests/editing/inserting/editing-empty-divs.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-021.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-005.html
+/sdcard/android/layout_tests/editing/inserting/insert-paragraph-02.html
+/sdcard/android/layout_tests/editing/inserting/insert-3786362-fix.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-017.html
+/sdcard/android/layout_tests/editing/inserting/paragraph-separator-in-table-1.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-at-tabspan-001.html
+/sdcard/android/layout_tests/editing/inserting/insert-space-in-empty-doc.html
+/sdcard/android/layout_tests/editing/inserting/insert-after-delete-001.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-quoted-001.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-001.html
+/sdcard/android/layout_tests/editing/inserting/typing-001.html
+/sdcard/android/layout_tests/editing/inserting/4278698.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-009.html
+/sdcard/android/layout_tests/editing/inserting/insert-text-at-tabspan-002.html
+/sdcard/android/layout_tests/editing/inserting/5002441.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-002.html
+/sdcard/android/layout_tests/editing/inserting/paragraph-separator-03.html
+/sdcard/android/layout_tests/editing/inserting/12882.html
+/sdcard/android/layout_tests/editing/inserting/insert-3775316-fix.html
+/sdcard/android/layout_tests/editing/inserting/edited-whitespace-1.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-014.html
+/sdcard/android/layout_tests/editing/inserting/insert-at-end-01.html
+/sdcard/android/layout_tests/editing/inserting/redo.html
+/sdcard/android/layout_tests/editing/inserting/insert-div-026.html
+/sdcard/android/layout_tests/editing/inserting/4840662.html
+/sdcard/android/layout_tests/editing/inserting/typing-around-br-001.html
+/sdcard/android/layout_tests/editing/inserting/return-key-with-selection-003.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-quoted-006.html
+/sdcard/android/layout_tests/editing/inserting/insert-tab-003.html
+/sdcard/android/layout_tests/editing/inserting/insert-br-006.html
+/sdcard/android/layout_tests/editing/execCommand/5142012-1.html
+/sdcard/android/layout_tests/editing/execCommand/hilitecolor.html
+/sdcard/android/layout_tests/editing/execCommand/5120591.html
+/sdcard/android/layout_tests/editing/execCommand/format-block-with-braces.html
+/sdcard/android/layout_tests/editing/execCommand/4920742-1.html
+/sdcard/android/layout_tests/editing/execCommand/4924441.html
+/sdcard/android/layout_tests/editing/execCommand/create-list-with-hr.html
+/sdcard/android/layout_tests/editing/execCommand/5207369.html
+/sdcard/android/layout_tests/editing/execCommand/format-block-with-trailing-br.html
+/sdcard/android/layout_tests/editing/execCommand/4916583.html
+/sdcard/android/layout_tests/editing/execCommand/remove-formatting-2.html
+/sdcard/android/layout_tests/editing/execCommand/outdent-selection.html
+/sdcard/android/layout_tests/editing/execCommand/strikethroughSelection.html
+/sdcard/android/layout_tests/editing/execCommand/insert-list-with-id.html
+/sdcard/android/layout_tests/editing/execCommand/5432254-1.html
+/sdcard/android/layout_tests/editing/execCommand/5482023.html
+/sdcard/android/layout_tests/editing/execCommand/5062376.html
+/sdcard/android/layout_tests/editing/execCommand/4786404-1.html
+/sdcard/android/layout_tests/editing/execCommand/remove-formatting.html
+/sdcard/android/layout_tests/editing/execCommand/findString.html
+/sdcard/android/layout_tests/editing/execCommand/5142012-3.html
+/sdcard/android/layout_tests/editing/execCommand/5700414-1.html
+/sdcard/android/layout_tests/editing/execCommand/italicizeByCharacter.html
+/sdcard/android/layout_tests/editing/execCommand/switch-list-type.html
+/sdcard/android/layout_tests/editing/execCommand/create-list-from-range-selection.html
+/sdcard/android/layout_tests/editing/execCommand/5190926.html
+/sdcard/android/layout_tests/editing/execCommand/remove-list-1.html
+/sdcard/android/layout_tests/editing/execCommand/insertHorizontalRule.html
+/sdcard/android/layout_tests/editing/execCommand/paste-1.html
+/sdcard/android/layout_tests/editing/execCommand/nsresponder-outdent.html
+/sdcard/android/layout_tests/editing/execCommand/5080333-2.html
+/sdcard/android/layout_tests/editing/execCommand/5119244.html
+/sdcard/android/layout_tests/editing/execCommand/5049671.html
+/sdcard/android/layout_tests/editing/execCommand/4920488.html
+/sdcard/android/layout_tests/editing/execCommand/5164796.html
+/sdcard/android/layout_tests/editing/execCommand/nsresponder-indent.html
+/sdcard/android/layout_tests/editing/execCommand/indent-list-item.html
+/sdcard/android/layout_tests/editing/execCommand/insert-list-empty-div.html
+/sdcard/android/layout_tests/editing/execCommand/5138441.html
+/sdcard/android/layout_tests/editing/execCommand/4916402.html
+/sdcard/android/layout_tests/editing/execCommand/5481523.html
+/sdcard/android/layout_tests/editing/execCommand/print.html
+/sdcard/android/layout_tests/editing/execCommand/4641880-2.html
+/sdcard/android/layout_tests/editing/execCommand/4580583-2.html
+/sdcard/android/layout_tests/editing/execCommand/remove-list-item-1.html
+/sdcard/android/layout_tests/editing/execCommand/5569741.html
+/sdcard/android/layout_tests/editing/execCommand/findString-2.html
+/sdcard/android/layout_tests/editing/execCommand/modifyForeColorByCharacter.html
+/sdcard/android/layout_tests/editing/execCommand/5142012-2.html
+/sdcard/android/layout_tests/editing/execCommand/find-after-replace.html
+/sdcard/android/layout_tests/editing/execCommand/format-block.html
+/sdcard/android/layout_tests/editing/execCommand/5080333-1.html
+/sdcard/android/layout_tests/editing/execCommand/remove-list-from-range-selection.html
+/sdcard/android/layout_tests/editing/execCommand/remove-list-items.html
+/sdcard/android/layout_tests/editing/execCommand/5432254-2.html
+/sdcard/android/layout_tests/editing/execCommand/5144139-1.html
+/sdcard/android/layout_tests/editing/execCommand/5136770.html
+/sdcard/android/layout_tests/editing/execCommand/4916541.html
+/sdcard/android/layout_tests/editing/execCommand/4786404-2.html
+/sdcard/android/layout_tests/editing/execCommand/insertImage.html
+/sdcard/android/layout_tests/editing/execCommand/insert-list-and-stitch.html
+/sdcard/android/layout_tests/editing/execCommand/5573879.html
+/sdcard/android/layout_tests/editing/execCommand/5210032.html
+/sdcard/android/layout_tests/editing/execCommand/5700414-2.html
+/sdcard/android/layout_tests/editing/execCommand/boldSelection.html
+/sdcard/android/layout_tests/editing/execCommand/insertHTML.html
+/sdcard/android/layout_tests/editing/execCommand/4641880-1.html
+/sdcard/android/layout_tests/editing/execCommand/4747450.html
+/sdcard/android/layout_tests/editing/execCommand/4580583-1.html
+/sdcard/android/layout_tests/editing/execCommand/format-block-from-range-selection.html
+/sdcard/android/layout_tests/editing/execCommand/indent-empty-root.html
+/sdcard/android/layout_tests/editing/execCommand/indent-selection.html
+/sdcard/android/layout_tests/editing/execCommand/selectAll.html
+/sdcard/android/layout_tests/editing/execCommand/paste-2.html
+/sdcard/android/layout_tests/editing/pasteboard/subframe-dragndrop-1.html
+/sdcard/android/layout_tests/editing/pasteboard/innerText-inline-table.html
+/sdcard/android/layout_tests/editing/pasteboard/5156401-1.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-list-001.html
+/sdcard/android/layout_tests/editing/pasteboard/5032095.html
+/sdcard/android/layout_tests/editing/pasteboard/4242293-1.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-004.html
+/sdcard/android/layout_tests/editing/pasteboard/5247341.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-4035648-fix.html
+/sdcard/android/layout_tests/editing/pasteboard/4700297.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-003.html
+/sdcard/android/layout_tests/editing/pasteboard/drop-link.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-blockquote-into-blockquote-3.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-blockquote-into-blockquote.html
+/sdcard/android/layout_tests/editing/pasteboard/4944770-1.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-015.html
+/sdcard/android/layout_tests/editing/pasteboard/5075944.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-match-style-001.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-4039777-fix.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-3.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-007.html
+/sdcard/android/layout_tests/editing/pasteboard/5483567.html
+/sdcard/android/layout_tests/editing/pasteboard/7955.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-blockquote.html
+/sdcard/android/layout_tests/editing/pasteboard/testcase-9507.html
+/sdcard/android/layout_tests/editing/pasteboard/input-field-1.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-001.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-at-tabspan-001.html
+/sdcard/android/layout_tests/editing/pasteboard/interchange-newline-2.html
+/sdcard/android/layout_tests/editing/pasteboard/block-wrappers-necessary.html
+/sdcard/android/layout_tests/editing/pasteboard/4861080.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-009.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-after-delete.html
+/sdcard/android/layout_tests/editing/pasteboard/5478250.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-012.html
+/sdcard/android/layout_tests/editing/pasteboard/prevent-block-nesting-01.html
+/sdcard/android/layout_tests/editing/pasteboard/8145-2.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-borders.html
+/sdcard/android/layout_tests/editing/pasteboard/5027857.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-004.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-start-list.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-008.html
+/sdcard/android/layout_tests/editing/pasteboard/4806874.html
+/sdcard/android/layout_tests/editing/pasteboard/emacs-ctrl-a-k-y.html
+/sdcard/android/layout_tests/editing/pasteboard/bad-placeholder.html
+/sdcard/android/layout_tests/editing/pasteboard/displaced-placeholder.html
+/sdcard/android/layout_tests/editing/pasteboard/5387578.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-blockquote-1.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-010.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-006.html
+/sdcard/android/layout_tests/editing/pasteboard/5601583-1.html
+/sdcard/android/layout_tests/editing/pasteboard/4947130.html
+/sdcard/android/layout_tests/editing/pasteboard/pasting-tabs.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-after-delete-2.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-001.html
+/sdcard/android/layout_tests/editing/pasteboard/4076267-2.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-table-001.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-005.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-017.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-5.html
+/sdcard/android/layout_tests/editing/pasteboard/drop-text-without-selection.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-at-tabspan-003.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-003.html
+/sdcard/android/layout_tests/editing/pasteboard/drag-drop-modifies-page.html
+/sdcard/android/layout_tests/editing/pasteboard/emacs-ctrl-k-y-001.html
+/sdcard/android/layout_tests/editing/pasteboard/5071074.html
+/sdcard/android/layout_tests/editing/pasteboard/interchange-newline-4.html
+/sdcard/android/layout_tests/editing/pasteboard/styled-element-markup.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-4038267-fix.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-002.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-blockquote-into-blockquote-2.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-pre-002.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-014.html
+/sdcard/android/layout_tests/editing/pasteboard/drag-drop-dead-frame.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-2.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-006.html
+/sdcard/android/layout_tests/editing/pasteboard/5368833.html
+/sdcard/android/layout_tests/editing/pasteboard/select-element-1.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-blockquote-3.html
+/sdcard/android/layout_tests/editing/pasteboard/4641033.html
+/sdcard/android/layout_tests/editing/pasteboard/drag-image-to-contenteditable-in-iframe.html
+/sdcard/android/layout_tests/editing/pasteboard/interchange-newline-1.html
+/sdcard/android/layout_tests/editing/pasteboard/copy-paste-bidi.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-008.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-011.html
+/sdcard/android/layout_tests/editing/pasteboard/8145-1.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-003.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-table-003.html
+/sdcard/android/layout_tests/editing/pasteboard/5075944-3.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-007.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-TIFF.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-019.html
+/sdcard/android/layout_tests/editing/pasteboard/undoable-fragment-removes.html
+/sdcard/android/layout_tests/editing/pasteboard/nested-blocks-with-text-field.html
+/sdcard/android/layout_tests/editing/pasteboard/4989774.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-unrendered-select.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-005.html
+/sdcard/android/layout_tests/editing/pasteboard/emacs-cntl-y-001.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-after-delete-1.html
+/sdcard/android/layout_tests/editing/pasteboard/unrendered-br.html
+/sdcard/android/layout_tests/editing/pasteboard/4631972.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-004.html
+/sdcard/android/layout_tests/editing/pasteboard/quirks-mode-br-1.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-blockquote-into-blockquote-4.html
+/sdcard/android/layout_tests/editing/pasteboard/4944770-2.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-table-cells.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-016.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-match-style-002.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-4.html
+/sdcard/android/layout_tests/editing/pasteboard/drag-selected-image-to-contenteditable.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-008.html
+/sdcard/android/layout_tests/editing/pasteboard/3976872.html
+/sdcard/android/layout_tests/editing/pasteboard/pasting-object.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-list.html
+/sdcard/android/layout_tests/editing/pasteboard/copy-standalone-image.html
+/sdcard/android/layout_tests/editing/pasteboard/displaced-generic-placeholder.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-002.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-at-tabspan-002.html
+/sdcard/android/layout_tests/editing/pasteboard/interchange-newline-3.html
+/sdcard/android/layout_tests/editing/pasteboard/5071074-2.html
+/sdcard/android/layout_tests/editing/pasteboard/display-block-on-spans.html
+/sdcard/android/layout_tests/editing/pasteboard/4242293.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-001.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-pre-001.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-start-blockquote.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-1.html
+/sdcard/android/layout_tests/editing/pasteboard/8145-3.html
+/sdcard/android/layout_tests/editing/pasteboard/5006779.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-005.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-009.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-blockquote-2.html
+/sdcard/android/layout_tests/editing/pasteboard/merge-end-table.html
+/sdcard/android/layout_tests/editing/pasteboard/5065605.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-line-endings-007.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-010.html
+/sdcard/android/layout_tests/editing/pasteboard/5028447.html
+/sdcard/android/layout_tests/editing/pasteboard/nested-blocks-with-text-area.html
+/sdcard/android/layout_tests/editing/pasteboard/4076267-3.html
+/sdcard/android/layout_tests/editing/pasteboard/4076267.html
+/sdcard/android/layout_tests/editing/pasteboard/smart-paste-002.html
+/sdcard/android/layout_tests/editing/pasteboard/5075944-2.html
+/sdcard/android/layout_tests/editing/pasteboard/5134759.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-006.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-text-018.html
+/sdcard/android/layout_tests/editing/pasteboard/paste-RTFD.html
+/sdcard/android/layout_tests/editing/pasteboard/cut-text-001.html
+/sdcard/android/layout_tests/editing/selection/image-before-linebreak.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-9.html
+/sdcard/android/layout_tests/editing/selection/move-between-blocks-no-001.html
+/sdcard/android/layout_tests/editing/selection/fake-drag.html
+/sdcard/android/layout_tests/editing/selection/wrapped-line-caret-2.html
+/sdcard/android/layout_tests/editing/selection/5131716-3.html
+/sdcard/android/layout_tests/editing/selection/5081257-2.html
+/sdcard/android/layout_tests/editing/selection/3690703-2.html
+/sdcard/android/layout_tests/editing/selection/unrendered-002.html
+/sdcard/android/layout_tests/editing/selection/extend-by-character-005.html
+/sdcard/android/layout_tests/editing/selection/5354455-1.html
+/sdcard/android/layout_tests/editing/selection/caret-rtl-2.html
+/sdcard/android/layout_tests/editing/selection/paragraph-granularity.html
+/sdcard/android/layout_tests/editing/selection/expanding-selections2.html
+/sdcard/android/layout_tests/editing/selection/clear-selection.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-6.html
+/sdcard/android/layout_tests/editing/selection/display-table-text.html
+/sdcard/android/layout_tests/editing/selection/13804.html
+/sdcard/android/layout_tests/editing/selection/drag-in-iframe.html
+/sdcard/android/layout_tests/editing/selection/table-caret-2.html
+/sdcard/android/layout_tests/editing/selection/expanding-selections.html
+/sdcard/android/layout_tests/editing/selection/unrendered-space.html
+/sdcard/android/layout_tests/editing/selection/node-removal-1.html
+/sdcard/android/layout_tests/editing/selection/5240265.html
+/sdcard/android/layout_tests/editing/selection/select-all-005.html
+/sdcard/android/layout_tests/editing/selection/extend-by-character-002.html
+/sdcard/android/layout_tests/editing/selection/4932260-2.html
+/sdcard/android/layout_tests/editing/selection/5076323-3.html
+/sdcard/android/layout_tests/editing/selection/select-element-paragraph-boundary.html
+/sdcard/android/layout_tests/editing/selection/line-wrap-1.html
+/sdcard/android/layout_tests/editing/selection/replace-selection-1.html
+/sdcard/android/layout_tests/editing/selection/caret-rtl.html
+/sdcard/android/layout_tests/editing/selection/5109817.html
+/sdcard/android/layout_tests/editing/selection/extend-by-sentence-001.html
+/sdcard/android/layout_tests/editing/selection/3690719.html
+/sdcard/android/layout_tests/editing/selection/5136696.html
+/sdcard/android/layout_tests/editing/selection/editable-non-editable-crash.html
+/sdcard/android/layout_tests/editing/selection/4397952.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-3.html
+/sdcard/android/layout_tests/editing/selection/caret-and-focus-ring.html
+/sdcard/android/layout_tests/editing/selection/4895428-4.html
+/sdcard/android/layout_tests/editing/selection/replaced-boundaries-3.html
+/sdcard/android/layout_tests/editing/selection/4947387.html
+/sdcard/android/layout_tests/editing/selection/move-by-sentence-linebreak.html
+/sdcard/android/layout_tests/editing/selection/move-by-character-005.html
+/sdcard/android/layout_tests/editing/selection/select-from-textfield-outwards.html
+/sdcard/android/layout_tests/editing/selection/leave-requested-block.html
+/sdcard/android/layout_tests/editing/selection/select-all-002.html
+/sdcard/android/layout_tests/editing/selection/end-of-document.html
+/sdcard/android/layout_tests/editing/selection/selectNode.html
+/sdcard/android/layout_tests/editing/selection/editable-links.html
+/sdcard/android/layout_tests/editing/selection/unrendered-004.html
+/sdcard/android/layout_tests/editing/selection/7152-2.html
+/sdcard/android/layout_tests/editing/selection/5195166-1.html
+/sdcard/android/layout_tests/editing/selection/editable-html-element.html
+/sdcard/android/layout_tests/editing/selection/4895428-1.html
+/sdcard/android/layout_tests/editing/selection/4866671.html
+/sdcard/android/layout_tests/editing/selection/move-by-character-002.html
+/sdcard/android/layout_tests/editing/selection/extend-by-word-002.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-8.html
+/sdcard/android/layout_tests/editing/selection/wrapped-line-caret-1.html
+/sdcard/android/layout_tests/editing/selection/selection-actions.html
+/sdcard/android/layout_tests/editing/selection/14971.html
+/sdcard/android/layout_tests/editing/selection/5131716-2.html
+/sdcard/android/layout_tests/editing/selection/4402375.html
+/sdcard/android/layout_tests/editing/selection/unrendered-001.html
+/sdcard/android/layout_tests/editing/selection/move-3875641-fix.html
+/sdcard/android/layout_tests/editing/selection/5081257-1.html
+/sdcard/android/layout_tests/editing/selection/extend-by-character-004.html
+/sdcard/android/layout_tests/editing/selection/5099303.html
+/sdcard/android/layout_tests/editing/selection/contenteditable-click-inside.html
+/sdcard/android/layout_tests/editing/selection/move-by-line-002.html
+/sdcard/android/layout_tests/editing/selection/addRange.html
+/sdcard/android/layout_tests/editing/selection/select-missing-image.html
+/sdcard/android/layout_tests/editing/selection/selection-3748164-fix.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-5.html
+/sdcard/android/layout_tests/editing/selection/4983858.html
+/sdcard/android/layout_tests/editing/selection/move-by-sentence-001.html
+/sdcard/android/layout_tests/editing/selection/table-caret-1.html
+/sdcard/android/layout_tests/editing/selection/5007143.html
+/sdcard/android/layout_tests/editing/selection/fake-doubleclick.html
+/sdcard/android/layout_tests/editing/selection/move-by-word-001.html
+/sdcard/android/layout_tests/editing/selection/select-all-004.html
+/sdcard/android/layout_tests/editing/selection/extend-by-character-001.html
+/sdcard/android/layout_tests/editing/selection/4932260-1.html
+/sdcard/android/layout_tests/editing/selection/5076323-2.html
+/sdcard/android/layout_tests/editing/selection/5234383-2.html
+/sdcard/android/layout_tests/editing/selection/5057506.html
+/sdcard/android/layout_tests/editing/selection/focus_editable_html.html
+/sdcard/android/layout_tests/editing/selection/move-3875618-fix.html
+/sdcard/android/layout_tests/editing/selection/4818145.html
+/sdcard/android/layout_tests/editing/selection/move-backwords-by-word-001.html
+/sdcard/android/layout_tests/editing/selection/inline-table.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-2.html
+/sdcard/android/layout_tests/editing/selection/4895428-3.html
+/sdcard/android/layout_tests/editing/selection/replaced-boundaries-2.html
+/sdcard/android/layout_tests/editing/selection/move-by-character-004.html
+/sdcard/android/layout_tests/editing/selection/caret-before-select.html
+/sdcard/android/layout_tests/editing/selection/4889598.html
+/sdcard/android/layout_tests/editing/selection/select-all-001.html
+/sdcard/android/layout_tests/editing/selection/5131716-4.html
+/sdcard/android/layout_tests/editing/selection/3690703.html
+/sdcard/android/layout_tests/editing/selection/5333725.html
+/sdcard/android/layout_tests/editing/selection/unrendered-003.html
+/sdcard/android/layout_tests/editing/selection/extend-by-character-006.html
+/sdcard/android/layout_tests/editing/selection/7152-1.html
+/sdcard/android/layout_tests/editing/selection/5213963.html
+/sdcard/android/layout_tests/editing/selection/5354455-2.html
+/sdcard/android/layout_tests/editing/selection/selection-background.html
+/sdcard/android/layout_tests/editing/selection/iframe.html
+/sdcard/android/layout_tests/editing/selection/extend-by-word-001.html
+/sdcard/android/layout_tests/editing/selection/move-by-character-001.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-7.html
+/sdcard/android/layout_tests/editing/selection/doubleclick-crash.html
+/sdcard/android/layout_tests/editing/selection/table-caret-3.html
+/sdcard/android/layout_tests/editing/selection/5131716-1.html
+/sdcard/android/layout_tests/editing/selection/select-all-iframe.html
+/sdcard/android/layout_tests/editing/selection/node-removal-2.html
+/sdcard/android/layout_tests/editing/selection/drag-select-1.html
+/sdcard/android/layout_tests/editing/selection/select-all-006.html
+/sdcard/android/layout_tests/editing/selection/extend-by-character-003.html
+/sdcard/android/layout_tests/editing/selection/4932260-3.html
+/sdcard/android/layout_tests/editing/selection/4960116.html
+/sdcard/android/layout_tests/editing/selection/after-line-wrap.html
+/sdcard/android/layout_tests/editing/selection/line-wrap-2.html
+/sdcard/android/layout_tests/editing/selection/drag-to-contenteditable-iframe.html
+/sdcard/android/layout_tests/editing/selection/move-by-line-001.html
+/sdcard/android/layout_tests/editing/selection/selectNodeContents.html
+/sdcard/android/layout_tests/editing/selection/move-between-blocks-yes-001.html
+/sdcard/android/layout_tests/editing/selection/6476.html
+/sdcard/android/layout_tests/editing/selection/contains-boundaries.html
+/sdcard/android/layout_tests/editing/selection/click-start-of-line.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-4.html
+/sdcard/android/layout_tests/editing/selection/focus-body.html
+/sdcard/android/layout_tests/editing/selection/triple-click-in-pre.html
+/sdcard/android/layout_tests/editing/selection/move-past-trailing-space.html
+/sdcard/android/layout_tests/editing/selection/inline-closest-leaf-child.html
+/sdcard/android/layout_tests/editing/selection/5007143-2.html
+/sdcard/android/layout_tests/editing/selection/designmode-no-caret.html
+/sdcard/android/layout_tests/editing/selection/select-all-003.html
+/sdcard/android/layout_tests/editing/selection/5076323-1.html
+/sdcard/android/layout_tests/editing/selection/5234383-1.html
+/sdcard/android/layout_tests/editing/selection/5057506-2.html
+/sdcard/android/layout_tests/editing/selection/5232159.html
+/sdcard/android/layout_tests/editing/selection/4975120.html
+/sdcard/android/layout_tests/editing/selection/4960137.html
+/sdcard/android/layout_tests/editing/selection/unrendered-005.html
+/sdcard/android/layout_tests/editing/selection/5195166-2.html
+/sdcard/android/layout_tests/editing/selection/contenteditable-click-outside.html
+/sdcard/android/layout_tests/editing/selection/previous-line-position.html
+/sdcard/android/layout_tests/editing/selection/mixed-editability-1.html
+/sdcard/android/layout_tests/editing/selection/select-box.html
+/sdcard/android/layout_tests/editing/selection/4895428-2.html
+/sdcard/android/layout_tests/editing/selection/replaced-boundaries-1.html
+/sdcard/android/layout_tests/editing/selection/4776665.html
+/sdcard/android/layout_tests/editing/selection/move-by-character-003.html
+/sdcard/android/layout_tests/editing/selection/word-granularity.html
+/sdcard/android/layout_tests/editing/selection/move-by-character-6.html
+/sdcard/android/layout_tests/editing/undo/undo-misspellings.html
+/sdcard/android/layout_tests/editing/undo/undo-combined-delete.html
+/sdcard/android/layout_tests/editing/undo/undo-delete-boundary.html
+/sdcard/android/layout_tests/editing/undo/undo-forward-delete-boundary.html
+/sdcard/android/layout_tests/editing/undo/4063751.html
+/sdcard/android/layout_tests/editing/undo/redo-typing-001.html
+/sdcard/android/layout_tests/editing/undo/5378473.html
+/sdcard/android/layout_tests/editing/undo/undo-combined-delete-boundary.html
+/sdcard/android/layout_tests/editing/undo/undo-delete.html
+/sdcard/android/layout_tests/editing/undo/undo-forward-delete.html
+/sdcard/android/layout_tests/editing/undo/undo-typing-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-3608462-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-image-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-3928305-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-012.html
+/sdcard/android/layout_tests/editing/deleting/5115601.html
+/sdcard/android/layout_tests/editing/deleting/deletionUI-single-instance.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-contents-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-024.html
+/sdcard/android/layout_tests/editing/deleting/delete-after-span-ws-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-011.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-008.html
+/sdcard/android/layout_tests/editing/deleting/delete-listitem-001.html
+/sdcard/android/layout_tests/editing/deleting/5300379.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-007.html
+/sdcard/android/layout_tests/editing/deleting/5433862-2.html
+/sdcard/android/layout_tests/editing/deleting/5026848-1.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-012.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-008.html
+/sdcard/android/layout_tests/editing/deleting/5206311-2.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-start-or-end.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-021.html
+/sdcard/android/layout_tests/editing/deleting/delete-ws-fixup-004.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-005.html
+/sdcard/android/layout_tests/editing/deleting/delete-select-all-003.html
+/sdcard/android/layout_tests/editing/deleting/smart-delete-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-017.html
+/sdcard/android/layout_tests/editing/deleting/table-cells.html
+/sdcard/android/layout_tests/editing/deleting/5156801-2.html
+/sdcard/android/layout_tests/editing/deleting/delete-leading-ws-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-004.html
+/sdcard/android/layout_tests/editing/deleting/delete-3857753-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-3959464-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-016.html
+/sdcard/android/layout_tests/editing/deleting/delete-trailing-ws-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-005.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-008.html
+/sdcard/android/layout_tests/editing/deleting/delete-tab-004.html
+/sdcard/android/layout_tests/editing/deleting/merge-whitespace-pre.html
+/sdcard/android/layout_tests/editing/deleting/delete-ws-fixup-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-end-ws-002.html
+/sdcard/android/layout_tests/editing/deleting/merge-unrendered-space.html
+/sdcard/android/layout_tests/editing/deleting/delete-by-word-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-image-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-selection-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-014.html
+/sdcard/android/layout_tests/editing/deleting/merge-different-styles.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-contents-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-after-span-ws-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-013.html
+/sdcard/android/layout_tests/editing/deleting/merge-into-empty-block-1.html
+/sdcard/android/layout_tests/editing/deleting/5156801.html
+/sdcard/android/layout_tests/editing/deleting/delete-3865854-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-009.html
+/sdcard/android/layout_tests/editing/deleting/5026848-3.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-005.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-tab-001.html
+/sdcard/android/layout_tests/editing/deleting/4866671.html
+/sdcard/android/layout_tests/editing/deleting/whitespace-pre-1.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-table.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-011.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-023.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-010.html
+/sdcard/android/layout_tests/editing/deleting/5032066.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-007.html
+/sdcard/android/layout_tests/editing/deleting/smart-delete-004.html
+/sdcard/android/layout_tests/editing/deleting/5144139-2.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-019.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-006.html
+/sdcard/android/layout_tests/editing/deleting/5126166.html
+/sdcard/android/layout_tests/editing/deleting/delete-to-end-of-paragraph.html
+/sdcard/android/layout_tests/editing/deleting/5408255.html
+/sdcard/android/layout_tests/editing/deleting/5099303.html
+/sdcard/android/layout_tests/editing/deleting/4845371.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-002.html
+/sdcard/android/layout_tests/editing/deleting/4922367.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-011.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-007.html
+/sdcard/android/layout_tests/editing/deleting/move-nodes-001.html
+/sdcard/android/layout_tests/editing/deleting/merge-no-br.html
+/sdcard/android/layout_tests/editing/deleting/delete-3800834-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-4038408-fix.html
+/sdcard/android/layout_tests/editing/deleting/5206311-1.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-020.html
+/sdcard/android/layout_tests/editing/deleting/delete-ws-fixup-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-004.html
+/sdcard/android/layout_tests/editing/deleting/smart-delete-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-to-select-table.html
+/sdcard/android/layout_tests/editing/deleting/delete-select-all-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-contiguous-ws-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-016.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-015.html
+/sdcard/android/layout_tests/editing/deleting/5390681.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-011.html
+/sdcard/android/layout_tests/editing/deleting/forward-delete.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-007.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-004.html
+/sdcard/android/layout_tests/editing/deleting/delete-tab-003.html
+/sdcard/android/layout_tests/editing/deleting/collapse-whitespace-3587601-fix.html
+/sdcard/android/layout_tests/editing/deleting/pruning-after-merge-2.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-end-ws-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-by-word-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-image-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-013.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-contents-002.html
+/sdcard/android/layout_tests/editing/deleting/paragraph-in-preserveNewline.html
+/sdcard/android/layout_tests/editing/deleting/delete-after-span-ws-002.html
+/sdcard/android/layout_tests/editing/deleting/5272440.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-012.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-009.html
+/sdcard/android/layout_tests/editing/deleting/delete-listitem-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-character-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-008.html
+/sdcard/android/layout_tests/editing/deleting/5483370.html
+/sdcard/android/layout_tests/editing/deleting/5026848-2.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-004.html
+/sdcard/android/layout_tests/editing/deleting/5091898.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-009.html
+/sdcard/android/layout_tests/editing/deleting/transpose-empty.html
+/sdcard/android/layout_tests/editing/deleting/merge-endOfParagraph.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-010.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-022.html
+/sdcard/android/layout_tests/editing/deleting/delete-3775172-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-mixed-editable-content-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-006.html
+/sdcard/android/layout_tests/editing/deleting/smart-delete-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-018.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-005.html
+/sdcard/android/layout_tests/editing/deleting/delete-first-list-item.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-017.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-trailing-ws-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-010.html
+/sdcard/android/layout_tests/editing/deleting/delete-and-undo.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-006.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-009.html
+/sdcard/android/layout_tests/editing/deleting/delete-hr.html
+/sdcard/android/layout_tests/editing/deleting/4875189.html
+/sdcard/android/layout_tests/editing/deleting/delete-4083333-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-3608445-fix.html
+/sdcard/android/layout_tests/editing/deleting/delete-ws-fixup-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-image-004.html
+/sdcard/android/layout_tests/editing/deleting/delete-select-all-001.html
+/sdcard/android/layout_tests/editing/deleting/delete-block-merge-contents-015.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-002.html
+/sdcard/android/layout_tests/editing/deleting/delete-line-014.html
+/sdcard/android/layout_tests/editing/deleting/merge-into-empty-block-2.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-010.html
+/sdcard/android/layout_tests/editing/deleting/5390681-2.html
+/sdcard/android/layout_tests/editing/deleting/5369009.html
+/sdcard/android/layout_tests/editing/deleting/delete-br-003.html
+/sdcard/android/layout_tests/editing/deleting/delete-at-paragraph-boundaries-006.html
+/sdcard/android/layout_tests/editing/deleting/delete-tab-002.html
+/sdcard/android/layout_tests/editing/deleting/list-item-1.html
+/sdcard/android/layout_tests/editing/deleting/5168598.html
+/sdcard/android/layout_tests/editing/deleting/delete-3608430-fix.html
+/sdcard/android/layout_tests/editing/spelling/spelling.html
+/sdcard/android/layout_tests/editing/spelling/inline_spelling_markers.html
+/sdcard/android/layout_tests/printing/media-queries-print.html
/sdcard/android/layout_tests/fast/media/mq-relative-constraints-05.html
/sdcard/android/layout_tests/fast/media/mq-grid-02.html
/sdcard/android/layout_tests/fast/media/mq-compound-query-02.html
@@ -144,6 +911,7 @@
/sdcard/android/layout_tests/fast/dynamic/014.html
/sdcard/android/layout_tests/fast/dynamic/006.html
/sdcard/android/layout_tests/fast/dynamic/flash-replacement-test.html
+/sdcard/android/layout_tests/fast/dynamic/insertAdjacentElement.html
/sdcard/android/layout_tests/fast/dynamic/insert-before-table-part-in-continuation.html
/sdcard/android/layout_tests/fast/dynamic/staticY.html
/sdcard/android/layout_tests/fast/dynamic/anonymous-block-orphaned-lines.html
@@ -306,6 +1074,7 @@
/sdcard/android/layout_tests/fast/encoding/utf-16-big-endian.html
/sdcard/android/layout_tests/fast/encoding/xmacroman-encoding-test.html
/sdcard/android/layout_tests/fast/encoding/invalid-UTF-8.html
+/sdcard/android/layout_tests/fast/multicol/float-avoidance.html
/sdcard/android/layout_tests/fast/multicol/negativeColumnWidth.html
/sdcard/android/layout_tests/fast/multicol/column-rules.html
/sdcard/android/layout_tests/fast/multicol/zeroColumnCount.html
@@ -345,7 +1114,6 @@
/sdcard/android/layout_tests/fast/css-generated-content/007.html
/sdcard/android/layout_tests/fast/css-generated-content/009.html
/sdcard/android/layout_tests/fast/css-generated-content/wbr-with-before-content.html
-/sdcard/android/layout_tests/fast/workers/stress-js-execution.html : has expected results
/sdcard/android/layout_tests/fast/lists/decimal-leading-zero.html
/sdcard/android/layout_tests/fast/lists/ol-display-types.html
/sdcard/android/layout_tests/fast/lists/li-style-alpha-huge-value-crash.html
@@ -446,7 +1214,6 @@
/sdcard/android/layout_tests/fast/selectors/044.html
/sdcard/android/layout_tests/fast/selectors/008.html
/sdcard/android/layout_tests/fast/selectors/072.html
-/sdcard/android/layout_tests/fast/selectors/lang-inheritance.html : has expected results
/sdcard/android/layout_tests/fast/selectors/064.html
/sdcard/android/layout_tests/fast/selectors/056.html
/sdcard/android/layout_tests/fast/selectors/018b.html
@@ -463,8 +1230,6 @@
/sdcard/android/layout_tests/fast/selectors/077b.html
/sdcard/android/layout_tests/fast/selectors/177b.html
/sdcard/android/layout_tests/fast/selectors/169a.html
-/sdcard/android/layout_tests/fast/selectors/lang-vs-xml-lang.html : has expected results
-/sdcard/android/layout_tests/fast/selectors/lang-inheritance2.html : has expected results
/sdcard/android/layout_tests/fast/selectors/001.html
/sdcard/android/layout_tests/fast/selectors/021.html
/sdcard/android/layout_tests/fast/selectors/unqualified-hover-quirks.html
@@ -563,19 +1328,13 @@
/sdcard/android/layout_tests/fast/overflow/hidden-scrollbar-resize.html
/sdcard/android/layout_tests/fast/events/autoscroll.html
/sdcard/android/layout_tests/fast/events/5056619.html
-/sdcard/android/layout_tests/fast/events/attempt-scroll-with-no-scrollbars.html : has expected results
/sdcard/android/layout_tests/fast/events/updateLayoutForHitTest.html
/sdcard/android/layout_tests/fast/events/label-focus.html
-/sdcard/android/layout_tests/fast/events/context-onmousedown-event.html : has expected results
-/sdcard/android/layout_tests/fast/events/onsubmit-bubbling.html : has expected results
/sdcard/android/layout_tests/fast/events/onloadFrameCrash.html
/sdcard/android/layout_tests/fast/events/event-listener-on-link.html
/sdcard/android/layout_tests/fast/events/keydown-1.html
/sdcard/android/layout_tests/fast/events/onload-re-entry.html
/sdcard/android/layout_tests/fast/events/standalone-image-drag-to-editable.html
-/sdcard/android/layout_tests/fast/events/pointer-events.html : has expected results
-/sdcard/android/layout_tests/fast/events/pointer-events-2.html : has expected results
-/sdcard/android/layout_tests/fast/events/nested-window-event.html : has expected results
/sdcard/android/layout_tests/fast/events/focusingUnloadedFrame.html
/sdcard/android/layout_tests/fast/events/event-sender-mouse-moved.html
/sdcard/android/layout_tests/fast/events/mouseout-dead-node.html
@@ -655,6 +1414,8 @@
/sdcard/android/layout_tests/fast/box-shadow/border-radius-big.html
/sdcard/android/layout_tests/fast/box-shadow/basic-shadows.html
/sdcard/android/layout_tests/fast/js/exception-linenums-in-html-3.html
+/sdcard/android/layout_tests/fast/js/missing-style-end-tag-js.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/010.html
/sdcard/android/layout_tests/fast/body-propagation/background-image/001.html
/sdcard/android/layout_tests/fast/body-propagation/background-image/002.html
/sdcard/android/layout_tests/fast/body-propagation/background-image/003.html
@@ -698,21 +1459,13 @@
/sdcard/android/layout_tests/fast/dom/HTMLTableElement/colSpan.html
/sdcard/android/layout_tests/fast/dom/HTMLTableElement/createCaption.html
/sdcard/android/layout_tests/fast/dom/HTMLDocument/frameless-location-bugzilla10837.html
-/sdcard/android/layout_tests/fast/dom/Document/early-document-access.html : has expected results
/sdcard/android/layout_tests/fast/dom/Element/null-offset-parent.html
/sdcard/android/layout_tests/fast/dom/Element/class-attribute-whitespace.html
/sdcard/android/layout_tests/fast/dom/HTMLLinkElement/pending-stylesheet-count.html
/sdcard/android/layout_tests/fast/dom/HTMLStyleElement/insert-parser-generated.html
/sdcard/android/layout_tests/fast/dom/HTMLInputElement/input-image-alt-text.html
-/sdcard/android/layout_tests/fast/dom/Window/timeout-released-on-close.html : has expected results
/sdcard/android/layout_tests/fast/dom/Window/open-existing-pop-up-blocking.html
-/sdcard/android/layout_tests/fast/dom/Window/global-opener-function.html : has expected results
-/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing.html : has expected results
-/sdcard/android/layout_tests/fast/dom/Window/closure-access-after-navigation-window.html : has expected results
-/sdcard/android/layout_tests/fast/dom/Window/remove-timeout-crash.html : has expected results
-/sdcard/android/layout_tests/fast/dom/Window/window-special-properties.html : has expected results
-/sdcard/android/layout_tests/fast/dom/Window/timeout-callback-scope.html : has expected results
-/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing-name.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/btoa-pnglet.html
/sdcard/android/layout_tests/fast/dom/HTMLObjectElement/vspace-hspace-as-number.html
/sdcard/android/layout_tests/fast/dom/HTMLElement/bdo.html
/sdcard/android/layout_tests/fast/dom/Range/surroundContents-1.html
@@ -742,10 +1495,7 @@
/sdcard/android/layout_tests/fast/dom/inner-text.html
/sdcard/android/layout_tests/fast/dom/isindex-002.html
/sdcard/android/layout_tests/fast/dom/outerText.html
-/sdcard/android/layout_tests/fast/dom/setAttributeNS.html : has expected results
-/sdcard/android/layout_tests/fast/dom/anchor-toString.html : has expected results
-/sdcard/android/layout_tests/fast/dom/documenturi-affects-relative-paths.html : has expected results
-/sdcard/android/layout_tests/fast/dom/setAttribute-using-initial-input-value.html : has expected results
+/sdcard/android/layout_tests/fast/dom/row-inner-text.html
/sdcard/android/layout_tests/fast/dom/blur-contenteditable.html
/sdcard/android/layout_tests/fast/dom/setPrimitiveValue.html
/sdcard/android/layout_tests/fast/dom/delete-contents.html
@@ -756,11 +1506,13 @@
/sdcard/android/layout_tests/fast/dom/comment-not-documentElement.html
/sdcard/android/layout_tests/fast/dom/clone-node-dynamic-style.html
/sdcard/android/layout_tests/fast/dom/css-mediarule-insertRule-update.html
-/sdcard/android/layout_tests/fast/dom/set-frame-src-while-running-script-in-frame.html : has expected results
+/sdcard/android/layout_tests/fast/dom/css-insert-import-rule.html
/sdcard/android/layout_tests/fast/dom/stripNullFromTextNodes.html
-/sdcard/android/layout_tests/fast/dom/null-document-location-put-crash.html : has expected results
-/sdcard/android/layout_tests/fast/dom/document-scripts.html : has expected results
-/sdcard/android/layout_tests/fast/invalid/test-case-tr-th-td-should-not-close-dl-list.html : has expected results
+/sdcard/android/layout_tests/fast/gradients/generated-gradients.html
+/sdcard/android/layout_tests/fast/gradients/list-item-gradient.html
+/sdcard/android/layout_tests/fast/gradients/border-image-gradient-sides-and-corners.html
+/sdcard/android/layout_tests/fast/gradients/simple-gradients.html
+/sdcard/android/layout_tests/fast/gradients/border-image-gradient.html
/sdcard/android/layout_tests/fast/invalid/table-inside-stray-table-content.html
/sdcard/android/layout_tests/fast/invalid/010.html
/sdcard/android/layout_tests/fast/invalid/002.html
@@ -801,14 +1553,14 @@
/sdcard/android/layout_tests/fast/forms/plaintext-mode-2.html
/sdcard/android/layout_tests/fast/forms/input-double-click-selection-gap-bug.html
/sdcard/android/layout_tests/fast/forms/preserveFormDuringResidualStyle.html
+/sdcard/android/layout_tests/fast/forms/search-rtl.html
/sdcard/android/layout_tests/fast/forms/select-change-popup-to-listbox.html
/sdcard/android/layout_tests/fast/forms/input-text-maxlength.html
/sdcard/android/layout_tests/fast/forms/blankbuttons.html
/sdcard/android/layout_tests/fast/forms/password-placeholder-text-security.html
/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label05.html
/sdcard/android/layout_tests/fast/forms/visual-hebrew-text-field.html
-/sdcard/android/layout_tests/fast/forms/textarea-trailing-newline.html : has expected results
-/sdcard/android/layout_tests/fast/forms/legend-access-key.html : has expected results
+/sdcard/android/layout_tests/fast/forms/input-text-option-delete.html
/sdcard/android/layout_tests/fast/forms/textfield-overflow.html
/sdcard/android/layout_tests/fast/forms/005.html
/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label02.html
@@ -828,13 +1580,13 @@
/sdcard/android/layout_tests/fast/forms/option-text-clip.html
/sdcard/android/layout_tests/fast/forms/textfield-drag-into-disabled.html
/sdcard/android/layout_tests/fast/forms/input-text-paste-maxlength.html
-/sdcard/android/layout_tests/fast/forms/tabs-with-modifiers.html : has expected results
-/sdcard/android/layout_tests/fast/forms/saved-state-adoptNode-crash.html : has expected results
+/sdcard/android/layout_tests/fast/forms/formmove.html
+/sdcard/android/layout_tests/fast/forms/select-display-none-style-resolve.html
/sdcard/android/layout_tests/fast/forms/input-readonly-autoscroll.html
/sdcard/android/layout_tests/fast/forms/thumbslider-no-parent-slider.html
/sdcard/android/layout_tests/fast/forms/textfield-outline.html
/sdcard/android/layout_tests/fast/forms/button-text-transform.html
-/sdcard/android/layout_tests/fast/forms/radio-check-click-and-drag.html : has expected results
+/sdcard/android/layout_tests/fast/forms/listbox-clip.html
/sdcard/android/layout_tests/fast/forms/textarea-scroll-height.html
/sdcard/android/layout_tests/fast/forms/button-table-styles.html
/sdcard/android/layout_tests/fast/forms/textarea-setinnerhtml.html
@@ -842,14 +1594,16 @@
/sdcard/android/layout_tests/fast/forms/box-shadow-override.html
/sdcard/android/layout_tests/fast/forms/button-cannot-be-nested.html
/sdcard/android/layout_tests/fast/forms/input-type-change.html
+/sdcard/android/layout_tests/fast/forms/searchfield-heights.html
/sdcard/android/layout_tests/fast/forms/checkbox-radio-onchange.html
/sdcard/android/layout_tests/fast/forms/input-spaces.html
-/sdcard/android/layout_tests/fast/forms/dragging-to-file-input.html : has expected results
/sdcard/android/layout_tests/fast/forms/menulist-option-wrap.html
+/sdcard/android/layout_tests/fast/forms/select-empty-option-height.html
+/sdcard/android/layout_tests/fast/forms/textarea-scrollbar.html
/sdcard/android/layout_tests/fast/forms/float-before-fieldset.html
/sdcard/android/layout_tests/fast/forms/radio_checked.html
/sdcard/android/layout_tests/fast/forms/minWidthPercent.html
-/sdcard/android/layout_tests/fast/forms/form-post-urlencoded.html : has expected results
+/sdcard/android/layout_tests/fast/forms/input-appearance-focus.html
/sdcard/android/layout_tests/fast/forms/input-value.html
/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label06.html
/sdcard/android/layout_tests/fast/forms/placeholder-pseudo-style.html
@@ -868,11 +1622,16 @@
/sdcard/android/layout_tests/fast/forms/input-text-click-outside.html
/sdcard/android/layout_tests/fast/forms/input-baseline.html
/sdcard/android/layout_tests/fast/forms/targeted-frame-submission.html
+/sdcard/android/layout_tests/fast/forms/input-text-scroll-left-on-blur.html
+/sdcard/android/layout_tests/fast/forms/form-element-geometry.html
/sdcard/android/layout_tests/fast/forms/input-table.html
+/sdcard/android/layout_tests/fast/forms/textarea-scrolled-type.html
/sdcard/android/layout_tests/fast/forms/select-change-listbox-to-popup.html
/sdcard/android/layout_tests/fast/forms/select-align.html
/sdcard/android/layout_tests/fast/forms/radio_checked_dynamic.html
/sdcard/android/layout_tests/fast/forms/select-writing-direction-natural.html
+/sdcard/android/layout_tests/fast/forms/search-cancel-button-style-sharing.html
+/sdcard/android/layout_tests/fast/forms/tabbing-input-iframe.html
/sdcard/android/layout_tests/fast/forms/hidden-input-file.html
/sdcard/android/layout_tests/fast/forms/menulist-deselect-update.html
/sdcard/android/layout_tests/fast/forms/button-sizes.html
@@ -899,9 +1658,11 @@
/sdcard/android/layout_tests/fast/forms/listbox-selection-2.html
/sdcard/android/layout_tests/fast/forms/input-readonly-empty.html
/sdcard/android/layout_tests/fast/forms/input-align-image.html
-/sdcard/android/layout_tests/fast/forms/input-selection-hidden.html : has expected results
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label07.html
/sdcard/android/layout_tests/fast/forms/option-index.html
+/sdcard/android/layout_tests/fast/forms/menulist-clip.html
/sdcard/android/layout_tests/fast/forms/indeterminate.html
+/sdcard/android/layout_tests/fast/forms/search-display-none-cancel-button.html
/sdcard/android/layout_tests/fast/forms/negativeLineHeight.html
/sdcard/android/layout_tests/fast/forms/007.html
/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label04.html
@@ -916,10 +1677,9 @@
/sdcard/android/layout_tests/fast/forms/search-placeholder-value-changed.html
/sdcard/android/layout_tests/fast/forms/input-field-text-truncated.html
/sdcard/android/layout_tests/fast/forms/floating-textfield-relayout.html
-/sdcard/android/layout_tests/fast/forms/add-remove-form-elements-stress-test.html : has expected results
/sdcard/android/layout_tests/fast/forms/button-inner-block-reuse.html
/sdcard/android/layout_tests/fast/forms/input-type-text-min-width.html
-/sdcard/android/layout_tests/fast/forms/onchange-enter-submit.html : has expected results
+/sdcard/android/layout_tests/fast/forms/001.html
/sdcard/android/layout_tests/fast/forms/slider-thumb-shared-style.html
/sdcard/android/layout_tests/fast/forms/option-script.html
/sdcard/android/layout_tests/fast/forms/input-paste-undo.html
@@ -934,6 +1694,7 @@
/sdcard/android/layout_tests/fast/forms/button-submit.html
/sdcard/android/layout_tests/fast/forms/disabled-select-change-index.html
/sdcard/android/layout_tests/fast/forms/formmove3.html
+/sdcard/android/layout_tests/fast/forms/form-hides-table.html
/sdcard/android/layout_tests/fast/forms/listbox-width-change.html
/sdcard/android/layout_tests/fast/forms/input-text-self-emptying-click.html
/sdcard/android/layout_tests/fast/forms/input-appearance-bkcolor.html
@@ -941,7 +1702,7 @@
/sdcard/android/layout_tests/fast/forms/search-transformed.html
/sdcard/android/layout_tests/fast/forms/image-border.html
/sdcard/android/layout_tests/fast/forms/encoding-test.html
-/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-mouse.html : has expected results
+/sdcard/android/layout_tests/fast/forms/control-clip.html
/sdcard/android/layout_tests/fast/compact/001.html
/sdcard/android/layout_tests/fast/compact/002.html
/sdcard/android/layout_tests/fast/compact/003.html
@@ -1138,7 +1899,6 @@
/sdcard/android/layout_tests/fast/css/first-letter-skip-out-of-flow.html
/sdcard/android/layout_tests/fast/css/font-face-multiple-remote-sources.html
/sdcard/android/layout_tests/fast/css/hover-subselector.html
-/sdcard/android/layout_tests/fast/css/text-align.html : has expected results
/sdcard/android/layout_tests/fast/css/margin-bottom-form-element-strict.html
/sdcard/android/layout_tests/fast/css/shadow-multiple.html
/sdcard/android/layout_tests/fast/css/import_with_baseurl.html
@@ -1185,6 +1945,7 @@
/sdcard/android/layout_tests/fast/css/zoom-property-parsing.html
/sdcard/android/layout_tests/fast/css/style-outside-head.html
/sdcard/android/layout_tests/fast/css/first-letter-capitalized.html
+/sdcard/android/layout_tests/fast/css/font-face-locally-installed.html
/sdcard/android/layout_tests/fast/css/word-space-extra.html
/sdcard/android/layout_tests/fast/css/first-letter-float.html
/sdcard/android/layout_tests/fast/css/simple-selector-chain-parsing.html
@@ -1192,6 +1953,7 @@
/sdcard/android/layout_tests/fast/css/continuationCrash.html
/sdcard/android/layout_tests/fast/css/vertical-align-lengths.html
/sdcard/android/layout_tests/fast/css/first-child-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/beforeSelectorOnCodeElement.html
/sdcard/android/layout_tests/fast/css/getFloatValueForUnit.html
/sdcard/android/layout_tests/fast/css/first-letter-detach.html
/sdcard/android/layout_tests/fast/css/line-height-font-order.html
@@ -1210,7 +1972,6 @@
/sdcard/android/layout_tests/fast/css/link-outside-head.html
/sdcard/android/layout_tests/fast/css/font-size-negative.html
/sdcard/android/layout_tests/fast/css/position-negative-top-margin.html
-/sdcard/android/layout_tests/fast/css/invalid-percentage-property.html : has expected results
/sdcard/android/layout_tests/fast/css/ZeroOpacityLayers.html
/sdcard/android/layout_tests/fast/css/only-of-type-pseudo-class.html
/sdcard/android/layout_tests/fast/css/004.html
@@ -1223,6 +1984,7 @@
/sdcard/android/layout_tests/fast/css/textCapitalizeEdgeCases.html
/sdcard/android/layout_tests/fast/css/001.html
/sdcard/android/layout_tests/fast/css/hsl-color.html
+/sdcard/android/layout_tests/fast/css/font-face-implicit-local-font.html
/sdcard/android/layout_tests/fast/css/first-letter-recalculation.html
/sdcard/android/layout_tests/fast/css/inline-properties-important.html
/sdcard/android/layout_tests/fast/css/dynamic-sibling-selector.html
@@ -1502,7 +2264,6 @@
/sdcard/android/layout_tests/fast/parser/001.html
/sdcard/android/layout_tests/fast/parser/open-comment-in-textarea.html
/sdcard/android/layout_tests/fast/parser/tabs-in-scripts.html
-/sdcard/android/layout_tests/fast/parser/external-entities-in-xslt.xml : has expected results
/sdcard/android/layout_tests/fast/parser/parseCommentsInTitles.html
/sdcard/android/layout_tests/fast/parser/remove-block-in-residual-style.html
/sdcard/android/layout_tests/fast/parser/open-comment-in-style.html
@@ -1523,7 +2284,6 @@
/sdcard/android/layout_tests/fast/layers/scroll-rect-to-visible.html
/sdcard/android/layout_tests/fast/layers/opacity-stacking.html
/sdcard/android/layout_tests/fast/history/clicked-link-is-visited.html
-/sdcard/android/layout_tests/fast/history/history_reload.html : has expected results
/sdcard/android/layout_tests/fast/backgrounds/repeat/mask-negative-offset-repeat.html
/sdcard/android/layout_tests/fast/backgrounds/repeat/negative-offset-repeat.html
/sdcard/android/layout_tests/fast/backgrounds/repeat/negative-offset-repeat-transformed.html
@@ -1681,20 +2441,29 @@
/sdcard/android/layout_tests/fast/repaint/layer-child-outline.html
/sdcard/android/layout_tests/fast/loader/start-load-in-unload.html
/sdcard/android/layout_tests/fast/loader/text-document-wrapping.html
+/sdcard/android/layout_tests/fast/xsl/document-function.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-extra-content-at-end.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-enc.xml
+/sdcard/android/layout_tests/fast/xsl/xslt_unicode.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-import-depth.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-enc16.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-enc16to16.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-missing-namespace-in-xslt.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-enc-cyr.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-relative-path.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-mismatched-tags-in-xslt.xml
+/sdcard/android/layout_tests/fast/xsl/xslt-entity.xml
/sdcard/android/layout_tests/fast/canvas/fillrect-gradient-zero-stops.html
/sdcard/android/layout_tests/fast/canvas/canvas-transforms-during-path.html
/sdcard/android/layout_tests/fast/canvas/drawImage.html
/sdcard/android/layout_tests/fast/canvas/shadow-offset-7.html
-/sdcard/android/layout_tests/fast/canvas/canvas-transform-non-invertible.html : has expected results
/sdcard/android/layout_tests/fast/canvas/shadow-offset-4.html
-/sdcard/android/layout_tests/fast/canvas/canvas-transform-infinity.html : has expected results
/sdcard/android/layout_tests/fast/canvas/canvas-text-baseline.html
/sdcard/android/layout_tests/fast/canvas/canvas-as-image-incremental-repaint.html
/sdcard/android/layout_tests/fast/canvas/shadow-offset-1.html
/sdcard/android/layout_tests/fast/canvas/canvas-size-change-after-layout.html
/sdcard/android/layout_tests/fast/canvas/canvas-resize-reset.html
/sdcard/android/layout_tests/fast/canvas/canvas-bg.html
-/sdcard/android/layout_tests/fast/canvas/canvas-transform-skewed.html : has expected results
/sdcard/android/layout_tests/fast/canvas/zero-size-fill-rect.html
/sdcard/android/layout_tests/fast/canvas/shadow-offset-6.html
/sdcard/android/layout_tests/fast/canvas/patternfill-repeat.html
@@ -1704,17 +2473,14 @@
/sdcard/android/layout_tests/fast/canvas/gradient-add-second-start-end-stop.html
/sdcard/android/layout_tests/fast/canvas/quadraticCurveTo.xml
/sdcard/android/layout_tests/fast/canvas/fill-stroke-clip-reset-path.html
-/sdcard/android/layout_tests/fast/canvas/canvas-transform-nan.html : has expected results
/sdcard/android/layout_tests/fast/canvas/canvas-text-alignment.html
/sdcard/android/layout_tests/fast/canvas/canvas-incremental-repaint.html
/sdcard/android/layout_tests/fast/canvas/canvasDrawingIntoSelf.html
/sdcard/android/layout_tests/fast/canvas/canvas-as-image.html
/sdcard/android/layout_tests/fast/canvas/canvas-before-css.html
/sdcard/android/layout_tests/fast/canvas/canvas-incremental-repaint-2.html
-/sdcard/android/layout_tests/fast/canvas/canvas-transform-identity.html : has expected results
/sdcard/android/layout_tests/fast/canvas/shadow-offset-5.html
/sdcard/android/layout_tests/fast/canvas/fillrect_gradient.html
-/sdcard/android/layout_tests/fast/canvas/canvas-transform-multiply.html : has expected results
/sdcard/android/layout_tests/fast/canvas/shadow-offset-2.html
/sdcard/android/layout_tests/fast/frames/contentWindow_Frame.html
/sdcard/android/layout_tests/fast/frames/onlyCommentInIFrame.html
@@ -1739,15 +2505,1576 @@
/sdcard/android/layout_tests/fast/frames/iframe-text-contents.html
/sdcard/android/layout_tests/fast/frames/frame-scrolling-attribute.html
/sdcard/android/layout_tests/fast/frames/contentWindow_iFrame.html
-/sdcard/android/layout_tests/fast/frames/frame-length-fractional.html : has expected results
/sdcard/android/layout_tests/fast/frames/calculate-fixed.html
/sdcard/android/layout_tests/fast/frames/frame-element-name.html
/sdcard/android/layout_tests/fast/frames/frame-set-whitespace-attributes.html
/sdcard/android/layout_tests/fast/frames/iframe-with-frameborder.html
/sdcard/android/layout_tests/fast/frames/frameElement-iframe.html
-/sdcard/android/layout_tests/fast/frames/iframe-name-and-id.html : has expected results
/sdcard/android/layout_tests/fast/reflections/inline-crash.html
/sdcard/android/layout_tests/fast/reflections/reflection-nesting.html
/sdcard/android/layout_tests/fast/reflections/reflection-overflow-hidden.html
/sdcard/android/layout_tests/fast/reflections/table-cell.html
+/sdcard/android/layout_tests/fast/reflections/reflection-masks.html
/sdcard/android/layout_tests/fast/reflections/reflection-direction.html
+/sdcard/android/layout_tests/transforms/2d/zoom-menulist.html
+/sdcard/android/layout_tests/transforms/2d/transform-origin-borderbox.html
+/sdcard/android/layout_tests/transforms/2d/transform-borderbox.html
+/sdcard/android/layout_tests/transforms/2d/compound-transforms-vs-containers.html
+/sdcard/android/layout_tests/animations/animation-drt-api-multiple-keyframes.html
+/sdcard/android/layout_tests/animations/animation-drt-api.html
+/sdcard/android/layout_tests/scrollbars/scrollbar-orientation.html
+/sdcard/android/layout_tests/scrollbars/scrollbar-buttons.html
+/sdcard/android/layout_tests/scrollbars/basic-scrollbar.html
+/sdcard/android/layout_tests/scrollbars/overflow-scrollbar-combinations.html
+/sdcard/android/layout_tests/scrollbars/disabled-scrollbar.html
+/sdcard/android/layout_tests/scrollbars/listbox-scrollbar-combinations.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-03-c.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-padn-l-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t1205-c563-list-type-00-b.html
+/sdcard/android/layout_tests/css2.1/t090402-c42-ibx-pad-00-d-ag.html
+/sdcard/android/layout_tests/css2.1/t120401-scope-00-b.html
+/sdcard/android/layout_tests/css2.1/t010403-shand-border-00-c.html
+/sdcard/android/layout_tests/css2.1/t0805-c5518-ibrdr-t-00-a.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-03-b.html
+/sdcard/android/layout_tests/css2.1/t1008-c44-ln-box-00-d-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-14-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-34-d.html
+/sdcard/android/layout_tests/css2.1/t1204-implied-00-b.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-03-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-54-d.html
+/sdcard/android/layout_tests/css2.1/t100801-c548-ln-ht-00-c-a.html
+/sdcard/android/layout_tests/css2.1/t0905-c5526-fltclr-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/bogus-color-span.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-74-d.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-imrgn-l-03-b-a.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgreps-04-c-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-94-d.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-imrgn-r-03-b-a.html
+/sdcard/android/layout_tests/css2.1/t040307-syntax-01-b.html
+/sdcard/android/layout_tests/css2.1/t100801-c548-ln-ht-04-d-ag.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-06-b.html
+/sdcard/android/layout_tests/css2.1/t040306-c63-color-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-02-b.html
+/sdcard/android/layout_tests/css2.1/t080301-c411-vt-mrgn-00-b.html
+/sdcard/android/layout_tests/css2.1/t010403-shand-font-03-b.html
+/sdcard/android/layout_tests/css2.1/t051103-c21-focus-ln-00-e-i.html
+/sdcard/android/layout_tests/css2.1/t120403-display-none-00-c.html
+/sdcard/android/layout_tests/css2.1/t0805-c5512-brdr-rw-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-12-c.html
+/sdcard/android/layout_tests/css2.1/t0805-c5515-ibrdr-00-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5520-brdr-b-00-a.html
+/sdcard/android/layout_tests/css2.1/t1505-c524-font-var-00-b.html
+/sdcard/android/layout_tests/css2.1/t0509-c15-ids-00-a.html
+/sdcard/android/layout_tests/css2.1/t060403-c21-pseu-cls-00-e-i.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-03-d.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-12-b.html
+/sdcard/android/layout_tests/css2.1/t0402-c71-fwd-parsing-04-f.html
+/sdcard/android/layout_tests/css2.1/t040303-c62-percent-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-23-d.html
+/sdcard/android/layout_tests/css2.1/t140201-c535-bg-fixd-00-b-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-43-d.html
+/sdcard/android/layout_tests/css2.1/t1204-increment-02-c-o.html
+/sdcard/android/layout_tests/css2.1/t0602-c13-inh-underlin-00-e.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-63-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-83-d.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-16-f.html
+/sdcard/android/layout_tests/css2.1/t040302-c61-phys-len-00-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5516-ibrdr-c-00-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5521-brdr-l-01-e.html
+/sdcard/android/layout_tests/css2.1/t100801-c544-valgn-03-d-agi.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-06-b.html
+/sdcard/android/layout_tests/css2.1/t0402-syntax-03-f.html
+/sdcard/android/layout_tests/css2.1/t050803-c14-classes-00-e.html
+/sdcard/android/layout_tests/css2.1/t140201-c537-bgfxps-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t1002-c5523-width-02-b-g.html
+/sdcard/android/layout_tests/css2.1/t1004-c5524-width-00-b-g.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-11-b.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-imrgn-l-06-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0805-c5522-brdr-02-e.html
+/sdcard/android/layout_tests/css2.1/t0511-c21-pseud-anch-00-e-i.html
+/sdcard/android/layout_tests/css2.1/t0804-c5508-ipadn-b-01-f-a.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-imrgn-r-04-b-ag.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-01-c.html
+/sdcard/android/layout_tests/css2.1/t040102-keywords-00-b.html
+/sdcard/android/layout_tests/css2.1/t0505-c16-descendant-02-e.html
+/sdcard/android/layout_tests/css2.1/t1507-c526-font-sz-03-f-a.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-09-b.html
+/sdcard/android/layout_tests/css2.1/t1204-root-e.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-fit-01-d-g.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-01-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-12-d.html
+/sdcard/android/layout_tests/css2.1/t090501-c5525-flt-r-00-b-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-32-d.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-01-b.html
+/sdcard/android/layout_tests/css2.1/t1004-c43-rpl-bbx-00-d-ag.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgre-01-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-ipadn-l-02-b-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-52-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5512-brdr-rw-02-b.html
+/sdcard/android/layout_tests/css2.1/t040109-c17-comments-00-b.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-ipadn-r-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-72-d.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgreps-01-c-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-92-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-01-d-g.html
+/sdcard/android/layout_tests/css2.1/t100801-c548-ln-ht-01-b-ag.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-03-b-g.html
+/sdcard/android/layout_tests/css2.1/t1204-multiple-01-c.html
+/sdcard/android/layout_tests/css2.1/t0803-c5505-mrgn-03-c-ag.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-04-b.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-00-b.html
+/sdcard/android/layout_tests/css2.1/t1602-c43-center-00-d-ag.html
+/sdcard/android/layout_tests/css2.1/t140201-c532-bgcolor-00-a.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-mrgn-l-03-c.html
+/sdcard/android/layout_tests/css2.1/t010403-shand-font-01-b.html
+/sdcard/android/layout_tests/css2.1/t1005-c5524-width-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t1601-c547-indent-01-d.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-10-c.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-01-b.html
+/sdcard/android/layout_tests/css2.1/t0803-c5505-mrgn-02-c.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-04-c.html
+/sdcard/android/layout_tests/css2.1/t051103-dom-hover-01-c-io.html
+/sdcard/android/layout_tests/css2.1/t1604-c542-letter-sp-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-08-c.html
+/sdcard/android/layout_tests/css2.1/t120401-scope-02-c.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-01-d.html
+/sdcard/android/layout_tests/css2.1/t0402-c71-fwd-parsing-02-f.html
+/sdcard/android/layout_tests/css2.1/t1204-reset-00-c-o.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-21-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-41-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltwidth-01-c-g.html
+/sdcard/android/layout_tests/css2.1/t1507-c526-font-sz-00-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-61-d.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-08-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-81-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-19-d.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-04-b.html
+/sdcard/android/layout_tests/css2.1/t1604-c541-word-sp-01-b-a.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-39-d.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-08-b.html
+/sdcard/android/layout_tests/css2.1/t0402-syntax-01-f.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-59-d.html
+/sdcard/android/layout_tests/css2.1/t1205-c565-list-pos-00-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-79-d.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-10-c.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-99-d.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-imrgn-r-01-b-ag.html
+/sdcard/android/layout_tests/css2.1/t040306-syntax-01-f.html
+/sdcard/android/layout_tests/css2.1/t1507-c526-font-sz-01-b-a.html
+/sdcard/android/layout_tests/css2.1/t040105-atrule-04-b.html
+/sdcard/android/layout_tests/css2.1/t0505-c16-descendant-00-e.html
+/sdcard/android/layout_tests/css2.1/t0805-c5513-brdr-bw-02-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5519-brdr-r-01-e.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-07-b.html
+/sdcard/android/layout_tests/css2.1/t0804-c5510-padn-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0805-c5517-ibrdr-s-00-a.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-10-d.html
+/sdcard/android/layout_tests/css2.1/t040105-import-00-b.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-ipadn-l-03-b-a.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-30-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5514-brdr-lw-02-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-50-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-ipadn-r-03-b-a.html
+/sdcard/android/layout_tests/css2.1/t1008-c44-ln-box-02-d-ag.html
+/sdcard/android/layout_tests/css2.1/t0805-c5512-brdr-rw-00-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-70-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-08-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-90-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-28-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-48-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5513-brdr-bw-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-68-d.html
+/sdcard/android/layout_tests/css2.1/t1402-c45-bg-canvas-00-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-88-d.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-02-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5521-ibrdr-l-00-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5522-brdr-00-b.html
+/sdcard/android/layout_tests/css2.1/t1606-c562-white-sp-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-02-c.html
+/sdcard/android/layout_tests/css2.1/t100801-c544-valgn-00-a-ag.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-06-c.html
+/sdcard/android/layout_tests/css2.1/t0402-c71-fwd-parsing-00-f.html
+/sdcard/android/layout_tests/css2.1/t1204-reset-02-c-o.html
+/sdcard/android/layout_tests/css2.1/t0602-c13-inheritance-00-e.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-ln-02-d.html
+/sdcard/android/layout_tests/css2.1/t1205-c566-list-stl-01-c-g.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-06-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-17-d.html
+/sdcard/android/layout_tests/css2.1/t100304-c43-rpl-bbx-00-d-g.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-mrgn-l-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t1205-c566-list-stl-00-e-ag.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltwidth-03-c-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-37-d.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-06-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-57-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5510-padn-02-f.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-77-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-97-d.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-imrgn-l-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t090204-display-change-01-b-ao.html
+/sdcard/android/layout_tests/css2.1/t040302-c61-ex-len-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t040105-atrule-02-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5513-brdr-bw-00-b.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-09-b.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-05-b.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-mrgn-r-02-c.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-imrgn-r-06-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-padn-r-01-c-a.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-00-d.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-17-d.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-mrgn-l-01-c-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5514-brdr-lw-00-b.html
+/sdcard/android/layout_tests/css2.1/t140201-c536-bgpos-01-b-ag.html
+/sdcard/android/layout_tests/css2.1/t100303-c412-blockw-00-d-ag.html
+/sdcard/android/layout_tests/css2.1/t120401-scope-04-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5506-ipadn-t-01-b-a.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-06-d.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-15-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-26-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5521-brdr-l-00-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5511-brdr-tw-02-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-46-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-ipadn-r-02-b-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-66-d.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgreps-03-c-ag.html
+/sdcard/android/layout_tests/css2.1/t100801-c544-valgn-02-d-agi.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-ipadn-l-04-f-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-86-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5512-ibrdr-rw-00-a.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-00-b.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltblck-01-d.html
+/sdcard/android/layout_tests/css2.1/t0402-syntax-06-f.html
+/sdcard/android/layout_tests/css2.1/t100801-c548-ln-ht-03-d-ag.html
+/sdcard/android/layout_tests/css2.1/t0805-c5515-brdr-w-00-a.html
+/sdcard/android/layout_tests/css2.1/t051202-c24-first-lttr-00-b.html
+/sdcard/android/layout_tests/css2.1/t0511-c21-pseud-link-02-e.html
+/sdcard/android/layout_tests/css2.1/t0804-c5510-padn-01-e-a.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltinln-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-14-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5518-brdr-t-01-e.html
+/sdcard/android/layout_tests/css2.1/t040105-atkeyw-01-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5511-brdr-tw-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-04-c.html
+/sdcard/android/layout_tests/css2.1/t1205-c563-list-type-01-b.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-18-f.html
+/sdcard/android/layout_tests/css2.1/t0509-id-sel-syntax-01-f.html
+/sdcard/android/layout_tests/css2.1/t100801-c544-valgn-01-d-ag.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-ln-00-d.html
+/sdcard/android/layout_tests/css2.1/t1601-c547-indent-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-04-b.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-flthw-00-c-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-15-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5522-brdr-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-35-d.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-00-b.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-04-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-55-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-75-d.html
+/sdcard/android/layout_tests/css2.1/t1205-c564-list-img-00-b-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-95-d.html
+/sdcard/android/layout_tests/css2.1/t120403-visibility-00-c.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-imrgn-r-02-b-a.html
+/sdcard/android/layout_tests/css2.1/t051103-c21-activ-ln-00-e-i.html
+/sdcard/android/layout_tests/css2.1/t0801-c412-hz-box-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-02-d-g.html
+/sdcard/android/layout_tests/css2.1/t1605-c545-txttrans-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t040105-atrule-00-b.html
+/sdcard/android/layout_tests/css2.1/t100801-c548-leadin-00-d-a.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-imrgn-l-05-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0804-c5508-ipadn-b-03-b-a.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-07-b.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-03-b.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-13-c.html
+/sdcard/android/layout_tests/css2.1/t1204-order-01-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5510-ipadn-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-04-d.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-13-b.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgre-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t1504-c523-font-style-00-b.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-ipadn-l-01-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-mrgn-r-01-c-a.html
+/sdcard/android/layout_tests/css2.1/t1204-increment-01-c-o.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-24-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5511-brdr-tw-00-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-44-d.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgreps-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-64-d.html
+/sdcard/android/layout_tests/css2.1/t1204-implied-02-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-84-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5521-brdr-l-02-e.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-07-b.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-padn-r-02-f.html
+/sdcard/android/layout_tests/css2.1/t0402-syntax-04-f.html
+/sdcard/android/layout_tests/css2.1/t1002-c5523-width-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t0805-c5519-brdr-r-00-a.html
+/sdcard/android/layout_tests/css2.1/t0511-c21-pseud-link-00-e.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-12-b.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-02-c.html
+/sdcard/android/layout_tests/css2.1/t040102-keywords-01-b.html
+/sdcard/android/layout_tests/css2.1/t0803-c5503-imrgn-b-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5513-ibrdr-bw-00-a.html
+/sdcard/android/layout_tests/css2.1/css1_forward_compatible_parsing.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-padn-l-03-f-g.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-02-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-13-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c5526-flthw-00-c-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-33-d.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-02-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-53-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5512-brdr-rw-03-b.html
+/sdcard/android/layout_tests/css2.1/t040109-c17-comments-01-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-73-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-93-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5511-ibrdr-tw-00-a.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-imrgn-l-02-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-imrgn-r-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-05-b.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-01-b.html
+/sdcard/android/layout_tests/css2.1/t1005-c5524-width-00-b-g.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-wrap-01-d-g.html
+/sdcard/android/layout_tests/css2.1/t010403-shand-font-02-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5515-brdr-w-02-b.html
+/sdcard/android/layout_tests/css2.1/t060401-c32-cascading-00-b.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltcont-00-d-g.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-11-c.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-16-c.html
+/sdcard/android/layout_tests/css2.1/t0509-id-sel-syntax-02-b.html
+/sdcard/android/layout_tests/css2.1/t090501-c5525-flt-l-00-b-g.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-09-c.html
+/sdcard/android/layout_tests/css2.1/t050201-c12-grouping-00-b.html
+/sdcard/android/layout_tests/css2.1/t120401-scope-03-c.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-02-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-wrap-00-e.html
+/sdcard/android/layout_tests/css2.1/t0402-c71-fwd-parsing-03-f.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-11-b.html
+/sdcard/android/layout_tests/css2.1/t1506-c525-font-wt-00-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-22-d.html
+/sdcard/android/layout_tests/css2.1/t1008-c44-ln-box-01-d-ag.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltwidth-00-c-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-42-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-62-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltmult-00-d-g.html
+/sdcard/android/layout_tests/css2.1/t1401-c531-color-00-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5514-ibrdr-lw-00-a.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-09-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-82-d.html
+/sdcard/android/layout_tests/css2.1/t1604-c541-word-sp-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5515-brdr-w-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-ipadn-r-04-b-ag.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-09-b.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgreps-05-c-ag.html
+/sdcard/android/layout_tests/css2.1/t0402-syntax-02-f.html
+/sdcard/android/layout_tests/css2.1/t0803-c5503-mrgn-b-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5517-brdr-s-00-c.html
+/sdcard/android/layout_tests/css2.1/t0805-c5514-brdr-lw-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t100801-c42-ibx-ht-00-d-a.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-00-c.html
+/sdcard/android/layout_tests/css2.1/t0805-c5513-brdr-bw-03-b.html
+/sdcard/android/layout_tests/css2.1/t0804-c5506-padn-t-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t0505-c16-descendant-01-e.html
+/sdcard/android/layout_tests/css2.1/t0805-c5519-brdr-r-02-e.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-08-b.html
+/sdcard/android/layout_tests/css2.1/t051103-c21-hover-ln-00-e-i.html
+/sdcard/android/layout_tests/css2.1/t120403-content-none-00-c.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-00-b.html
+/sdcard/android/layout_tests/css2.1/t040105-import-01-b.html
+/sdcard/android/layout_tests/css2.1/t040103-case-01-c.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-11-d.html
+/sdcard/android/layout_tests/css2.1/t09-c5526c-display-00-e.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltblck-00-d-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-31-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5514-brdr-lw-03-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-51-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-71-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-09-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-91-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltwrap-00-b.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-fit-00-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-29-d.html
+/sdcard/android/layout_tests/css2.1/t0803-c5505-mrgn-01-e-a.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-mrgn-r-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t1004-c43-rpl-ibx-00-d-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-49-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-69-d.html
+/sdcard/android/layout_tests/css2.1/t1204-multiple-00-c.html
+/sdcard/android/layout_tests/css2.1/t140201-c533-bgimage-01-b-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-89-d.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-03-b.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-mrgn-l-02-c.html
+/sdcard/android/layout_tests/css2.1/t0805-c5518-brdr-t-00-a.html
+/sdcard/android/layout_tests/css2.1/t010403-shand-font-00-b.html
+/sdcard/android/layout_tests/css2.1/t0510-c25-pseudo-elmnt-00-c.html
+/sdcard/android/layout_tests/css2.1/t0803-c5505-imrgn-00-a-ag.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-imrgn-r-05-b-ag.html
+/sdcard/android/layout_tests/css2.1/t060402-c31-important-00-b.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-00-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c414-flt-03-c.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-07-c.html
+/sdcard/android/layout_tests/css2.1/t1204-order-00-c.html
+/sdcard/android/layout_tests/css2.1/t120401-scope-01-c.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-00-d.html
+/sdcard/android/layout_tests/css2.1/t0402-c71-fwd-parsing-01-f.html
+/sdcard/android/layout_tests/css2.1/t1604-c542-letter-sp-01-b-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5520-brdr-b-01-e.html
+/sdcard/android/layout_tests/css2.1/t140201-c536-bgpos-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-20-d.html
+/sdcard/android/layout_tests/css2.1/t0509-c15-ids-01-e.html
+/sdcard/android/layout_tests/css2.1/t1204-reset-01-c-o.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-40-d.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-ln-03-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-60-d.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltwidth-02-c-g.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltclr-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-07-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-80-d.html
+/sdcard/android/layout_tests/css2.1/t1204-implied-01-c.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-18-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-ipadn-r-01-b-ag.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-03-b.html
+/sdcard/android/layout_tests/css2.1/t140201-c534-bgreps-02-c-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-38-d.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-07-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-58-d.html
+/sdcard/android/layout_tests/css2.1/t0803-c5505-mrgn-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t100801-c544-valgn-04-d-agi.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-78-d.html
+/sdcard/android/layout_tests/css2.1/t100801-c548-ln-ht-02-b-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-98-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5508-ipadn-b-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-padn-l-01-b-a.html
+/sdcard/android/layout_tests/css2.1/t040105-atrule-03-b.html
+/sdcard/android/layout_tests/css2.1/t1507-c526-font-sz-02-b-a.html
+/sdcard/android/layout_tests/css2.1/t0805-c5522-ibrdr-00-a.html
+/sdcard/android/layout_tests/css2.1/t0803-c5502-mrgn-r-03-c.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-06-b.html
+/sdcard/android/layout_tests/css2.1/t0905-c5525-fltmrgn-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t051103-dom-hover-02-c-io.html
+/sdcard/android/layout_tests/css2.1/t0804-c5506-ipadn-t-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t040304-c64-uri-00-a-g.html
+/sdcard/android/layout_tests/css2.1/t0803-c5501-mrgn-t-00-b-a.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-07-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-27-d.html
+/sdcard/android/layout_tests/css2.1/t0805-c5511-brdr-tw-03-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-47-d.html
+/sdcard/android/layout_tests/css2.1/t060403-c21-pseu-id-00-e-i.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-67-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-87-d.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-01-b.html
+/sdcard/android/layout_tests/css2.1/t0603-c11-import-00-b.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-imrgn-l-04-b-ag.html
+/sdcard/android/layout_tests/css2.1/t1503-c522-font-family-00-b.html
+/sdcard/android/layout_tests/css2.1/t090501-c414-flt-ln-01-d-g.html
+/sdcard/android/layout_tests/css2.1/t0511-c21-pseud-link-03-e.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-15-b.html
+/sdcard/android/layout_tests/css2.1/t040105-atkeyw-02-b.html
+/sdcard/android/layout_tests/css2.1/t0805-c5519-ibrdr-r-00-a.html
+/sdcard/android/layout_tests/css2.1/t040103-ident-05-c.html
+/sdcard/android/layout_tests/css2.1/t0602-inherit-bdr-pad-b-00.html
+/sdcard/android/layout_tests/css2.1/t040302-c61-rel-len-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-padn-r-00-c-ag.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-ipadn-l-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t0805-c5520-ibrdr-b-00-a.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-05-b.html
+/sdcard/android/layout_tests/css2.1/t1008-c44-ln-box-03-d-ag.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-16-d.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-01-b.html
+/sdcard/android/layout_tests/css2.1/t100304-c43-rpl-bbx-01-d-g.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-36-d.html
+/sdcard/android/layout_tests/css2.1/t1001-abs-pos-cb-05-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-56-d.html
+/sdcard/android/layout_tests/css2.1/t0804-c5509-padn-l-02-f.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-76-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-96-d.html
+/sdcard/android/layout_tests/css2.1/t051202-c26-psudo-nest-00-c.html
+/sdcard/android/layout_tests/css2.1/t040105-atrule-01-b.html
+/sdcard/android/layout_tests/css2.1/t0804-c5508-ipadn-b-02-b-a.html
+/sdcard/android/layout_tests/css2.1/t0803-c5501-imrgn-t-00-b-ag.html
+/sdcard/android/layout_tests/css2.1/t140201-c532-bgcolor-01-b.html
+/sdcard/android/layout_tests/css2.1/t1508-c527-font-08-b.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-04-b.html
+/sdcard/android/layout_tests/css2.1/t040103-case-00-b.html
+/sdcard/android/layout_tests/css2.1/t1504-c543-txt-decor-00-d-g.html
+/sdcard/android/layout_tests/css2.1/t0805-c5516-brdr-c-00-a.html
+/sdcard/android/layout_tests/css2.1/t0804-c5506-ipadn-t-02-b-a.html
+/sdcard/android/layout_tests/css2.1/t1204-increment-00-c-o.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-05-d.html
+/sdcard/android/layout_tests/css2.1/t1202-counter-14-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-25-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-45-d.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-65-d.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-02-d.html
+/sdcard/android/layout_tests/css2.1/t1602-c546-txt-align-00-b.html
+/sdcard/android/layout_tests/css2.1/t170602-bdr-conflct-w-85-d.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-05-c.html
+/sdcard/android/layout_tests/css2.1/t040103-escapes-08-b.html
+/sdcard/android/layout_tests/css2.1/t0803-c5504-imrgn-l-01-b-ag.html
+/sdcard/android/layout_tests/css2.1/t1002-c5523-width-00-b-g.html
+/sdcard/android/layout_tests/css2.1/t0804-c5507-padn-r-03-f.html
+/sdcard/android/layout_tests/css2.1/t0402-syntax-05-f.html
+/sdcard/android/layout_tests/css2.1/t1205-c561-list-displ-00-b.html
+/sdcard/android/layout_tests/css2.1/t0511-c21-pseud-link-01-e.html
+/sdcard/android/layout_tests/css2.1/t051201-c23-first-line-00-b.html
+/sdcard/android/layout_tests/css2.1/t1202-counters-13-b.html
+/sdcard/android/layout_tests/css2.1/t140201-c533-bgimage-00-a.html
+/sdcard/android/layout_tests/css2.1/t040105-atkeyw-00-b.html
+/sdcard/android/layout_tests/css1/color_and_background/background_color.html
+/sdcard/android/layout_tests/css1/color_and_background/color.html
+/sdcard/android/layout_tests/css1/color_and_background/background.html
+/sdcard/android/layout_tests/css1/color_and_background/background_repeat.html
+/sdcard/android/layout_tests/css1/color_and_background/background_image.html
+/sdcard/android/layout_tests/css1/color_and_background/background_position.html
+/sdcard/android/layout_tests/css1/color_and_background/background_attachment.html
+/sdcard/android/layout_tests/css1/pseudo/firstline.html
+/sdcard/android/layout_tests/css1/pseudo/pseudo_elements_in_selectors.html
+/sdcard/android/layout_tests/css1/pseudo/multiple_pseudo_elements.html
+/sdcard/android/layout_tests/css1/pseudo/firstletter.html
+/sdcard/android/layout_tests/css1/pseudo/anchor.html
+/sdcard/android/layout_tests/css1/text_properties/text_align.html
+/sdcard/android/layout_tests/css1/text_properties/line_height.html
+/sdcard/android/layout_tests/css1/text_properties/text_transform.html
+/sdcard/android/layout_tests/css1/text_properties/word_spacing.html
+/sdcard/android/layout_tests/css1/text_properties/letter_spacing.html
+/sdcard/android/layout_tests/css1/text_properties/vertical_align.html
+/sdcard/android/layout_tests/css1/text_properties/text_indent.html
+/sdcard/android/layout_tests/css1/text_properties/text_decoration.html
+/sdcard/android/layout_tests/css1/basic/containment.html
+/sdcard/android/layout_tests/css1/basic/id_as_selector.html
+/sdcard/android/layout_tests/css1/basic/comments.html
+/sdcard/android/layout_tests/css1/basic/class_as_selector.html
+/sdcard/android/layout_tests/css1/basic/contextual_selectors.html
+/sdcard/android/layout_tests/css1/basic/inheritance.html
+/sdcard/android/layout_tests/css1/basic/grouping.html
+/sdcard/android/layout_tests/css1/font_properties/font_weight.html
+/sdcard/android/layout_tests/css1/font_properties/font_size.html
+/sdcard/android/layout_tests/css1/font_properties/font.html
+/sdcard/android/layout_tests/css1/font_properties/font_style.html
+/sdcard/android/layout_tests/css1/font_properties/font_family.html
+/sdcard/android/layout_tests/css1/font_properties/font_variant.html
+/sdcard/android/layout_tests/css1/units/percentage_units.html
+/sdcard/android/layout_tests/css1/units/color_units.html
+/sdcard/android/layout_tests/css1/units/length_units.html
+/sdcard/android/layout_tests/css1/units/urls.html
+/sdcard/android/layout_tests/css1/cascade/important.html
+/sdcard/android/layout_tests/css1/cascade/cascade_order.html
+/sdcard/android/layout_tests/css1/box_properties/border_width.html
+/sdcard/android/layout_tests/css1/box_properties/margin.html
+/sdcard/android/layout_tests/css1/box_properties/width.html
+/sdcard/android/layout_tests/css1/box_properties/padding_left.html
+/sdcard/android/layout_tests/css1/box_properties/margin_left_inline.html
+/sdcard/android/layout_tests/css1/box_properties/clear.html
+/sdcard/android/layout_tests/css1/box_properties/border_left_width.html
+/sdcard/android/layout_tests/css1/box_properties/margin_left.html
+/sdcard/android/layout_tests/css1/box_properties/padding_top.html
+/sdcard/android/layout_tests/css1/box_properties/padding_bottom.html
+/sdcard/android/layout_tests/css1/box_properties/border_style_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_top_width_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_top_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_style.html
+/sdcard/android/layout_tests/css1/box_properties/border_top.html
+/sdcard/android/layout_tests/css1/box_properties/margin_bottom_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_bottom_width.html
+/sdcard/android/layout_tests/css1/box_properties/margin_bottom.html
+/sdcard/android/layout_tests/css1/box_properties/float_elements_in_series.html
+/sdcard/android/layout_tests/css1/box_properties/float_on_text_elements.html
+/sdcard/android/layout_tests/css1/box_properties/padding.html
+/sdcard/android/layout_tests/css1/box_properties/border_right_width_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_right_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_right_width.html
+/sdcard/android/layout_tests/css1/box_properties/margin_right.html
+/sdcard/android/layout_tests/css1/box_properties/border_width_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_inline.html
+/sdcard/android/layout_tests/css1/box_properties/clear_float.html
+/sdcard/android/layout_tests/css1/box_properties/border.html
+/sdcard/android/layout_tests/css1/box_properties/padding_left_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_left_width_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_left_inline.html
+/sdcard/android/layout_tests/css1/box_properties/padding_top_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_left.html
+/sdcard/android/layout_tests/css1/box_properties/padding_bottom_inline.html
+/sdcard/android/layout_tests/css1/box_properties/margin_top_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_top_width.html
+/sdcard/android/layout_tests/css1/box_properties/border_bottom_width_inline.html
+/sdcard/android/layout_tests/css1/box_properties/acid_test.html
+/sdcard/android/layout_tests/css1/box_properties/border_bottom_inline.html
+/sdcard/android/layout_tests/css1/box_properties/margin_top.html
+/sdcard/android/layout_tests/css1/box_properties/border_bottom.html
+/sdcard/android/layout_tests/css1/box_properties/padding_right_inline.html
+/sdcard/android/layout_tests/css1/box_properties/float_margin.html
+/sdcard/android/layout_tests/css1/box_properties/padding_right.html
+/sdcard/android/layout_tests/css1/box_properties/padding_inline.html
+/sdcard/android/layout_tests/css1/box_properties/float.html
+/sdcard/android/layout_tests/css1/box_properties/height.html
+/sdcard/android/layout_tests/css1/box_properties/margin_right_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_color_inline.html
+/sdcard/android/layout_tests/css1/box_properties/border_right.html
+/sdcard/android/layout_tests/css1/box_properties/border_color.html
+/sdcard/android/layout_tests/css1/box_properties/margin_inline.html
+/sdcard/android/layout_tests/css1/conformance/forward_compatible_parsing.html
+/sdcard/android/layout_tests/css1/formatting_model/floating_elements.html
+/sdcard/android/layout_tests/css1/formatting_model/horizontal_formatting.html
+/sdcard/android/layout_tests/css1/formatting_model/vertical_formatting.html
+/sdcard/android/layout_tests/css1/formatting_model/height_of_lines.html
+/sdcard/android/layout_tests/css1/formatting_model/inline_elements.html
+/sdcard/android/layout_tests/css1/formatting_model/canvas.html
+/sdcard/android/layout_tests/css1/formatting_model/replaced_elements.html
+/sdcard/android/layout_tests/css1/classification/list_style_type.html
+/sdcard/android/layout_tests/css1/classification/list_style_image.html
+/sdcard/android/layout_tests/css1/classification/list_style_position.html
+/sdcard/android/layout_tests/css1/classification/display.html
+/sdcard/android/layout_tests/css1/classification/list_style.html
+/sdcard/android/layout_tests/css1/classification/white_space.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/dom/insertTbodyRebuild1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/dom/appendCellsRebuild1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/dom/appendColGroup1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/dom/appendCol1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/dom/insertTbodyExpand1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/dom/appendCells1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug56024.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-14.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug11945.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-18.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug72393.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug23847.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug7121-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug27993-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug7243.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-3.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug1647.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-7.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug101759.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug2479-5.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug14007-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-11.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug1010.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-15.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug14159-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug25707.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug47163.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug91057.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug131020-3.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug19526.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug14489.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug73629.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug1725.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-4.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug106336.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-8.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug22122.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug10216.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug14007-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug106966.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug32205-4.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug42043.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug178855.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-12.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug92868_1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug21518.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug45621.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-16.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug65372.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug59252.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug29058-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug17826.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug67915-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug46268-4.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug1128.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug1164.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/97619.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-5.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug10140.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-9.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug32205-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug61042-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug104898.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug8499.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug9879-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug128876.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-13.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug58402-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug24880-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug85016.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-17.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug80762-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug18770.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug33784.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3105.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug1055-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug89315.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug92647-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug1262.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug7113.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3517.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug220653.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug4294.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-6.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug6933.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug51000.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug11331.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug61042-2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/bugs/bug3166-10.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/other/empty_cells.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/other/test4.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/col_span2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/columns.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/captions1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/cols1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/backgrounds.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/captions2.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/captions3.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/conflicts.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/core/standards1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/collapsing_borders/bug41262-5.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/collapsing_borders/bug41262-6.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/collapsing_borders/bug41262-1.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_below.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_position-table-cell.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_caption.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_position-table-column.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/tables_caption_align_right.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_border-table-column-group.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_position-table-row-group.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_frame_lhs.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_rules_rows.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_rules_all.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_frame_above.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_frame_void.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_hsides.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_caption_right.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_layers-show.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_caption_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_border-table-cell.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_frame_below.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_rules_cols.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_position-table-row.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_border-table-row.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_rules_cols.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_border.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_colgroup_width_px.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_border-table-quirks.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_box.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_rules_rows.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_frame_hsides.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_caption_left.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_caption_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden_table.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_border-table-row-group.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_caption_bottom.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_border-table.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_frame_rhs.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_frame_vsides.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_layers-hide.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/tables_cellspacing_pct.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_position-table-column-group.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_lhs.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_fixed-bg.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_td_dynamic_deactivate.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_rhs.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_above.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/x_table_frame_vsides.xml
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/backgr_border-table-column.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_caption_top.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table.html
+/sdcard/android/layout_tests/tables/mozilla_expected_failures/marvin/tables_caption_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteCellsRebuild1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteRowsShrink1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCellsRebuild1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCellsRebuild2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteCol1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteCol2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertColGroups1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteCol3.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertColGroups2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteCellsShrink1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteTbodyExpand1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteCellsShrink2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/tableDom.html
+/sdcard/android/layout_tests/tables/mozilla/dom/appendCol2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/appendTbodyExpand1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteTbodyRebuild1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteColGroup1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteColGroup2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertRowsExpand1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/appendRowsExpand1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/deleteRowsRebuild1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCols1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCols2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertRowsRebuild1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCellsExpand1.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCols3.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCellsExpand2.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCols4.html
+/sdcard/android/layout_tests/tables/mozilla/dom/insertCols5.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug30418.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug14159-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46623-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug24661.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug30692.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug53690-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug88035-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug51727.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug81934.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug68912.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug60992.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug92647-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug120107.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1271.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug28928.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug103533.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4093.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2267.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug92868.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4429.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug5538.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug106816.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10009.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug149275-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug32205-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug13118.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1802s.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10296-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug647.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug48028-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug72359.xml
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug25367.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1430.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1224.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug67915-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug45486.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug113424.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug108340.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3454.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2479-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug139524-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4849-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug11321.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2886.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug219693-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug42443.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug54450.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug269566.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12709.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug80762-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug21918.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1302.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug25663.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug55527.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug7112-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1055-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug69382-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug17587.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug102145-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2516.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4803.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug19599.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1188.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3718.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug110566.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug106158-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug5188.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug215629.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug154780.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug137388-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10039.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug5798.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug22246-3a.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug25074.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug27038-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/45621.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug25086.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug43854-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug34538.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug131020.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug7121-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4501.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug53891.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug8032-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46268-5.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug63785.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug113235-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug69187.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug9024.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug120364.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug109043.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug220536.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1818-5.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2973.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug222467.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug6674.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug99948.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug277062.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug127267.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug30332-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10036.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug16012.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2997.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug17130-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug650.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug14323.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10565.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug52505.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug29314.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug13169.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug30559.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug29326.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug55545.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46268-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug18359.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3037-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug82946-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug55694.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug6304.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3263.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1818-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug101674.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug123862.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug221784-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug275625.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug106795.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug22513.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug57300.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug51037.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug119786.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12908-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug15247.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46623-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug34176.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug53690-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug24880.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug41890.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug88035-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug50695-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1163-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug8411.xml
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1802.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3260.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug97138.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug9123-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3309-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3191.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1296.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug222336.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2773.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug8381.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug194024.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2947.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug5838.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug60013.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug138725.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug11026.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug175455-4.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug58402-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug43039.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug48028-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug24627.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug35662.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug21299.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug26178.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug18664.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug23299.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug88524.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug48827.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1318.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4427.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug6184.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug11384s.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug5835.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4576.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2479-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug139524-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug133948.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug9879-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug11944.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug13196.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug20579.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug29058-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug96334.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug7112-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug60749.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug59354.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug69382-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug27993-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug57378.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug102145-4.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug98196.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug9072.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2585.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug145572.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug137388-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug5799.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug157890.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug196870.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug22246-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug73321.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug18440.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug965.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug131020-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug43854-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug96343.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46368-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug102145-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug8032-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1067-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2065.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug97383.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug113235-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3681-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug9271-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1809.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2962.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1818-6.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2469.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug8950.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug133756-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2886-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug159108.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4849.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug25004.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12910.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug43204.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug20804.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug23072.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug19061-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10269-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug13526.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug52506.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug27038-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46480-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug42187.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2050.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3103.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug39209.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46268.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46268-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug38916.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug82946-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3037-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4523.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug67864.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug8361.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1818-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2981-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2684.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4385.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug126742.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12910-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug8858.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug709.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug16252.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug33137.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug45350.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12908-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug92143.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug14159-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug50695-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug29429.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1261.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4520.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46944.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/adforce_imgis_com.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug18955.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug227123.xml
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3309-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug9123-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug7342.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug83786.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4382.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug24200.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug641-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug625.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug32205-5.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug56201.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug32841.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug44505.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug45055-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug15544.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug40828.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1800.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug6404.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2509.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2479-4.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4739.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug139524-4.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug13105.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug149275-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug32205-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12008.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10296-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug727.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug278385.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug13484.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug15933.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug60807.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug93363.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug14929.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug86708.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug57828.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug11384q.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2954.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2479-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug139524-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug219693-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug137388-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug30273.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug22246-3.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug22246-2a.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12384.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug44523.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug60804.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug86220.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug32447.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug17138.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug56405.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug26553.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1220.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug29058-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug33855.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug29157.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2123.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug19356.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug28933.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46368-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug18558.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug102145-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1067-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1474.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3681-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4284.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug4527.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug9271-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2296.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug106158-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2757.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug128229.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug133756-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug5797.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug278266.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug23235.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug19061-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10269-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug963.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug27038-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug12268.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug45055.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug7471.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug75250.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46480-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug30985.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46924.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug56563.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug23994.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug113235-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug99923.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug55789.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2981-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1818-4.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug7714.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug222846.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug68998.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug30332-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug17130-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug51140.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug23151.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug10633.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug24503.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug28341.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug47432.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug101201.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug17168.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug46268-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug78162.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug17548.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug100334.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug57828-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1818-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug2763.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug1828.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug221784-1.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug3977.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug131020_iframe.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug641-2.html
+/sdcard/android/layout_tests/tables/mozilla/bugs/bug22019.html
+/sdcard/android/layout_tests/tables/mozilla/other/move_row.html
+/sdcard/android/layout_tests/tables/mozilla/other/nestedTables.html
+/sdcard/android/layout_tests/tables/mozilla/other/wa_table_tr_align.html
+/sdcard/android/layout_tests/tables/mozilla/other/ms.html
+/sdcard/android/layout_tests/tables/mozilla/other/cell_widths.html
+/sdcard/android/layout_tests/tables/mozilla/other/test3.html
+/sdcard/android/layout_tests/tables/mozilla/other/cellspacing.html
+/sdcard/android/layout_tests/tables/mozilla/other/nested2.html
+/sdcard/android/layout_tests/tables/mozilla/other/test6.html
+/sdcard/android/layout_tests/tables/mozilla/other/padding.html
+/sdcard/android/layout_tests/tables/mozilla/other/body_col.html
+/sdcard/android/layout_tests/tables/mozilla/other/wa_table_thtd_rowspan.html
+/sdcard/android/layout_tests/tables/mozilla/other/slashlogo.html
+/sdcard/android/layout_tests/tables/mozilla/images/adforce_imgis_com.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_auto_auto.html
+/sdcard/android/layout_tests/tables/mozilla/core/captions.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_fix_fixPer.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_auto_autoFix.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_auto_autoPer.html
+/sdcard/android/layout_tests/tables/mozilla/core/row_span.html
+/sdcard/android/layout_tests/tables/mozilla/core/cell_heights.html
+/sdcard/android/layout_tests/tables/mozilla/core/misc.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_auto_autoFixPer.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_auto_fix.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_auto_per.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_fix_auto.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_span.html
+/sdcard/android/layout_tests/tables/mozilla/core/margins.html
+/sdcard/android/layout_tests/tables/mozilla/core/borders.html
+/sdcard/android/layout_tests/tables/mozilla/core/table_frame.html
+/sdcard/android/layout_tests/tables/mozilla/core/table_rules.html
+/sdcard/android/layout_tests/tables/mozilla/core/table_heights.html
+/sdcard/android/layout_tests/tables/mozilla/core/nested1.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_fix_autoFix.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_auto_fixPer.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_fix_autoPer.html
+/sdcard/android/layout_tests/tables/mozilla/core/bloomberg.html
+/sdcard/android/layout_tests/tables/mozilla/core/one_row.html
+/sdcard/android/layout_tests/tables/mozilla/core/table_widths.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_fix_autoFixPer.html
+/sdcard/android/layout_tests/tables/mozilla/core/box_sizing.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_fix_fix.html
+/sdcard/android/layout_tests/tables/mozilla/core/col_widths_fix_per.html
+/sdcard/android/layout_tests/tables/mozilla/collapsing_borders/bug41262-3.html
+/sdcard/android/layout_tests/tables/mozilla/collapsing_borders/bug41262-4.html
+/sdcard/android/layout_tests/tables/mozilla/collapsing_borders/bug127040.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_green.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_olive.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_teal_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_width_pct.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_olive_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_border_0.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_simple-table-row-group.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_maroon_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_valign_baseline.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_width_rel.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_lime.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/td_valign_baseline.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_navy.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_simple-table-column.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_valign_baseline.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_nowrap.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_id.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_style.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_bgcolor_rgb.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_green_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_caption_id.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_align_char.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_span.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_bgcolor_rgb.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/th_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_silver_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_rules_groups.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_gray.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_bgcolor_rgb.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_cellspacing.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_width_px.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_navy_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/td_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_yellow.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_width.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_green.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_simple-table-cell.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_silver.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_border_px.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_id.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_th_colspan.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_cellspacing_pct.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_nowrap.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_char.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_blue.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_navy.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_lime_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_aqua_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_rowspan.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_bgcolor_name.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_id.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_rowspan.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_navy_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_red.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_gray.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_align_justify.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_fuchsia.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_white_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_maroon_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_rules_none.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_caption_align_bot.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_cellpadding_pct.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_yellow_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_colspan.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_align_justify.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/th_valign_baseline.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_colspan.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_nowrap.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_lime_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_aqua_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_border_none.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_border_1.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_row_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_th_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/td_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_maroon.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_frame_border.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_caption_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_blue.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_width_px.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_silver_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_width_rel.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_index.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_row_th_nowrap.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_black_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_id.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_width.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_cellpadding_pct.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_gray_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_olive_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_id.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_valign_baseline.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_align_char.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/body_col.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_simple-table-row.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_fuchsia.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_cellpadding.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_caption_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_frame_void.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_rowspan.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_char.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_purple.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_rules_groups.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_simple-table.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_gray_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_class.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_width_pct.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/body_tfoot.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_span.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_width_pct.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_yellow_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_height.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_white.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_frame_box.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_yellow.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_width_px.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_char.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_row_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_border_2.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_aqua.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_fuchsia_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/td_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_id.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_valign_baseline.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/th_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/col_span.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_row_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_purple_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_red_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_width_pct.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_green_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_border.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_white_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_valign_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_fuchsia_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_default.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_caption_align_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_silver.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_red.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_black.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_overflow_td_dynamic_deactivate.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_cellpadding.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_th_align_right.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_th_rowspan.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_cellspacing.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_rules_none.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_white.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_align_justify.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_rules_all.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_blue_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_black_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_align_left.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_align_right.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_caption_align_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_id.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_col_span.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_bgcolor_name.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_height.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_teal.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_height.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_olive.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_th_height.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/body_thead.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_maroon.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_simple-table-column-group.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/table_overflow_hidden_td.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_black.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_layers-opacity.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_th_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_bgcolor_name.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_red_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_blue_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_valign_top.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_lime.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/th_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_width_percent.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_width.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_teal_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_valign_middle.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_width_px.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_valign_baseline.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_align_char.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/backgr_position-table.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_align_char.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_th_width.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tfoot_align_center.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tbody_align_justify.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_bgcolor_rgb.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_purple_rgb.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/colgroup_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_td_colspan.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_caption_align_top.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_table_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_valign_middle.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_colgroup_align_center.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/thead_valign_baseline.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_thead_style.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tbody_class.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_border_3.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_align_left.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tr_valign_bottom.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/body_tbody.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_td_bgcolor_name.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_bgcolor_teal.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_tfoot_align_justify.xml
+/sdcard/android/layout_tests/tables/mozilla/marvin/tables_bgcolor_purple.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/tr_valign_bottom.html
+/sdcard/android/layout_tests/tables/mozilla/marvin/x_th_id.xml
+/sdcard/android/layout_tests/css3/css3-modsel-33.html
+/sdcard/android/layout_tests/css3/css3-modsel-35.html
+/sdcard/android/layout_tests/css3/css3-modsel-36.html
+/sdcard/android/layout_tests/css3/css3-modsel-37.html
+/sdcard/android/layout_tests/transitions/transition-drt-api.html
diff --git a/tests/DumpRenderTree/assets/results/layout_tests_passed.txt b/tests/DumpRenderTree/assets/results/layout_tests_passed.txt
index fbceabd..37a4bbe 100644
--- a/tests/DumpRenderTree/assets/results/layout_tests_passed.txt
+++ b/tests/DumpRenderTree/assets/results/layout_tests_passed.txt
@@ -1,3 +1,1051 @@
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrlastchild.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementnormalize.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_noderemovechildnode.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgetattributenodenull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapreturnfirstitem.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrparentnodenull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapreturnattrnode.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementsetattributenodenull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementnormalize2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_noderemovechild.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforeinvalidnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodechildnodesappendchild.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrfirstchild.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue05.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatagetlength.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodedocumentnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrinsertdataoffsetnegative.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementinvalidcharacterexception.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textsplittexttwo.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrsetvalue1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeclonegetparentnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentcreatetextnode.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentinvalidcharacterexceptioncreateelement.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodelistreturnlastitem.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrchildnodes1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrdeletedataoffsetnegative.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodetextnodevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementretrieveallattributes.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentinvalidcharacterexceptioncreateelement1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_domimplementationfeaturenoversion.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrprevioussiblingnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgetelementsbytagnamespecialvalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeappendchildnodeancestor.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrappendchild1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgetelementsbytagnamenomatch.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeappendchildgetnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatadeletedataend.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatareplacedataexceedslengthofarg.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_notationssetnameditem1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodereplacechildinvalidnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforenodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrinsertbefore7.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodereplacechild.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetprevioussiblingnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodehaschildnodesfalse.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapreturnlastitem.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetfirstchildnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_notationsremovenameditem1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforedocfragment.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataappenddata.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeattributenodevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrspecifiedvalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrgetvalue1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodereplacechildnewchilddiffdocument.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_domimplementationfeaturenull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrreplacedataoffsetnegative.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrinsertbefore1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforenewchildexists.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue06.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodelistindexnotzero.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textwithnomarkup.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_entitiessetnameditem1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrsetvalue2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentgetelementsbytagnametotallength.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentinvalidcharacterexceptioncreateattribute1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodelistindexgetlengthofemptylist.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementchangeattributevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeattributenodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetnextsiblingnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapinuseattributeerr.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrchildnodes2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrcreatetextnode2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodechildnodesempty.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataappenddatagetdata.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatareplacedataend.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetlastchildnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrcreatetextnode.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeclonefalsenocopytext.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeappendchild.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrappendchild2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrreplacedataoffsetgreater.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodetextnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeparentnode.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapnotfounderr.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementretrieveattrvalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodereplacechildoldchildnonexistent.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbefore.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodehaschildnodes.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodecommentnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/documentinvalidcharacterexceptioncreateentref1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrgetvalue2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementretrievetagname.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrspecifiedvaluechanged.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforenewchilddiffdocument.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrinsertbefore2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrreplacedatacountnegative.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatadeletedatabegining.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentcreateelement.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrinsertdataoffsetgreater.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textparseintolistofelements.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue07.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetownerdocumentnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatareplacedatamiddle.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeappendchildinvalidnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementremoveattributenode.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrsubstringoffsetgreater.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatadeletedatamiddle.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatasubstringexceedsvalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentgetrootnode.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatainsertdataend.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodedocumentnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeclonenodetrue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapchildnoderange.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapnumberofnodes.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue01.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentgetimplementation.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeappendchildchildexists.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrappendchild3.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentgetelementsbytagnamelength.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeelementnodeattributes.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrsubstringnegativeoffset.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_noderemovechildgetnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrsubstringcountnegative.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementnotfounderr.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodedocumentfragmentnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrdeletedataoffsetgreater.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatasubstringvalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetownerdocument.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementassociatedattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementinvalidcharacterexception1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textindexsizeerroffsetoutofbounds.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatadeletedatagetlengthanddata.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodereplacechildnodeancestor.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue08.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textsplittextthree.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentcreateelementcasesensitive.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrinsertbefore3.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodedocumentnodeattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdataindexsizeerrdeletedatacountnegative.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeelementnodevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodereplacechildnewchildexists.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_domimplementationfeaturexml.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementreplaceexistingattributegevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeelementnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementcreatenewattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodecommentnodevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrnextsiblingnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrremovechild1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapwrongdocumenterr.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapreturnnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue02.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrappendchild4.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementinuseattributeerr.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetlastchild.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgetattributenode.html
+/sdcard/android/layout_tests/dom/html/level1/core/documentgetdoctypenodtd.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapsetnameditemreturnvalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatareplacedataexceedslengthofdata.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodetextnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeattributenodeattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentgetdoctype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapsetnameditemthatexists.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentcreatedocumentfragment.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_commentgetcomment.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attreffectivevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textsplittextfour.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforenodeancestor.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrinsertbefore4.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textindexsizeerrnegativeoffset.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodecommentnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodetextnodeattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodedocumentnodevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatadeletedataexceedslength.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_textsplittextone.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodedocumentfragmentnodevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatagetdata.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatainsertdatabeginning.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetnextsibling.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodelistreturnfirstitem.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrremovechild2.html
+/sdcard/android/layout_tests/dom/html/level1/core/documentinvalidcharacterexceptioncreatepi.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue03.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrappendchild5.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrhaschildnodes.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrreplacechild1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrnormalize.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodedocumentfragmentnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementreplaceexistingattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeappendchildnewchilddiffdocument.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodelisttraverselist.html
+/sdcard/android/layout_tests/dom/html/level1/core/documentinvalidcharacterexceptioncreateentref.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatasetnodevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_entitiesremovenameditem1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrinsertbefore5.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgetelementsbytagname.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrcreatedocumentfragment.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrclonenode1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapremovenameditem.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementaddnewattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodelistindexequalzero.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodechildnodes.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgetelementempty.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatainsertdatamiddle.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentcreatecomment.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetprevioussibling.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforerefchildnonexistent.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementremoveattributeaftercreate.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_noderemovechildoldchildnonexistent.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementwrongdocumenterr.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_characterdatareplacedatabegining.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeattributenodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodecommentnodeattributes.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodevalue04.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentinvalidcharacterexceptioncreateattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementremoveattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrappendchild6.html
+/sdcard/android/layout_tests/dom/html/level1/core/documentinvalidcharacterexceptioncreatepi1.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeelementnodetype.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrname.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapgetnameditem.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgettagname.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapsetnameditem.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeinsertbeforerefchildnull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrreplacechild2.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeparentnodenull.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodecloneattributescopied.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeclonenodefalse.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodereplacechildnodename.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementgetelementsbytagnameaccessnodelist.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeclonetruecopytext.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_attrinsertbefore6.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodelistindexgetlength.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_elementreplaceattributewithself.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentcreateattribute.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodeappendchilddocfragment.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_namednodemapsetnameditemwithnewvalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_documentgetelementsbytagnamevalue.html
+/sdcard/android/layout_tests/dom/html/level1/core/hc_nodegetfirstchild.html
+/sdcard/android/layout_tests/dom/html/level2/events/EventTargetCast01.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent12.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent04.html
+/sdcard/android/layout_tests/dom/html/level2/events/createEvent02.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent08.html
+/sdcard/android/layout_tests/dom/html/level2/events/initEvent04.html
+/sdcard/android/layout_tests/dom/html/level2/events/DocumentEventCast01.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent01.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent13.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent05.html
+/sdcard/android/layout_tests/dom/html/level2/events/initEvent01.html
+/sdcard/android/layout_tests/dom/html/level2/events/createEvent03.html
+/sdcard/android/layout_tests/dom/html/level2/events/initEvent05.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent09.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent10.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent02.html
+/sdcard/android/layout_tests/dom/html/level2/events/initEvent02.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent06.html
+/sdcard/android/layout_tests/dom/html/level2/events/createEvent04.html
+/sdcard/android/layout_tests/dom/html/level2/events/initEvent06.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent11.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent03.html
+/sdcard/android/layout_tests/dom/html/level2/events/createEvent01.html
+/sdcard/android/layout_tests/dom/html/level2/events/dispatchEvent07.html
+/sdcard/android/layout_tests/dom/html/level2/events/initEvent03.html
+/sdcard/android/layout_tests/dom/html/level2/events/createEvent05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement87.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/hasFeature04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement26.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement141.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement37.html
+/sdcard/android/layout_tests/dom/html/level2/html/table12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIsIndexElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameSetElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLModElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement27.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement90.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/table45.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionsCollection01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement124.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement40.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLParamElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement30.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptGroupElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement73.html
+/sdcard/android/layout_tests/dom/html/level2/html/table28.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/anchor02.html
+/sdcard/android/layout_tests/dom/html/level2/html/object09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement27.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement107.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement23.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLMetaElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument25.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement56.html
+/sdcard/android/layout_tests/dom/html/level2/html/table31.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/object12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement30.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement89.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement110.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLabelElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/hasFeature06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement28.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement143.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBaseElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement39.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIsIndexElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLModElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement29.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement92.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/table47.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionsCollection03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement126.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement42.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLParamElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement75.html
+/sdcard/android/layout_tests/dom/html/level2/html/table50.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/anchor04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement29.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLScriptElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement109.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement25.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument27.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement58.html
+/sdcard/android/layout_tests/dom/html/level2/html/table33.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHeadingElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/area01.html
+/sdcard/android/layout_tests/dom/html/level2/html/object14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement32.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement112.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLabelElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDivElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLUListElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement145.html
+/sdcard/android/layout_tests/dom/html/level2/html/button01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement61.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLegendElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCaptionElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement94.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFieldSetElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/table49.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLIElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionsCollection05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement128.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLMapElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement44.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement77.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/table52.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement21.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/anchor06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement131.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLParagraphElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLScriptElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement27.html
+/sdcard/android/layout_tests/dom/html/level2/html/table02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement80.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/table35.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHeadingElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/area03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement34.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement114.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement30.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLStyleElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/button03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement63.html
+/sdcard/android/layout_tests/dom/html/level2/html/table18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLegendElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement96.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionsCollection07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement46.html
+/sdcard/android/layout_tests/dom/html/level2/html/table21.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/object02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLQuoteElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement79.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement100.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement133.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLScriptElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement29.html
+/sdcard/android/layout_tests/dom/html/level2/html/table04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement82.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/table37.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHeadingElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement21.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement36.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement116.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement32.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/basefont01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLStyleElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement22.html
+/sdcard/android/layout_tests/dom/html/level2/html/button05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement65.html
+/sdcard/android/layout_tests/dom/html/level2/html/table40.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement98.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement48.html
+/sdcard/android/layout_tests/dom/html/level2/html/table23.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/object04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLPreElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement22.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOListElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement102.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement135.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement51.html
+/sdcard/android/layout_tests/dom/html/level2/html/table06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHeadElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement84.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/table39.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/hasFeature01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement23.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement38.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement118.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement34.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBaseFontElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement24.html
+/sdcard/android/layout_tests/dom/html/level2/html/button07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement67.html
+/sdcard/android/layout_tests/dom/html/level2/html/table42.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement121.html
+/sdcard/android/layout_tests/dom/html/level2/html/dlist01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement70.html
+/sdcard/android/layout_tests/dom/html/level2/html/table25.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLMenuElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFontElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement24.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement104.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLMetaElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument22.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement137.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHRElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement53.html
+/sdcard/android/layout_tests/dom/html/level2/html/table08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement86.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/hasFeature03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement25.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement140.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement36.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBaseFontElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameSetElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement26.html
+/sdcard/android/layout_tests/dom/html/level2/html/button09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement69.html
+/sdcard/android/layout_tests/dom/html/level2/html/table44.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement123.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLParamElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement72.html
+/sdcard/android/layout_tests/dom/html/level2/html/table27.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/anchor01.html
+/sdcard/android/layout_tests/dom/html/level2/html/object08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement26.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement106.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement22.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLMetaElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/body01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument24.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement139.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHRElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement55.html
+/sdcard/android/layout_tests/dom/html/level2/html/table30.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/object11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement88.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHtmlElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLabelElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTitleElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/hasFeature05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement27.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement142.html
+/sdcard/android/layout_tests/dom/html/level2/html/doc01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBaseElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/AppletsCollection.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement38.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIsIndexElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLModElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement28.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement91.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/table46.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement30.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionsCollection02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement125.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement41.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLParamElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement31.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptGroupElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement74.html
+/sdcard/android/layout_tests/dom/html/level2/html/table29.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/anchor03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement28.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLScriptElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement108.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement24.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument26.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement57.html
+/sdcard/android/layout_tests/dom/html/level2/html/table32.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/object13.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement31.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement111.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLabelElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement29.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement144.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement60.html
+/sdcard/android/layout_tests/dom/html/level2/html/table15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLegendElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLModElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement93.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFieldSetElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/table48.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLIElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionsCollection04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement127.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement43.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement76.html
+/sdcard/android/layout_tests/dom/html/level2/html/table51.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/anchor05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement130.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLScriptElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement26.html
+/sdcard/android/layout_tests/dom/html/level2/html/table01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement59.html
+/sdcard/android/layout_tests/dom/html/level2/html/table34.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHeadingElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/area02.html
+/sdcard/android/layout_tests/dom/html/level2/html/object15.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement33.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement113.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLUListElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBRElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/button02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLButtonElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement62.html
+/sdcard/android/layout_tests/dom/html/level2/html/table17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLegendElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement95.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionsCollection06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement129.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLMapElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement45.html
+/sdcard/android/layout_tests/dom/html/level2/html/table20.html
+/sdcard/android/layout_tests/dom/html/level2/html/object01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement78.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/table53.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement22.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement17.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement132.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLScriptElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement28.html
+/sdcard/android/layout_tests/dom/html/level2/html/table03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement81.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/table36.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHeadingElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/area04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement20.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement35.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement115.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDlistElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement31.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLStyleElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement21.html
+/sdcard/android/layout_tests/dom/html/level2/html/button04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement64.html
+/sdcard/android/layout_tests/dom/html/level2/html/table19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement97.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement47.html
+/sdcard/android/layout_tests/dom/html/level2/html/table22.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/object03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement21.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOListElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLQuoteElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement101.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement19.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement134.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLScriptElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement50.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement83.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/table38.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHeadingElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement21.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement22.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement37.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement117.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement33.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDirectoryElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement23.html
+/sdcard/android/layout_tests/dom/html/level2/html/button06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement66.html
+/sdcard/android/layout_tests/dom/html/level2/html/table41.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement40.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement99.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement120.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement16.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAppletElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement49.html
+/sdcard/android/layout_tests/dom/html/level2/html/table24.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFontElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/object05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLCollection11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLImageElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement23.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOListElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement103.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument21.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement136.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHRElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement52.html
+/sdcard/android/layout_tests/dom/html/level2/html/table07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLSelectElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableColElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement85.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement09.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAnchorElement14.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/hasFeature02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement24.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement39.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement119.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement35.html
+/sdcard/android/layout_tests/dom/html/level2/html/table10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBaseFontElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement25.html
+/sdcard/android/layout_tests/dom/html/level2/html/button08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement68.html
+/sdcard/android/layout_tests/dom/html/level2/html/table43.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLInputElement12.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTextAreaElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableRowElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFrameElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement122.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement18.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFormElement04.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLAreaElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLObjectElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement71.html
+/sdcard/android/layout_tests/dom/html/level2/html/table26.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLIFrameElement06.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLFontElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/object07.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableCellElement10.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableElement25.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement105.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLLinkElement08.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLOptionElement05.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement21.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLMetaElement02.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLBodyElement01.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLDocument23.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement138.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLHRElement03.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLTableSectionElement11.html
+/sdcard/android/layout_tests/dom/html/level2/html/HTMLElement54.html
+/sdcard/android/layout_tests/dom/html/level2/html/table09.html
+/sdcard/android/layout_tests/dom/html/level2/html/object10.html
+/sdcard/android/layout_tests/dom/html/level2/core/hc_notationsremovenameditemns1.html
+/sdcard/android/layout_tests/dom/html/level2/core/hc_entitiessetnameditemns1.html
+/sdcard/android/layout_tests/dom/html/level2/core/setAttributeNS10.html
+/sdcard/android/layout_tests/dom/html/level2/core/hc_nodedocumentfragmentnormalize2.html
+/sdcard/android/layout_tests/dom/html/level2/core/hc_namednodemapinvalidtype1.html
+/sdcard/android/layout_tests/dom/html/level2/core/createAttributeNS06.html
+/sdcard/android/layout_tests/dom/html/level2/core/createDocumentType04.html
+/sdcard/android/layout_tests/dom/html/level2/core/hc_notationssetnameditemns1.html
+/sdcard/android/layout_tests/dom/html/level2/core/hc_entitiesremovenameditemns1.html
+/sdcard/android/layout_tests/dom/html/level2/core/hc_nodedocumentfragmentnormalize1.html
+/sdcard/android/layout_tests/dom/html/level2/core/createDocument08.html
+/sdcard/android/layout_tests/plugins/createScriptableObject-before-start.html
+/sdcard/android/layout_tests/plugins/get-empty-url.html
+/sdcard/android/layout_tests/plugins/return-error-from-new-stream-callback-in-full-frame-plugin.html
+/sdcard/android/layout_tests/editing/style/temporary-span-crash.html
+/sdcard/android/layout_tests/editing/style/4230923.html
+/sdcard/android/layout_tests/editing/inserting/5549929-1.html
+/sdcard/android/layout_tests/editing/inserting/6104369.html
+/sdcard/android/layout_tests/editing/inserting/5803706-2.html
+/sdcard/android/layout_tests/editing/inserting/5685601-2.html
+/sdcard/android/layout_tests/editing/inserting/5607069-1.html
+/sdcard/android/layout_tests/editing/inserting/5803706-1.html
+/sdcard/android/layout_tests/editing/inserting/5685601-1.html
+/sdcard/android/layout_tests/editing/inserting/5994480.html
+/sdcard/android/layout_tests/editing/inserting/6104369-2.html
+/sdcard/android/layout_tests/editing/inserting/insert-before-link-1.html
+/sdcard/android/layout_tests/editing/inserting/5378847.html
+/sdcard/android/layout_tests/editing/inserting/5685601-3.html
+/sdcard/android/layout_tests/editing/execCommand/19403.html
+/sdcard/android/layout_tests/editing/execCommand/default-parameters.html
+/sdcard/android/layout_tests/editing/execCommand/19455.html
+/sdcard/android/layout_tests/editing/execCommand/19087.html
+/sdcard/android/layout_tests/editing/execCommand/empty-span-removal.html
+/sdcard/android/layout_tests/editing/execCommand/5469868.html
+/sdcard/android/layout_tests/editing/execCommand/5575101-1.html
+/sdcard/android/layout_tests/editing/execCommand/findString-3.html
+/sdcard/android/layout_tests/editing/execCommand/16049.html
+/sdcard/android/layout_tests/editing/execCommand/19653-1.html
+/sdcard/android/layout_tests/editing/execCommand/arguments-combinations.html
+/sdcard/android/layout_tests/editing/execCommand/5575101-3.html
+/sdcard/android/layout_tests/editing/execCommand/5770834-1.html
+/sdcard/android/layout_tests/editing/execCommand/5483526.html
+/sdcard/android/layout_tests/editing/execCommand/5658933-1.html
+/sdcard/android/layout_tests/editing/execCommand/6355786.html
+/sdcard/android/layout_tests/editing/execCommand/5604313.html
+/sdcard/android/layout_tests/editing/execCommand/19653-3.html
+/sdcard/android/layout_tests/editing/execCommand/5763082.html
+/sdcard/android/layout_tests/editing/execCommand/6444148.html
+/sdcard/android/layout_tests/editing/execCommand/4976800.html
+/sdcard/android/layout_tests/editing/execCommand/4928635.html
+/sdcard/android/layout_tests/editing/execCommand/4920742-2.html
+/sdcard/android/layout_tests/editing/execCommand/4917055.html
+/sdcard/android/layout_tests/editing/execCommand/5575101-2.html
+/sdcard/android/layout_tests/editing/execCommand/12244.html
+/sdcard/android/layout_tests/editing/execCommand/19653-2.html
+/sdcard/android/layout_tests/editing/execCommand/4916235.html
+/sdcard/android/layout_tests/editing/execCommand/5458246.html
+/sdcard/android/layout_tests/editing/execCommand/toggle-styles.html
+/sdcard/android/layout_tests/editing/pasteboard/5761530-2.html
+/sdcard/android/layout_tests/editing/pasteboard/6018653.html
+/sdcard/android/layout_tests/editing/pasteboard/4930986-1.html
+/sdcard/android/layout_tests/editing/pasteboard/5780697-1.html
+/sdcard/android/layout_tests/editing/pasteboard/4930986-3.html
+/sdcard/android/layout_tests/editing/pasteboard/5245519.html
+/sdcard/android/layout_tests/editing/pasteboard/5521237.html
+/sdcard/android/layout_tests/editing/pasteboard/newlines-around-floating-or-positioned.html
+/sdcard/android/layout_tests/editing/pasteboard/5078739.html
+/sdcard/android/layout_tests/editing/pasteboard/createMarkup-assert.xml
+/sdcard/android/layout_tests/editing/pasteboard/4930986-2.html
+/sdcard/android/layout_tests/editing/pasteboard/5480736.html
+/sdcard/android/layout_tests/editing/selection/5497643.html
+/sdcard/android/layout_tests/editing/selection/5825350-1.html
+/sdcard/android/layout_tests/editing/selection/setBaseAndExtent-revert-selection.html
+/sdcard/android/layout_tests/editing/selection/selection-invalid-offset.html
+/sdcard/android/layout_tests/editing/selection/rangeCount.html
+/sdcard/android/layout_tests/editing/selection/5714333.html
+/sdcard/android/layout_tests/editing/selection/select-line.html
+/sdcard/android/layout_tests/editing/selection/doubleclick-whitespace-crash.html
+/sdcard/android/layout_tests/editing/selection/containsNode.html
+/sdcard/android/layout_tests/editing/selection/select-all-user-select-none.html
+/sdcard/android/layout_tests/editing/selection/selectAllChildren.html
+/sdcard/android/layout_tests/editing/selection/find-in-text-control.html
+/sdcard/android/layout_tests/editing/selection/extend.html
+/sdcard/android/layout_tests/editing/selection/5241148.html
+/sdcard/android/layout_tests/editing/selection/cleared-by-relayout.html
+/sdcard/android/layout_tests/editing/selection/5825350-2.html
+/sdcard/android/layout_tests/editing/selection/5794920-1.html
+/sdcard/android/layout_tests/editing/selection/5779984-1.html
+/sdcard/android/layout_tests/editing/selection/deleteFromDocument.html
+/sdcard/android/layout_tests/editing/undo/4059423-1.html
+/sdcard/android/layout_tests/editing/undo/4059423-2.html
+/sdcard/android/layout_tests/editing/undo/5658727.html
+/sdcard/android/layout_tests/editing/undo/5738768.html
+/sdcard/android/layout_tests/editing/deleting/2610675-2.html
+/sdcard/android/layout_tests/editing/deleting/5847330-2.html
+/sdcard/android/layout_tests/editing/deleting/6026335.html
+/sdcard/android/layout_tests/editing/deleting/2610675-1.html
+/sdcard/android/layout_tests/editing/deleting/5847330-1.html
+/sdcard/android/layout_tests/editing/deleting/5433862-1.html
+/sdcard/android/layout_tests/editing/deleting/5495723.html
+/sdcard/android/layout_tests/editing/deleting/5290534.html
+/sdcard/android/layout_tests/editing/deleting/2610675-3.html
/sdcard/android/layout_tests/fast/replaced/object-param-no-name.html
/sdcard/android/layout_tests/fast/dynamic/subtree-common-root.html
/sdcard/android/layout_tests/fast/dynamic/hovered-detach.html
@@ -15,6 +1063,7 @@
/sdcard/android/layout_tests/fast/text/find-backwards.html
/sdcard/android/layout_tests/fast/text/large-text-composed-char-dos.html
/sdcard/android/layout_tests/fast/text/find-case-folding.html
+/sdcard/android/layout_tests/fast/text/text-shadow-extreme-value.html
/sdcard/android/layout_tests/fast/text/line-breaks-after-ideographic-comma-or-full-stop.html
/sdcard/android/layout_tests/fast/encoding/gbk/chinese.html
/sdcard/android/layout_tests/fast/encoding/gbk/x-euc-cn.html
@@ -68,12 +1117,10 @@
/sdcard/android/layout_tests/fast/encoding/pseudo-xml-3.html
/sdcard/android/layout_tests/fast/encoding/pseudo-xml.html
/sdcard/android/layout_tests/fast/encoding/tag-in-title.html
-/sdcard/android/layout_tests/fast/encoding/yahoo-mail.html
-/sdcard/android/layout_tests/fast/encoding/ahram-org-eg.html
-/sdcard/android/layout_tests/fast/encoding/noscript-in-head.html
/sdcard/android/layout_tests/fast/encoding/script-in-head.html
/sdcard/android/layout_tests/fast/encoding/css-cached-bom.html
/sdcard/android/layout_tests/fast/encoding/mispositioned-meta.html
+/sdcard/android/layout_tests/fast/encoding/preload-encoding.html
/sdcard/android/layout_tests/fast/multicol/gap-non-negative.html
/sdcard/android/layout_tests/fast/multicol/content-height-zero-crash.html
/sdcard/android/layout_tests/fast/doctypes/doctype-at-end.html
@@ -106,6 +1153,7 @@
/sdcard/android/layout_tests/fast/events/no-blur-on-page-leave.html
/sdcard/android/layout_tests/fast/events/onload-name-collision.html
/sdcard/android/layout_tests/fast/events/div-focus.html
+/sdcard/android/layout_tests/fast/events/related-target.html
/sdcard/android/layout_tests/fast/events/overflow-events.html
/sdcard/android/layout_tests/fast/events/create-document-crash-on-attach-event.html
/sdcard/android/layout_tests/fast/events/no-blur-on-enter-button.html
@@ -113,6 +1161,8 @@
/sdcard/android/layout_tests/fast/events/shadow-boundary-crossing.html
/sdcard/android/layout_tests/fast/events/submit-reset-nested-bubble.html
/sdcard/android/layout_tests/fast/events/nested-event-remove-node-crash.html
+/sdcard/android/layout_tests/fast/events/onsubmit-bubbling.html
+/sdcard/android/layout_tests/fast/events/onload-fires-twice.html
/sdcard/android/layout_tests/fast/events/mousedown_in_scrollbar.html
/sdcard/android/layout_tests/fast/events/window-load-capture.html
/sdcard/android/layout_tests/fast/events/event-instanceof.html
@@ -128,6 +1178,8 @@
/sdcard/android/layout_tests/fast/events/event-targets.html
/sdcard/android/layout_tests/fast/events/space-scroll-event.html
/sdcard/android/layout_tests/fast/events/onload-after-document-close-no-subresource.html
+/sdcard/android/layout_tests/fast/events/nested-window-event.html
+/sdcard/android/layout_tests/fast/events/selectstart-during-autoscroll.html
/sdcard/android/layout_tests/fast/events/stopPropagation-checkbox.html
/sdcard/android/layout_tests/fast/events/tab-crash-with-image-map.html
/sdcard/android/layout_tests/fast/events/simulated-key-state.html
@@ -166,10 +1218,59 @@
/sdcard/android/layout_tests/fast/regex/slow.html
/sdcard/android/layout_tests/fast/regex/malformed-escapes.html
/sdcard/android/layout_tests/fast/regex/early-acid3-86.html
-/sdcard/android/layout_tests/fast/regex/test1.html
/sdcard/android/layout_tests/fast/regex/alternative-length-miscalculation.html
/sdcard/android/layout_tests/fast/regex/test4.html
/sdcard/android/layout_tests/fast/regex/non-capturing-backtracking.html
+/sdcard/android/layout_tests/fast/js/kde/Boolean.html
+/sdcard/android/layout_tests/fast/js/kde/function.html
+/sdcard/android/layout_tests/fast/js/kde/function_length.html
+/sdcard/android/layout_tests/fast/js/kde/const.html
+/sdcard/android/layout_tests/fast/js/kde/constructor_length.html
+/sdcard/android/layout_tests/fast/js/kde/statements.html
+/sdcard/android/layout_tests/fast/js/kde/math.html
+/sdcard/android/layout_tests/fast/js/kde/assignments.html
+/sdcard/android/layout_tests/fast/js/kde/crash-1.html
+/sdcard/android/layout_tests/fast/js/kde/delete.html
+/sdcard/android/layout_tests/fast/js/kde/var_decl_init.html
+/sdcard/android/layout_tests/fast/js/kde/literals.html
+/sdcard/android/layout_tests/fast/js/kde/eval.html
+/sdcard/android/layout_tests/fast/js/kde/j-comment-3.html
+/sdcard/android/layout_tests/fast/js/kde/StringObject.html
+/sdcard/android/layout_tests/fast/js/kde/crash-2.html
+/sdcard/android/layout_tests/fast/js/kde/exception_propagation.html
+/sdcard/android/layout_tests/fast/js/kde/conditional.html
+/sdcard/android/layout_tests/fast/js/kde/scope.html
+/sdcard/android/layout_tests/fast/js/kde/parse.html
+/sdcard/android/layout_tests/fast/js/kde/function_arguments.html
+/sdcard/android/layout_tests/fast/js/kde/arguments-scope.html
+/sdcard/android/layout_tests/fast/js/kde/lval-exceptions.html
+/sdcard/android/layout_tests/fast/js/kde/operators.html
+/sdcard/android/layout_tests/fast/js/kde/Array.html
+/sdcard/android/layout_tests/fast/js/kde/md5-1.html
+/sdcard/android/layout_tests/fast/js/kde/object_prototype_tostring.html
+/sdcard/android/layout_tests/fast/js/kde/Date-setYear.html
+/sdcard/android/layout_tests/fast/js/kde/GlobalObject.html
+/sdcard/android/layout_tests/fast/js/kde/prototype_proto.html
+/sdcard/android/layout_tests/fast/js/kde/evil-n.html
+/sdcard/android/layout_tests/fast/js/kde/RegExp.html
+/sdcard/android/layout_tests/fast/js/kde/cast.html
+/sdcard/android/layout_tests/fast/js/kde/j-comment-4.html
+/sdcard/android/layout_tests/fast/js/kde/iteration.html
+/sdcard/android/layout_tests/fast/js/kde/comment-1.html
+/sdcard/android/layout_tests/fast/js/kde/Prototype.html
+/sdcard/android/layout_tests/fast/js/kde/completion.html
+/sdcard/android/layout_tests/fast/js/kde/exceptions.html
+/sdcard/android/layout_tests/fast/js/kde/md5-2.html
+/sdcard/android/layout_tests/fast/js/kde/Error.html
+/sdcard/android/layout_tests/fast/js/kde/function_constructor.html
+/sdcard/android/layout_tests/fast/js/kde/object_prototype.html
+/sdcard/android/layout_tests/fast/js/kde/empty.html
+/sdcard/android/layout_tests/fast/js/kde/inbuilt_function_proto.html
+/sdcard/android/layout_tests/fast/js/kde/func-decl.html
+/sdcard/android/layout_tests/fast/js/kde/comment-2.html
+/sdcard/android/layout_tests/fast/js/kde/inbuilt_function_tostring.html
+/sdcard/android/layout_tests/fast/js/kde/Object.html
+/sdcard/android/layout_tests/fast/js/kde/prototype_length.html
/sdcard/android/layout_tests/fast/js/pic/cached-single-entry-transition.html
/sdcard/android/layout_tests/fast/js/pic/cached-prototype-setter.html
/sdcard/android/layout_tests/fast/js/pic/get-empty-string.html
@@ -226,7 +1327,6 @@
/sdcard/android/layout_tests/fast/js/do-while-semicolon.html
/sdcard/android/layout_tests/fast/js/regexp-divequal.html
/sdcard/android/layout_tests/fast/js/named-function-expression.html
-/sdcard/android/layout_tests/fast/js/array-iterate-backwards.html
/sdcard/android/layout_tests/fast/js/constructor-attributes.html
/sdcard/android/layout_tests/fast/js/array-some.html
/sdcard/android/layout_tests/fast/js/missing-title-end-tag-js.html
@@ -345,7 +1445,6 @@
/sdcard/android/layout_tests/fast/js/date-constructor.html
/sdcard/android/layout_tests/fast/js/date-big-setdate.html
/sdcard/android/layout_tests/fast/js/array-every.html
-/sdcard/android/layout_tests/fast/js/function-toString-parentheses.html
/sdcard/android/layout_tests/fast/js/array-functions-non-arrays.html
/sdcard/android/layout_tests/fast/js/while-expression-value.html
/sdcard/android/layout_tests/fast/js/string-replace-3.html
@@ -393,6 +1492,7 @@
/sdcard/android/layout_tests/fast/js/throw-from-array-sort.html
/sdcard/android/layout_tests/fast/js/slash-lineterminator-parse.html
/sdcard/android/layout_tests/fast/js/dot-node-base-exception.html
+/sdcard/android/layout_tests/fast/js/toString-stack-overflow.html
/sdcard/android/layout_tests/fast/js/codegen-peephole-locals.html
/sdcard/android/layout_tests/fast/js/constant-count.html
/sdcard/android/layout_tests/fast/js/regexp-compile.html
@@ -431,8 +1531,6 @@
/sdcard/android/layout_tests/fast/dom/HTMLTableElement/tBodies.html
/sdcard/android/layout_tests/fast/dom/HTMLTableElement/rows.html
/sdcard/android/layout_tests/fast/dom/HTMLDocument/write-multiple-calls.html
-/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-special-properties.html
-/sdcard/android/layout_tests/fast/dom/HTMLDocument/url-getset.html
/sdcard/android/layout_tests/fast/dom/HTMLDocument/writeln-call.html
/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-plugins.html
/sdcard/android/layout_tests/fast/dom/HTMLDocument/title-get.html
@@ -559,6 +1657,12 @@
/sdcard/android/layout_tests/fast/dom/Window/alert-undefined.html
/sdcard/android/layout_tests/fast/dom/Window/window-open-top.html
/sdcard/android/layout_tests/fast/dom/Window/window-appendages-cleared.html
+/sdcard/android/layout_tests/fast/dom/Window/global-opener-function.html
+/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing.html
+/sdcard/android/layout_tests/fast/dom/Window/remove-timeout-crash.html
+/sdcard/android/layout_tests/fast/dom/Window/window-custom-prototype.html
+/sdcard/android/layout_tests/fast/dom/Window/timeout-callback-scope.html
+/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing-name.html
/sdcard/android/layout_tests/fast/dom/Window/window-open-parent-no-parent.html
/sdcard/android/layout_tests/fast/dom/Window/closure-access-after-navigation-iframe.html
/sdcard/android/layout_tests/fast/dom/HTMLTableRowElement/cells.html
@@ -611,23 +1715,7 @@
/sdcard/android/layout_tests/fast/dom/css-dom-read.html
/sdcard/android/layout_tests/fast/dom/image-object.html
/sdcard/android/layout_tests/fast/dom/gc-5.html
-/sdcard/android/layout_tests/fast/dom/node-filter-gc.html
-/sdcard/android/layout_tests/fast/dom/noscript-canvas-in-created-html-document.html
-/sdcard/android/layout_tests/fast/dom/DOMParser-assign-variable.html
-/sdcard/android/layout_tests/fast/dom/timer-clear-interval-in-handler.html
-/sdcard/android/layout_tests/fast/dom/implementation-createHTMLDocument.html
-/sdcard/android/layout_tests/fast/dom/iframe-document.html
-/sdcard/android/layout_tests/fast/dom/document-all-input.html
-/sdcard/android/layout_tests/fast/dom/null-document-location-href-put-crash.html
-/sdcard/android/layout_tests/fast/dom/getelementsbytagnamens-mixed-namespaces.html
-/sdcard/android/layout_tests/fast/dom/object-plugin-hides-properties.html
-/sdcard/android/layout_tests/fast/dom/gc-2.html
-/sdcard/android/layout_tests/fast/dom/computed-style-set-property.html
-/sdcard/android/layout_tests/fast/dom/inner-text-001.html
-/sdcard/android/layout_tests/fast/dom/css-selectorText.html
-/sdcard/android/layout_tests/fast/dom/replace-first-child.html
-/sdcard/android/layout_tests/fast/dom/importNode-null.html
-/sdcard/android/layout_tests/fast/dom/select-selectedIndex-multiple.html
+/sdcard/android/layout_tests/fast/dom/cssTarget-crash.html
/sdcard/android/layout_tests/fast/dom/xmlhttprequest-invalid-values.html
/sdcard/android/layout_tests/fast/dom/space-to-text.html
/sdcard/android/layout_tests/fast/dom/css-set-property-exception.html
@@ -643,6 +1731,7 @@
/sdcard/android/layout_tests/fast/dom/getelementbyname-invalidation.html
/sdcard/android/layout_tests/fast/dom/capturing-event-listeners.html
/sdcard/android/layout_tests/fast/dom/title-text-property.html
+/sdcard/android/layout_tests/fast/dom/null-page-show-modal-dialog-crash.html
/sdcard/android/layout_tests/fast/dom/incompatible-operations.html
/sdcard/android/layout_tests/fast/dom/xmlhttprequest-html-response-encoding.html
/sdcard/android/layout_tests/fast/dom/inner-text-rtl.html
@@ -671,7 +1760,6 @@
/sdcard/android/layout_tests/fast/dom/document-all-select.html
/sdcard/android/layout_tests/fast/dom/anchor-backslash.html
/sdcard/android/layout_tests/fast/dom/css-mediarule-functions.html
-/sdcard/android/layout_tests/fast/dom/gc-acid3.html
/sdcard/android/layout_tests/fast/dom/duplicate-ids-document-order.html
/sdcard/android/layout_tests/fast/dom/exception-no-frame-inline-script-crash.html
/sdcard/android/layout_tests/fast/dom/XMLSerializer-doctype2.html
@@ -686,6 +1774,14 @@
/sdcard/android/layout_tests/fast/dom/createElement.html
/sdcard/android/layout_tests/fast/dom/createElement-with-column.xml
/sdcard/android/layout_tests/fast/dom/simultaneouslyRegsiteredTimerFireOrder.html
+/sdcard/android/layout_tests/fast/dom/clone-node-form-elements-with-attr.html
+/sdcard/android/layout_tests/fast/dom/setAttributeNS.html
+/sdcard/android/layout_tests/fast/dom/anchor-toString.html
+/sdcard/android/layout_tests/fast/dom/dom-add-optionelement.html
+/sdcard/android/layout_tests/fast/dom/location-assign.html
+/sdcard/android/layout_tests/fast/dom/documenturi-affects-relative-paths.html
+/sdcard/android/layout_tests/fast/dom/javascript-backslash.html
+/sdcard/android/layout_tests/fast/dom/setAttribute-using-initial-input-value.html
/sdcard/android/layout_tests/fast/dom/generic-form-element-assert.html
/sdcard/android/layout_tests/fast/dom/css-shortHands.html
/sdcard/android/layout_tests/fast/dom/dom-instanceof.html
@@ -713,7 +1809,6 @@
/sdcard/android/layout_tests/fast/dom/exception-no-frame-timeout-crash.html
/sdcard/android/layout_tests/fast/dom/title-text-property-2.html
/sdcard/android/layout_tests/fast/dom/no-elements.html
-/sdcard/android/layout_tests/fast/dom/non-numeric-values-numeric-parameters.html
/sdcard/android/layout_tests/fast/dom/gc-4.html
/sdcard/android/layout_tests/fast/dom/inner-width-height.html
/sdcard/android/layout_tests/fast/dom/XMLSerializer-doctype.html
@@ -723,14 +1818,6 @@
/sdcard/android/layout_tests/fast/dom/gc-1.html
/sdcard/android/layout_tests/fast/dom/select-selectedIndex-bug-12942.html
/sdcard/android/layout_tests/fast/dom/frame-contentWindow-crash.html
-/sdcard/android/layout_tests/fast/dom/namednodemap-namelookup.html
-/sdcard/android/layout_tests/fast/dom/null-document-location-replace-crash.html
-/sdcard/android/layout_tests/fast/dom/htmlcollection-detectability.html
-/sdcard/android/layout_tests/fast/dom/documenturi-assigned-junk-implies-relative-urls-do-not-resolve.html
-/sdcard/android/layout_tests/fast/dom/collection-namedItem-via-item.html
-/sdcard/android/layout_tests/fast/dom/set-inner-text-newlines.html
-/sdcard/android/layout_tests/fast/dom/document-dir-property.html
-/sdcard/android/layout_tests/fast/dom/undetectable-style-filter.html
/sdcard/android/layout_tests/fast/dom/domListEnumeration.html
/sdcard/android/layout_tests/fast/dom/destroy-selected-radio-button-crash.html
/sdcard/android/layout_tests/fast/dom/script-add.html
@@ -742,6 +1829,12 @@
/sdcard/android/layout_tests/fast/dom/attribute-namespaces-get-set.html
/sdcard/android/layout_tests/fast/dom/innerHTML-escaping-attribute.html
/sdcard/android/layout_tests/fast/dom/null-document-xmlhttprequest-open.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-put-crash.html
+/sdcard/android/layout_tests/fast/dom/ImageDocument-image-deletion.html
+/sdcard/android/layout_tests/fast/dom/document-scripts.html
+/sdcard/android/layout_tests/fast/gradients/crash-on-remove.html
+/sdcard/android/layout_tests/fast/xpath/xpath-empty-string.html
+/sdcard/android/layout_tests/fast/invalid/test-case-tr-th-td-should-not-close-dl-list.html
/sdcard/android/layout_tests/fast/invalid/nestedh3s-rapidweaver.html
/sdcard/android/layout_tests/fast/forms/element-by-name.html
/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_selected.html
@@ -751,7 +1844,6 @@
/sdcard/android/layout_tests/fast/forms/textfield-focus-out.html
/sdcard/android/layout_tests/fast/forms/willvalidate-000.html
/sdcard/android/layout_tests/fast/forms/form-data-encoding-normalization-overrun.html
-/sdcard/android/layout_tests/fast/forms/select-reset.html
/sdcard/android/layout_tests/fast/forms/input-named-action-overrides-action-attribute.html
/sdcard/android/layout_tests/fast/forms/empty-get.html
/sdcard/android/layout_tests/fast/forms/display-none-in-onchange-keyboard.html
@@ -762,18 +1854,25 @@
/sdcard/android/layout_tests/fast/forms/autofocus-opera-006.html
/sdcard/android/layout_tests/fast/forms/activate-and-disabled-elements.html
/sdcard/android/layout_tests/fast/forms/form-get-multipart2.html
+/sdcard/android/layout_tests/fast/forms/tabs-with-modifiers.html
+/sdcard/android/layout_tests/fast/forms/menulist-no-renderer-onmousedown.html
+/sdcard/android/layout_tests/fast/forms/saved-state-adoptNode-crash.html
/sdcard/android/layout_tests/fast/forms/select-replace-option.html
/sdcard/android/layout_tests/fast/forms/textarea-setvalue-submit.html
+/sdcard/android/layout_tests/fast/forms/11423.html
/sdcard/android/layout_tests/fast/forms/cursor-position.html
/sdcard/android/layout_tests/fast/forms/willvalidate-007.html
/sdcard/android/layout_tests/fast/forms/input-changing-value.html
/sdcard/android/layout_tests/fast/forms/double-focus.html
/sdcard/android/layout_tests/fast/forms/form-data-encoding-2.html
/sdcard/android/layout_tests/fast/forms/focus.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-004.html
/sdcard/android/layout_tests/fast/forms/button-in-forms-collection.html
+/sdcard/android/layout_tests/fast/forms/input-text-enter.html
/sdcard/android/layout_tests/fast/forms/input-delete.html
/sdcard/android/layout_tests/fast/forms/placeholder-non-textfield.html
/sdcard/android/layout_tests/fast/forms/element-order.html
+/sdcard/android/layout_tests/fast/forms/form-post-urlencoded.html
/sdcard/android/layout_tests/fast/forms/willvalidate-001.html
/sdcard/android/layout_tests/fast/forms/option-constructor-selected.html
/sdcard/android/layout_tests/fast/forms/8250.html
@@ -809,12 +1908,11 @@
/sdcard/android/layout_tests/fast/forms/select-index-setter.html
/sdcard/android/layout_tests/fast/forms/option-change-single-selected.html
/sdcard/android/layout_tests/fast/forms/listbox-scroll-after-options-removed.html
+/sdcard/android/layout_tests/fast/forms/input-selection-hidden.html
+/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-keyboard.html
/sdcard/android/layout_tests/fast/forms/willvalidate-002.html
+/sdcard/android/layout_tests/fast/forms/option-in-optgroup-removal.html
/sdcard/android/layout_tests/fast/forms/form-data-encoding.html
-/sdcard/android/layout_tests/fast/forms/input-appearance-elementFromPoint.html
-/sdcard/android/layout_tests/fast/forms/select-set-inner.html
-/sdcard/android/layout_tests/fast/forms/missing-action.html
-/sdcard/android/layout_tests/fast/forms/textarea-scrollbar-height.html
/sdcard/android/layout_tests/fast/forms/textarea-default-value-leading-newline.html
/sdcard/android/layout_tests/fast/forms/autofocus-opera-008.html
/sdcard/android/layout_tests/fast/forms/listbox-typeahead-empty.html
@@ -828,9 +1926,9 @@
/sdcard/android/layout_tests/fast/forms/input-setvalue-selection.html
/sdcard/android/layout_tests/fast/forms/autofocus-opera-002.html
/sdcard/android/layout_tests/fast/forms/old-names.html
-/sdcard/android/layout_tests/fast/forms/willvalidate-006.html
/sdcard/android/layout_tests/fast/forms/focus-style-pending.html
/sdcard/android/layout_tests/fast/forms/textarea-hard-linewrap-empty.html
+/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-mouse.html
/sdcard/android/layout_tests/fast/forms/document-write.html
/sdcard/android/layout_tests/fast/forms/slow-click.html
/sdcard/android/layout_tests/fast/forms/autofocus-attribute.html
@@ -985,6 +2083,7 @@
/sdcard/android/layout_tests/fast/loader/data-url-encoding-html.html
/sdcard/android/layout_tests/fast/loader/file-URL-with-port-number.html
/sdcard/android/layout_tests/fast/loader/link-no-URL.html
+/sdcard/android/layout_tests/fast/xsl/xslt-fragment-in-empty-doc.html
/sdcard/android/layout_tests/fast/canvas/pattern-with-transform.html
/sdcard/android/layout_tests/fast/canvas/gradient-addColorStop-with-invalid-color.html
/sdcard/android/layout_tests/fast/canvas/canvas-gradient-without-path.html
@@ -1041,6 +2140,63 @@
/sdcard/android/layout_tests/fast/frames/location-change.html
/sdcard/android/layout_tests/fast/frames/frame-base-url.html
/sdcard/android/layout_tests/fast/frames/iframe-display-none.html
-/sdcard/android/layout_tests/fast/frames/frame-display-none-focus.html
-/sdcard/android/layout_tests/fast/reflections/teardown-crash.html
-/sdcard/android/layout_tests/fast/reflections/reflection-computed-style.html
+/sdcard/android/layout_tests/animations/transition-and-animation-2.html
+/sdcard/android/layout_tests/animations/import-crash.html
+/sdcard/android/layout_tests/animations/empty-keyframes.html
+/sdcard/android/layout_tests/animations/width-using-ems.html
+/sdcard/android/layout_tests/animations/keyframes-out-of-order.html
+/sdcard/android/layout_tests/geolocation/geolocation-not-implemented.html
+/sdcard/android/layout_tests/traversal/node-iterator-003.html
+/sdcard/android/layout_tests/traversal/node-iterator-005.html
+/sdcard/android/layout_tests/traversal/node-iterator-007.html
+/sdcard/android/layout_tests/traversal/tree-walker-001.html
+/sdcard/android/layout_tests/traversal/node-iterator-009.html
+/sdcard/android/layout_tests/traversal/tree-walker-003.html
+/sdcard/android/layout_tests/traversal/tree-walker-005.html
+/sdcard/android/layout_tests/traversal/exception-forwarding.html
+/sdcard/android/layout_tests/traversal/stay-within-root.html
+/sdcard/android/layout_tests/traversal/node-iterator-002.html
+/sdcard/android/layout_tests/traversal/node-iterator-004.html
+/sdcard/android/layout_tests/traversal/node-iterator-006.html
+/sdcard/android/layout_tests/traversal/node-iterator-006a.html
+/sdcard/android/layout_tests/traversal/tree-walker-002.html
+/sdcard/android/layout_tests/traversal/node-iterator-008.html
+/sdcard/android/layout_tests/traversal/tree-walker-004.html
+/sdcard/android/layout_tests/traversal/tree-walker-006.html
+/sdcard/android/layout_tests/traversal/size-zero-run.html
+/sdcard/android/layout_tests/traversal/acid3-test-2.html
+/sdcard/android/layout_tests/traversal/tree-walker-filter-1.html
+/sdcard/android/layout_tests/traversal/node-iterator-001.html
+/sdcard/android/layout_tests/css2.1/atrule_longest_match.html
+/sdcard/android/layout_tests/css1/units/zero-duration-without-units.html
+/sdcard/android/layout_tests/css3/khtml-background-size-0x0-bmp.html
+/sdcard/android/layout_tests/transitions/transition-end-event-all-properties.html
+/sdcard/android/layout_tests/transitions/transition-end-event-window.html
+/sdcard/android/layout_tests/transitions/transition-end-event-multiple-03.html
+/sdcard/android/layout_tests/transitions/interrupted-all-transition.html
+/sdcard/android/layout_tests/transitions/transition-end-event-set-none.html
+/sdcard/android/layout_tests/transitions/zero-duration-without-units.html
+/sdcard/android/layout_tests/transitions/zero-duration-with-non-zero-delay-start.html
+/sdcard/android/layout_tests/transitions/inherit-other-props.html
+/sdcard/android/layout_tests/transitions/transition-end-event-multiple-04.html
+/sdcard/android/layout_tests/transitions/transition-duration-cleared-in-transitionend-crash.html
+/sdcard/android/layout_tests/transitions/interrupt-zero-duration.html
+/sdcard/android/layout_tests/transitions/retargetted-transition.html
+/sdcard/android/layout_tests/transitions/override-transition-crash.html
+/sdcard/android/layout_tests/transitions/transition-end-event-left.html
+/sdcard/android/layout_tests/transitions/matched-transform-functions.html
+/sdcard/android/layout_tests/transitions/transition-end-event-multiple-01.html
+/sdcard/android/layout_tests/transitions/transform-op-list-match.html
+/sdcard/android/layout_tests/transitions/interrupt-transform-transition.html
+/sdcard/android/layout_tests/transitions/transition-end-event-container.html
+/sdcard/android/layout_tests/transitions/transition-end-event-nested.html
+/sdcard/android/layout_tests/transitions/change-values-during-transition.html
+/sdcard/android/layout_tests/transitions/transition-end-event-attributes.html
+/sdcard/android/layout_tests/transitions/inherit.html
+/sdcard/android/layout_tests/transitions/transition-end-event-create.html
+/sdcard/android/layout_tests/transitions/transition-end-event-multiple-02.html
+/sdcard/android/layout_tests/transitions/shadow.html
+/sdcard/android/layout_tests/transitions/transition-end-event-transform.html
+/sdcard/android/layout_tests/transitions/transition-timing-function.html
+/sdcard/android/layout_tests/transitions/transform-op-list-no-match.html
+/sdcard/android/layout_tests/transitions/transition-end-event-destroy-renderer.html
diff --git a/tests/DumpRenderTree/assets/run_layout_tests.py b/tests/DumpRenderTree/assets/run_layout_tests.py
index 5409a0c..49165d0 100755
--- a/tests/DumpRenderTree/assets/run_layout_tests.py
+++ b/tests/DumpRenderTree/assets/run_layout_tests.py
@@ -61,7 +61,8 @@ def DumpRenderTreeFinished(adb_cmd):
adb_output = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
return adb_output.strip() == "#DONE"
-def DiffResults(marker, new_results, old_results, diff_results, strip_reason):
+def DiffResults(marker, new_results, old_results, diff_results, strip_reason,
+ new_count_first=True):
""" Given two result files, generate diff and
write to diff_results file. All arguments are absolute paths
to files.
@@ -85,21 +86,25 @@ def DiffResults(marker, new_results, old_results, diff_results, strip_reason):
for i in range(0, len(cdict)):
cdict[i] = cdict[i].split(' ')[0] + "\n"
- # Find results in new_results missing in old_results
- new_count=0
- for line in ndict:
- if line not in cdict:
- diff_file.writelines("+ " + line)
- new_count += 1
-
- # Find results in old_results missing in new_results
- missing_count=0
- for line in cdict:
- if line not in ndict:
- diff_file.writelines("- " + line)
- missing_count += 1
-
- logging.info(marker + " >>> " + str(new_count) + " new, " + str(missing_count) + " misses")
+ params = {
+ "new": [0, ndict, cdict, "+"],
+ "miss": [0, cdict, ndict, "-"]
+ }
+ if new_count_first:
+ order = ["new", "miss"]
+ else:
+ order = ["miss", "new"]
+
+ for key in order:
+ for line in params[key][1]:
+ if line not in params[key][2]:
+ if line[-1] != "\n":
+ line += "\n";
+ diff_file.writelines(params[key][3] + line)
+ params[key][0] += 1
+
+ logging.info(marker + " >>> " + str(params["new"][0]) + " new, " +
+ str(params["miss"][0]) + " misses")
diff_file.writelines("\n\n")
@@ -121,12 +126,12 @@ def CompareResults(ref_dir, results_dir):
if os.path.exists(diff_result):
os.remove(diff_result)
- files=["passed", "failed", "nontext", "crashed"]
+ files=["crashed", "failed", "passed", "nontext"]
for f in files:
result_file_name = "layout_tests_" + f + ".txt"
DiffResults(f, os.path.join(results_dir, result_file_name),
os.path.join(ref_dir, result_file_name), diff_result,
- f == "failed")
+ False, f != "passed")
logging.info("Detailed diffs are in " + diff_result)
def main(options, args):
diff --git a/tests/DumpRenderTree/assets/run_reliability_tests.py b/tests/DumpRenderTree/assets/run_reliability_tests.py
index a242293..23f93df 100755
--- a/tests/DumpRenderTree/assets/run_reliability_tests.py
+++ b/tests/DumpRenderTree/assets/run_reliability_tests.py
@@ -10,14 +10,16 @@
import logging
import optparse
-import random
+import os
import subprocess
import sys
import time
+from Numeric import *
TEST_LIST_FILE = "/sdcard/android/reliability_tests_list.txt"
TEST_STATUS_FILE = "/sdcard/android/reliability_running_test.txt"
TEST_TIMEOUT_FILE = "/sdcard/android/reliability_timeout_test.txt"
+TEST_LOAD_TIME_FILE = "/sdcard/android/reliability_load_time.txt"
HTTP_URL_FILE = "urllist_http"
HTTPS_URL_FILE = "urllist_https"
NUM_URLS = 25
@@ -41,40 +43,67 @@ def DumpRenderTreeFinished(adb_cmd):
return adb_output.strip() == "#DONE"
-def RandomPick(file_name, approx_size, num_needed):
- """Randomly pick lines from the text file specifed.
+def RemoveDeviceFile(adb_cmd, file_name):
+ shell_cmd_str = adb_cmd + " shell rm " + file_name
+ subprocess.Popen(shell_cmd_str,
+ shell=True, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE).communicate()
- Args:
- file_name: the text file where lines should be picked from
- approx_size: an approximate size of the text file
- num_needed: how many lines are needed from the file
- Returns:
- an array of string
- """
- p = float(num_needed) / approx_size
- num_picked = 0
- lines = []
- random.seed()
-
- while num_picked < num_needed:
- file_handle = open(file_name, "r")
- for line in file_handle:
- line = line.strip()
- if float(random.randint(0, approx_size)) / approx_size < p:
- lines.append(line)
- num_picked += 1
- if num_picked == num_needed:
- break
- file_handle.close()
- return lines
+def Bugreport(url, bugreport_dir, adb_cmd):
+ """Pull a bugreport from the device."""
+ bugreport_filename = "%s/reliability_bugreport_%d.txt" % (bugreport_dir,
+ int(time.time()))
+
+ # prepend the report with url
+ handle = open(bugreport_filename, "w")
+ handle.writelines("Bugreport for crash in url - %s\n\n" % url)
+ handle.close()
+
+ cmd = "%s bugreport >> %s" % (adb_cmd, bugreport_filename)
+ os.system(cmd)
+
+
+def ProcessPageLoadTime(raw_log):
+ """Processes the raw page load time logged by test app."""
+ log_handle = open(raw_log, "r")
+ load_times = {}
+
+ for line in log_handle:
+ line = line.strip()
+ pair = line.split("|")
+ if len(pair) != 2:
+ logging.info("Line has more than one '|': " + line)
+ continue
+ if pair[0] not in load_times:
+ load_times[pair[0]] = []
+ try:
+ pair[1] = int(pair[1])
+ except ValueError:
+ logging.info("Lins has non-numeric load time: " + line)
+ continue
+ load_times[pair[0]].append(pair[1])
+
+ log_handle.close()
+
+ # rewrite the average time to file
+ log_handle = open(raw_log, "w")
+ for url, times in load_times.iteritems():
+ # calculate std
+ arr = array(times)
+ avg = average(arr)
+ d = arr - avg
+ std = sqrt(sum(d * d) / len(arr))
+ output = ("%-70s%-10d%-10d%-12.2f%-12.2f%s\n" %
+ (url, min(arr), max(arr), avg, std,
+ array2string(arr)))
+ log_handle.write(output)
+ log_handle.close()
def main(options, args):
"""Send the url list to device and start testing, restart if crashed."""
- generate_url = False
-
# Set up logging format.
log_level = logging.INFO
if options.verbose:
@@ -84,33 +113,37 @@ def main(options, args):
# Include all tests if none are specified.
if not args:
- path = "/tmp/url_list_%d.txt" % time.time()
- generate_url = True
- logging.info("A URL list is not provided, will be automatically generated.")
+ print "Missing URL list file"
+ sys.exit(1)
else:
path = args[0]
if not options.crash_file:
- print "missing crash file name, use --crash-file to specify"
+ print "Missing crash file name, use --crash-file to specify"
sys.exit(1)
else:
crashed_file = options.crash_file
if not options.timeout_file:
- print "missing timeout file, use --timeout-file to specify"
+ print "Missing timeout file, use --timeout-file to specify"
sys.exit(1)
else:
timedout_file = options.timeout_file
- http = RandomPick(HTTP_URL_FILE, 500000, NUM_URLS)
- https = RandomPick(HTTPS_URL_FILE, 45000, NUM_URLS)
+ if not options.delay:
+ manual_delay = 0
+ else:
+ manual_delay = options.delay
- if generate_url:
- file_handle = open(path, "w")
- for i in range(0, NUM_URLS):
- file_handle.write(http[i] + "\n")
- file_handle.write(https[i] + "\n")
- file_handle.close()
+ if not options.bugreport:
+ bugreport_dir = "."
+ else:
+ bugreport_dir = options.bugreport
+ if not os.path.exists(bugreport_dir):
+ os.makedirs(bugreport_dir)
+ if not os.path.isdir(bugreport_dir):
+ logging.error("Cannot create results dir: " + bugreport_dir)
+ sys.exit(1)
adb_cmd = "adb "
if options.adb_options:
@@ -128,6 +161,11 @@ def main(options, args):
logging.error(adb_error)
sys.exit(1)
+ # clean up previous results
+ RemoveDeviceFile(adb_cmd, TEST_STATUS_FILE)
+ RemoveDeviceFile(adb_cmd, TEST_TIMEOUT_FILE)
+ RemoveDeviceFile(adb_cmd, TEST_LOAD_TIME_FILE)
+
logging.info("Running the test ...")
# Count crashed tests.
@@ -142,11 +180,15 @@ def main(options, args):
# Call ReliabilityTestsAutoTest#startReliabilityTests
test_cmd = (test_cmd_prefix + " -e class "
- "com.android.dumprendertree.ReliabilityTestsAutoTest#"
- "startReliabilityTests -e timeout " + timeout_ms
- + test_cmd_postfix)
+ "com.android.dumprendertree.ReliabilityTest#"
+ "runReliabilityTest -e timeout %s -e delay %s" %
+ (str(timeout_ms), str(manual_delay)))
+
+ if options.logtime:
+ test_cmd += " -e logtime true"
+
+ test_cmd += test_cmd_postfix
- time_start = time.time()
adb_output = subprocess.Popen(test_cmd, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()[0]
@@ -157,19 +199,12 @@ def main(options, args):
stdout=subprocess.PIPE).communicate()[0]
logging.info(crashed_test + " CRASHED")
crashed_tests.append(crashed_test)
+ Bugreport(crashed_test, bugreport_dir, adb_cmd)
logging.info("Resuming reliability test runner...")
- test_cmd = (test_cmd_prefix + " -e class "
- "com.android.dumprendertree.ReliabilityTestsAutoTest#"
- "resumeReliabilityTests -e timeout " + timeout_ms
- + test_cmd_postfix)
adb_output = subprocess.Popen(test_cmd, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()[0]
- time_end = time.time()
- fp = open("time_stat", "a")
- fp.writelines("%.2f\n" % ((time_end - time_start) / NUM_URLS / 2))
- fp.close()
if (adb_output.find("INSTRUMENTATION_FAILED") != -1 or
adb_output.find("Process crashed.") != -1):
logging.error("Error happened : " + adb_output)
@@ -186,29 +221,46 @@ def main(options, args):
else:
logging.info("No crash found.")
+ # get timeout file from sdcard
test_cmd = (adb_cmd + "pull \"" + TEST_TIMEOUT_FILE + "\" \""
+ timedout_file + "\"")
-
subprocess.Popen(test_cmd, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()
+ if options.logtime:
+ # get logged page load times from sdcard
+ test_cmd = (adb_cmd + "pull \"" + TEST_LOAD_TIME_FILE + "\" \""
+ + options.logtime + "\"")
+ subprocess.Popen(test_cmd, shell=True, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE).communicate()
+ ProcessPageLoadTime(options.logtime)
+
if "__main__" == __name__:
option_parser = optparse.OptionParser()
- option_parser.add_option("", "--time-out-ms",
+ option_parser.add_option("-t", "--time-out-ms",
default=60000,
help="set the timeout for each test")
- option_parser.add_option("", "--verbose", action="store_true",
+ option_parser.add_option("-v", "--verbose", action="store_true",
default=False,
help="include debug-level logging")
- option_parser.add_option("", "--adb-options",
+ option_parser.add_option("-a", "--adb-options",
default=None,
help="pass options to adb, such as -d -e, etc")
- option_parser.add_option("", "--crash-file",
+ option_parser.add_option("-c", "--crash-file",
default="reliability_crashed_sites.txt",
help="the list of sites that cause browser to crash")
- option_parser.add_option("", "--timeout-file",
+ option_parser.add_option("-f", "--timeout-file",
default="reliability_timedout_sites.txt",
- help="the list of sites that timedout during test.")
+ help="the list of sites that timedout during test")
+ option_parser.add_option("-d", "--delay",
+ default=0,
+ help="add a manual delay between pages (in ms)")
+ option_parser.add_option("-b", "--bugreport",
+ default=".",
+ help="the directory to store bugreport for crashes")
+ option_parser.add_option("-l", "--logtime",
+ default=None,
+ help="Logs page load time for each url to the file")
opts, arguments = option_parser.parse_args()
main(opts, arguments)
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java b/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java
index 0218317..e741177 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java
@@ -23,7 +23,9 @@ import java.util.List;
import java.util.Map;
import java.io.File;
+import android.app.AlertDialog;
import android.app.ListActivity;
+import android.content.DialogInterface;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
@@ -31,7 +33,7 @@ import android.widget.SimpleAdapter;
import android.os.Bundle;
-public abstract class FileList extends ListActivity
+public abstract class FileList extends ListActivity
{
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode)
@@ -39,7 +41,7 @@ public abstract class FileList extends ListActivity
case KeyEvent.KEYCODE_DPAD_LEFT:
if (mPath.length() > mBaseLength) {
File f = new File(mPath);
- mFocusFile = f.getName();
+ mFocusFile = f.getName();
mFocusIndex = 0;
f = f.getParentFile();
mPath = f.getPath();
@@ -47,7 +49,7 @@ public abstract class FileList extends ListActivity
return true;
}
break;
-
+
case KeyEvent.KEYCODE_DPAD_RIGHT:
{
Map map = (Map) getListView().getItemAtPosition(getListView().getSelectedItemPosition());
@@ -61,24 +63,24 @@ public abstract class FileList extends ListActivity
}
return true;
}
-
+
default:
break;
}
return super.onKeyDown(keyCode, event);
}
- public void onCreate(Bundle icicle)
+ public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setupPath();
updateList();
}
-
+
protected List getData()
{
List myData = new ArrayList<HashMap>();
-
+
File f = new File(mPath);
if (!f.exists()) {
addItem(myData, "!LayoutTests path missing!", "");
@@ -103,10 +105,10 @@ public abstract class FileList extends ListActivity
addItem(myData, files[i], path);
}
}
-
+
return myData;
}
-
+
protected void addItem(List<Map> data, String name, String path)
{
HashMap temp = new HashMap();
@@ -114,34 +116,58 @@ public abstract class FileList extends ListActivity
temp.put("path", path);
data.add(temp);
}
-
+
protected void onListItemClick(ListView l, View v, int position, long id)
{
- Map map = (Map) l.getItemAtPosition(position);
- String path = (String)map.get("path");
+ Map map = (Map) l.getItemAtPosition(position);
+ final String path = (String)map.get("path");
if ((new File(path)).isDirectory()) {
- mPath = path;
- mFocusFile = null;
- updateList();
+ final CharSequence[] items = {"Open", "Run"};
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle("Select an Action");
+ builder.setSingleChoiceItems(items, -1,
+ new DialogInterface.OnClickListener(){
+ public void onClick(DialogInterface dialog, int which) {
+ switch (which) {
+ case OPEN_DIRECTORY:
+ dialog.dismiss();
+ mPath = path;
+ mFocusFile = null;
+ updateList();
+ break;
+ case RUN_TESTS:
+ dialog.dismiss();
+ processDirectory(path, false);
+ break;
+ }
+ }
+ });
+ builder.create().show();
} else {
processFile(path, false);
}
}
-
+
+ /*
+ * This function is called when the user has selected a directory in the
+ * list and wants to perform an action on it instead of navigating into
+ * the directory.
+ */
+ abstract void processDirectory(String path, boolean selection);
/*
* This function is called when the user has selected a file in the
* file list. The selected file could be a file or a directory.
* The flag indicates if this was from a selection or not.
*/
abstract void processFile(String filename, boolean selection);
-
+
/*
* This function is called when the file list is being built. Return
* true if the file is to be added to the file list.
*/
abstract boolean fileFilter(File f);
-
+
protected void updateList() {
setListAdapter(new SimpleAdapter(this,
getData(),
@@ -152,16 +178,19 @@ public abstract class FileList extends ListActivity
setTitle(title);
getListView().setSelection(mFocusIndex);
}
-
- protected void setupPath()
+
+ protected void setupPath()
{
mPath = "/sdcard/android/layout_tests";
mBaseLength = mPath.length();
}
-
+
protected String mPath;
protected int mBaseLength;
protected String mFocusFile;
protected int mFocusIndex;
-
+
+ private final static int OPEN_DIRECTORY = 0;
+ private final static int RUN_TESTS = 1;
+
}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java b/tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java
new file mode 100644
index 0000000..cc2f1f5
--- /dev/null
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java
@@ -0,0 +1,80 @@
+package com.android.dumprendertree;
+
+import android.util.Log;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class FsUtils {
+
+ private static final String LOGTAG = "FsUtils";
+ private FsUtils() {
+ //no creation of instances
+ }
+
+ public static void findLayoutTestsRecursively(BufferedOutputStream bos,
+ String dir) throws IOException {
+ Log.v(LOGTAG, "Searching tests under " + dir);
+
+ File d = new File(dir);
+ if (!d.isDirectory()) {
+ throw new AssertionError("A directory expected, but got " + dir);
+ }
+
+ String[] files = d.list();
+ for (int i = 0; i < files.length; i++) {
+ String s = dir + "/" + files[i];
+ if (FileFilter.ignoreTest(s)) {
+ Log.v(LOGTAG, " Ignoring: " + s);
+ continue;
+ }
+ if (s.toLowerCase().endsWith(".html")
+ || s.toLowerCase().endsWith(".xml")) {
+ bos.write(s.getBytes());
+ bos.write('\n');
+ continue;
+ }
+
+ File f = new File(s);
+ if (f.isDirectory()) {
+ findLayoutTestsRecursively(bos, s);
+ continue;
+ }
+
+ Log.v(LOGTAG, "Skipping " + s);
+ }
+ }
+
+ public static void updateTestStatus(String statusFile, String s) {
+ try {
+ BufferedOutputStream bos = new BufferedOutputStream(
+ new FileOutputStream(statusFile));
+ bos.write(s.getBytes());
+ bos.close();
+ } catch (Exception e) {
+ Log.e(LOGTAG, "Cannot update file " + statusFile);
+ }
+ }
+
+ public static String readTestStatus(String statusFile) {
+ // read out the test name it stopped last time.
+ String status = null;
+ File testStatusFile = new File(statusFile);
+ if(testStatusFile.exists()) {
+ try {
+ BufferedReader inReader = new BufferedReader(
+ new FileReader(testStatusFile));
+ status = inReader.readLine();
+ inReader.close();
+ } catch (IOException e) {
+ Log.e(LOGTAG, "Error reading test status.", e);
+ }
+ }
+ return status;
+ }
+
+}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
index ebdc9c7..e00d3ad 100755
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
@@ -16,14 +16,11 @@
package com.android.dumprendertree;
-import junit.framework.TestSuite;
-import com.android.dumprendertree.LayoutTestsAutoTest;
-
+import android.os.Bundle;
import android.test.InstrumentationTestRunner;
import android.test.InstrumentationTestSuite;
-import android.util.Log;
-import android.content.Intent;
-import android.os.Bundle;
+
+import junit.framework.TestSuite;
/**
@@ -61,13 +58,27 @@ public class LayoutTestsAutoRunner extends InstrumentationTestRunner {
}
}
+ String delay_str = (String) icicle.get("delay");
+ if(delay_str != null) {
+ try {
+ this.mDelay = Integer.parseInt(delay_str);
+ } catch (Exception e) {
+ }
+ }
+
String r = (String)icicle.get("rebaseline");
this.mRebaseline = (r != null && r.toLowerCase().equals("true"));
super.onCreate(icicle);
+
+ String logtime = (String) icicle.get("logtime");
+ this.mLogtime = (logtime != null
+ && logtime.toLowerCase().equals("true"));
}
public String mTestPath = null;
public int mTimeoutInMillis = 0;
+ public int mDelay = 0;
public boolean mRebaseline = false;
+ public boolean mLogtime = false;
}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java
index caef861..a03490d 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java
@@ -178,15 +178,13 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
private void resumeTestList() {
// read out the test name it stoped last time.
try {
- BufferedReader inReader = new BufferedReader(new FileReader(TEST_STATUS_FILE));
- String line = inReader.readLine();
+ String line = FsUtils.readTestStatus(TEST_STATUS_FILE);
for (int i = 0; i < mTestList.size(); i++) {
if (mTestList.elementAt(i).equals(line)) {
mTestList = new Vector<String>(mTestList.subList(i+1, mTestList.size()));
break;
}
}
- inReader.close();
} catch (Exception e) {
Log.e(LOGTAG, "Error reading " + TEST_STATUS_FILE);
}
@@ -204,18 +202,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
Log.e(LOGTAG, "Fail to delete " + TEST_STATUS_FILE + " : " + e.getMessage());
}
}
-
- private void updateTestStatus(String s) {
- // Write TEST_STATUS_FILE
- try {
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(TEST_STATUS_FILE));
- bos.write(s.getBytes());
- bos.close();
- } catch (Exception e) {
- Log.e(LOGTAG, "Cannot update file " + TEST_STATUS_FILE);
- }
- }
-
+
private String getResultFile(String test) {
String shortName = test.substring(0, test.lastIndexOf('.'));
// Write actual results to result directory.
@@ -223,7 +210,10 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
}
private String getExpectedResultFile(String test) {
- String shortName = test.substring(0, test.lastIndexOf('.'));
+ int pos = test.lastIndexOf('.');
+ if(pos == -1)
+ return null;
+ String shortName = test.substring(0, pos);
return shortName + "-expected.txt";
}
@@ -303,6 +293,10 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
});
String resultFile = getResultFile(test);
+ if(resultFile == null) {
+ //simply ignore this test
+ return;
+ }
if (mRebaselineResults) {
String expectedResultFile = getExpectedResultFile(test);
File f = new File(expectedResultFile);
@@ -385,12 +379,12 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
// Run tests.
for (int i = 0; i < mTestList.size(); i++) {
String s = mTestList.elementAt(i);
- updateTestStatus(s);
+ FsUtils.updateTestStatus(TEST_STATUS_FILE, s);
// Run tests
runTestAndWaitUntilDone(activity, s, runner.mTimeoutInMillis);
}
- updateTestStatus("#DONE");
+ FsUtils.updateTestStatus(TEST_STATUS_FILE, "#DONE");
activity.finish();
}
@@ -417,7 +411,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
try {
File tests_list = new File(LAYOUT_TESTS_LIST_FILE);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(tests_list, false));
- findTestsRecursively(bos, getTestPath());
+ FsUtils.findLayoutTestsRecursively(bos, getTestPath());
bos.flush();
bos.close();
} catch (Exception e) {
@@ -425,38 +419,6 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
}
}
- private void findTestsRecursively(BufferedOutputStream bos, String dir) throws IOException {
- Log.v(LOGTAG, "Searching tests under " + dir);
-
- File d = new File(dir);
- if (!d.isDirectory()) {
- throw new AssertionError("A directory expected, but got " + dir);
- }
-
- String[] files = d.list();
- for (int i = 0; i < files.length; i++) {
- String s = dir + "/" + files[i];
- if (FileFilter.ignoreTest(s)) {
- Log.v(LOGTAG, " Ignoring: " + s);
- continue;
- }
- if (s.toLowerCase().endsWith(".html")
- || s.toLowerCase().endsWith(".xml")) {
- bos.write(s.getBytes());
- bos.write('\n');
- continue;
- }
-
- File f = new File(s);
- if (f.isDirectory()) {
- findTestsRecursively(bos, s);
- continue;
- }
-
- Log.v(LOGTAG, "Skipping " + s);
- }
- }
-
// Running all the layout tests at once sometimes
// causes the dumprendertree to run out of memory.
// So, additional tests are added to run the tests
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java
index 81cf3a8..cbcac6c 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java
@@ -16,18 +16,15 @@
package com.android.dumprendertree;
+import dalvik.system.VMRuntime;
+
import android.app.Instrumentation;
import android.content.Intent;
-
-import android.util.Log;
-
import android.os.Bundle;
import android.os.Debug;
-import android.os.Debug.MemoryInfo;
+import android.os.Process;
import android.test.ActivityInstrumentationTestCase2;
-
-import com.android.dumprendertree.TestShellActivity;
-import com.android.dumprendertree.TestShellCallback;
+import android.util.Log;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -69,52 +66,85 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel
TestShellActivity activity = (TestShellActivity) getActivity();
+ Log.v(LOGTAG, "About to run tests, calling gc first...");
+ freeMem();
+
// Run tests
runTestAndWaitUntilDone(activity, runner.mTestPath, runner.mTimeoutInMillis);
- // TODO(fqian): let am instrumentation pass in the command line, currently
- // am instrument does not allow spaces in the command.
dumpMemoryInfo();
// Kill activity
activity.finish();
}
+ private void freeMem() {
+ Log.v(LOGTAG, "freeMem: calling gc/finalization...");
+ final VMRuntime runtime = VMRuntime.getRuntime();
+
+ runtime.gcSoftReferences();
+ runtime.runFinalizationSync();
+ runtime.gcSoftReferences();
+ runtime.runFinalizationSync();
+ runtime.gcSoftReferences();
+ runtime.runFinalizationSync();
+ Runtime.getRuntime().runFinalization();
+ Runtime.getRuntime().gc();
+ Runtime.getRuntime().gc();
+
+ }
+
+ private void printRow(PrintStream ps, String format, Object...objs) {
+ ps.println(String.format(format, objs));
+ }
+
private void dumpMemoryInfo() {
try {
+ freeMem();
Log.v(LOGTAG, "Dumping memory information.");
FileOutputStream out = new FileOutputStream(LOAD_TEST_RESULT, true);
PrintStream ps = new PrintStream(out);
- MemoryInfo mi = new MemoryInfo();
- Debug.getMemoryInfo(mi);
-
- //try to fake the dumpsys format
- //this will eventually be changed to XML
- String format = "%15s:%9d%9d%9d%9d";
- String pss =
- String.format(format, "(Pss)",
- mi.nativePss, mi.dalvikPss, mi.otherPss,
- mi.nativePss + mi.dalvikPss + mi.otherPss);
- String sd =
- String.format(format, "(shared dirty)",
- mi.nativeSharedDirty, mi.dalvikSharedDirty, mi.otherSharedDirty,
- mi.nativeSharedDirty + mi.dalvikSharedDirty + mi.otherSharedDirty);
- String pd =
- String.format(format, "(priv dirty)",
- mi.nativePrivateDirty, mi.dalvikPrivateDirty, mi.otherPrivateDirty,
- mi.nativePrivateDirty + mi.dalvikPrivateDirty + mi.otherPrivateDirty);
-
ps.print("\n\n\n");
- ps.println("** MEMINFO in pid 0 [com.android.dumprendertree] **");
- ps.println(" native dalvik other total");
- ps.println(" size: 12060 5255 N/A 17315");
- ps.println(" allocated: 12060 5255 N/A 17315");
- ps.println(" free: 12060 5255 N/A 17315");
- ps.println(pss);
- ps.println(sd);
- ps.println(pd);
+ ps.println("** MEMINFO in pid " + Process.myPid()
+ + " [com.android.dumprendertree] **");
+ String formatString = "%17s %8s %8s %8s %8s";
+
+ long nativeMax = Debug.getNativeHeapSize() / 1024;
+ long nativeAllocated = Debug.getNativeHeapAllocatedSize() / 1024;
+ long nativeFree = Debug.getNativeHeapFreeSize() / 1024;
+ Runtime runtime = Runtime.getRuntime();
+ long dalvikMax = runtime.totalMemory() / 1024;
+ long dalvikFree = runtime.freeMemory() / 1024;
+ long dalvikAllocated = dalvikMax - dalvikFree;
+
+
+ Debug.MemoryInfo memInfo = new Debug.MemoryInfo();
+ Debug.getMemoryInfo(memInfo);
+
+ final int nativeShared = memInfo.nativeSharedDirty;
+ final int dalvikShared = memInfo.dalvikSharedDirty;
+ final int otherShared = memInfo.otherSharedDirty;
+
+ final int nativePrivate = memInfo.nativePrivateDirty;
+ final int dalvikPrivate = memInfo.dalvikPrivateDirty;
+ final int otherPrivate = memInfo.otherPrivateDirty;
+
+ printRow(ps, formatString, "", "native", "dalvik", "other", "total");
+ printRow(ps, formatString, "size:", nativeMax, dalvikMax, "N/A", nativeMax + dalvikMax);
+ printRow(ps, formatString, "allocated:", nativeAllocated, dalvikAllocated, "N/A",
+ nativeAllocated + dalvikAllocated);
+ printRow(ps, formatString, "free:", nativeFree, dalvikFree, "N/A",
+ nativeFree + dalvikFree);
+
+ printRow(ps, formatString, "(Pss):", memInfo.nativePss, memInfo.dalvikPss,
+ memInfo.otherPss, memInfo.nativePss + memInfo.dalvikPss + memInfo.otherPss);
+
+ printRow(ps, formatString, "(shared dirty):", nativeShared, dalvikShared, otherShared,
+ nativeShared + dalvikShared + otherShared);
+ printRow(ps, formatString, "(priv dirty):", nativePrivate, dalvikPrivate, otherPrivate,
+ nativePrivate + dalvikPrivate + otherPrivate);
ps.print("\n\n\n");
ps.flush();
ps.close();
@@ -134,7 +164,7 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel
LoadTestsAutoTest.this.notifyAll();
}
}
-
+
public void timedOut(String url) {
}
});
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java b/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java
index 00e0f89..e15ab65 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java
@@ -17,19 +17,23 @@
package com.android.dumprendertree;
import android.content.Intent;
-import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
+import java.io.BufferedOutputStream;
import java.io.File;
+import java.io.FileOutputStream;
public class Menu extends FileList {
-
- public void onCreate(Bundle icicle)
- {
+
+ private static final int MENU_START = 0x01;
+ private static String LOGTAG = "MenuActivity";
+ static final String LAYOUT_TESTS_LIST_FILE = "/sdcard/android/layout_tests_list.txt";
+
+ public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
-
+
boolean fileFilter(File f) {
if (f.getName().startsWith("."))
return false;
@@ -41,14 +45,36 @@ public class Menu extends FileList {
return true;
return false;
}
-
- void processFile(String filename, boolean selection)
- {
+
+ void processFile(String filename, boolean selection) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClass(this, TestShellActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(TestShellActivity.TEST_URL, "file://" + filename);
startActivity(intent);
}
+
+ @Override
+ void processDirectory(String path, boolean selection) {
+ generateTestList(path);
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setClass(this, TestShellActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ intent.putExtra(TestShellActivity.UI_AUTO_TEST, LAYOUT_TESTS_LIST_FILE);
+ startActivity(intent);
+ }
+
+ private void generateTestList(String path) {
+ try {
+ File tests_list = new File(LAYOUT_TESTS_LIST_FILE);
+ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(tests_list, false));
+ FsUtils.findLayoutTestsRecursively(bos, path);
+ bos.flush();
+ bos.close();
+ } catch (Exception e) {
+ Log.e(LOGTAG, "Error when creating test list: " + e.getMessage());
+ }
+ }
+
}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTest.java b/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTest.java
new file mode 100644
index 0000000..de39800
--- /dev/null
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTest.java
@@ -0,0 +1,166 @@
+package com.android.dumprendertree;
+
+import android.os.Handler;
+import android.os.Message;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class ReliabilityTest extends ActivityInstrumentationTestCase2<ReliabilityTestActivity> {
+
+ private static final String LOGTAG = "ReliabilityTest";
+ private static final String PKG_NAME = "com.android.dumprendertree";
+ private static final String TEST_LIST_FILE = "/sdcard/android/reliability_tests_list.txt";
+ private static final String TEST_STATUS_FILE = "/sdcard/android/reliability_running_test.txt";
+ private static final String TEST_TIMEOUT_FILE = "/sdcard/android/reliability_timeout_test.txt";
+ private static final String TEST_LOAD_TIME_FILE = "/sdcard/android/reliability_load_time.txt";
+ private static final String TEST_DONE = "#DONE";
+ static final String RELIABILITY_TEST_RUNNER_FILES[] = {
+ "run_reliability_tests.py"
+ };
+
+ public ReliabilityTest() {
+ super(PKG_NAME, ReliabilityTestActivity.class);
+ }
+
+ public void runReliabilityTest() throws Throwable {
+ ReliabilityTestActivity activity = getActivity();
+ LayoutTestsAutoRunner runner = (LayoutTestsAutoRunner)getInstrumentation();
+
+ File testListFile = new File(TEST_LIST_FILE);
+ if(!testListFile.exists())
+ throw new FileNotFoundException("test list file not found.");
+
+ BufferedReader listReader = new BufferedReader(
+ new FileReader(testListFile));
+
+ //always try to resume first, hence cleaning up status will be the
+ //responsibility of driver scripts
+ String lastUrl = FsUtils.readTestStatus(TEST_STATUS_FILE);
+ if(lastUrl != null && !TEST_DONE.equals(lastUrl))
+ fastForward(listReader, lastUrl);
+
+ String url = null;
+ Handler handler = null;
+ boolean timeoutFlag = false;
+ long start, elapsed;
+
+ //read from BufferedReader instead of populating a list in advance,
+ //this will avoid excessive memory usage in case of a large list
+ while((url = listReader.readLine()) != null) {
+ url = url.trim();
+ if(url.length() == 0)
+ continue;
+ start = System.currentTimeMillis();
+ Log.v(LOGTAG, "Testing URL: " + url);
+ FsUtils.updateTestStatus(TEST_STATUS_FILE, url);
+ activity.reset();
+ //use message to send new URL to avoid interacting with
+ //WebView in non-UI thread
+ handler = activity.getHandler();
+ Message msg = handler.obtainMessage(
+ ReliabilityTestActivity.MSG_NAVIGATE,
+ runner.mTimeoutInMillis, runner.mDelay);
+ msg.getData().putString(ReliabilityTestActivity.MSG_NAV_URL, url);
+ msg.getData().putBoolean(ReliabilityTestActivity.MSG_NAV_LOGTIME,
+ runner.mLogtime);
+ handler.sendMessage(msg);
+ timeoutFlag = activity.waitUntilDone();
+ elapsed = System.currentTimeMillis() - start;
+ if(elapsed < 1000) {
+ Log.w(LOGTAG, "Page load finished in " + elapsed
+ + "ms, too soon?");
+ } else {
+ Log.v(LOGTAG, "Page load finished in " + elapsed + "ms");
+ }
+ if(timeoutFlag) {
+ writeTimeoutFile(url);
+ }
+ if(runner.mLogtime) {
+ writeLoadTime(url, activity.getPageLoadTime());
+ }
+ System.runFinalization();
+ System.gc();
+ System.gc();
+ }
+ FsUtils.updateTestStatus(TEST_STATUS_FILE, TEST_DONE);
+ activity.finish();
+ listReader.close();
+ }
+
+ public void copyRunnerAssetsToCache() {
+ try {
+ String out_dir = getActivity().getApplicationContext()
+ .getCacheDir().getPath() + "/";
+
+ for( int i=0; i< RELIABILITY_TEST_RUNNER_FILES.length; i++) {
+ InputStream in = getActivity().getAssets().open(
+ RELIABILITY_TEST_RUNNER_FILES[i]);
+ OutputStream out = new FileOutputStream(
+ out_dir + RELIABILITY_TEST_RUNNER_FILES[i]);
+
+ byte[] buf = new byte[2048];
+ int len;
+
+ while ((len = in.read(buf)) >= 0 ) {
+ out.write(buf, 0, len);
+ }
+ out.close();
+ in.close();
+ }
+ }catch (IOException e) {
+ Log.e(LOGTAG, "Cannot extract scripts for testing.", e);
+ }
+ }
+
+ private void fastForward(BufferedReader testListReader, String lastUrl) {
+ //fastforward the BufferedReader to the position right after last url
+ if(lastUrl == null)
+ return;
+
+ String line = null;
+ try {
+ while((line = testListReader.readLine()) != null) {
+ if(lastUrl.equals(line))
+ return;
+ }
+ } catch (IOException ioe) {
+ Log.e(LOGTAG, "Error while reading test list.", ioe);
+ return;
+ }
+ }
+
+ private void writeTimeoutFile(String s) {
+ //append to the file containing the list of timeout urls
+ try {
+ BufferedOutputStream bos = new BufferedOutputStream(
+ new FileOutputStream(TEST_TIMEOUT_FILE, true));
+ bos.write(s.getBytes());
+ bos.write('\n');
+ bos.close();
+ } catch (Exception e) {
+ Log.e(LOGTAG, "Cannot update file " + TEST_TIMEOUT_FILE, e);
+ }
+ }
+
+ private void writeLoadTime(String s, long time) {
+ //append to the file containing the list of timeout urls
+ try {
+ BufferedOutputStream bos = new BufferedOutputStream(
+ new FileOutputStream(TEST_LOAD_TIME_FILE, true));
+ bos.write((s + '|' + time + '\n').getBytes());
+ bos.close();
+ } catch (Exception e) {
+ Log.e(LOGTAG, "Cannot update file " + TEST_LOAD_TIME_FILE, e);
+ }
+ }
+}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestActivity.java b/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestActivity.java
new file mode 100644
index 0000000..5ddd0b3
--- /dev/null
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestActivity.java
@@ -0,0 +1,290 @@
+package com.android.dumprendertree;
+
+import android.app.Activity;
+import android.app.ActivityThread;
+import android.graphics.Bitmap;
+import android.net.http.SslError;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.view.ViewGroup;
+import android.webkit.HttpAuthHandler;
+import android.webkit.JsPromptResult;
+import android.webkit.JsResult;
+import android.webkit.SslErrorHandler;
+import android.webkit.WebChromeClient;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.webkit.WebSettings.LayoutAlgorithm;
+import android.widget.LinearLayout;
+import android.widget.LinearLayout.LayoutParams;
+
+public class ReliabilityTestActivity extends Activity {
+
+ public static final String TEST_URL_ACTION = "com.andrdoid.dumprendertree.TestUrlAction";
+ public static final String PARAM_URL = "URL";
+ public static final String PARAM_TIMEOUT = "Timeout";
+ public static final int RESULT_TIMEOUT = 0xDEAD;
+ public static final int MSG_TIMEOUT = 0xC001;
+ public static final int MSG_NAVIGATE = 0xC002;
+ public static final String MSG_NAV_URL = "url";
+ public static final String MSG_NAV_LOGTIME = "logtime";
+
+ private static final String LOGTAG = "ReliabilityTestActivity";
+
+ private WebView webView;
+ private SimpleWebViewClient webViewClient;
+ private SimpleChromeClient chromeClient;
+ private Handler handler;
+ private boolean timeoutFlag;
+ private boolean logTime;
+ private boolean pageDone;
+ private Object pageDoneLock;
+ private int pageStartCount;
+ private int manualDelay;
+ private long startTime;
+ private long pageLoadTime;
+ private PageDoneRunner pageDoneRunner = new PageDoneRunner();
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Log.v(LOGTAG, "onCreate, inst=" + Integer.toHexString(hashCode()));
+
+ LinearLayout contentView = new LinearLayout(this);
+ contentView.setOrientation(LinearLayout.VERTICAL);
+ setContentView(contentView);
+ setTitle("Idle");
+
+ webView = new WebView(this);
+ webView.getSettings().setJavaScriptEnabled(true);
+ webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
+ webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
+
+ webViewClient = new SimpleWebViewClient();
+ chromeClient = new SimpleChromeClient();
+ webView.setWebViewClient(webViewClient);
+ webView.setWebChromeClient(chromeClient);
+
+ contentView.addView(webView, new LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT, 0.0f));
+
+ handler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_TIMEOUT:
+ handleTimeout();
+ return;
+ case MSG_NAVIGATE:
+ manualDelay = msg.arg2;
+ navigate(msg.getData().getString(MSG_NAV_URL), msg.arg1);
+ logTime = msg.getData().getBoolean(MSG_NAV_LOGTIME);
+ return;
+ }
+ }
+ };
+
+ pageDoneLock = new Object();
+ }
+
+ public void reset() {
+ synchronized (pageDoneLock) {
+ pageDone = false;
+ }
+ timeoutFlag = false;
+ pageStartCount = 0;
+ chromeClient.resetJsTimeout();
+ }
+
+ private void navigate(String url, int timeout) {
+ if(url == null) {
+ Log.v(LOGTAG, "URL is null, cancelling...");
+ finish();
+ }
+ webView.stopLoading();
+ if(logTime) {
+ webView.clearCache(true);
+ }
+ startTime = System.currentTimeMillis();
+ Log.v(LOGTAG, "Navigating to URL: " + url);
+ webView.loadUrl(url);
+
+ if(timeout != 0) {
+ //set a timer with specified timeout (in ms)
+ handler.sendMessageDelayed(handler.obtainMessage(MSG_TIMEOUT),
+ timeout);
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ Log.v(LOGTAG, "onDestroy, inst=" + Integer.toHexString(hashCode()));
+ super.onDestroy();
+ }
+
+ private boolean isPageDone() {
+ synchronized (pageDoneLock) {
+ return pageDone;
+ }
+ }
+
+ private void setPageDone(boolean pageDone) {
+ synchronized (pageDoneLock) {
+ this.pageDone = pageDone;
+ pageDoneLock.notifyAll();
+ }
+ }
+
+ private void handleTimeout() {
+ int progress = webView.getProgress();
+ webView.stopLoading();
+ Log.v(LOGTAG, "Page timeout triggered, progress = " + progress);
+ timeoutFlag = true;
+ handler.postDelayed(pageDoneRunner, manualDelay);
+ }
+
+ public boolean waitUntilDone() {
+ validateNotAppThread();
+ synchronized (pageDoneLock) {
+ while(!isPageDone()) {
+ try {
+ pageDoneLock.wait();
+ } catch (InterruptedException ie) {
+ //no-op
+ }
+ }
+ }
+ return timeoutFlag;
+ }
+
+ public Handler getHandler() {
+ return handler;
+ }
+
+ private final void validateNotAppThread() {
+ if (ActivityThread.currentActivityThread() != null) {
+ throw new RuntimeException(
+ "This method can not be called from the main application thread");
+ }
+ }
+
+ public long getPageLoadTime() {
+ return pageLoadTime;
+ }
+
+ class SimpleWebViewClient extends WebViewClient {
+
+ @Override
+ public void onReceivedError(WebView view, int errorCode, String description,
+ String failingUrl) {
+ Log.v(LOGTAG, "Received WebCore error: code=" + errorCode
+ + ", description=" + description
+ + ", url=" + failingUrl);
+ }
+
+ @Override
+ public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
+ //ignore certificate error
+ Log.v(LOGTAG, "Received SSL error: " + error.toString());
+ handler.proceed();
+ }
+
+ @Override
+ public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,
+ String realm) {
+ // cancel http auth request
+ handler.cancel();
+ }
+
+ @Override
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
+ pageStartCount++;
+ Log.v(LOGTAG, "onPageStarted: " + url);
+ }
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ Log.v(LOGTAG, "onPageFinished: " + url);
+ // let handleTimeout take care of finishing the page
+ if(!timeoutFlag)
+ handler.postDelayed(new WebViewStatusChecker(), 500);
+ }
+ }
+
+ class SimpleChromeClient extends WebChromeClient {
+
+ private int timeoutCounter = 0;
+
+ @Override
+ public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
+ result.confirm();
+ return true;
+ }
+
+ @Override
+ public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
+ result.confirm();
+ return true;
+ }
+
+ @Override
+ public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
+ result.confirm();
+ return true;
+ }
+
+ @Override
+ public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,
+ JsPromptResult result) {
+ result.confirm();
+ return true;
+ }
+
+ @Override
+ public boolean onJsTimeout() {
+ timeoutCounter++;
+ Log.v(LOGTAG, "JavaScript timeout, count=" + timeoutCounter);
+ return timeoutCounter > 2;
+ }
+
+ public void resetJsTimeout() {
+ timeoutCounter = 0;
+ }
+
+ @Override
+ public void onReceivedTitle(WebView view, String title) {
+ ReliabilityTestActivity.this.setTitle(title);
+ }
+ }
+
+ class WebViewStatusChecker implements Runnable {
+
+ private int initialStartCount;
+
+ public WebViewStatusChecker() {
+ initialStartCount = pageStartCount;
+ }
+
+ public void run() {
+ if (initialStartCount == pageStartCount) {
+ //perform cleanup
+ handler.removeMessages(MSG_TIMEOUT);
+ webView.stopLoading();
+ handler.postDelayed(pageDoneRunner, manualDelay);
+ }
+ }
+ }
+
+ class PageDoneRunner implements Runnable {
+
+ public void run() {
+ Log.v(LOGTAG, "Finishing URL: " + webView.getUrl());
+ pageLoadTime = System.currentTimeMillis() - startTime;
+ setPageDone(true);
+ }
+ }
+}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestsAutoTest.java b/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestsAutoTest.java
deleted file mode 100644
index 347efde..0000000
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/ReliabilityTestsAutoTest.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package com.android.dumprendertree;
-
-import com.android.dumprendertree.TestShellActivity.DumpDataType;
-
-import android.content.Intent;
-import android.test.ActivityInstrumentationTestCase2;
-import android.util.Log;
-
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.Vector;
-
-public class ReliabilityTestsAutoTest extends ActivityInstrumentationTestCase2<TestShellActivity> {
-
- private static final String LOGTAG = "ReliabilityTests";
- private static final String TEST_LIST_FILE = "/sdcard/android/reliability_tests_list.txt";
- private static final String TEST_STATUS_FILE = "/sdcard/android/reliability_running_test.txt";
- private static final String TEST_TIMEOUT_FILE = "/sdcard/android/reliability_timeout_test.txt";
- static final String RELIABILITY_TEST_RUNNER_FILES[] = {
- "run_reliability_tests.py"
- };
-
- private boolean finished;
- private List<String> testList;
-
- public ReliabilityTestsAutoTest() {
- super("com.android.dumprendertree", TestShellActivity.class);
- }
-
- private void getTestList() {
- // Read test list.
- testList = new Vector<String>();
- try {
- BufferedReader inReader = new BufferedReader(new FileReader(TEST_LIST_FILE));
- String line;
- while ((line = inReader.readLine()) != null) {
- testList.add(line);
- }
- inReader.close();
- Log.v(LOGTAG, "Test list has " + testList.size() + " test(s).");
- } catch (Exception e) {
- Log.e(LOGTAG, "Error while reading test list : " + e.getMessage());
- }
- }
-
- private void resumeTestList() {
- // read out the test name it stopped last time.
- try {
- BufferedReader inReader = new BufferedReader(new FileReader(TEST_STATUS_FILE));
- String line = inReader.readLine();
- for (int i = 0; i < testList.size(); i++) {
- if (testList.get(i).equals(line)) {
- testList = new Vector<String>(testList.subList(i+1, testList.size()));
- break;
- }
- }
- inReader.close();
- } catch (Exception e) {
- Log.e(LOGTAG, "Error reading " + TEST_STATUS_FILE);
- }
- }
-
- private void clearTestStatus() {
- // Delete TEST_STATUS_FILE
- try {
- File f = new File(TEST_STATUS_FILE);
- if (f.delete())
- Log.v(LOGTAG, "Deleted " + TEST_STATUS_FILE);
- else
- Log.e(LOGTAG, "Fail to delete " + TEST_STATUS_FILE);
- } catch (Exception e) {
- Log.e(LOGTAG, "Fail to delete " + TEST_STATUS_FILE + " : " + e.getMessage());
- }
- }
-
- private void clearTestTimeout() {
- // Delete TEST_TIMEOUT_FILE
- try {
- File f = new File(TEST_TIMEOUT_FILE);
- if (f.delete())
- Log.v(LOGTAG, "Deleted " + TEST_TIMEOUT_FILE);
- else
- Log.e(LOGTAG, "Fail to delete " + TEST_TIMEOUT_FILE);
- } catch (Exception e) {
- Log.e(LOGTAG, "Fail to delete " + TEST_TIMEOUT_FILE + " : " + e.getMessage());
- }
- }
-
- private void updateTestStatus(String s) {
- // Write TEST_STATUS_FILE
- try {
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(TEST_STATUS_FILE));
- bos.write(s.getBytes());
- bos.close();
- } catch (Exception e) {
- Log.e(LOGTAG, "Cannot update file " + TEST_STATUS_FILE);
- }
- }
-
- private void writeTimeoutFile(String s) {
- // Write TEST_TIMEOUT_FILE
- try {
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(TEST_TIMEOUT_FILE, true));
- bos.write(s.getBytes());
- bos.write('\n');
- bos.close();
- } catch (Exception e) {
- Log.e(LOGTAG, "Cannot update file " + TEST_TIMEOUT_FILE);
- }
- }
-
- private void runReliabilityTest(boolean resume) {
- LayoutTestsAutoRunner runner = (LayoutTestsAutoRunner) getInstrumentation();
-
- getTestList();
- if(!resume)
- clearTestStatus();
- else
- resumeTestList();
-
- TestShellActivity activity = getActivity();
- activity.setDefaultDumpDataType(DumpDataType.NO_OP);
- // Run tests.
- for (int i = 0; i < testList.size(); i++) {
- String s = testList.get(i);
- updateTestStatus(s);
- // Run tests
- runTestAndWaitUntilDone(activity, s, runner.mTimeoutInMillis);
- }
-
- updateTestStatus("#DONE");
-
- activity.finish();
- }
-
- private void runTestAndWaitUntilDone(TestShellActivity activity, String url, int timeout) {
- activity.setCallback(new TestShellCallback() {
- public void finished() {
- synchronized (ReliabilityTestsAutoTest.this) {
- finished = true;
- ReliabilityTestsAutoTest.this.notifyAll();
- }
- }
-
- public void timedOut(String url) {
- writeTimeoutFile(url);
- }
- });
-
- finished = false;
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setClass(activity, TestShellActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
- intent.putExtra(TestShellActivity.TEST_URL, url);
- intent.putExtra(TestShellActivity.TIMEOUT_IN_MILLIS, timeout);
- activity.startActivity(intent);
-
- // Wait until done.
- synchronized (this) {
- while(!finished){
- try {
- this.wait();
- } catch (InterruptedException e) { }
- }
- }
- }
-
- public void startReliabilityTests() {
- clearTestTimeout();
- runReliabilityTest(false);
- }
-
- public void resumeReliabilityTests() {
- runReliabilityTest(true);
- }
-
- public void copyRunnerAssetsToCache() {
- try {
- String out_dir = getActivity().getApplicationContext()
- .getCacheDir().getPath() + "/";
-
- for( int i=0; i< RELIABILITY_TEST_RUNNER_FILES.length; i++) {
- InputStream in = getActivity().getAssets().open(
- RELIABILITY_TEST_RUNNER_FILES[i]);
- OutputStream out = new FileOutputStream(
- out_dir + RELIABILITY_TEST_RUNNER_FILES[i]);
-
- byte[] buf = new byte[2048];
- int len;
-
- while ((len = in.read(buf)) >= 0 ) {
- out.write(buf, 0, len);
- }
- out.close();
- in.close();
- }
- }catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java b/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
index 1ba291c..0d22eca 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
@@ -17,7 +17,10 @@
package com.android.dumprendertree;
import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.content.Intent;
+import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.net.http.SslError;
import android.os.Bundle;
@@ -35,21 +38,24 @@ import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
+import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;
public class TestShellActivity extends Activity implements LayoutTestController {
-
+
static enum DumpDataType {DUMP_AS_TEXT, EXT_REPR, NO_OP}
-
+
public class AsyncHandler extends Handler {
@Override
public void handleMessage(Message msg) {
if (msg.what == MSG_TIMEOUT) {
mTimedOut = true;
- mCallback.timedOut(mWebView.getUrl());
+ if(mCallback != null)
+ mCallback.timedOut(mWebView.getUrl());
requestWebKitData();
return;
} else if (msg.what == MSG_WEBKIT_DATA) {
@@ -63,10 +69,10 @@ public class TestShellActivity extends Activity implements LayoutTestController
public void requestWebKitData() {
Message callback = mHandler.obtainMessage(MSG_WEBKIT_DATA);
-
+
if (mRequestedWebKitData)
throw new AssertionError("Requested webkit data twice: " + mWebView.getUrl());
-
+
mRequestedWebKitData = true;
switch (mDumpDataType) {
case DUMP_AS_TEXT:
@@ -79,12 +85,12 @@ public class TestShellActivity extends Activity implements LayoutTestController
finished();
break;
}
- }
+ }
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
-
+
LinearLayout contentView = new LinearLayout(this);
contentView.setOrientation(LinearLayout.VERTICAL);
setContentView(contentView);
@@ -133,59 +139,122 @@ public class TestShellActivity extends Activity implements LayoutTestController
mWebView.addJavascriptInterface(mCallbackProxy, "layoutTestController");
mWebView.addJavascriptInterface(mCallbackProxy, "eventSender");
contentView.addView(mWebView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, 0.0f));
-
+
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
-
+
mHandler = new AsyncHandler();
-
+
Intent intent = getIntent();
if (intent != null) {
executeIntent(intent);
}
}
-
+
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
executeIntent(intent);
}
-
+
private void executeIntent(Intent intent) {
resetTestStatus();
if (!Intent.ACTION_VIEW.equals(intent.getAction())) {
return;
}
-
+
mTestUrl = intent.getStringExtra(TEST_URL);
- if (mTestUrl == null)
+ if (mTestUrl == null) {
+ mUiAutoTestPath = intent.getStringExtra(UI_AUTO_TEST);
+ if(mUiAutoTestPath != null) {
+ beginUiAutoTest();
+ }
return;
-
+ }
+
mResultFile = intent.getStringExtra(RESULT_FILE);
mTimeoutInMillis = intent.getIntExtra(TIMEOUT_IN_MILLIS, 0);
Log.v(LOGTAG, " Loading " + mTestUrl);
mWebView.loadUrl(mTestUrl);
-
+
if (mTimeoutInMillis > 0) {
// Create a timeout timer
Message m = mHandler.obtainMessage(MSG_TIMEOUT);
mHandler.sendMessageDelayed(m, mTimeoutInMillis);
}
}
-
+
+ private void beginUiAutoTest() {
+ try {
+ mTestListReader = new BufferedReader(
+ new FileReader(mUiAutoTestPath));
+ } catch (IOException ioe) {
+ Log.e(LOGTAG, "Failed to open test list for read.", ioe);
+ finishUiAutoTest();
+ return;
+ }
+ moveToNextTest();
+ }
+
+ private void finishUiAutoTest() {
+ try {
+ if(mTestListReader != null)
+ mTestListReader.close();
+ } catch (IOException ioe) {
+ Log.w(LOGTAG, "Failed to close test list file.", ioe);
+ }
+ finished();
+ }
+
+ private void moveToNextTest() {
+ String url = null;
+ try {
+ url = mTestListReader.readLine();
+ } catch (IOException ioe) {
+ Log.e(LOGTAG, "Failed to read next test.", ioe);
+ finishUiAutoTest();
+ return;
+ }
+ if (url == null) {
+ mUiAutoTestPath = null;
+ finishUiAutoTest();
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setMessage("All tests finished. Exit?")
+ .setCancelable(false)
+ .setPositiveButton("Yes", new OnClickListener(){
+ public void onClick(DialogInterface dialog, int which) {
+ TestShellActivity.this.finish();
+ }
+ })
+ .setNegativeButton("No", new OnClickListener(){
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+ builder.create().show();
+ return;
+ }
+ url = "file://" + url;
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ intent.putExtra(TestShellActivity.TEST_URL, url);
+ intent.putExtra(TIMEOUT_IN_MILLIS, 10000);
+ executeIntent(intent);
+ }
+
@Override
protected void onStop() {
super.onStop();
mWebView.stopLoading();
}
-
+
@Override
protected void onDestroy() {
super.onDestroy();
mWebView.destroy();
mWebView = null;
}
-
+
@Override
public void onLowMemory() {
super.onLowMemory();
@@ -199,13 +268,13 @@ public class TestShellActivity extends Activity implements LayoutTestController
finished();
return;
}
-
+
try {
File parentDir = new File(mResultFile).getParentFile();
if (!parentDir.exists()) {
parentDir.mkdirs();
}
-
+
FileOutputStream os = new FileOutputStream(mResultFile);
if (timeout) {
Log.w("Layout test: Timeout", mResultFile);
@@ -222,22 +291,27 @@ public class TestShellActivity extends Activity implements LayoutTestController
os.flush();
os.close();
} catch (IOException ex) {
- Log.e(LOGTAG, "Cannot write to " + mResultFile + ", " + ex.getMessage());
+ Log.e(LOGTAG, "Cannot write to " + mResultFile + ", " + ex.getMessage());
}
finished();
}
-
+
public void setCallback(TestShellCallback callback) {
mCallback = callback;
}
-
+
public void finished() {
- if (mCallback != null) {
- mCallback.finished();
+ if (mUiAutoTestPath != null) {
+ //don't really finish here
+ moveToNextTest();
+ } else {
+ if (mCallback != null) {
+ mCallback.finished();
+ }
}
}
-
+
public void setDefaultDumpDataType(DumpDataType defaultDumpDataType) {
mDefaultDumpDataType = defaultDumpDataType;
}
@@ -257,7 +331,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
String url = mWebView.getUrl();
Log.v(LOGTAG, "waitUntilDone called: " + url);
}
-
+
public void notifyDone() {
String url = mWebView.getUrl();
Log.v(LOGTAG, "notifyDone called: " + url);
@@ -266,7 +340,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
mChromeClient.onProgressChanged(mWebView, 100);
}
}
-
+
public void display() {
mWebView.invalidate();
}
@@ -332,7 +406,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
}
public void queueScript(String scriptToRunInCurrentContext) {
- mWebView.loadUrl("javascript:"+scriptToRunInCurrentContext);
+ mWebView.loadUrl("javascript:"+scriptToRunInCurrentContext);
}
public void repaintSweepHorizontally() {
@@ -359,7 +433,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
public void testRepaint() {
mWebView.invalidate();
}
-
+
private final WebChromeClient mChromeClient = new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
@@ -406,7 +480,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
result.confirm();
return true;
}
-
+
@Override
public boolean onJsConfirm(WebView view, String url, String message,
JsResult result) {
@@ -419,7 +493,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
result.confirm();
return true;
}
-
+
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, JsPromptResult result) {
@@ -435,7 +509,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
return true;
}
};
-
+
private void resetTestStatus() {
mWaitUntilDone = false;
mDumpDataType = mDefaultDumpDataType;
@@ -444,17 +518,19 @@ public class TestShellActivity extends Activity implements LayoutTestController
mRequestedWebKitData = false;
mEventSender.resetMouse();
}
-
+
private WebView mWebView;
private WebViewEventSender mEventSender;
private AsyncHandler mHandler;
private TestShellCallback mCallback;
private CallbackProxy mCallbackProxy;
-
+
private String mTestUrl;
private String mResultFile;
private int mTimeoutInMillis;
+ private String mUiAutoTestPath;
+ private BufferedReader mTestListReader;
// States
private boolean mTimedOut;
@@ -472,13 +548,14 @@ public class TestShellActivity extends Activity implements LayoutTestController
private Vector mWebHistory;
static final String TIMEOUT_STR = "**Test timeout";
-
+
static final int MSG_TIMEOUT = 0;
static final int MSG_WEBKIT_DATA = 1;
static final String LOGTAG="TestShell";
-
+
static final String TEST_URL = "TestUrl";
static final String RESULT_FILE = "ResultFile";
static final String TIMEOUT_IN_MILLIS = "TimeoutInMillis";
+ static final String UI_AUTO_TEST = "UiAutoTest";
}
diff --git a/tests/FrameworkTest/AndroidManifest.xml b/tests/FrameworkTest/AndroidManifest.xml
index c70302b..4e4ebff 100644
--- a/tests/FrameworkTest/AndroidManifest.xml
+++ b/tests/FrameworkTest/AndroidManifest.xml
@@ -20,6 +20,9 @@
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.HARDWARE_TEST" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
+ <uses-permission android:name="android.permission.ACCESSIBILITY_EVENT_VIEW_TYPES" />
+ <uses-permission android:name="android.permission.ACCESSIBILITY_EVENT_TRANSITION_TYPES" />
+ <uses-permission android:name="android.permission.ACCESSIBILITY_EVENT_NOTIFICATION_TYPES" />
<application android:theme="@style/Theme">
<uses-library android:name="android.test.runner" />
@@ -939,7 +942,7 @@
</intent-filter>
</activity>
- <activity android:name="android.widget.AutoCompleteTextViewSimple"
+ <activity android:name="android.widget.AutoCompleteTextViewSimple"
android:label="AutoCompleteTextViewSimple">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -947,6 +950,12 @@
</intent-filter>
</activity>
+ <service android:name=".accessibility.AccessibilityTestService">
+ <intent-filter>
+ <action android:name="android.accessibilityservice.AccessibilityService" />
+ </intent-filter>
+ </service>
+
</application>
</manifest>
diff --git a/tests/FrameworkTest/src/com/android/frameworktest/accessibility/AccessibilityTestService.java b/tests/FrameworkTest/src/com/android/frameworktest/accessibility/AccessibilityTestService.java
new file mode 100644
index 0000000..83d6056
--- /dev/null
+++ b/tests/FrameworkTest/src/com/android/frameworktest/accessibility/AccessibilityTestService.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.frameworktest.accessibility;
+
+import android.accessibilityservice.AccessibilityService;
+import android.accessibilityservice.AccessibilityServiceInfo;
+import android.app.Notification;
+import android.util.Log;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * This class text the accessibility framework end to end.
+ * <p>
+ * Note: Since accessibility is provided by {@link AccessibilityService}s we create one,
+ * and it generates an event and an interruption dispatching them through the
+ * {@link AccessibilityManager}. We verify the received result. To trigger the test
+ * go to Settings->Accessibility and select the enable accessibility check and then
+ * select the check for this service (same name as the class).
+ */
+public class AccessibilityTestService extends AccessibilityService {
+
+ private static final String LOG_TAG = "AccessibilityTestService";
+
+ private static final String CLASS_NAME = "foo.bar.baz.Test";
+ private static final String PACKAGE_NAME = "foo.bar.baz";
+ private static final String TEXT = "Some stuff";
+ private static final String BEFORE_TEXT = "Some other stuff";
+
+ private static final String CONTENT_DESCRIPTION = "Content description";
+
+ private static final int ITEM_COUNT = 10;
+ private static final int CURRENT_ITEM_INDEX = 1;
+ private static final int INTERRUPT_INVOCATION_TYPE = 0x00000200;
+
+ private static final int FROM_INDEX = 1;
+ private static final int ADDED_COUNT = 2;
+ private static final int REMOVED_COUNT = 1;
+
+ private static final int NOTIFICATION_TIMEOUT_MILLIS = 80;
+
+ private int mReceivedResult;
+
+ private Timer mTimer = new Timer();
+
+ @Override
+ public void onServiceConnected() {
+ AccessibilityServiceInfo info = new AccessibilityServiceInfo();
+ info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
+ info.feedbackType = AccessibilityServiceInfo.FEEDBACK_AUDIBLE;
+ info.notificationTimeout = NOTIFICATION_TIMEOUT_MILLIS;
+ info.flags &= AccessibilityServiceInfo.DEFAULT;
+ setServiceInfo(info);
+
+ // we need to wait until the system picks our configuration
+ // otherwise it will not notify us
+ mTimer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ try {
+ testAccessibilityEventDispatching();
+ testInterrupt();
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Error in testing Accessibility feature", e);
+ }
+ }
+ }, 1000);
+ }
+
+ /**
+ * Check here if the event we received is actually the one we sent.
+ */
+ @Override
+ public void onAccessibilityEvent(AccessibilityEvent event) {
+ assert(AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED == event.getEventType());
+ assert(event != null);
+ assert(event.getEventTime() > 0);
+ assert(CLASS_NAME.equals(event.getClassName()));
+ assert(PACKAGE_NAME.equals(event.getPackageName()));
+ assert(1 == event.getText().size());
+ assert(TEXT.equals(event.getText().get(0)));
+ assert(BEFORE_TEXT.equals(event.getBeforeText()));
+ assert(event.isChecked());
+ assert(CONTENT_DESCRIPTION.equals(event.getContentDescription()));
+ assert(ITEM_COUNT == event.getItemCount());
+ assert(CURRENT_ITEM_INDEX == event.getCurrentItemIndex());
+ assert(event.isEnabled());
+ assert(event.isPassword());
+ assert(FROM_INDEX == event.getFromIndex());
+ assert(ADDED_COUNT == event.getAddedCount());
+ assert(REMOVED_COUNT == event.getRemovedCount());
+ assert(event.getParcelableData() != null);
+ assert(1 == ((Notification) event.getParcelableData()).icon);
+
+ // set the type of the receved request
+ mReceivedResult = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
+ }
+
+ /**
+ * Set a flag that we received the interrupt request.
+ */
+ @Override
+ public void onInterrupt() {
+
+ // set the type of the receved request
+ mReceivedResult = INTERRUPT_INVOCATION_TYPE;
+ }
+
+ /**
+ * If an {@link AccessibilityEvent} is sent and received correctly.
+ */
+ public void testAccessibilityEventDispatching() throws Exception {
+ AccessibilityEvent event =
+ AccessibilityEvent.obtain(AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED);
+
+ assert(event != null);
+ event.setClassName(CLASS_NAME);
+ event.setPackageName(PACKAGE_NAME);
+ event.getText().add(TEXT);
+ event.setBeforeText(BEFORE_TEXT);
+ event.setChecked(true);
+ event.setContentDescription(CONTENT_DESCRIPTION);
+ event.setItemCount(ITEM_COUNT);
+ event.setCurrentItemIndex(CURRENT_ITEM_INDEX);
+ event.setEnabled(true);
+ event.setPassword(true);
+ event.setFromIndex(FROM_INDEX);
+ event.setAddedCount(ADDED_COUNT);
+ event.setRemovedCount(REMOVED_COUNT);
+ event.setParcelableData(new Notification(1, "Foo", 1234));
+
+ AccessibilityManager.getInstance(this).sendAccessibilityEvent(event);
+
+ assert(mReceivedResult == event.getEventType());
+
+ Log.i(LOG_TAG, "AccessibilityTestService#testAccessibilityEventDispatching: Success");
+ }
+
+ /**
+ * If accessibility feedback interruption is triggered and received correctly.
+ */
+ public void testInterrupt() throws Exception {
+ AccessibilityManager.getInstance(this).interrupt();
+
+ assert(INTERRUPT_INVOCATION_TYPE == mReceivedResult);
+
+ Log.i(LOG_TAG, "AccessibilityTestService#testInterrupt: Success");
+ }
+}
+
diff --git a/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java b/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java
index 6f89fce..5ae960a 100644
--- a/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java
+++ b/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java
@@ -18,6 +18,7 @@ package android.widget;
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;
+import android.test.FlakyTest;
import android.test.suitebuilder.annotation.MediumTest;
/**
@@ -149,6 +150,7 @@ public class AutoCompleteTextViewPopup
}
/** Test the show/hide behavior of the drop-down. */
+ @FlakyTest(tolerance=5)
@MediumTest
public void testPopupShow() throws Throwable {
AutoCompleteTextViewSimple theActivity = getActivity();
diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/accessibility/RecycleAccessibilityEventTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/accessibility/RecycleAccessibilityEventTest.java
new file mode 100644
index 0000000..d6380f9
--- /dev/null
+++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/accessibility/RecycleAccessibilityEventTest.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.frameworktest.accessibility;
+
+import android.test.suitebuilder.annotation.MediumTest;
+import android.view.accessibility.AccessibilityEvent;
+
+import junit.framework.TestCase;
+
+/**
+ * This class exercises the caching and recycling of {@link AccessibilityEvent}s.
+ */
+public class RecycleAccessibilityEventTest extends TestCase {
+
+ private static final String CLASS_NAME = "foo.bar.baz.Test";
+ private static final String PACKAGE_NAME = "foo.bar.baz";
+ private static final String TEXT = "Some stuff";
+
+ private static final String CONTENT_DESCRIPTION = "Content description";
+ private static final int ITEM_COUNT = 10;
+ private static final int CURRENT_ITEM_INDEX = 1;
+
+ private static final int FROM_INDEX = 1;
+ private static final int ADDED_COUNT = 2;
+ private static final int REMOVED_COUNT = 1;
+
+ /**
+ * If an {@link AccessibilityEvent} is marshaled/unmarshaled correctly
+ */
+ @MediumTest
+ public void testAccessibilityEventViewTextChangedType() {
+ AccessibilityEvent first =
+ AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
+ assertNotNull(first);
+
+ first.setClassName(CLASS_NAME);
+ first.setPackageName(PACKAGE_NAME);
+ first.getText().add(TEXT);
+ first.setFromIndex(FROM_INDEX);
+ first.setAddedCount(ADDED_COUNT);
+ first.setRemovedCount(REMOVED_COUNT);
+ first.setChecked(true);
+ first.setContentDescription(CONTENT_DESCRIPTION);
+ first.setItemCount(ITEM_COUNT);
+ first.setCurrentItemIndex(CURRENT_ITEM_INDEX);
+ first.setEnabled(true);
+ first.setPassword(true);
+
+ first.recycle();
+
+ assertNotNull(first);
+ assertNull(first.getClassName());
+ assertNull(first.getPackageName());
+ assertEquals(0, first.getText().size());
+ assertFalse(first.isChecked());
+ assertNull(first.getContentDescription());
+ assertEquals(0, first.getItemCount());
+ assertEquals(AccessibilityEvent.INVALID_POSITION, first.getCurrentItemIndex());
+ assertFalse(first.isEnabled());
+ assertFalse(first.isPassword());
+ assertEquals(0, first.getFromIndex());
+ assertEquals(0, first.getAddedCount());
+ assertEquals(0, first.getRemovedCount());
+
+ // get another event from the pool (this must be the recycled first)
+ AccessibilityEvent second = AccessibilityEvent.obtain();
+ assertEquals(first, second);
+ }
+}
diff --git a/tests/backup/Android.mk b/tests/backup/Android.mk
index 2e3385f..0813c35 100644
--- a/tests/backup/Android.mk
+++ b/tests/backup/Android.mk
@@ -21,7 +21,7 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
backup_helper_test.cpp
-LOCAL_MODULE_TAGS := user
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := backup_helper_test
LOCAL_SHARED_LIBRARIES := libutils
@@ -31,7 +31,7 @@ include $(BUILD_EXECUTABLE)
# ========================================
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := user
+LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
diff --git a/tests/backup/AndroidManifest.xml b/tests/backup/AndroidManifest.xml
index eaeb5b7..3778742 100644
--- a/tests/backup/AndroidManifest.xml
+++ b/tests/backup/AndroidManifest.xml
@@ -1,6 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.backuptest">
- <application>
+ <application android:backupAgent="BackupTestAgent">
<activity android:name="BackupTestActivity" android:label="_BackupTest">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -8,10 +8,5 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <service android:name="BackupTestService">
- <intent-filter>
- <action android:name="android.backup.BackupService.SERVICE" />
- </intent-filter>
- </service>
</application>
</manifest>
diff --git a/tests/backup/backup_helper_test.cpp b/tests/backup/backup_helper_test.cpp
index 6da16b4..04358ad 100644
--- a/tests/backup/backup_helper_test.cpp
+++ b/tests/backup/backup_helper_test.cpp
@@ -1,8 +1,26 @@
-#include <utils/backup_helpers.h>
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <utils/BackupHelpers.h>
#include <stdio.h>
#include <string.h>
+using namespace android;
+
#if TEST_BACKUP_HELPERS
// ============================================================
@@ -20,6 +38,10 @@ Test TESTS[] = {
{ "backup_helper_test_empty", backup_helper_test_empty, 0, false },
{ "backup_helper_test_four", backup_helper_test_four, 0, false },
{ "backup_helper_test_files", backup_helper_test_files, 0, false },
+ { "backup_helper_test_null_base", backup_helper_test_null_base, 0, false },
+ { "backup_helper_test_missing_file", backup_helper_test_missing_file, 0, false },
+ { "backup_helper_test_data_writer", backup_helper_test_data_writer, 0, false },
+ { "backup_helper_test_data_reader", backup_helper_test_data_reader, 0, false },
{ 0, NULL, 0, false}
};
diff --git a/tests/backup/src/com/android/backuptest/BackupTestActivity.java b/tests/backup/src/com/android/backuptest/BackupTestActivity.java
index af7dfd4..afbc703 100644
--- a/tests/backup/src/com/android/backuptest/BackupTestActivity.java
+++ b/tests/backup/src/com/android/backuptest/BackupTestActivity.java
@@ -17,14 +17,16 @@
package com.android.backuptest;
import android.app.ListActivity;
+import android.backup.BackupHelperDispatcher;
+import android.backup.BackupDataInput;
+import android.backup.BackupDataOutput;
import android.backup.BackupManager;
+import android.backup.FileBackupHelper;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
-import android.os.PowerManager;
-import android.os.SystemClock;
+import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
@@ -32,6 +34,10 @@ import android.widget.ListView;
import android.widget.Toast;
import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
@@ -46,6 +52,8 @@ public class BackupTestActivity extends ListActivity
static final String PREF_KEY = "pref";
static final String FILE_NAME = "file.txt";
+ BackupManager sBm = new BackupManager(this);
+
Test[] mTests = new Test[] {
new Test("Show File") {
void run() {
@@ -79,8 +87,7 @@ public class BackupTestActivity extends ListActivity
output.close();
}
}
- BackupManager bm = new BackupManager(BackupTestActivity.this);
- bm.dataChanged();
+ sBm.dataChanged();
}
},
new Test("Clear File") {
@@ -94,14 +101,12 @@ public class BackupTestActivity extends ListActivity
output.close();
}
}
- BackupManager bm = new BackupManager(BackupTestActivity.this);
- bm.dataChanged();
+ sBm.dataChanged();
}
},
new Test("Poke") {
void run() {
- BackupManager bm = new BackupManager(BackupTestActivity.this);
- bm.dataChanged();
+ sBm.dataChanged();
}
},
new Test("Show Shared Pref") {
@@ -120,8 +125,50 @@ public class BackupTestActivity extends ListActivity
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(PREF_KEY, val+1);
editor.commit();
- BackupManager bm = new BackupManager(BackupTestActivity.this);
- bm.dataChanged();
+ sBm.dataChanged();
+ }
+ },
+ new Test("Backup Helpers") {
+ void run() {
+ try {
+ writeFile("a", "a\naa", MODE_PRIVATE);
+ writeFile("empty", "", MODE_PRIVATE);
+
+ ParcelFileDescriptor state = ParcelFileDescriptor.open(
+ new File(getFilesDir(), "state"),
+ ParcelFileDescriptor.MODE_READ_WRITE|ParcelFileDescriptor.MODE_CREATE|
+ ParcelFileDescriptor.MODE_TRUNCATE);
+ FileBackupHelper h = new FileBackupHelper(BackupTestActivity.this,
+ new String[] { "a", "empty" });
+ FileOutputStream dataFile = openFileOutput("backup_test", MODE_WORLD_READABLE);
+ BackupDataOutput data = new BackupDataOutput(dataFile.getFD());
+ h.performBackup(null, data, state);
+ dataFile.close();
+ state.close();
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ },
+ new Test("Restore Helpers") {
+ void run() {
+ try {
+ BackupHelperDispatcher dispatch = new BackupHelperDispatcher();
+ dispatch.addHelper("", new FileBackupHelper(BackupTestActivity.this,
+ new String[] { "a", "empty" }));
+ FileInputStream dataFile = openFileInput("backup_test");
+ BackupDataInput data = new BackupDataInput(dataFile.getFD());
+ ParcelFileDescriptor state = ParcelFileDescriptor.open(
+ new File(getFilesDir(), "restore_state"),
+ ParcelFileDescriptor.MODE_READ_WRITE|ParcelFileDescriptor.MODE_CREATE|
+ ParcelFileDescriptor.MODE_TRUNCATE);
+ // TODO: a more plausable synthetic stored-data version number
+ dispatch.performRestore(data, 0, state);
+ dataFile.close();
+ state.close();
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
}
}
};
@@ -154,5 +201,14 @@ public class BackupTestActivity extends ListActivity
t.run();
}
+ void writeFile(String name, String contents, int mode) {
+ try {
+ PrintStream out = new PrintStream(openFileOutput(name, mode));
+ out.print(contents);
+ out.close();
+ } catch (FileNotFoundException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
}
diff --git a/tests/backup/src/com/android/backuptest/BackupTestAgent.java b/tests/backup/src/com/android/backuptest/BackupTestAgent.java
new file mode 100644
index 0000000..8e4fd39
--- /dev/null
+++ b/tests/backup/src/com/android/backuptest/BackupTestAgent.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.backuptest;
+
+import android.backup.BackupHelperAgent;
+import android.backup.FileBackupHelper;
+import android.backup.SharedPreferencesBackupHelper;
+
+public class BackupTestAgent extends BackupHelperAgent
+{
+ public void onCreate() {
+ addHelper("data_files", new FileBackupHelper(this, BackupTestActivity.FILE_NAME));
+ addHelper("more_data_files", new FileBackupHelper(this, "another_file.txt", "3.txt",
+ "empty.txt"));
+ addHelper("shared_prefs", new SharedPreferencesBackupHelper(this, "settings", "raw"));
+ }
+}
+
diff --git a/tests/backup/src/com/android/backuptest/BackupTestService.java b/tests/backup/src/com/android/backuptest/BackupTestService.java
deleted file mode 100644
index 00eb86e..0000000
--- a/tests/backup/src/com/android/backuptest/BackupTestService.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.backuptest;
-
-import android.backup.BackupService;
-import android.backup.BackupDataOutput;
-import android.backup.FileBackupHelper;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-
-public class BackupTestService extends BackupService
-{
- static final String TAG = "BackupTestService";
-
- @Override
- public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
- ParcelFileDescriptor newState) {
- Log.d(TAG, "onBackup");
- FileBackupHelper.performBackup(this, oldState, data, newState, new String[] {
- BackupTestActivity.FILE_NAME
- });
- }
-
- @Override
- public void onRestore(ParcelFileDescriptor data, ParcelFileDescriptor newState) {
- Log.d(TAG, "onRestore");
- }
-}
-
diff --git a/tests/backup/test_backup.sh b/tests/backup/test_backup.sh
new file mode 100755
index 0000000..dbf9ed2
--- /dev/null
+++ b/tests/backup/test_backup.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+#adb kill-server
+
+# set the transport
+adb shell bmgr transport 1
+
+# load up the three files
+adb shell "rm /data/data/com.android.backuptest/files/* ; \
+ mkdir /data/data/com.android.backuptest ; \
+ mkdir /data/data/com.android.backuptest/files ; \
+ mkdir /data/data/com.android.backuptest/shared_prefs ; \
+ echo -n \"<map><int name=\\\"pref\\\" value=\\\"1\\\" /></map>\" > /data/data/com.android.backuptest/shared_prefs/raw.xml ; \
+ echo -n first file > /data/data/com.android.backuptest/files/file.txt ; \
+ echo -n asdf > /data/data/com.android.backuptest/files/another_file.txt ; \
+ echo -n 3 > /data/data/com.android.backuptest/files/3.txt ; \
+ echo -n "" > /data/data/com.android.backuptest/files/empty.txt ; \
+"
+
+# say that the data has changed
+adb shell bmgr backup com.android.backuptest
+
+# run the backup
+adb shell bmgr run
+
+
+
diff --git a/tests/backup/test_restore.sh b/tests/backup/test_restore.sh
new file mode 100755
index 0000000..ccf29cf
--- /dev/null
+++ b/tests/backup/test_restore.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+function check_file
+{
+ data=$(adb shell cat /data/data/com.android.backuptest/$1)
+ if [ "$data" = "$2" ] ; then
+ echo "$1 has correct value [$2]"
+ else
+ echo $1 is INCORRECT
+ echo " value: [$data]"
+ echo " expected: [$2]"
+ fi
+}
+
+# delete the old data
+echo --- Previous files
+adb shell "ls -l /data/data/com.android.backuptest/files"
+adb shell "rm /data/data/com.android.backuptest/files/*"
+echo --- Previous shared_prefs
+adb shell "ls -l /data/data/com.android.backuptest/shared_prefs"
+adb shell "rm /data/data/com.android.backuptest/shared_prefs/*"
+echo --- Erased files and shared_prefs
+adb shell "ls -l /data/data/com.android.backuptest/files"
+adb shell "ls -l /data/data/com.android.backuptest/shared_prefs"
+echo ---
+
+echo
+echo
+echo
+
+# run the restore
+adb shell bmgr restore 0
+
+echo
+echo
+echo
+
+# check the results
+check_file files/file.txt "first file"
+check_file files/another_file.txt "asdf"
+check_file files/3.txt "3"
+check_file files/empty.txt ""
+check_file shared_prefs/raw.xml '<map><int name="pref" value="1" /></map>'
+
+echo
+echo
+echo
+echo --- Restored files
+adb shell "ls -l /data/data/com.android.backuptest/files"
+echo --- Restored shared_prefs
+adb shell "ls -l /data/data/com.android.backuptest/shared_prefs"
+echo ---
+echo
diff --git a/tests/permission/Android.mk b/tests/permission/Android.mk
new file mode 100644
index 0000000..a6df98e
--- /dev/null
+++ b/tests/permission/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+# We only want this apk build for tests.
+LOCAL_MODULE_TAGS := tests
+
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+LOCAL_PACKAGE_NAME := FrameworkPermissionTests
+
+include $(BUILD_PACKAGE)
+
diff --git a/tests/permission/AndroidManifest.xml b/tests/permission/AndroidManifest.xml
new file mode 100644
index 0000000..b19bf00
--- /dev/null
+++ b/tests/permission/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2009 Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.framework.permission.tests">
+
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+
+ <!--
+ The test declared in this instrumentation can be run via this command
+ "adb shell am instrument -w com.android.framework.permission.tests/android.test.InstrumentationTestRunner"
+ -->
+ <instrumentation android:name="android.test.InstrumentationTestRunner"
+ android:targetPackage="com.android.framework.permission.tests"
+ android:label="Tests for private API framework permissions"/>
+
+</manifest>
diff --git a/tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java b/tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java
new file mode 100644
index 0000000..14d3d73
--- /dev/null
+++ b/tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java
@@ -0,0 +1,182 @@
+package com.android.framework.permission.tests;
+
+import android.app.ActivityManagerNative;
+import android.app.IActivityManager;
+import android.content.res.Configuration;
+import android.os.RemoteException;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+/**
+ * TODO: Remove this. This is only a placeholder, need to implement this.
+ */
+public class ActivityManagerPermissionTests extends TestCase {
+ IActivityManager mAm;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mAm = ActivityManagerNative.getDefault();
+ }
+
+ @SmallTest
+ public void testREORDER_TASKS() {
+ try {
+ mAm.moveTaskToFront(-1);
+ fail("IActivityManager.moveTaskToFront did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mAm.moveTaskToBack(-1);
+ fail("IActivityManager.moveTaskToBack did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mAm.moveTaskBackwards(-1);
+ fail("IActivityManager.moveTaskToFront did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testCHANGE_CONFIGURATION() {
+ try {
+ mAm.updateConfiguration(new Configuration());
+ fail("IActivityManager.updateConfiguration did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSET_DEBUG_APP() {
+ try {
+ mAm.setDebugApp(null, false, false);
+ fail("IActivityManager.setDebugApp did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSET_PROCESS_LIMIT() {
+ try {
+ mAm.setProcessLimit(10);
+ fail("IActivityManager.setProcessLimit did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testALWAYS_FINISH() {
+ try {
+ mAm.setAlwaysFinish(false);
+ fail("IActivityManager.setAlwaysFinish did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSIGNAL_PERSISTENT_PROCESSES() {
+ try {
+ mAm.signalPersistentProcesses(-1);
+ fail("IActivityManager.signalPersistentProcesses did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testFORCE_BACK() {
+ try {
+ mAm.unhandledBack();
+ fail("IActivityManager.unhandledBack did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSET_ACTIVITY_WATCHER() {
+ try {
+ mAm.setActivityWatcher(null);
+ fail("IActivityManager.setActivityWatcher did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSHUTDOWN() {
+ try {
+ mAm.shutdown(0);
+ fail("IActivityManager.shutdown did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSTOP_APP_SWITCHES() {
+ try {
+ mAm.stopAppSwitches();
+ fail("IActivityManager.stopAppSwitches did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mAm.resumeAppSwitches();
+ fail("IActivityManager.resumeAppSwitches did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+}
diff --git a/tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java b/tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java
new file mode 100644
index 0000000..719e758
--- /dev/null
+++ b/tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.framework.permission.tests;
+
+import junit.framework.TestCase;
+
+import android.os.Binder;
+import android.os.IHardwareService;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Verify that Hardware apis cannot be called without required permissions.
+ */
+@SmallTest
+public class HardwareServicePermissionTest extends TestCase {
+
+ private IHardwareService mHardwareService;
+
+ @Override
+ protected void setUp() throws Exception {
+ mHardwareService = IHardwareService.Stub.asInterface(
+ ServiceManager.getService("hardware"));
+ }
+
+ /**
+ * Test that calling {@link android.os.IHardwareService#vibrate(long)} requires permissions.
+ * <p>Tests permission:
+ * {@link android.Manifest.permission#VIBRATE}
+ * @throws RemoteException
+ */
+ public void testVibrate() throws RemoteException {
+ try {
+ mHardwareService.vibrate(2000);
+ fail("vibrate did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Test that calling {@link android.os.IHardwareService#vibratePattern(long[],
+ * int, android.os.IBinder)} requires permissions.
+ * <p>Tests permission:
+ * {@link android.Manifest.permission#VIBRATE}
+ * @throws RemoteException
+ */
+ public void testVibratePattern() throws RemoteException {
+ try {
+ mHardwareService.vibratePattern(new long[] {0}, 0, new Binder());
+ fail("vibratePattern did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Test that calling {@link android.os.IHardwareService#cancelVibrate()} requires permissions.
+ * <p>Tests permission:
+ * {@link android.Manifest.permission#VIBRATE}
+ * @throws RemoteException
+ */
+ public void testCancelVibrate() throws RemoteException {
+ try {
+ mHardwareService.cancelVibrate();
+ fail("cancelVibrate did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Test that calling {@link android.os.IHardwareService#setFlashlightEnabled(boolean)}
+ * requires permissions.
+ * <p>Tests permissions:
+ * {@link android.Manifest.permission#HARDWARE_TEST}
+ * {@link android.Manifest.permission#FLASHLIGHT}
+ * @throws RemoteException
+ */
+ public void testSetFlashlightEnabled() throws RemoteException {
+ try {
+ mHardwareService.setFlashlightEnabled(true);
+ fail("setFlashlightEnabled did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Test that calling {@link android.os.IHardwareService#enableCameraFlash(int)} requires
+ * permissions.
+ * <p>Tests permission:
+ * {@link android.Manifest.permission#HARDWARE_TEST}
+ * {@link android.Manifest.permission#CAMERA}
+ * @throws RemoteException
+ */
+ public void testEnableCameraFlash() throws RemoteException {
+ try {
+ mHardwareService.enableCameraFlash(100);
+ fail("enableCameraFlash did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Test that calling {@link android.os.IHardwareService#setBacklights(int)} requires
+ * permissions.
+ * <p>Tests permission:
+ * {@link android.Manifest.permission#HARDWARE_TEST}
+ * @throws RemoteException
+ */
+ public void testSetBacklights() throws RemoteException {
+ try {
+ mHardwareService.setBacklights(0);
+ fail("setBacklights did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+}
diff --git a/tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java b/tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java
new file mode 100644
index 0000000..b690c45
--- /dev/null
+++ b/tests/permission/src/com/android/framework/permission/tests/PmPermissionsTests.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.framework.permission.tests;
+
+import junit.framework.TestCase;
+import android.content.pm.PackageManager;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Verify PackageManager api's that require specific permissions.
+ */
+public class PmPermissionsTests extends AndroidTestCase {
+ private PackageManager mPm;
+ private String mPkgName = "com.android.framework.permission.tests";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mPm = getContext().getPackageManager();
+ }
+
+ /*
+ * This test verifies that PackageManger.getPackageSizeInfo enforces permission
+ * android.permission.GET_PACKAGE_SIZE
+ */
+ @SmallTest
+ public void testGetPackageSize() {
+ try {
+ mPm.getPackageSizeInfo(mPkgName, null);
+ fail("PackageManager.getPackageSizeInfo" +
+ "did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /*
+ * This test verifies that PackageManger.DeleteApplicationCacheFiles enforces permission
+ * android.permission.DELETE_CACHE_FILES
+ */
+ @SmallTest
+ public void testDeleteApplicationCacheFiles() {
+ try {
+ mPm.deleteApplicationCacheFiles(mPkgName, null);
+ fail("PackageManager.deleteApplicationCacheFiles" +
+ "did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /*
+ * This test verifies that PackageManger.installPackage enforces permission
+ * android.permission.INSTALL_PACKAGES
+ */
+ @SmallTest
+ public void testInstallPackage() {
+ try {
+ mPm.installPackage(null, null, 0, null);
+ fail("PackageManager.installPackage" +
+ "did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /*
+ * This test verifies that PackageManger.freeStorage
+ * enforces permission android.permission.CLEAR_APP_CACHE
+ */
+ @SmallTest
+ public void testFreeStorage1() {
+ try {
+ mPm.freeStorage(100000, null);
+ fail("PackageManager.freeStorage " +
+ "did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /*
+ * This test verifies that PackageManger.freeStorageAndNotify
+ * enforces permission android.permission.CLEAR_APP_CACHE
+ */
+ @SmallTest
+ public void testFreeStorage2() {
+ try {
+ mPm.freeStorageAndNotify(100000, null);
+ fail("PackageManager.freeStorageAndNotify" +
+ " did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /*
+ * This test verifies that PackageManger.clearApplicationUserData
+ * enforces permission android.permission.CLEAR_APP_USER_DATA
+ */
+ @SmallTest
+ public void testClearApplicationUserData() {
+ try {
+ mPm.clearApplicationUserData(mPkgName, null);
+ fail("PackageManager.clearApplicationUserData" +
+ "did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /*
+ * This test verifies that PackageManger.deletePackage
+ * enforces permission android.permission.DELETE_PACKAGES
+ */
+ @SmallTest
+ public void testDeletePackage() {
+ try {
+ mPm.deletePackage(mPkgName, null, 0);
+ fail("PackageManager.deletePackage" +
+ "did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+} \ No newline at end of file
diff --git a/tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java b/tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java
new file mode 100644
index 0000000..3f1e27e
--- /dev/null
+++ b/tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java
@@ -0,0 +1,50 @@
+package com.android.framework.permission.tests;
+
+import com.android.internal.os.BinderInternal;
+
+import android.os.Binder;
+import android.os.IPermissionController;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.ServiceManagerNative;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+/**
+ * TODO: Remove this. This is only a placeholder, need to implement this.
+ */
+public class ServiceManagerPermissionTests extends TestCase {
+ @SmallTest
+ public void testAddService() {
+ try {
+ // The security in the service manager is that you can't replace
+ // a service that is already published.
+ Binder binder = new Binder();
+ ServiceManager.addService("activity", binder);
+ fail("ServiceManager.addService did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ @SmallTest
+ public void testSetPermissionController() {
+ try {
+ IPermissionController pc = new IPermissionController.Stub() {
+ public boolean checkPermission(java.lang.String permission, int pid, int uid) {
+ return true;
+ }
+ };
+ ServiceManagerNative.asInterface(BinderInternal.getContextObject())
+ .setPermissionController(pc);
+ fail("IServiceManager.setPermissionController did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+}
diff --git a/tests/permission/src/com/android/framework/permission/tests/SettingsPermissionsTests.java b/tests/permission/src/com/android/framework/permission/tests/SettingsPermissionsTests.java
new file mode 100644
index 0000000..f55998f
--- /dev/null
+++ b/tests/permission/src/com/android/framework/permission/tests/SettingsPermissionsTests.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.framework.permission.tests;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.provider.Settings;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+/**
+ * Verify that accessing private-API protected Settings require specific permissions.
+ */
+public class SettingsPermissionsTests extends AndroidTestCase {
+
+ private ContentResolver mContentResolver;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mContentResolver = getContext().getContentResolver();
+ }
+
+ /**
+ * Verify that writing to the GServices table in Settings provider requires permissions.
+ * <p>Tests Permission:
+ * {@link android.Manifest.permission#WRITE_GSERVICES}
+ */
+ @MediumTest
+ public void testWriteGServices() {
+ try {
+ ContentValues values = new ContentValues();
+ values.put("url", "android");
+ mContentResolver.insert(Settings.Gservices.CONTENT_URI, values);
+ fail("Write into Gservices provider did not throw SecurityException as expected.");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+} \ No newline at end of file
diff --git a/tests/permission/src/com/android/framework/permission/tests/SmsManagerPermissionTest.java b/tests/permission/src/com/android/framework/permission/tests/SmsManagerPermissionTest.java
new file mode 100644
index 0000000..273943f
--- /dev/null
+++ b/tests/permission/src/com/android/framework/permission/tests/SmsManagerPermissionTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.framework.permission.tests;
+
+import java.util.ArrayList;
+
+import android.telephony.SmsManager;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Verify that SmsManager apis cannot be called without required permissions.
+ */
+public class SmsManagerPermissionTest extends AndroidTestCase {
+
+ private static final String MSG_CONTENTS = "hi";
+ private static final short DEST_PORT = (short)1004;
+ private static final String DEST_NUMBER = "4567";
+ private static final String SRC_NUMBER = "1234";
+
+ /**
+ * Verify that SmsManager.sendTextMessage requires permissions.
+ * <p>Tests Permission:
+ * {@link android.Manifest.permission#SEND_SMS}.
+ */
+ @SmallTest
+ public void testSendTextMessage() {
+ try {
+ SmsManager.getDefault().sendTextMessage(SRC_NUMBER, DEST_NUMBER, MSG_CONTENTS, null,
+ null);
+ fail("SmsManager.sendTextMessage did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Verify that SmsManager.sendDataMessage requires permissions.
+ * <p>Tests Permission:
+ * {@link android.Manifest.permission#SEND_SMS}.
+ */
+ @SmallTest
+ public void testSendDataMessage() {
+ try {
+ SmsManager.getDefault().sendDataMessage(SRC_NUMBER, DEST_NUMBER, DEST_PORT,
+ MSG_CONTENTS.getBytes(), null, null);
+ fail("SmsManager.sendDataMessage did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Verify that SmsManager.sendMultipartMessage requires permissions.
+ * <p>Tests Permission:
+ * {@link android.Manifest.permission#SEND_MMS}.
+ */
+ @SmallTest
+ public void testSendMultipartMessage() {
+ try {
+ ArrayList<String> msgParts = new ArrayList<String>(2);
+ msgParts.add(MSG_CONTENTS);
+ msgParts.add("foo");
+ SmsManager.getDefault().sendMultipartTextMessage(SRC_NUMBER, DEST_NUMBER, msgParts,
+ null, null);
+ fail("SmsManager.sendMultipartTextMessage did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
+ }
+}
diff --git a/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java b/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java
new file mode 100644
index 0000000..8ab2a10
--- /dev/null
+++ b/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java
@@ -0,0 +1,409 @@
+package com.android.framework.permission.tests;
+
+import android.content.res.Configuration;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.IWindowManager;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+
+import junit.framework.TestCase;
+
+/**
+ * TODO: Remove this. This is only a placeholder, need to implement this.
+ */
+public class WindowManagerPermissionTests extends TestCase {
+ IWindowManager mWm;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mWm = IWindowManager.Stub.asInterface(
+ ServiceManager.getService("window"));
+ }
+
+ @SmallTest
+ public void testMANAGE_APP_TOKENS() {
+ try {
+ mWm.pauseKeyDispatching(null);
+ fail("IWindowManager.pauseKeyDispatching did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.resumeKeyDispatching(null);
+ fail("IWindowManager.resumeKeyDispatching did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setEventDispatching(true);
+ fail("IWindowManager.setEventDispatching did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.addWindowToken(null, 0);
+ fail("IWindowManager.addWindowToken did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.removeWindowToken(null);
+ fail("IWindowManager.removeWindowToken did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.addAppToken(0, null, 0, 0, false);
+ fail("IWindowManager.addAppToken did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setAppGroupId(null, 0);
+ fail("IWindowManager.setAppGroupId did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.updateOrientationFromAppTokens(new Configuration(), null);
+ fail("IWindowManager.updateOrientationFromAppTokens did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setAppOrientation(null, 0);
+ mWm.addWindowToken(null, 0);
+ fail("IWindowManager.setAppOrientation did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setFocusedApp(null, false);
+ fail("IWindowManager.setFocusedApp did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.prepareAppTransition(0);
+ fail("IWindowManager.prepareAppTransition did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.executeAppTransition();
+ fail("IWindowManager.executeAppTransition did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setAppStartingWindow(null, "foo", 0, null, 0, 0, null, false);
+ fail("IWindowManager.setAppStartingWindow did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setAppWillBeHidden(null);
+ fail("IWindowManager.setAppWillBeHidden did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setAppVisibility(null, false);
+ fail("IWindowManager.setAppVisibility did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.startAppFreezingScreen(null, 0);
+ fail("IWindowManager.startAppFreezingScreen did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.stopAppFreezingScreen(null, false);
+ fail("IWindowManager.stopAppFreezingScreen did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.removeAppToken(null);
+ fail("IWindowManager.removeAppToken did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.moveAppToken(0, null);
+ fail("IWindowManager.moveAppToken did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.moveAppTokensToTop(null);
+ fail("IWindowManager.moveAppTokensToTop did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.moveAppTokensToBottom(null);
+ fail("IWindowManager.moveAppTokensToBottom did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testINJECT_EVENTS() {
+ try {
+ mWm.injectKeyEvent(new KeyEvent(0, 0), false);
+ fail("IWindowManager.injectKeyEvent did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.injectPointerEvent(MotionEvent.obtain(0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0), false);
+ fail("IWindowManager.injectPointerEvent did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.injectTrackballEvent(MotionEvent.obtain(0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0), false);
+ fail("IWindowManager.injectTrackballEvent did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testDISABLE_KEYGUARD() {
+ Binder token = new Binder();
+ try {
+ mWm.disableKeyguard(token, "foo");
+ fail("IWindowManager.disableKeyguard did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.reenableKeyguard(token);
+ fail("IWindowManager.reenableKeyguard did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.exitKeyguardSecurely(null);
+ fail("IWindowManager.exitKeyguardSecurely did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSET_ANIMATION_SCALE() {
+ try {
+ mWm.setAnimationScale(0, 1);
+ fail("IWindowManager.setAnimationScale did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.setAnimationScales(new float[1]);
+ fail("IWindowManager.setAnimationScales did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testREAD_INPUT_STATE() {
+ try {
+ mWm.getSwitchState(0);
+ fail("IWindowManager.getSwitchState did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.getSwitchStateForDevice(0, 0);
+ fail("IWindowManager.getSwitchStateForDevice did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.getScancodeState(0);
+ fail("IWindowManager.getScancodeState did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.getScancodeStateForDevice(0, 0);
+ fail("IWindowManager.getScancodeStateForDevice did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.getKeycodeState(0);
+ fail("IWindowManager.getKeycodeState did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+
+ try {
+ mWm.getKeycodeStateForDevice(0, 0);
+ fail("IWindowManager.getKeycodeStateForDevice did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+
+ @SmallTest
+ public void testSET_ORIENTATION() {
+ try {
+ mWm.setRotation(0, true, 0);
+ mWm.getSwitchState(0);
+ fail("IWindowManager.setRotation did not throw SecurityException as"
+ + " expected");
+ } catch (SecurityException e) {
+ // expected
+ } catch (RemoteException e) {
+ fail("Unexpected remote exception");
+ }
+ }
+}