summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/AndroidTests/AndroidManifest.xml1
-rwxr-xr-xtests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java16
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/BluetoothTest.java13
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/BuildTest.java1
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java187
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/HtmlTest.java4
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/activity/ActivityManagerTest.java20
-rw-r--r--tests/CoreTests/android/test/InstrumentationTestRunnerTest.java21
-rw-r--r--tests/DpiTest/Android.mk10
-rw-r--r--tests/DpiTest/AndroidManifest.xml28
-rw-r--r--tests/DpiTest/res/drawable-120dpi/logo120dpi.pngbin0 -> 5178 bytes
-rw-r--r--tests/DpiTest/res/drawable-240dpi/logo240dpi.pngbin0 -> 13388 bytes
-rw-r--r--tests/DpiTest/res/drawable/logo160dpi.pngbin0 -> 8114 bytes
-rw-r--r--tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java167
-rw-r--r--tests/DumpRenderTree/compare_layout_results.py84
-rw-r--r--tests/DumpRenderTree/results/layout_tests_crashed.txt2
-rw-r--r--tests/DumpRenderTree/results/layout_tests_failed.txt283
-rw-r--r--tests/DumpRenderTree/results/layout_tests_nontext.txt1658
-rw-r--r--tests/DumpRenderTree/results/layout_tests_passed.txt990
-rwxr-xr-xtests/DumpRenderTree/run_layout_tests.py176
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java25
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java11
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/HTMLHostActivity.java620
-rwxr-xr-xtests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java20
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java203
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java7
-rw-r--r--tests/FrameworkTest/AndroidManifest.xml7
-rw-r--r--tests/FrameworkTest/src/com/android/frameworktest/drawable/MutateDrawable.java49
-rw-r--r--tests/FrameworkTest/tests/src/com/android/frameworktest/drawable/MutateDrawableTest.java51
-rw-r--r--tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListScrollListenerTest.java3
-rw-r--r--tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListSetSelectionTest.java5
-rw-r--r--tests/FrameworkTest/tests/src/com/android/frameworktest/widget/ListViewTest.java2
-rw-r--r--tests/GadgetHost/src/com/android/gadgethost/GadgetPickActivity.java73
-rw-r--r--tests/GadgetHost/src/com/android/gadgethost/TestGadgetProvider.java32
-rwxr-xr-xtests/ImfTest/AndroidManifest.xml128
-rw-r--r--tests/ImfTest/res/layout/dialog_edit_text_no_scroll.xml36
-rwxr-xr-xtests/ImfTest/res/layout/full_screen_edit_text.xml27
-rwxr-xr-xtests/ImfTest/res/layout/one_edit_text_activity.xml50
-rwxr-xr-xtests/ImfTest/res/values/strings.xml11
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollablePanScan.java35
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollableResize.java35
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollablePanScan.java44
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollableResize.java44
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentEditTextDialog.java96
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java85
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java79
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java37
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java37
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java102
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/EditTextActivityNoScrollPanScan.java38
-rwxr-xr-xtests/ImfTest/src/com/android/imftest/samples/InputTypeActivity.java50
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java41
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java45
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java37
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java40
-rw-r--r--tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java37
-rw-r--r--tests/SmokeTest/tests/AndroidManifest.xml2
-rw-r--r--tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java17
-rw-r--r--tests/gadgets/GadgetHostTest/Android.mk (renamed from tests/GadgetHost/Android.mk)2
-rw-r--r--tests/gadgets/GadgetHostTest/AndroidManifest.xml (renamed from tests/GadgetHost/AndroidManifest.xml)10
-rw-r--r--tests/gadgets/GadgetHostTest/res/drawable/oh_hai_icon.pngbin0 -> 2988 bytes
-rw-r--r--tests/gadgets/GadgetHostTest/res/layout/gadget_host.xml (renamed from tests/GadgetHost/res/layout/gadget_host.xml)3
-rw-r--r--tests/gadgets/GadgetHostTest/res/layout/test_gadget.xml (renamed from tests/GadgetHost/res/layout/test_gadget.xml)1
-rw-r--r--tests/gadgets/GadgetHostTest/res/layout/test_gadget_configure.xml44
-rw-r--r--tests/gadgets/GadgetHostTest/res/values/strings.xml24
-rw-r--r--tests/gadgets/GadgetHostTest/res/xml/gadget_info.xml8
-rw-r--r--tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/GadgetContainerView.java (renamed from tests/GadgetHost/src/com/android/gadgethost/GadgetContainerView.java)2
-rw-r--r--tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/GadgetHostActivity.java (renamed from tests/GadgetHost/src/com/android/gadgethost/GadgetHostActivity.java)94
-rw-r--r--tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetConfigure.java57
-rw-r--r--tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetProvider.java67
-rw-r--r--tests/gadgets/GadgetProviderTest/Android.mk11
-rw-r--r--tests/gadgets/GadgetProviderTest/AndroidManifest.xml13
-rw-r--r--tests/gadgets/GadgetProviderTest/res/layout/test_gadget.xml23
-rw-r--r--tests/gadgets/GadgetProviderTest/res/values/strings.xml (renamed from tests/GadgetHost/res/values/strings.xml)1
-rw-r--r--tests/gadgets/GadgetProviderTest/res/xml/gadget_info.xml (renamed from tests/GadgetHost/res/xml/gadget_info.xml)2
-rw-r--r--tests/gadgets/GadgetProviderTest/src/com/android/tests/gadgetprovider/TestGadgetProvider.java60
76 files changed, 5631 insertions, 713 deletions
diff --git a/tests/AndroidTests/AndroidManifest.xml b/tests/AndroidTests/AndroidManifest.xml
index f126b8c..230456a 100644
--- a/tests/AndroidTests/AndroidManifest.xml
+++ b/tests/AndroidTests/AndroidManifest.xml
@@ -48,6 +48,7 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_GSERVICES" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.unit_tests.permission.TEST_GRANTED" />
diff --git a/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java b/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java
index 6a9ac86..f9af436 100755
--- a/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/AppCacheTest.java
@@ -44,7 +44,7 @@ import android.os.ServiceManager;
import android.os.StatFs;
public class AppCacheTest extends AndroidTestCase {
- private static final boolean localLOGV = true;
+ private static final boolean localLOGV = false;
public static final String TAG="AppCacheTest";
public final long MAX_WAIT_TIME=60*1000;
public final long WAIT_TIME_INCR=10*1000;
@@ -593,6 +593,20 @@ public class AppCacheTest extends AndroidTestCase {
", cache="+stats.cacheSize);
}
+ @SmallTest
+ public void testGetSystemSharedLibraryNames() throws Exception {
+ try {
+ String[] sharedLibs = getPm().getSystemSharedLibraryNames();
+ if (localLOGV) {
+ for (String str : sharedLibs) {
+ Log.i(TAG, str);
+ }
+ }
+ } catch (RemoteException e) {
+ fail("Failed invoking getSystemSharedLibraryNames with exception:" + e);
+ }
+ }
+
class FreeStorageReceiver extends BroadcastReceiver {
public static final String ACTION_FREE = "com.android.unit_tests.testcallback";
private boolean doneFlag = false;
diff --git a/tests/AndroidTests/src/com/android/unit_tests/BluetoothTest.java b/tests/AndroidTests/src/com/android/unit_tests/BluetoothTest.java
index 21fb94b..0a60319 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/BluetoothTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/BluetoothTest.java
@@ -336,7 +336,6 @@ public class BluetoothTest extends AndroidTestCase {
filter.addAction(BluetoothIntent.ENABLED_ACTION);
filter.addAction(BluetoothIntent.DISABLED_ACTION);
filter.addAction(BluetoothIntent.NAME_CHANGED_ACTION);
- filter.addAction(BluetoothIntent.MODE_CHANGED_ACTION);
filter.addAction(BluetoothIntent.DISCOVERY_STARTED_ACTION);
filter.addAction(BluetoothIntent.DISCOVERY_COMPLETED_ACTION);
filter.addAction(BluetoothIntent.PAIRING_REQUEST_ACTION);
@@ -349,8 +348,6 @@ public class BluetoothTest extends AndroidTestCase {
filter.addAction(BluetoothIntent.REMOTE_DEVICE_DISCONNECTED_ACTION);
filter.addAction(BluetoothIntent.REMOTE_NAME_UPDATED_ACTION);
filter.addAction(BluetoothIntent.REMOTE_NAME_FAILED_ACTION);
- filter.addAction(BluetoothIntent.REMOTE_ALIAS_CHANGED_ACTION);
- filter.addAction(BluetoothIntent.REMOTE_ALIAS_CLEARED_ACTION);
filter.addAction(BluetoothIntent.BOND_STATE_CHANGED_ACTION);
filter.addAction(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION);
getContext().registerReceiver(
@@ -386,16 +383,6 @@ public class BluetoothTest extends AndroidTestCase {
msg += " name=" + name;
}
- String alias = intent.getStringExtra(BluetoothIntent.ALIAS);
- if (alias != null) {
- msg += " alias=" + alias;
- }
-
- int mode = intent.getIntExtra(BluetoothIntent.MODE, -10);
- if (mode != -10) {
- msg += " mode=" + mode;
- }
-
int state = intent.getIntExtra(BluetoothIntent.HEADSET_STATE, -10);
if (state != -10) {
msg += " headset state=" + state;
diff --git a/tests/AndroidTests/src/com/android/unit_tests/BuildTest.java b/tests/AndroidTests/src/com/android/unit_tests/BuildTest.java
index a8c51f4..dbfd0e7 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/BuildTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/BuildTest.java
@@ -55,6 +55,7 @@ public class BuildTest extends TestCase {
@SmallTest
public void testBuildFields() throws Exception {
assertNotEmpty("ID", Build.ID);
+ assertNotEmpty("DISPLAY", Build.DISPLAY);
assertNotEmpty("PRODUCT", Build.PRODUCT);
assertNotEmpty("DEVICE", Build.DEVICE);
assertNotEmpty("BOARD", Build.BOARD);
diff --git a/tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java b/tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java
deleted file mode 100644
index f9a2ec0..0000000
--- a/tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * 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.unit_tests;
-
-import org.apache.commons.codec.binary.Base64;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.ContentUris;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.Checkin;
-import android.server.checkin.CheckinProvider;
-import android.server.data.BuildData;
-import android.server.data.CrashData;
-import android.server.data.ThrowableData;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.io.DataInputStream;
-import java.io.ByteArrayInputStream;
-
-/** Unit test for {@link CheckinProvider}. */
-public class CheckinProviderTest extends AndroidTestCase {
- @MediumTest
- public void testEventReport() {
- long start = System.currentTimeMillis();
- ContentResolver r = getContext().getContentResolver();
- Checkin.logEvent(r, Checkin.Events.Tag.TEST, "Test Value");
-
- Cursor c = r.query(Checkin.Events.CONTENT_URI,
- null,
- Checkin.Events.TAG + "=?",
- new String[] { Checkin.Events.Tag.TEST.toString() },
- null);
-
- long id = -1;
- while (c.moveToNext()) {
- String tag = c.getString(c.getColumnIndex(Checkin.Events.TAG));
- String value = c.getString(c.getColumnIndex(Checkin.Events.VALUE));
- long date = c.getLong(c.getColumnIndex(Checkin.Events.DATE));
- assertEquals(Checkin.Events.Tag.TEST.toString(), tag);
- if ("Test Value".equals(value) && date >= start) {
- assertTrue(id < 0);
- id = c.getInt(c.getColumnIndex(Checkin.Events._ID));
- }
- }
- assertTrue(id > 0);
-
- int rows = r.delete(ContentUris.withAppendedId(Checkin.Events.CONTENT_URI, id), null, null);
- assertEquals(1, rows);
- c.requery();
- while (c.moveToNext()) {
- long date = c.getLong(c.getColumnIndex(Checkin.Events.DATE));
- assertTrue(date < start); // Have deleted the only newer TEST.
- }
-
- c.close();
- }
-
- @MediumTest
- public void testStatsUpdate() {
- ContentResolver r = getContext().getContentResolver();
-
- // First, delete any existing data associated with the TEST tag.
- Uri uri = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, 0, 0);
- assertNotNull(uri);
- assertEquals(1, r.delete(uri, null, null));
- assertFalse(r.query(uri, null, null, null, null).moveToNext());
-
- // Now, add a known quantity to the TEST tag.
- Uri u2 = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, 1, 0.5);
- assertFalse(uri.equals(u2));
-
- Cursor c = r.query(u2, null, null, null, null);
- assertTrue(c.moveToNext());
- assertEquals(1, c.getInt(c.getColumnIndex(Checkin.Stats.COUNT)));
- assertEquals(0.5, c.getDouble(c.getColumnIndex(Checkin.Stats.SUM)));
- assertFalse(c.moveToNext()); // Only one.
-
- // Add another known quantity to TEST (should sum with the first).
- Uri u3 = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, 2, 1.0);
- assertEquals(u2, u3);
- c.requery();
- assertTrue(c.moveToNext());
- assertEquals(3, c.getInt(c.getColumnIndex(Checkin.Stats.COUNT)));
- assertEquals(1.5, c.getDouble(c.getColumnIndex(Checkin.Stats.SUM)));
- assertFalse(c.moveToNext()); // Only one.
-
- // Now subtract the values; the whole row should disappear.
- Uri u4 = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, -3, -1.5);
- assertNull(u4);
- c.requery();
- assertFalse(c.moveToNext()); // Row has been deleted.
- c.close();
- }
-
- @MediumTest
- public void testCrashReport() throws Exception {
- long start = System.currentTimeMillis();
- ContentResolver r = getContext().getContentResolver();
-
- // Log a test (fake) crash report.
- Checkin.reportCrash(r, new CrashData(
- "Test",
- "Test Activity",
- new BuildData("Test Build", "123", start),
- new ThrowableData(new RuntimeException("Test Exception"))));
-
-
- // Crashes aren't indexed; go through them all to find the one we added.
- Cursor c = r.query(Checkin.Crashes.CONTENT_URI, null, null, null, null);
-
- Uri uri = null;
- while (c.moveToNext()) {
- String coded = c.getString(c.getColumnIndex(Checkin.Crashes.DATA));
- byte[] bytes = Base64.decodeBase64(coded.getBytes());
- CrashData crash = new CrashData(
- new DataInputStream(new ByteArrayInputStream(bytes)));
-
- // Should be exactly one recently added "Test" crash.
- if (crash.getId().equals("Test") && crash.getTime() > start) {
- assertEquals("Test Activity", crash.getActivity());
- assertEquals("Test Build", crash.getBuildData().getFingerprint());
- assertEquals("Test Exception",
- crash.getThrowableData().getMessage());
-
- assertNull(uri);
- uri = ContentUris.withAppendedId(Checkin.Crashes.CONTENT_URI, c.getInt(c.getColumnIndex(Checkin.Crashes._ID)));
- }
- }
- assertNotNull(uri);
- c.close();
-
- // Update the "logs" column.
- ContentValues values = new ContentValues();
- values.put(Checkin.Crashes.LOGS, "Test Logs");
- assertEquals(1, r.update(uri, values, null, null));
-
- c = r.query(uri, null, null, null, null);
- assertTrue(c.moveToNext());
- String logs = c.getString(c.getColumnIndex(Checkin.Crashes.LOGS));
- assertEquals("Test Logs", logs);
- c.deleteRow();
- c.close();
-
- c.requery();
- assertFalse(c.moveToNext());
- c.close();
- }
-
- @MediumTest
- public void testPropertiesRestricted() throws Exception {
- ContentResolver r = getContext().getContentResolver();
-
- // The test app doesn't have the permission to access properties,
- // so any attempt to do so should fail.
- try {
- r.insert(Checkin.Properties.CONTENT_URI, new ContentValues());
- fail("SecurityException expected");
- } catch (SecurityException e) {
- // expected
- }
-
- try {
- r.query(Checkin.Properties.CONTENT_URI, null, null, null, null);
- fail("SecurityException expected");
- } catch (SecurityException e) {
- // expected
- }
- }
-}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/HtmlTest.java b/tests/AndroidTests/src/com/android/unit_tests/HtmlTest.java
index 26a3ae0..27da4f1 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/HtmlTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/HtmlTest.java
@@ -61,6 +61,10 @@ public class HtmlTest extends TestCase {
s = new SpannableString("Hello world\n\n\nor something");
assertEquals(Html.toHtml(s), "<p>Hello world<br></p>\n<p>or something</p>\n");
+
+ assertEquals("foo\nbar", Html.fromHtml("foo<br>bar").toString());
+ assertEquals("foo\nbar", Html.fromHtml("foo<br>\nbar").toString());
+ assertEquals("foo\nbar", Html.fromHtml("foo<br>\n \nbar").toString());
}
@SmallTest
diff --git a/tests/AndroidTests/src/com/android/unit_tests/activity/ActivityManagerTest.java b/tests/AndroidTests/src/com/android/unit_tests/activity/ActivityManagerTest.java
index d7d8c89..ab91761 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/activity/ActivityManagerTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/activity/ActivityManagerTest.java
@@ -18,6 +18,8 @@ package com.android.unit_tests.activity;
import android.app.ActivityManager;
import android.content.Context;
+import android.content.pm.ConfigurationInfo;
+import android.content.res.Configuration;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.Suppress;
@@ -90,6 +92,24 @@ public class ActivityManagerTest extends AndroidTestCase {
// test: confirm our ANR'ing application shows up in the list
}
+ @SmallTest
+ public void testGetDeviceConfigurationInfo() throws Exception {
+ ConfigurationInfo config = mActivityManager.getDeviceConfigurationInfo();
+ assertNotNull(config);
+ // Validate values against configuration retrieved from resources
+ Configuration vconfig = mContext.getResources().getConfiguration();
+ assertNotNull(vconfig);
+ assertEquals(config.reqKeyboardType, vconfig.keyboard);
+ assertEquals(config.reqTouchScreen, vconfig.touchscreen);
+ assertEquals(config.reqNavigation, vconfig.navigation);
+ if (vconfig.navigation == Configuration.NAVIGATION_NONAV) {
+ assertNotNull(config.reqInputFeatures & ConfigurationInfo.INPUT_FEATURE_FIVE_WAY_NAV);
+ }
+ if (vconfig.keyboard != Configuration.KEYBOARD_UNDEFINED) {
+ assertNotNull(config.reqInputFeatures & ConfigurationInfo.INPUT_FEATURE_HARD_KEYBOARD);
+ }
+ }
+
// If any entries in appear in the list, sanity check them against all running applications
private void checkErrorListSanity(List<ActivityManager.ProcessErrorStateInfo> errList) {
if (errList == null) return;
diff --git a/tests/CoreTests/android/test/InstrumentationTestRunnerTest.java b/tests/CoreTests/android/test/InstrumentationTestRunnerTest.java
index 359c902..d9afd54 100644
--- a/tests/CoreTests/android/test/InstrumentationTestRunnerTest.java
+++ b/tests/CoreTests/android/test/InstrumentationTestRunnerTest.java
@@ -89,6 +89,26 @@ public class InstrumentationTestRunnerTest extends TestCase {
}
+ public void testDelayParameter() throws Exception {
+ int delayMsec = 1000;
+ Bundle args = new Bundle();
+ args.putInt(InstrumentationTestRunner.ARGUMENT_DELAY_MSEC, delayMsec);
+ args.putString(InstrumentationTestRunner.ARGUMENT_TEST_CLASS,
+ PlaceHolderTest.class.getName() + "," +
+ PlaceHolderTest2.class.getName());
+ mInstrumentationTestRunner.onCreate(args);
+ Thread t = new Thread() { public void run() { mInstrumentationTestRunner.onStart(); } };
+
+ // Should delay three times: before, between, and after the two tests.
+ long beforeTest = System.currentTimeMillis();
+ t.start();
+ t.join();
+ assertTrue(System.currentTimeMillis() > beforeTest + delayMsec * 3);
+ assertTrue(mInstrumentationTestRunner.isStarted());
+ assertTrue(mInstrumentationTestRunner.isFinished());
+ assertTrue(mStubAndroidTestRunner.isRun());
+ }
+
private void assertContentsInOrder(List<TestDescriptor> actual, TestDescriptor... source) {
TestDescriptor[] clonedSource = source.clone();
assertEquals("Unexpected number of items.", clonedSource.length, actual.size());
@@ -217,6 +237,7 @@ public class InstrumentationTestRunnerTest extends TestCase {
}
public void runTest() {
+ super.runTest();
mRun = true;
}
}
diff --git a/tests/DpiTest/Android.mk b/tests/DpiTest/Android.mk
new file mode 100644
index 0000000..3596c39
--- /dev/null
+++ b/tests/DpiTest/Android.mk
@@ -0,0 +1,10 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_PACKAGE_NAME := DensityTest
+
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_PACKAGE)
diff --git a/tests/DpiTest/AndroidManifest.xml b/tests/DpiTest/AndroidManifest.xml
new file mode 100644
index 0000000..f71cff2
--- /dev/null
+++ b/tests/DpiTest/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.google.android.test.dpi">
+ <application android:label="DpiTest">
+ <activity android:name="DpiTestActivity" android:label="DpiTest">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
diff --git a/tests/DpiTest/res/drawable-120dpi/logo120dpi.png b/tests/DpiTest/res/drawable-120dpi/logo120dpi.png
new file mode 100644
index 0000000..46bbd5b
--- /dev/null
+++ b/tests/DpiTest/res/drawable-120dpi/logo120dpi.png
Binary files differ
diff --git a/tests/DpiTest/res/drawable-240dpi/logo240dpi.png b/tests/DpiTest/res/drawable-240dpi/logo240dpi.png
new file mode 100644
index 0000000..4d717a8
--- /dev/null
+++ b/tests/DpiTest/res/drawable-240dpi/logo240dpi.png
Binary files differ
diff --git a/tests/DpiTest/res/drawable/logo160dpi.png b/tests/DpiTest/res/drawable/logo160dpi.png
new file mode 100644
index 0000000..c23b2ce
--- /dev/null
+++ b/tests/DpiTest/res/drawable/logo160dpi.png
Binary files differ
diff --git a/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java b/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
new file mode 100644
index 0000000..3759622
--- /dev/null
+++ b/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 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.google.android.test.dpi;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.graphics.BitmapFactory;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.ScrollView;
+import android.view.View;
+import android.content.Context;
+
+public class DpiTestActivity extends Activity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout root = new LinearLayout(this);
+ root.setOrientation(LinearLayout.VERTICAL);
+
+ LinearLayout layout = new LinearLayout(this);
+ addBitmapDrawable(layout, R.drawable.logo120dpi, true);
+ addBitmapDrawable(layout, R.drawable.logo160dpi, true);
+ addBitmapDrawable(layout, R.drawable.logo240dpi, true);
+ addLabelToRoot(root, "Prescaled bitmap in drawable");
+ addChildToRoot(root, layout);
+
+ layout = new LinearLayout(this);
+ addBitmapDrawable(layout, R.drawable.logo120dpi, false);
+ addBitmapDrawable(layout, R.drawable.logo160dpi, false);
+ addBitmapDrawable(layout, R.drawable.logo240dpi, false);
+ addLabelToRoot(root, "Autoscaled bitmap in drawable");
+ addChildToRoot(root, layout);
+
+ layout = new LinearLayout(this);
+ addResourceDrawable(layout, R.drawable.logo120dpi);
+ addResourceDrawable(layout, R.drawable.logo160dpi);
+ addResourceDrawable(layout, R.drawable.logo240dpi);
+ addLabelToRoot(root, "Prescaled resource drawable");
+ addChildToRoot(root, layout);
+
+ layout = new LinearLayout(this);
+ addCanvasBitmap(layout, R.drawable.logo120dpi, true);
+ addCanvasBitmap(layout, R.drawable.logo160dpi, true);
+ addCanvasBitmap(layout, R.drawable.logo240dpi, true);
+ addLabelToRoot(root, "Prescaled bitmap");
+ addChildToRoot(root, layout);
+
+ layout = new LinearLayout(this);
+ addCanvasBitmap(layout, R.drawable.logo120dpi, false);
+ addCanvasBitmap(layout, R.drawable.logo160dpi, false);
+ addCanvasBitmap(layout, R.drawable.logo240dpi, false);
+ addLabelToRoot(root, "Autoscaled bitmap");
+ addChildToRoot(root, layout);
+
+ setContentView(scrollWrap(root));
+ }
+
+ private View scrollWrap(View view) {
+ ScrollView scroller = new ScrollView(this);
+ scroller.addView(view, new ScrollView.LayoutParams(ScrollView.LayoutParams.FILL_PARENT,
+ ScrollView.LayoutParams.FILL_PARENT));
+ return scroller;
+ }
+
+ private void addLabelToRoot(LinearLayout root, String text) {
+ TextView label = new TextView(this);
+ label.setText(text);
+ root.addView(label, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
+ LinearLayout.LayoutParams.WRAP_CONTENT));
+ }
+
+ private void addChildToRoot(LinearLayout root, LinearLayout layout) {
+ root.addView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
+ LinearLayout.LayoutParams.WRAP_CONTENT));
+ }
+
+ private void addBitmapDrawable(LinearLayout layout, int resource, boolean scale) {
+ Bitmap bitmap;
+ bitmap = loadAndPrintDpi(resource, scale);
+
+ View view = new View(this);
+
+ final BitmapDrawable d = new BitmapDrawable(bitmap);
+ if (!scale) d.setDensityScale(getResources().getDisplayMetrics());
+ view.setBackgroundDrawable(d);
+
+ view.setLayoutParams(new LinearLayout.LayoutParams(d.getIntrinsicWidth(),
+ d.getIntrinsicHeight()));
+ layout.addView(view);
+ }
+
+ private void addResourceDrawable(LinearLayout layout, int resource) {
+ View view = new View(this);
+
+ final Drawable d = getResources().getDrawable(resource);
+ view.setBackgroundDrawable(d);
+
+ view.setLayoutParams(new LinearLayout.LayoutParams(d.getIntrinsicWidth(),
+ d.getIntrinsicHeight()));
+ layout.addView(view);
+ }
+
+ private void addCanvasBitmap(LinearLayout layout, int resource, boolean scale) {
+ Bitmap bitmap;
+ bitmap = loadAndPrintDpi(resource, scale);
+
+ ScaledBitmapView view = new ScaledBitmapView(this, bitmap);
+
+ view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
+ LinearLayout.LayoutParams.WRAP_CONTENT));
+ layout.addView(view);
+ }
+
+ private Bitmap loadAndPrintDpi(int id, boolean scale) {
+ Bitmap bitmap;
+ if (scale) {
+ bitmap = BitmapFactory.decodeResource(getResources(), id);
+ } else {
+ BitmapFactory.Options opts = new BitmapFactory.Options();
+ opts.inScaled = false;
+ bitmap = BitmapFactory.decodeResource(getResources(), id, opts);
+ }
+ return bitmap;
+ }
+
+ private class ScaledBitmapView extends View {
+ private Bitmap mBitmap;
+
+ public ScaledBitmapView(Context context, Bitmap bitmap) {
+ super(context);
+ mBitmap = bitmap;
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ setMeasuredDimension(mBitmap.getScaledWidth(), mBitmap.getScaledHeight());
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+
+ canvas.drawBitmap(mBitmap, 0.0f, 0.0f, null);
+ }
+ }
+}
diff --git a/tests/DumpRenderTree/compare_layout_results.py b/tests/DumpRenderTree/compare_layout_results.py
new file mode 100644
index 0000000..4383dbb
--- /dev/null
+++ b/tests/DumpRenderTree/compare_layout_results.py
@@ -0,0 +1,84 @@
+#!/usr/bin/python
+"""
+Compares results of two webkit layout test runs and writes
+results to a file.
+"""
+
+import optparse
+import os
+
+def DiffResults(marker, new_results, old_results, diff_results, strip_reason):
+ """ Given two result files, generate diff and
+ write to diff_results file. All arguments are absolute paths
+ to files.
+ """
+ old_file = open(old_results, "r")
+ new_file = open(new_results, "r")
+ diff_file = open(diff_results, "a")
+
+ # Read lines from each file
+ ndict = new_file.readlines()
+ cdict = old_file.readlines()
+
+ # Write marker to diff file
+ diff_file.writelines(marker + "\n")
+ diff_file.writelines("###############\n")
+
+ # Strip reason from result lines
+ if strip_reason is True:
+ for i in range(0, len(ndict)):
+ ndict[i] = ndict[i].split(' ')[0] + "\n"
+ 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
+
+ print marker + " >>> New = " + str(new_count) + " , Missing = " + str(missing_count)
+
+ diff_file.writelines("\n\n")
+
+ old_file.close()
+ new_file.close()
+ diff_file.close()
+ return
+
+def main(options, args):
+ results_dir = options.results_directory
+ ref_dir = options.ref_directory
+ if os.path.exists(results_dir + "/layout_tests_diff.txt"):
+ os.remove(results_dir + "/layout_tests_diff.txt")
+
+ files=["passed", "nontext", "crashed"]
+ for f in files:
+ DiffResults(f, results_dir + "layout_tests_" + f + ".txt",
+ ref_dir + "layout_tests_" + f + ".txt", results_dir + "layout_tests_diff.txt", False)
+
+ for f in ["failed"]:
+ DiffResults(f, results_dir + "layout_tests_" + f + ".txt",
+ ref_dir + "layout_tests_" + f + ".txt", results_dir + "layout_tests_diff.txt", True)
+
+if '__main__' == __name__:
+ option_parser = optparse.OptionParser()
+ option_parser.add_option("", "--ref-directory",
+ default="results/",
+ dest="ref_directory",
+ help="directory name under which results are stored.")
+
+ option_parser.add_option("", "--results-directory",
+ default="layout-test-results/",
+ dest="results_directory",
+ help="directory name under which results are stored.")
+ options, args = option_parser.parse_args()
+ main(options, args)
diff --git a/tests/DumpRenderTree/results/layout_tests_crashed.txt b/tests/DumpRenderTree/results/layout_tests_crashed.txt
new file mode 100644
index 0000000..1859f07
--- /dev/null
+++ b/tests/DumpRenderTree/results/layout_tests_crashed.txt
@@ -0,0 +1,2 @@
+/sdcard/android/layout_tests/fast/js/regexp-charclass-crash.html
+/sdcard/android/layout_tests/fast/canvas/gradient-add-second-start-end-stop.html
diff --git a/tests/DumpRenderTree/results/layout_tests_failed.txt b/tests/DumpRenderTree/results/layout_tests_failed.txt
new file mode 100644
index 0000000..5a20b52
--- /dev/null
+++ b/tests/DumpRenderTree/results/layout_tests_failed.txt
@@ -0,0 +1,283 @@
+/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/text/plain-text-line-breaks.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/replaced/image-map-bug16782.html : different length
+/sdcard/android/layout_tests/fast/parser/xml-declaration-missing-ending-mark.html : different length
+/sdcard/android/layout_tests/fast/parser/tabindex-parsing.html : different length
+/sdcard/android/layout_tests/fast/parser/script-tag-with-trailing-slash.html : different length
+/sdcard/android/layout_tests/fast/parser/external-entities.xml : different length
+/sdcard/android/layout_tests/fast/parser/entity-end-script-tag.html : different length
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-iframe.html : @offset: 0
+/sdcard/android/layout_tests/fast/parser/comment-in-iframe.html : @offset: 0
+/sdcard/android/layout_tests/fast/overflow/scroll-vertical-not-horizontal.html : different length
+/sdcard/android/layout_tests/fast/loader/xmlhttprequest-missing-file-exception.html : different length
+/sdcard/android/layout_tests/fast/loader/stop-provisional-loads.html : different length
+/sdcard/android/layout_tests/fast/loader/plain-text-document.html : different length
+/sdcard/android/layout_tests/fast/loader/opaque-base-url.html : @offset: 129
+/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash.html : different length
+/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash-2.html : different length
+/sdcard/android/layout_tests/fast/loader/local-JavaScript-from-local.html : different length
+/sdcard/android/layout_tests/fast/loader/local-image-from-local.html : different length
+/sdcard/android/layout_tests/fast/loader/local-iFrame-source-from-local.html : different length
+/sdcard/android/layout_tests/fast/loader/local-CSS-from-local.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/loader/data-url-encoding-svg.html : different length
+/sdcard/android/layout_tests/fast/loader/cancel-load-during-port-block-timer.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/var-shadows-arg-gc-crash.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/try-catch-crash.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/toString-and-valueOf-override.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/recursion-limit-equal.html : different length
+/sdcard/android/layout_tests/fast/js/navigator-mimeTypes-length.html : different length
+/sdcard/android/layout_tests/fast/js/math-transforms.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/global-recursion-on-full-stack.html : different length
+/sdcard/android/layout_tests/fast/js/global-constructors.html : different length
+/sdcard/android/layout_tests/fast/js/exceptions-thrown-in-callbacks.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/exception-sequencing.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/exception-sequencing-binops2.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/exception-sequencing-binops.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/exception-codegen-crash.html : different length
+/sdcard/android/layout_tests/fast/js/duplicate-param-gc-crash.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/html/tab-order.html : @offset: 246
+/sdcard/android/layout_tests/fast/history/subframe-is-visited.html : different length
+/sdcard/android/layout_tests/fast/history/go-back-to-changed-name.html : different length
+/sdcard/android/layout_tests/fast/frames/viewsource-empty-attribute-value.html : different length
+/sdcard/android/layout_tests/fast/frames/removal-before-attach-crash.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/frame-js-url-clientWidth.html : different length
+/sdcard/android/layout_tests/fast/frames/frame-base-url.html : different length
+/sdcard/android/layout_tests/fast/frames/empty-frame-src.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/mailto/post-text-plain.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-multiple-items.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/post-multiple-items-text-plain.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/post-append-query.html : different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-overwrite-query.html : different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii.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/get-non-ascii-text-plain-latin-1.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/get-multiple-items.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-multiple-items-text-plain.html : different length
+/sdcard/android/layout_tests/fast/forms/mailto/advanced-put.html : different length
+/sdcard/android/layout_tests/fast/forms/mailto/advanced-get.html : different length
+/sdcard/android/layout_tests/fast/forms/textfield-to-password-on-focus.html : different length
+/sdcard/android/layout_tests/fast/forms/textfield-onchange-deletion.html : different length
+/sdcard/android/layout_tests/fast/forms/textfield-inside-anchor.html : different length
+/sdcard/android/layout_tests/fast/forms/textarea-type-spaces.html : different length
+/sdcard/android/layout_tests/fast/forms/textarea-scrolled-endline-caret.html : different length
+/sdcard/android/layout_tests/fast/forms/textarea-paste-newline.html : different length
+/sdcard/android/layout_tests/fast/forms/textarea-no-scroll-on-blur.html : @offset: 79
+/sdcard/android/layout_tests/fast/forms/textarea-initial-caret-position.html : different length
+/sdcard/android/layout_tests/fast/forms/textarea-hard-linewrap.html : different length
+/sdcard/android/layout_tests/fast/forms/textarea-default-value-leading-newline.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/textarea-appearance-wrap.html : different length
+/sdcard/android/layout_tests/fast/forms/text-field-setvalue-crash.html : different length
+/sdcard/android/layout_tests/fast/forms/stuff-on-my-optgroup.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/slider-onchange-event.html : different length
+/sdcard/android/layout_tests/fast/forms/slider-mouse-events.html : different length
+/sdcard/android/layout_tests/fast/forms/selection-functions.html : @offset: 306
+/sdcard/android/layout_tests/fast/forms/select-type-ahead-non-latin.html : different length
+/sdcard/android/layout_tests/fast/forms/select-enter-key.html : different length
+/sdcard/android/layout_tests/fast/forms/select-empty-list.html : different length
+/sdcard/android/layout_tests/fast/forms/select-double-onchange.html : different length
+/sdcard/android/layout_tests/fast/forms/select-accesskey.html : different length
+/sdcard/android/layout_tests/fast/forms/search-hidden-cancel-button.html : different length
+/sdcard/android/layout_tests/fast/forms/search-event-delay.html : different length
+/sdcard/android/layout_tests/fast/forms/search-click-in-placeholder.html : @offset: 1
+/sdcard/android/layout_tests/fast/forms/search-cancel-button-mouseup.html : different length
+/sdcard/android/layout_tests/fast/forms/plaintext-mode-1.html : different length
+/sdcard/android/layout_tests/fast/forms/password-doubleclick-selection.html : different length
+/sdcard/android/layout_tests/fast/forms/onselect-textfield.html : different length
+/sdcard/android/layout_tests/fast/forms/onselect-textarea.html : different length
+/sdcard/android/layout_tests/fast/forms/onselect-selectall.html : different length
+/sdcard/android/layout_tests/fast/forms/onchange-enter-submit.html : different length
+/sdcard/android/layout_tests/fast/forms/listbox-typeahead-scroll.html : different length
+/sdcard/android/layout_tests/fast/forms/listbox-selection.html : different length
+/sdcard/android/layout_tests/fast/forms/listbox-select-all.html : different length
+/sdcard/android/layout_tests/fast/forms/listbox-onchange.html : different length
+/sdcard/android/layout_tests/fast/forms/legend-access-key.html : different length
+/sdcard/android/layout_tests/fast/forms/input-select-on-click.html : different length
+/sdcard/android/layout_tests/fast/forms/input-radio-checked-tab.html : @offset: 115
+/sdcard/android/layout_tests/fast/forms/input-maxlength.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/input-implicit-length-limit.html : different length
+/sdcard/android/layout_tests/fast/forms/input-first-letter.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/input-delete.html : different length
+/sdcard/android/layout_tests/fast/forms/form-element-geometry.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/form-collection-lookup.html : different length
+/sdcard/android/layout_tests/fast/forms/form-and-frame-interaction-retains-values.html : different length
+/sdcard/android/layout_tests/fast/forms/focus2.html : different length
+/sdcard/android/layout_tests/fast/forms/focus.html : different length
+/sdcard/android/layout_tests/fast/forms/focus-selection-textarea.html : different length
+/sdcard/android/layout_tests/fast/forms/focus-selection-input.html : different length
+/sdcard/android/layout_tests/fast/forms/focus-control-to-page.html : different length
+/sdcard/android/layout_tests/fast/forms/enter-clicks-buttons.html : different length
+/sdcard/android/layout_tests/fast/forms/drag-out-of-textarea.html : different length
+/sdcard/android/layout_tests/fast/forms/drag-into-textarea.html : different length
+/sdcard/android/layout_tests/fast/forms/check-box-enter-key.html : different length
+/sdcard/android/layout_tests/fast/forms/button-state-restore.html : different length
+/sdcard/android/layout_tests/fast/forms/button-spacebar-click.html : different length
+/sdcard/android/layout_tests/fast/forms/button-enter-click.html : different length
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-003.html : @offset: 51
+/sdcard/android/layout_tests/fast/forms/access-key.html : different length
+/sdcard/android/layout_tests/fast/events/window-events-capture.html : different length
+/sdcard/android/layout_tests/fast/events/window-events-bubble2.html : different length
+/sdcard/android/layout_tests/fast/events/window-events-bubble.html : different length
+/sdcard/android/layout_tests/fast/events/tabindex-focus-chain.html : @offset: 0
+/sdcard/android/layout_tests/fast/events/scrollbar-double-click.html : different length
+/sdcard/android/layout_tests/fast/events/scroll-to-anchor-in-overflow-hidden.html : different length
+/sdcard/android/layout_tests/fast/events/scroll-event-does-not-bubble.html : different length
+/sdcard/android/layout_tests/fast/events/related-target.html : different length
+/sdcard/android/layout_tests/fast/events/option-tab.html : different length
+/sdcard/android/layout_tests/fast/events/open-window-from-another-frame.html : different length
+/sdcard/android/layout_tests/fast/events/onunload.html : different length
+/sdcard/android/layout_tests/fast/events/onunload-window-property.html : different length
+/sdcard/android/layout_tests/fast/events/onunload-not-on-body.html : different length
+/sdcard/android/layout_tests/fast/events/onunload-clears-onbeforeunload.html : different length
+/sdcard/android/layout_tests/fast/events/onsearch-enter.html : different length
+/sdcard/android/layout_tests/fast/events/onload-webkit-before-webcore.html : @offset: 105
+/sdcard/android/layout_tests/fast/events/ondragenter.html : different length
+/sdcard/android/layout_tests/fast/events/onclick-list-marker.html : different length
+/sdcard/android/layout_tests/fast/events/onchange-textfield.html : different length
+/sdcard/android/layout_tests/fast/events/onchange-select-popup.html : different length
+/sdcard/android/layout_tests/fast/events/onchange-searchfield.html : different length
+/sdcard/android/layout_tests/fast/events/onchange-passwordfield.html : different length
+/sdcard/android/layout_tests/fast/events/onchange-click-hang.html : different length
+/sdcard/android/layout_tests/fast/events/mouseup-outside-document.html : different length
+/sdcard/android/layout_tests/fast/events/mouseup-from-button2.html : different length
+/sdcard/android/layout_tests/fast/events/mouseover-mouseout2.html : different length
+/sdcard/android/layout_tests/fast/events/mouseover-mouseout.html : different length
+/sdcard/android/layout_tests/fast/events/mouseout-on-window.html : different length
+/sdcard/android/layout_tests/fast/events/mouseout-dead-subframe.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/mousemove-after-drag-over-scrollbar.html : different length
+/sdcard/android/layout_tests/fast/events/mouseclick-target-and-positioning.html : different length
+/sdcard/android/layout_tests/fast/events/mouse-click-events.html : different length
+/sdcard/android/layout_tests/fast/events/keypress-insert-tab.html : @offset: 85
+/sdcard/android/layout_tests/fast/events/keypress-focus-change.html : different length
+/sdcard/android/layout_tests/fast/events/keydown-keypress-preventDefault.html : @offset: 228
+/sdcard/android/layout_tests/fast/events/keydown-keypress-focus-change.html : @offset: 172
+/sdcard/android/layout_tests/fast/events/key-events-in-input-text.html : different length
+/sdcard/android/layout_tests/fast/events/key-events-in-input-button.html : different length
+/sdcard/android/layout_tests/fast/events/js-keyboard-event-creation.html : different length
+/sdcard/android/layout_tests/fast/events/input-image-scrolled-x-y.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/iframe-object-onload.html : different length
+/sdcard/android/layout_tests/fast/events/frame-tab-focus.html : different length
+/sdcard/android/layout_tests/fast/events/frame-programmatic-focus.html : different length
+/sdcard/android/layout_tests/fast/events/frame-click-focus.html : different length
+/sdcard/android/layout_tests/fast/events/fire-scroll-event.html : different length
+/sdcard/android/layout_tests/fast/events/event-view-toString.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/drag-outside-window.html : @offset: 20
+/sdcard/android/layout_tests/fast/events/drag-in-frames.html : different length
+/sdcard/android/layout_tests/fast/events/dblclick-addEventListener.html : different length
+/sdcard/android/layout_tests/fast/events/contextmenu-scrolled-page-with-frame.html : different length
+/sdcard/android/layout_tests/fast/events/content-changed-during-drop.html : different length
+/sdcard/android/layout_tests/fast/events/click-count.html : different length
+/sdcard/android/layout_tests/fast/events/capture-on-target.html : different length
+/sdcard/android/layout_tests/fast/events/autoscroll-with-non-scrollable-parent.html : different length
+/sdcard/android/layout_tests/fast/events/autoscroll-nonscrollable-iframe-in-scrollable-div.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/arrow-keys-on-body.html : different length
+/sdcard/android/layout_tests/fast/events/anchor-image-scrolled-x-y.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/access-key-self-destruct.html : different length
+/sdcard/android/layout_tests/fast/encoding/xml-utf-8-default.xml : different length
+/sdcard/android/layout_tests/fast/encoding/url-host-name-non-ascii.html : different length
+/sdcard/android/layout_tests/fast/encoding/percent-escaping.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/encoding/mailto-always-utf-8.html : different length
+/sdcard/android/layout_tests/fast/encoding/invalid-xml.html : different length
+/sdcard/android/layout_tests/fast/encoding/idn-security.html : different length
+/sdcard/android/layout_tests/fast/encoding/frame-default-enc.html : @offset: 0
+/sdcard/android/layout_tests/fast/encoding/charset-koi8-u.html : @offset: 147
+/sdcard/android/layout_tests/fast/encoding/char-encoding.html : different length
+/sdcard/android/layout_tests/fast/encoding/char-decoding.html : different length
+/sdcard/android/layout_tests/fast/dynamic/paused-event-dispatch.html : @offset: 117
+/sdcard/android/layout_tests/fast/dom/Window/window-xy-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-screen-properties.html : @offset: 65
+/sdcard/android/layout_tests/fast/dom/Window/window-resize.html : 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-property-clearing.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/window-properties.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/Window/window-open-pending-url.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/window-onFocus.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-early-properties.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/setting-properties-on-closed-window.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/Window/redirect-with-timer.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/Plug-ins.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/orphaned-frame-access.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/new-window-opener.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/Window/get-set-properties.html : @offset: 0
+/sdcard/android/layout_tests/fast/dom/Window/dom-access-from-closure-window.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/console-functions.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/closure-access-after-navigation-window.html : different length
+/sdcard/android/layout_tests/fast/dom/Window/clear-timeout.html : different length
+/sdcard/android/layout_tests/fast/dom/StyleSheet/ownerNode-lifetime-2.html : different length
+/sdcard/android/layout_tests/fast/dom/HTMLSelectElement/listbox-select-reset.html : different length
+/sdcard/android/layout_tests/fast/dom/HTMLObjectElement/object-as-frame.html : different length
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/hasFocus.html : different length
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/activeElement.html : different length
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/011.xml : different length
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/010.xml : 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/wrapper-classes.html : different length
+/sdcard/android/layout_tests/fast/dom/tabindex-clamp.html : different length
+/sdcard/android/layout_tests/fast/dom/simultaneouslyRegsiteredTimerFireOrder.html : different length
+/sdcard/android/layout_tests/fast/dom/set-frame-src-while-running-script-in-frame.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex.html : different length
+/sdcard/android/layout_tests/fast/dom/open-and-close-by-DOM.html : different length
+/sdcard/android/layout_tests/fast/dom/onerror-img.html : different length
+/sdcard/android/layout_tests/fast/dom/object-plugin-hides-properties.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/object-embed-plugin-scripting.html : different length
+/sdcard/android/layout_tests/fast/dom/null-document-window-open-crash.html : different length
+/sdcard/android/layout_tests/fast/dom/null-document-location-replace-crash.html : different length
+/sdcard/android/layout_tests/fast/dom/null-document-location-put-crash.html : different length
+/sdcard/android/layout_tests/fast/dom/null-document-location-href-put-crash.html : different length
+/sdcard/android/layout_tests/fast/dom/null-document-location-assign-crash.html : different length
+/sdcard/android/layout_tests/fast/dom/null-chardata-crash.html : different length
+/sdcard/android/layout_tests/fast/dom/noscript-style.html : different length
+/sdcard/android/layout_tests/fast/dom/noscript-canvas-in-created-html-document.html : different length
+/sdcard/android/layout_tests/fast/dom/non-numeric-values-numeric-parameters.html : different length
+/sdcard/android/layout_tests/fast/dom/node-item.html : different length
+/sdcard/android/layout_tests/fast/dom/node-filter-gc.html : @offset: 1
+/sdcard/android/layout_tests/fast/dom/no-elements.html : different length
+/sdcard/android/layout_tests/fast/dom/navigator-vendorSub.html : different length
+/sdcard/android/layout_tests/fast/dom/namespaces-1.html : different length
+/sdcard/android/layout_tests/fast/dom/NamedNodeMap-setNamedItem-crash.html : different length
+/sdcard/android/layout_tests/fast/dom/namednodemap-namelookup.html : different length
+/sdcard/android/layout_tests/fast/dom/mutation-event-remove-inserted-node.html : different length
+/sdcard/android/layout_tests/fast/dom/location-hash.html : different length
+/sdcard/android/layout_tests/fast/dom/length-attribute-mapping.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/javascript-url-crash-function.html : different length
+/sdcard/android/layout_tests/fast/dom/inner-text-001.html : different length
+/sdcard/android/layout_tests/fast/dom/global-constructors.html : different length
+/sdcard/android/layout_tests/fast/dom/gc-acid3.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/gc-9.html : different length
+/sdcard/android/layout_tests/fast/dom/gc-8.html : different length
+/sdcard/android/layout_tests/fast/dom/frame-loading-via-document-write.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/documenturi-not-affected-by-base-tag.html : different length
+/sdcard/android/layout_tests/fast/dom/documenturi-can-hold-arbitrary-string.html : different length
+/sdcard/android/layout_tests/fast/dom/document-width-height-force-layout.html : @offset: 142
+/sdcard/android/layout_tests/fast/dom/constructors-cached.html : different length
+/sdcard/android/layout_tests/fast/dom/constructors-cached-navigate.html : different length
+/sdcard/android/layout_tests/fast/dom/client-width-height.html : @offset: 119
+/sdcard/android/layout_tests/fast/dom/client-width-height-quirks.html : @offset: 115
+/sdcard/android/layout_tests/fast/dom/assign-to-window-status.html : different length
+/sdcard/android/layout_tests/fast/css/variables/color-hex-test.html : different length
+/sdcard/android/layout_tests/fast/css/html-attr-case-sensitivity.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/css/hover-affects-child.html : different length
+/sdcard/android/layout_tests/fast/css/getComputedStyle-transform.html : different length
+/sdcard/android/layout_tests/fast/css/dashboard-region-parser.html : different length
+/sdcard/android/layout_tests/fast/css/computed-style.html : different length
+/sdcard/android/layout_tests/fast/css/computed-style-without-renderer.html : different length
+/sdcard/android/layout_tests/fast/canvas/toDataURL-supportedTypes.html : different length
+/sdcard/android/layout_tests/fast/canvas/canvas-save-restore-with-path.html : different length
+/sdcard/android/layout_tests/fast/canvas/canvas-longlived-context.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/canvas/canvas-getImageData.html : different length
+/sdcard/android/layout_tests/fast/canvas/canvas-alphaImageData-behavior.html : different length
diff --git a/tests/DumpRenderTree/results/layout_tests_nontext.txt b/tests/DumpRenderTree/results/layout_tests_nontext.txt
new file mode 100644
index 0000000..0355cb7
--- /dev/null
+++ b/tests/DumpRenderTree/results/layout_tests_nontext.txt
@@ -0,0 +1,1658 @@
+/sdcard/android/layout_tests/fast/transforms/transforms-with-opacity.html
+/sdcard/android/layout_tests/fast/transforms/transform-positioned-ancestor.html
+/sdcard/android/layout_tests/fast/transforms/transform-overflow.html
+/sdcard/android/layout_tests/fast/transforms/skew-with-unitless-zero.html
+/sdcard/android/layout_tests/fast/transforms/shadows.html
+/sdcard/android/layout_tests/fast/transforms/overflow-with-transform.html
+/sdcard/android/layout_tests/fast/transforms/matrix-02.html
+/sdcard/android/layout_tests/fast/transforms/matrix-01.html
+/sdcard/android/layout_tests/fast/transforms/identity-matrix.html
+/sdcard/android/layout_tests/fast/transforms/diamond.html
+/sdcard/android/layout_tests/fast/tokenizer/script_extra_close.html
+/sdcard/android/layout_tests/fast/tokenizer/script-after-frameset.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-title-end-tag-2.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-title-end-tag-1.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-style-end-tag-2.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-style-end-tag-1.html
+/sdcard/android/layout_tests/fast/tokenizer/external-script-document-write_2.html
+/sdcard/android/layout_tests/fast/tokenizer/external-script-document-write.html
+/sdcard/android/layout_tests/fast/tokenizer/003.html
+/sdcard/android/layout_tests/fast/tokenizer/002.html
+/sdcard/android/layout_tests/fast/tokenizer/001.html
+/sdcard/android/layout_tests/fast/text/whitespace/tab-character-basics.html
+/sdcard/android/layout_tests/fast/text/whitespace/span-in-word-space-causes-overflow.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-spaces-after-newline.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-overflow-selection.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-line-test.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-last-char.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-newline-box-test.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-break-word.html
+/sdcard/android/layout_tests/fast/text/whitespace/nowrap-clear-float.html
+/sdcard/android/layout_tests/fast/text/whitespace/normal-after-nowrap-breaking.html
+/sdcard/android/layout_tests/fast/text/whitespace/nbsp-mode-and-linewraps.html
+/sdcard/android/layout_tests/fast/text/whitespace/030.html
+/sdcard/android/layout_tests/fast/text/whitespace/029.html
+/sdcard/android/layout_tests/fast/text/whitespace/028.html
+/sdcard/android/layout_tests/fast/text/whitespace/027.html
+/sdcard/android/layout_tests/fast/text/whitespace/026.html
+/sdcard/android/layout_tests/fast/text/whitespace/025.html
+/sdcard/android/layout_tests/fast/text/whitespace/024.html
+/sdcard/android/layout_tests/fast/text/whitespace/023.html
+/sdcard/android/layout_tests/fast/text/whitespace/022.html
+/sdcard/android/layout_tests/fast/text/whitespace/021.html
+/sdcard/android/layout_tests/fast/text/whitespace/020.html
+/sdcard/android/layout_tests/fast/text/whitespace/019.html
+/sdcard/android/layout_tests/fast/text/whitespace/018.html
+/sdcard/android/layout_tests/fast/text/whitespace/017.html
+/sdcard/android/layout_tests/fast/text/whitespace/016.html
+/sdcard/android/layout_tests/fast/text/whitespace/015.html
+/sdcard/android/layout_tests/fast/text/whitespace/014.html
+/sdcard/android/layout_tests/fast/text/whitespace/013.html
+/sdcard/android/layout_tests/fast/text/whitespace/012.html
+/sdcard/android/layout_tests/fast/text/whitespace/011.html
+/sdcard/android/layout_tests/fast/text/whitespace/010.html
+/sdcard/android/layout_tests/fast/text/whitespace/009.html
+/sdcard/android/layout_tests/fast/text/whitespace/008.html
+/sdcard/android/layout_tests/fast/text/whitespace/007.html
+/sdcard/android/layout_tests/fast/text/whitespace/006.html
+/sdcard/android/layout_tests/fast/text/whitespace/005.html
+/sdcard/android/layout_tests/fast/text/whitespace/004.html
+/sdcard/android/layout_tests/fast/text/whitespace/003.html
+/sdcard/android/layout_tests/fast/text/whitespace/002.html
+/sdcard/android/layout_tests/fast/text/whitespace/001.html
+/sdcard/android/layout_tests/fast/text/international/wrap-CJK-001.html
+/sdcard/android/layout_tests/fast/text/international/thai-line-breaks.html
+/sdcard/android/layout_tests/fast/text/international/rtl-white-space-pre-wrap.html
+/sdcard/android/layout_tests/fast/text/international/rtl-caret.html
+/sdcard/android/layout_tests/fast/text/international/hindi-spacing.html
+/sdcard/android/layout_tests/fast/text/international/complex-character-based-fallback.html
+/sdcard/android/layout_tests/fast/text/international/bidi-override.html
+/sdcard/android/layout_tests/fast/text/international/bidi-neutral-run.html
+/sdcard/android/layout_tests/fast/text/international/bidi-neutral-directionality-paragraph-start.html
+/sdcard/android/layout_tests/fast/text/international/bidi-menulist.html
+/sdcard/android/layout_tests/fast/text/international/bidi-listbox.html
+/sdcard/android/layout_tests/fast/text/international/bidi-listbox-atsui.html
+/sdcard/android/layout_tests/fast/text/international/bidi-LDB-2-HTML.html
+/sdcard/android/layout_tests/fast/text/international/bidi-LDB-2-formatting-characters.html
+/sdcard/android/layout_tests/fast/text/international/bidi-LDB-2-CSS.html
+/sdcard/android/layout_tests/fast/text/international/bidi-layout-across-linebreak.html
+/sdcard/android/layout_tests/fast/text/international/bidi-L2-run-reordering.html
+/sdcard/android/layout_tests/fast/text/international/bidi-innertext.html
+/sdcard/android/layout_tests/fast/text/international/bidi-ignored-for-first-child-inline.html
+/sdcard/android/layout_tests/fast/text/international/bidi-explicit-embedding.html
+/sdcard/android/layout_tests/fast/text/international/bidi-european-terminators.html
+/sdcard/android/layout_tests/fast/text/international/bidi-CS-after-AN.html
+/sdcard/android/layout_tests/fast/text/international/bidi-control-chars-treated-as-ZWS.html
+/sdcard/android/layout_tests/fast/text/international/bidi-AN-after-L.html
+/sdcard/android/layout_tests/fast/text/international/bidi-AN-after-empty-run.html
+/sdcard/android/layout_tests/fast/text/international/003.html
+/sdcard/android/layout_tests/fast/text/international/002.html
+/sdcard/android/layout_tests/fast/text/international/001.html
+/sdcard/android/layout_tests/fast/text/firstline/003.html
+/sdcard/android/layout_tests/fast/text/firstline/002.html
+/sdcard/android/layout_tests/fast/text/firstline/001.html
+/sdcard/android/layout_tests/fast/text/basic/generic-family-reset.html
+/sdcard/android/layout_tests/fast/text/basic/generic-family-changes.html
+/sdcard/android/layout_tests/fast/text/basic/015.html
+/sdcard/android/layout_tests/fast/text/basic/014.html
+/sdcard/android/layout_tests/fast/text/basic/013.html
+/sdcard/android/layout_tests/fast/text/basic/012.html
+/sdcard/android/layout_tests/fast/text/basic/011.html
+/sdcard/android/layout_tests/fast/text/basic/009.html
+/sdcard/android/layout_tests/fast/text/basic/008.html
+/sdcard/android/layout_tests/fast/text/basic/007.html
+/sdcard/android/layout_tests/fast/text/basic/006.html
+/sdcard/android/layout_tests/fast/text/basic/005.html
+/sdcard/android/layout_tests/fast/text/basic/004.html
+/sdcard/android/layout_tests/fast/text/basic/003.html
+/sdcard/android/layout_tests/fast/text/basic/002.html
+/sdcard/android/layout_tests/fast/text/basic/001.html
+/sdcard/android/layout_tests/fast/text/word-space.html
+/sdcard/android/layout_tests/fast/text/word-break.html
+/sdcard/android/layout_tests/fast/text/word-break-soft-hyphen.html
+/sdcard/android/layout_tests/fast/text/word-break-run-rounding.html
+/sdcard/android/layout_tests/fast/text/wide-zero-width-space.html
+/sdcard/android/layout_tests/fast/text/wbr.html
+/sdcard/android/layout_tests/fast/text/wbr-styled.html
+/sdcard/android/layout_tests/fast/text/wbr-pre.html
+/sdcard/android/layout_tests/fast/text/wbr-in-pre-crash.html
+/sdcard/android/layout_tests/fast/text/updateNewFont.html
+/sdcard/android/layout_tests/fast/text/trailing-white-space.html
+/sdcard/android/layout_tests/fast/text/trailing-white-space-2.html
+/sdcard/android/layout_tests/fast/text/textIteratorNilRenderer.html
+/sdcard/android/layout_tests/fast/text/stroking.html
+/sdcard/android/layout_tests/fast/text/stroking-decorations.html
+/sdcard/android/layout_tests/fast/text/stripNullFromText.html
+/sdcard/android/layout_tests/fast/text/softHyphen.html
+/sdcard/android/layout_tests/fast/text/soft-hyphen-3.html
+/sdcard/android/layout_tests/fast/text/soft-hyphen-2.html
+/sdcard/android/layout_tests/fast/text/should-use-atsui.html
+/sdcard/android/layout_tests/fast/text/shadow-no-blur.html
+/sdcard/android/layout_tests/fast/text/selection-painted-separately.html
+/sdcard/android/layout_tests/fast/text/selection-hard-linebreak.html
+/sdcard/android/layout_tests/fast/text/reset-emptyRun.html
+/sdcard/android/layout_tests/fast/text/monospace-width-cache.html
+/sdcard/android/layout_tests/fast/text/midword-break-hang.html
+/sdcard/android/layout_tests/fast/text/midword-break-after-breakable-char.html
+/sdcard/android/layout_tests/fast/text/line-breaks.html
+/sdcard/android/layout_tests/fast/text/line-breaks-after-white-space.html
+/sdcard/android/layout_tests/fast/text/letter-spacing-negative-opacity.html
+/sdcard/android/layout_tests/fast/text/large-text-composed-char.html
+/sdcard/android/layout_tests/fast/text/justified-selection.html
+/sdcard/android/layout_tests/fast/text/justified-selection-at-edge.html
+/sdcard/android/layout_tests/fast/text/in-rendered-text-rtl.html
+/sdcard/android/layout_tests/fast/text/font-initial.html
+/sdcard/android/layout_tests/fast/text/fixed-pitch-control-characters.html
+/sdcard/android/layout_tests/fast/text/embed-at-end-of-pre-wrap-line.html
+/sdcard/android/layout_tests/fast/text/drawBidiText.html
+/sdcard/android/layout_tests/fast/text/delete-hard-break-character.html
+/sdcard/android/layout_tests/fast/text/cg-vs-atsui.html
+/sdcard/android/layout_tests/fast/text/cg-fallback-bolding.html
+/sdcard/android/layout_tests/fast/text/capitalize-preserve-nbsp.html
+/sdcard/android/layout_tests/fast/text/capitalize-empty-generated-string.html
+/sdcard/android/layout_tests/fast/text/capitalize-boundaries.html
+/sdcard/android/layout_tests/fast/text/break-word.html
+/sdcard/android/layout_tests/fast/text/bidi-embedding-pop-and-push-same.html
+/sdcard/android/layout_tests/fast/text/atsui-spacing-features.html
+/sdcard/android/layout_tests/fast/text/atsui-small-caps-punctuation-size.html
+/sdcard/android/layout_tests/fast/text/atsui-rtl-override-selection.html
+/sdcard/android/layout_tests/fast/text/atsui-pointtooffset-calls-cg.html
+/sdcard/android/layout_tests/fast/text/atsui-partial-selection.html
+/sdcard/android/layout_tests/fast/text/atsui-multiple-renderers.html
+/sdcard/android/layout_tests/fast/text/atsui-kerning-and-ligatures.html
+/sdcard/android/layout_tests/fast/text/apply-start-width-after-skipped-text.html
+/sdcard/android/layout_tests/fast/text/align-center-rtl-spill.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/rtl-border-collapsing.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/equal-precedence-resolution.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/border-collapsing-head-foot.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/004.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/003.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/002.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/001.html
+/sdcard/android/layout_tests/fast/table/wide-column.html
+/sdcard/android/layout_tests/fast/table/wide-colspan.html
+/sdcard/android/layout_tests/fast/table/vertical-align-baseline.html
+/sdcard/android/layout_tests/fast/table/vertical-align-baseline-readjust.html
+/sdcard/android/layout_tests/fast/table/unused-percent-heights.html
+/sdcard/android/layout_tests/fast/table/unbreakable-images-quirk.html
+/sdcard/android/layout_tests/fast/table/text-field-baseline.html
+/sdcard/android/layout_tests/fast/table/tableInsideCaption.html
+/sdcard/android/layout_tests/fast/table/table-hspace-align-center.html
+/sdcard/android/layout_tests/fast/table/table-display-types.html
+/sdcard/android/layout_tests/fast/table/table-display-types-strict.html
+/sdcard/android/layout_tests/fast/table/stale-grid-crash.html
+/sdcard/android/layout_tests/fast/table/spanOverlapRepaint.html
+/sdcard/android/layout_tests/fast/table/rules-attr-dynchange2.html
+/sdcard/android/layout_tests/fast/table/rules-attr-dynchange1.html
+/sdcard/android/layout_tests/fast/table/rtl-cell-display-none-assert.html
+/sdcard/android/layout_tests/fast/table/rowspan-paint-order.html
+/sdcard/android/layout_tests/fast/table/rowindex.html
+/sdcard/android/layout_tests/fast/table/row-height-recalc.html
+/sdcard/android/layout_tests/fast/table/replaced-percent-height.html
+/sdcard/android/layout_tests/fast/table/remove-td-display-none.html
+/sdcard/android/layout_tests/fast/table/prepend-in-anonymous-table.html
+/sdcard/android/layout_tests/fast/table/percent-widths-stretch.html
+/sdcard/android/layout_tests/fast/table/percent-heights.html
+/sdcard/android/layout_tests/fast/table/overflowHidden.html
+/sdcard/android/layout_tests/fast/table/nobr.html
+/sdcard/android/layout_tests/fast/table/nested-percent-height-table.html
+/sdcard/android/layout_tests/fast/table/multiple-percent-height-rows.html
+/sdcard/android/layout_tests/fast/table/max-width-integer-overflow.html
+/sdcard/android/layout_tests/fast/table/large-width.html
+/sdcard/android/layout_tests/fast/table/invisible-cell-background.html
+/sdcard/android/layout_tests/fast/table/insert-row-before-form.html
+/sdcard/android/layout_tests/fast/table/insert-cell-before-form.html
+/sdcard/android/layout_tests/fast/table/insert-before-anonymous-ancestors.html
+/sdcard/android/layout_tests/fast/table/inline-form-assert.html
+/sdcard/android/layout_tests/fast/table/height-percent-test.html
+/sdcard/android/layout_tests/fast/table/growCellForImageQuirk.html
+/sdcard/android/layout_tests/fast/table/giantRowspan2.html
+/sdcard/android/layout_tests/fast/table/giantRowspan.html
+/sdcard/android/layout_tests/fast/table/giantCellspacing.html
+/sdcard/android/layout_tests/fast/table/generated-caption.html
+/sdcard/android/layout_tests/fast/table/frame-and-rules.html
+/sdcard/android/layout_tests/fast/table/form-with-table-style.html
+/sdcard/android/layout_tests/fast/table/floating-th.html
+/sdcard/android/layout_tests/fast/table/fixed-with-auto-with-colspan.html
+/sdcard/android/layout_tests/fast/table/fixed-table-non-cell-in-row.html
+/sdcard/android/layout_tests/fast/table/fixed-nested.html
+/sdcard/android/layout_tests/fast/table/empty-table-percent-height.html
+/sdcard/android/layout_tests/fast/table/empty-section-crash.html
+/sdcard/android/layout_tests/fast/table/empty-row-crash.html
+/sdcard/android/layout_tests/fast/table/empty-cells.html
+/sdcard/android/layout_tests/fast/table/edge-offsets.html
+/sdcard/android/layout_tests/fast/table/dynamic-cellpadding.html
+/sdcard/android/layout_tests/fast/table/div-as-col-span.html
+/sdcard/android/layout_tests/fast/table/colgroup-spanning-groups-rules.html
+/sdcard/android/layout_tests/fast/table/colgroup-preceded-by-caption.html
+/sdcard/android/layout_tests/fast/table/click-near-anonymous-table.html
+/sdcard/android/layout_tests/fast/table/cellindex.html
+/sdcard/android/layout_tests/fast/table/cell-pref-width-invalidation.html
+/sdcard/android/layout_tests/fast/table/cell-width-auto.html
+/sdcard/android/layout_tests/fast/table/cell-absolute-child.html
+/sdcard/android/layout_tests/fast/table/caption-relayout.html
+/sdcard/android/layout_tests/fast/table/auto-with-percent-height.html
+/sdcard/android/layout_tests/fast/table/append-cells2.html
+/sdcard/android/layout_tests/fast/table/append-cells.html
+/sdcard/android/layout_tests/fast/table/add-before-anonymous-child.html
+/sdcard/android/layout_tests/fast/table/absolute-table-at-bottom.html
+/sdcard/android/layout_tests/fast/table/100-percent-cell-width.html
+/sdcard/android/layout_tests/fast/table/041.html
+/sdcard/android/layout_tests/fast/table/040.html
+/sdcard/android/layout_tests/fast/table/039.html
+/sdcard/android/layout_tests/fast/table/038.html
+/sdcard/android/layout_tests/fast/table/037.xml
+/sdcard/android/layout_tests/fast/table/036.html
+/sdcard/android/layout_tests/fast/table/035.html
+/sdcard/android/layout_tests/fast/table/034.html
+/sdcard/android/layout_tests/fast/table/033.html
+/sdcard/android/layout_tests/fast/table/032.html
+/sdcard/android/layout_tests/fast/table/031.html
+/sdcard/android/layout_tests/fast/table/030.html
+/sdcard/android/layout_tests/fast/table/029.html
+/sdcard/android/layout_tests/fast/table/028.html
+/sdcard/android/layout_tests/fast/table/027.html
+/sdcard/android/layout_tests/fast/table/026.html
+/sdcard/android/layout_tests/fast/table/025.html
+/sdcard/android/layout_tests/fast/table/024.html
+/sdcard/android/layout_tests/fast/table/023.html
+/sdcard/android/layout_tests/fast/table/022.html
+/sdcard/android/layout_tests/fast/table/021.html
+/sdcard/android/layout_tests/fast/table/020.html
+/sdcard/android/layout_tests/fast/table/018.html
+/sdcard/android/layout_tests/fast/table/017.html
+/sdcard/android/layout_tests/fast/table/016.html
+/sdcard/android/layout_tests/fast/table/015.html
+/sdcard/android/layout_tests/fast/table/014.html
+/sdcard/android/layout_tests/fast/table/013.html
+/sdcard/android/layout_tests/fast/table/012.html
+/sdcard/android/layout_tests/fast/table/011.html
+/sdcard/android/layout_tests/fast/table/010.html
+/sdcard/android/layout_tests/fast/table/009.html
+/sdcard/android/layout_tests/fast/table/008.html
+/sdcard/android/layout_tests/fast/table/007.html
+/sdcard/android/layout_tests/fast/table/006.html
+/sdcard/android/layout_tests/fast/table/005.html
+/sdcard/android/layout_tests/fast/table/004.html
+/sdcard/android/layout_tests/fast/table/003.html
+/sdcard/android/layout_tests/fast/table/002.html
+/sdcard/android/layout_tests/fast/table/001.html
+/sdcard/android/layout_tests/fast/selectors/unqualified-hover-strict.html
+/sdcard/android/layout_tests/fast/selectors/unqualified-hover-quirks.html
+/sdcard/android/layout_tests/fast/selectors/nondeterministic-combinators.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/selectors/lang-inheritance.html
+/sdcard/android/layout_tests/fast/selectors/177b.html
+/sdcard/android/layout_tests/fast/selectors/177a.html
+/sdcard/android/layout_tests/fast/selectors/175c.html
+/sdcard/android/layout_tests/fast/selectors/175b.html
+/sdcard/android/layout_tests/fast/selectors/175a.html
+/sdcard/android/layout_tests/fast/selectors/170d.html
+/sdcard/android/layout_tests/fast/selectors/170c.html
+/sdcard/android/layout_tests/fast/selectors/170b.html
+/sdcard/android/layout_tests/fast/selectors/170a.html
+/sdcard/android/layout_tests/fast/selectors/170.html
+/sdcard/android/layout_tests/fast/selectors/169a.html
+/sdcard/android/layout_tests/fast/selectors/169.html
+/sdcard/android/layout_tests/fast/selectors/168a.html
+/sdcard/android/layout_tests/fast/selectors/168.html
+/sdcard/android/layout_tests/fast/selectors/167a.html
+/sdcard/android/layout_tests/fast/selectors/167.html
+/sdcard/android/layout_tests/fast/selectors/166a.html
+/sdcard/android/layout_tests/fast/selectors/166.html
+/sdcard/android/layout_tests/fast/selectors/160.html
+/sdcard/android/layout_tests/fast/selectors/159.html
+/sdcard/android/layout_tests/fast/selectors/158.html
+/sdcard/android/layout_tests/fast/selectors/157.html
+/sdcard/android/layout_tests/fast/selectors/156b.html
+/sdcard/android/layout_tests/fast/selectors/155d.html
+/sdcard/android/layout_tests/fast/selectors/155c.html
+/sdcard/android/layout_tests/fast/selectors/155b.html
+/sdcard/android/layout_tests/fast/selectors/155a.html
+/sdcard/android/layout_tests/fast/selectors/155.html
+/sdcard/android/layout_tests/fast/selectors/154.html
+/sdcard/android/layout_tests/fast/selectors/090b.html
+/sdcard/android/layout_tests/fast/selectors/089.html
+/sdcard/android/layout_tests/fast/selectors/088b.html
+/sdcard/android/layout_tests/fast/selectors/087b.html
+/sdcard/android/layout_tests/fast/selectors/083.html
+/sdcard/android/layout_tests/fast/selectors/078b.html
+/sdcard/android/layout_tests/fast/selectors/077b.html
+/sdcard/android/layout_tests/fast/selectors/077.html
+/sdcard/android/layout_tests/fast/selectors/072b.html
+/sdcard/android/layout_tests/fast/selectors/072.html
+/sdcard/android/layout_tests/fast/selectors/066b.html
+/sdcard/android/layout_tests/fast/selectors/066.html
+/sdcard/android/layout_tests/fast/selectors/065.html
+/sdcard/android/layout_tests/fast/selectors/064.html
+/sdcard/android/layout_tests/fast/selectors/063.html
+/sdcard/android/layout_tests/fast/selectors/062.html
+/sdcard/android/layout_tests/fast/selectors/061.html
+/sdcard/android/layout_tests/fast/selectors/060.html
+/sdcard/android/layout_tests/fast/selectors/059.html
+/sdcard/android/layout_tests/fast/selectors/058.html
+/sdcard/android/layout_tests/fast/selectors/056.html
+/sdcard/android/layout_tests/fast/selectors/054.html
+/sdcard/android/layout_tests/fast/selectors/046.html
+/sdcard/android/layout_tests/fast/selectors/045c.html
+/sdcard/android/layout_tests/fast/selectors/045b.html
+/sdcard/android/layout_tests/fast/selectors/045.html
+/sdcard/android/layout_tests/fast/selectors/044d.html
+/sdcard/android/layout_tests/fast/selectors/044c.html
+/sdcard/android/layout_tests/fast/selectors/044b.html
+/sdcard/android/layout_tests/fast/selectors/044.html
+/sdcard/android/layout_tests/fast/selectors/043b.html
+/sdcard/android/layout_tests/fast/selectors/043.html
+/sdcard/android/layout_tests/fast/selectors/042.html
+/sdcard/android/layout_tests/fast/selectors/041.html
+/sdcard/android/layout_tests/fast/selectors/040.html
+/sdcard/android/layout_tests/fast/selectors/039b.html
+/sdcard/android/layout_tests/fast/selectors/039.html
+/sdcard/android/layout_tests/fast/selectors/038.html
+/sdcard/android/layout_tests/fast/selectors/034.html
+/sdcard/android/layout_tests/fast/selectors/032.html
+/sdcard/android/layout_tests/fast/selectors/027.html
+/sdcard/android/layout_tests/fast/selectors/021b.html
+/sdcard/android/layout_tests/fast/selectors/021.html
+/sdcard/android/layout_tests/fast/selectors/020.html
+/sdcard/android/layout_tests/fast/selectors/019.html
+/sdcard/android/layout_tests/fast/selectors/018b.html
+/sdcard/android/layout_tests/fast/selectors/018.html
+/sdcard/android/layout_tests/fast/selectors/017.html
+/sdcard/android/layout_tests/fast/selectors/016.html
+/sdcard/android/layout_tests/fast/selectors/015.html
+/sdcard/android/layout_tests/fast/selectors/014.html
+/sdcard/android/layout_tests/fast/selectors/013.html
+/sdcard/android/layout_tests/fast/selectors/012.html
+/sdcard/android/layout_tests/fast/selectors/011.html
+/sdcard/android/layout_tests/fast/selectors/010.html
+/sdcard/android/layout_tests/fast/selectors/009.html
+/sdcard/android/layout_tests/fast/selectors/008.html
+/sdcard/android/layout_tests/fast/selectors/007b.html
+/sdcard/android/layout_tests/fast/selectors/007a.html
+/sdcard/android/layout_tests/fast/selectors/006.html
+/sdcard/android/layout_tests/fast/selectors/005.html
+/sdcard/android/layout_tests/fast/selectors/004.html
+/sdcard/android/layout_tests/fast/selectors/003.html
+/sdcard/android/layout_tests/fast/selectors/002.html
+/sdcard/android/layout_tests/fast/selectors/001.html
+/sdcard/android/layout_tests/fast/runin/001.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-textfield.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-textarea.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-searchfield.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-radio.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-menulist.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-image.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-checkbox.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-button.html
+/sdcard/android/layout_tests/fast/replaced/three-selects-break.html
+/sdcard/android/layout_tests/fast/replaced/selection-rect.html
+/sdcard/android/layout_tests/fast/replaced/selection-rect-in-table-cell.html
+/sdcard/android/layout_tests/fast/replaced/replaced-child-of-absolute-with-auto-height.html
+/sdcard/android/layout_tests/fast/replaced/replaced-breaking.html
+/sdcard/android/layout_tests/fast/replaced/replaced-breaking-mixture.html
+/sdcard/android/layout_tests/fast/replaced/percent-height-in-anonymous-block.html
+/sdcard/android/layout_tests/fast/replaced/percent-height-in-anonymous-block-widget.html
+/sdcard/android/layout_tests/fast/replaced/pdf-as-image.html
+/sdcard/android/layout_tests/fast/replaced/object-align-hspace-vspace.html
+/sdcard/android/layout_tests/fast/replaced/minwidth-pxs.html
+/sdcard/android/layout_tests/fast/replaced/minwidth-percent.html
+/sdcard/android/layout_tests/fast/replaced/minheight-pxs.html
+/sdcard/android/layout_tests/fast/replaced/minheight-percent.html
+/sdcard/android/layout_tests/fast/replaced/maxwidth-pxs.html
+/sdcard/android/layout_tests/fast/replaced/maxwidth-percent.html
+/sdcard/android/layout_tests/fast/replaced/maxheight-pxs.html
+/sdcard/android/layout_tests/fast/replaced/maxheight-percent.html
+/sdcard/android/layout_tests/fast/replaced/max-width-percent.html
+/sdcard/android/layout_tests/fast/replaced/inline-box-wrapper-handover.html
+/sdcard/android/layout_tests/fast/replaced/image-tag.html
+/sdcard/android/layout_tests/fast/replaced/image-solid-color-with-alpha.html
+/sdcard/android/layout_tests/fast/replaced/image-sizing.html
+/sdcard/android/layout_tests/fast/replaced/image-resize-width.html
+/sdcard/android/layout_tests/fast/replaced/image-onload.html
+/sdcard/android/layout_tests/fast/replaced/applet-rendering-java-disabled.html
+/sdcard/android/layout_tests/fast/replaced/applet-disabled-positioned.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-with-auto-width-and-left-and-right.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-with-auto-height-and-top-and-bottom.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-percentage-width.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-percentage-height.html
+/sdcard/android/layout_tests/fast/replaced/absolute-image-sizing.html
+/sdcard/android/layout_tests/fast/replaced/008.html
+/sdcard/android/layout_tests/fast/replaced/007.html
+/sdcard/android/layout_tests/fast/replaced/006.html
+/sdcard/android/layout_tests/fast/replaced/005.html
+/sdcard/android/layout_tests/fast/replaced/004.html
+/sdcard/android/layout_tests/fast/replaced/003.html
+/sdcard/android/layout_tests/fast/replaced/002.html
+/sdcard/android/layout_tests/fast/replaced/001.html
+/sdcard/android/layout_tests/fast/repaint/transform-translate.html
+/sdcard/android/layout_tests/fast/repaint/text-shadow.html
+/sdcard/android/layout_tests/fast/repaint/text-shadow-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/text-selection-rect-in-overflow.html
+/sdcard/android/layout_tests/fast/repaint/text-selection-rect-in-overflow-2.html
+/sdcard/android/layout_tests/fast/repaint/table-two-pass-layout-overpaint.html
+/sdcard/android/layout_tests/fast/repaint/table-section-repaint.html
+/sdcard/android/layout_tests/fast/repaint/table-section-overflow.html
+/sdcard/android/layout_tests/fast/repaint/table-row.html
+/sdcard/android/layout_tests/fast/repaint/table-outer-border.html
+/sdcard/android/layout_tests/fast/repaint/table-extra-bottom-grow.html
+/sdcard/android/layout_tests/fast/repaint/table-collapsed-border.html
+/sdcard/android/layout_tests/fast/repaint/table-col-background.html
+/sdcard/android/layout_tests/fast/repaint/table-cell-vertical-overflow.html
+/sdcard/android/layout_tests/fast/repaint/table-cell-move.html
+/sdcard/android/layout_tests/fast/repaint/table-cell-collapsed-border.html
+/sdcard/android/layout_tests/fast/repaint/subtree-root-skipped.html
+/sdcard/android/layout_tests/fast/repaint/subtree-root-clip.html
+/sdcard/android/layout_tests/fast/repaint/subtree-root-clip-3.html
+/sdcard/android/layout_tests/fast/repaint/subtree-root-clip-2.html
+/sdcard/android/layout_tests/fast/repaint/static-to-positioned.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-vertical.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-strict-vertical.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-strict-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/selection-gap-overflow-scroll.html
+/sdcard/android/layout_tests/fast/repaint/selection-after-remove.html
+/sdcard/android/layout_tests/fast/repaint/selection-after-delete.html
+/sdcard/android/layout_tests/fast/repaint/repaint-resized-overflow.html
+/sdcard/android/layout_tests/fast/repaint/renderer-destruction-by-invalidateSelection-crash.html
+/sdcard/android/layout_tests/fast/repaint/overflow-scroll-delete.html
+/sdcard/android/layout_tests/fast/repaint/overflow-outline-repaint.html
+/sdcard/android/layout_tests/fast/repaint/overflow-into-content.html
+/sdcard/android/layout_tests/fast/repaint/overflow-delete-line.html
+/sdcard/android/layout_tests/fast/repaint/overflow-clip-subtree-layout.html
+/sdcard/android/layout_tests/fast/repaint/outline-shrinking.html
+/sdcard/android/layout_tests/fast/repaint/outline-repaint-glitch.html
+/sdcard/android/layout_tests/fast/repaint/outline-inset.html
+/sdcard/android/layout_tests/fast/repaint/make-children-non-inline.html
+/sdcard/android/layout_tests/fast/repaint/list-marker.html
+/sdcard/android/layout_tests/fast/repaint/list-marker-2.html
+/sdcard/android/layout_tests/fast/repaint/lines-with-layout-delta.html
+/sdcard/android/layout_tests/fast/repaint/line-overflow.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-9.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-8.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-7.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-6.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-5.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-4.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-3.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-2.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-10.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-1.html
+/sdcard/android/layout_tests/fast/repaint/layout-state-relative.html
+/sdcard/android/layout_tests/fast/repaint/layout-state-only-positioned.html
+/sdcard/android/layout_tests/fast/repaint/layer-visibility.html
+/sdcard/android/layout_tests/fast/repaint/layer-outline.html
+/sdcard/android/layout_tests/fast/repaint/layer-outline-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/layer-hide-when-needs-layout.html
+/sdcard/android/layout_tests/fast/repaint/layer-full-repaint.html
+/sdcard/android/layout_tests/fast/repaint/layer-child-outline.html
+/sdcard/android/layout_tests/fast/repaint/invisible-objects.html
+/sdcard/android/layout_tests/fast/repaint/intermediate-layout-position.html
+/sdcard/android/layout_tests/fast/repaint/intermediate-layout-position-clip.html
+/sdcard/android/layout_tests/fast/repaint/inline-outline-repaint.html
+/sdcard/android/layout_tests/fast/repaint/inline-block-overflow.html
+/sdcard/android/layout_tests/fast/repaint/focus-ring.html
+/sdcard/android/layout_tests/fast/repaint/focus-layers.html
+/sdcard/android/layout_tests/fast/repaint/float-overflow.html
+/sdcard/android/layout_tests/fast/repaint/float-overflow-right.html
+/sdcard/android/layout_tests/fast/repaint/float-move-during-layout.html
+/sdcard/android/layout_tests/fast/repaint/flexible-box-overflow.html
+/sdcard/android/layout_tests/fast/repaint/flexible-box-overflow-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/fixed.html
+/sdcard/android/layout_tests/fast/repaint/erase-overflow.html
+/sdcard/android/layout_tests/fast/repaint/delete-into-nested-block.html
+/sdcard/android/layout_tests/fast/repaint/control-clip.html
+/sdcard/android/layout_tests/fast/repaint/continuation-after-outline.html
+/sdcard/android/layout_tests/fast/repaint/content-into-overflow.html
+/sdcard/android/layout_tests/fast/repaint/containing-block-position-change.html
+/sdcard/android/layout_tests/fast/repaint/clipped-relative.html
+/sdcard/android/layout_tests/fast/repaint/clip-with-layout-delta.html
+/sdcard/android/layout_tests/fast/repaint/caret-outside-block.html
+/sdcard/android/layout_tests/fast/repaint/button-spurious-layout-hint.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-7235.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-6473.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-6388.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-6278.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-5699.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-3509.html
+/sdcard/android/layout_tests/fast/repaint/box-shadow-v.html
+/sdcard/android/layout_tests/fast/repaint/box-shadow-h.html
+/sdcard/android/layout_tests/fast/repaint/box-shadow-dynamic.html
+/sdcard/android/layout_tests/fast/repaint/border-repaint-glitch.html
+/sdcard/android/layout_tests/fast/repaint/border-radius-repaint.html
+/sdcard/android/layout_tests/fast/repaint/border-fit-lines.html
+/sdcard/android/layout_tests/fast/repaint/body-background-image.html
+/sdcard/android/layout_tests/fast/repaint/backgroundSizeRepaint.html
+/sdcard/android/layout_tests/fast/repaint/4776765.html
+/sdcard/android/layout_tests/fast/repaint/4774354.html
+/sdcard/android/layout_tests/fast/reflections/table-cell.html
+/sdcard/android/layout_tests/fast/reflections/reflection-nesting.html
+/sdcard/android/layout_tests/fast/reflections/reflection-direction.html
+/sdcard/android/layout_tests/fast/reflections/inline-crash.html
+/sdcard/android/layout_tests/fast/parser/title-error-test.html
+/sdcard/android/layout_tests/fast/parser/style-script-head-test.html
+/sdcard/android/layout_tests/fast/parser/parseCommentsInTitles.html
+/sdcard/android/layout_tests/fast/parser/open-comment-in-textarea.html
+/sdcard/android/layout_tests/fast/parser/open-comment-in-style.html
+/sdcard/android/layout_tests/fast/parser/fonts.html
+/sdcard/android/layout_tests/fast/parser/external-entities-in-xslt.xml
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-textarea.html
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-style.html
+/sdcard/android/layout_tests/fast/parser/document-write-option.html
+/sdcard/android/layout_tests/fast/parser/comments.html
+/sdcard/android/layout_tests/fast/parser/comment-in-style.html
+/sdcard/android/layout_tests/fast/parser/comment-in-script.html
+/sdcard/android/layout_tests/fast/parser/broken-comments-vs-parsing-mode.html
+/sdcard/android/layout_tests/fast/parser/bad-xml-slash.html
+/sdcard/android/layout_tests/fast/parser/001.html
+/sdcard/android/layout_tests/fast/overflow/unreachable-overflow-rtl-bug.html
+/sdcard/android/layout_tests/fast/overflow/unreachable-content-test.html
+/sdcard/android/layout_tests/fast/overflow/table-overflow-float.html
+/sdcard/android/layout_tests/fast/overflow/scrollRevealButton.html
+/sdcard/android/layout_tests/fast/overflow/scrollbar-position-update.html
+/sdcard/android/layout_tests/fast/overflow/scroll-nested-positioned-layer-in-overflow.html
+/sdcard/android/layout_tests/fast/overflow/position-relative.html
+/sdcard/android/layout_tests/fast/overflow/overflow_hidden.html
+/sdcard/android/layout_tests/fast/overflow/overflow-x-y.html
+/sdcard/android/layout_tests/fast/overflow/overflow-text-hit-testing.html
+/sdcard/android/layout_tests/fast/overflow/overflow-rtl.html
+/sdcard/android/layout_tests/fast/overflow/overflow-rtl-inline-scrollbar.html
+/sdcard/android/layout_tests/fast/overflow/overflow-focus-ring.html
+/sdcard/android/layout_tests/fast/overflow/overflow-auto-table.html
+/sdcard/android/layout_tests/fast/overflow/overflow-auto-position-absolute.html
+/sdcard/android/layout_tests/fast/overflow/infiniteRecursionGuard.html
+/sdcard/android/layout_tests/fast/overflow/infiniteRecursion.html
+/sdcard/android/layout_tests/fast/overflow/image-selection-highlight.html
+/sdcard/android/layout_tests/fast/overflow/hit-test-overflow-controls.html
+/sdcard/android/layout_tests/fast/overflow/hidden-scrollbar-resize.html
+/sdcard/android/layout_tests/fast/overflow/float-in-relpositioned.html
+/sdcard/android/layout_tests/fast/overflow/dynamic-hidden.html
+/sdcard/android/layout_tests/fast/overflow/clip-rects-fixed-ancestor.html
+/sdcard/android/layout_tests/fast/overflow/childFocusRingClip.html
+/sdcard/android/layout_tests/fast/overflow/008.html
+/sdcard/android/layout_tests/fast/overflow/007.html
+/sdcard/android/layout_tests/fast/overflow/006.html
+/sdcard/android/layout_tests/fast/overflow/005.html
+/sdcard/android/layout_tests/fast/overflow/004.html
+/sdcard/android/layout_tests/fast/overflow/003.xml
+/sdcard/android/layout_tests/fast/overflow/002.html
+/sdcard/android/layout_tests/fast/overflow/001.html
+/sdcard/android/layout_tests/fast/multicol/zeroColumnCount.html
+/sdcard/android/layout_tests/fast/multicol/negativeColumnWidth.html
+/sdcard/android/layout_tests/fast/multicol/float-multicol.html
+/sdcard/android/layout_tests/fast/multicol/float-avoidance.html
+/sdcard/android/layout_tests/fast/multicol/columns-shorthand-parsing.html
+/sdcard/android/layout_tests/fast/multicol/column-rules.html
+/sdcard/android/layout_tests/fast/media/viewport-media-query.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-04.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-03.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-02.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-01.html
+/sdcard/android/layout_tests/fast/media/mq-valueless.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-05.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-04.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-03.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-02.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-01.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-05.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-04.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-03.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-02.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-01.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-09.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-08.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-07.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-06.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-05.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-04.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-03.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-02.html
+/sdcard/android/layout_tests/fast/media/mq-pixel-ratio.html
+/sdcard/android/layout_tests/fast/media/mq-min-pixel-ratio.html
+/sdcard/android/layout_tests/fast/media/mq-min-constraint.html
+/sdcard/android/layout_tests/fast/media/mq-max-pixel-ratio.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-04.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-03.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-02.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-01.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-forward-syntax.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-except-03.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-except-02.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-except-01.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-05.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-04.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-03.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-02.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-01.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-04.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-03.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-02.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-01.html
+/sdcard/android/layout_tests/fast/media/mq-grid-02.html
+/sdcard/android/layout_tests/fast/media/mq-grid-01.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-05.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-04.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-03.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-02.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-01.html
+/sdcard/android/layout_tests/fast/media/monochrome.html
+/sdcard/android/layout_tests/fast/media/media-type-syntax-02.html
+/sdcard/android/layout_tests/fast/media/media-type-syntax-01.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-06.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-05.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-04.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-03.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-02.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-01.html
+/sdcard/android/layout_tests/fast/media/implicit-media-all.html
+/sdcard/android/layout_tests/fast/loader/text-document-wrapping.html
+/sdcard/android/layout_tests/fast/loader/start-load-in-unload.html
+/sdcard/android/layout_tests/fast/lists/w3-list-styles.html
+/sdcard/android/layout_tests/fast/lists/scrolled-marker-paint.html
+/sdcard/android/layout_tests/fast/lists/ordered-list-with-no-ol-tag.html
+/sdcard/android/layout_tests/fast/lists/olstart.html
+/sdcard/android/layout_tests/fast/lists/ol-start-dynamic.html
+/sdcard/android/layout_tests/fast/lists/ol-display-types.html
+/sdcard/android/layout_tests/fast/lists/numeric-markers-outside-list.html
+/sdcard/android/layout_tests/fast/lists/markers-in-selection.html
+/sdcard/android/layout_tests/fast/lists/marker-image-error.html
+/sdcard/android/layout_tests/fast/lists/marker-before-empty-inline.html
+/sdcard/android/layout_tests/fast/lists/list-style-type-dynamic-change.html
+/sdcard/android/layout_tests/fast/lists/list-style-none-crash.html
+/sdcard/android/layout_tests/fast/lists/list-item-line-height.html
+/sdcard/android/layout_tests/fast/lists/li-values.html
+/sdcard/android/layout_tests/fast/lists/li-style-alpha-huge-value-crash.html
+/sdcard/android/layout_tests/fast/lists/li-br.html
+/sdcard/android/layout_tests/fast/lists/item-not-in-list-line-wrapping.html
+/sdcard/android/layout_tests/fast/lists/inlineBoxWrapperNullCheck.html
+/sdcard/android/layout_tests/fast/lists/dynamic-marker-crash.html
+/sdcard/android/layout_tests/fast/lists/drag-into-marker.html
+/sdcard/android/layout_tests/fast/lists/decimal-leading-zero.html
+/sdcard/android/layout_tests/fast/lists/big-list-marker.html
+/sdcard/android/layout_tests/fast/lists/alpha-list-wrap.html
+/sdcard/android/layout_tests/fast/lists/009.html
+/sdcard/android/layout_tests/fast/lists/008.html
+/sdcard/android/layout_tests/fast/lists/007.html
+/sdcard/android/layout_tests/fast/lists/006.html
+/sdcard/android/layout_tests/fast/lists/005.html
+/sdcard/android/layout_tests/fast/lists/004.html
+/sdcard/android/layout_tests/fast/lists/003.html
+/sdcard/android/layout_tests/fast/lists/002.html
+/sdcard/android/layout_tests/fast/lists/001.html
+/sdcard/android/layout_tests/fast/layers/zindex-ridonkulous.html
+/sdcard/android/layout_tests/fast/layers/zindex-inherit.html
+/sdcard/android/layout_tests/fast/layers/scroll-rect-to-visible.html
+/sdcard/android/layout_tests/fast/layers/remove-layer-with-nested-stacking.html
+/sdcard/android/layout_tests/fast/layers/positioned-inside-root-with-margins.html
+/sdcard/android/layout_tests/fast/layers/overflow-scroll-auto-switch.html
+/sdcard/android/layout_tests/fast/layers/opacity-stacking.html
+/sdcard/android/layout_tests/fast/layers/opacity-outline.html
+/sdcard/android/layout_tests/fast/layers/layer-visibility.html
+/sdcard/android/layout_tests/fast/layers/layer-visibility-sublayer.html
+/sdcard/android/layout_tests/fast/layers/layer-content-visibility-change.html
+/sdcard/android/layout_tests/fast/layers/add-layer-with-nested-stacking.html
+/sdcard/android/layout_tests/fast/js/missing-style-end-tag-js.html
+/sdcard/android/layout_tests/fast/invalid/td-inside-object.html
+/sdcard/android/layout_tests/fast/invalid/table-residual-style-crash.html
+/sdcard/android/layout_tests/fast/invalid/table-inside-stray-table-content.html
+/sdcard/android/layout_tests/fast/invalid/residual-style.html
+/sdcard/android/layout_tests/fast/invalid/nestedh3s.html
+/sdcard/android/layout_tests/fast/invalid/missing-font-end-tag.html
+/sdcard/android/layout_tests/fast/invalid/missing-dt-end-tag.html
+/sdcard/android/layout_tests/fast/invalid/missing-dl-end-tag.html
+/sdcard/android/layout_tests/fast/invalid/missing-address-end-tag.html
+/sdcard/android/layout_tests/fast/invalid/junk-data.xml
+/sdcard/android/layout_tests/fast/invalid/021.html
+/sdcard/android/layout_tests/fast/invalid/020.xml
+/sdcard/android/layout_tests/fast/invalid/019.html
+/sdcard/android/layout_tests/fast/invalid/018.html
+/sdcard/android/layout_tests/fast/invalid/017.html
+/sdcard/android/layout_tests/fast/invalid/016.html
+/sdcard/android/layout_tests/fast/invalid/015.html
+/sdcard/android/layout_tests/fast/invalid/014.html
+/sdcard/android/layout_tests/fast/invalid/013.html
+/sdcard/android/layout_tests/fast/invalid/012.html
+/sdcard/android/layout_tests/fast/invalid/011.html
+/sdcard/android/layout_tests/fast/invalid/010.html
+/sdcard/android/layout_tests/fast/invalid/009.html
+/sdcard/android/layout_tests/fast/invalid/008.html
+/sdcard/android/layout_tests/fast/invalid/007.html
+/sdcard/android/layout_tests/fast/invalid/006.html
+/sdcard/android/layout_tests/fast/invalid/005.html
+/sdcard/android/layout_tests/fast/invalid/004.html
+/sdcard/android/layout_tests/fast/invalid/003.html
+/sdcard/android/layout_tests/fast/invalid/002.html
+/sdcard/android/layout_tests/fast/invalid/001.html
+/sdcard/android/layout_tests/fast/inspector/style.html
+/sdcard/android/layout_tests/fast/inspector/matchedrules.html
+/sdcard/android/layout_tests/fast/innerHTML/006.html
+/sdcard/android/layout_tests/fast/innerHTML/003.html
+/sdcard/android/layout_tests/fast/innerHTML/002.html
+/sdcard/android/layout_tests/fast/innerHTML/001.html
+/sdcard/android/layout_tests/fast/inline-block/tricky-baseline.html
+/sdcard/android/layout_tests/fast/inline-block/overflow-clip.html
+/sdcard/android/layout_tests/fast/inline-block/inline-block-vertical-align.html
+/sdcard/android/layout_tests/fast/inline-block/contenteditable-baseline.html
+/sdcard/android/layout_tests/fast/inline-block/14498-positionForCoordinates.html
+/sdcard/android/layout_tests/fast/inline-block/006.html
+/sdcard/android/layout_tests/fast/inline-block/005.html
+/sdcard/android/layout_tests/fast/inline-block/004.html
+/sdcard/android/layout_tests/fast/inline-block/003.html
+/sdcard/android/layout_tests/fast/inline-block/002.html
+/sdcard/android/layout_tests/fast/inline-block/001.html
+/sdcard/android/layout_tests/fast/inline/styledEmptyInlinesWithBRs.html
+/sdcard/android/layout_tests/fast/inline/positionedLifetime.html
+/sdcard/android/layout_tests/fast/inline/percentage-margins.html
+/sdcard/android/layout_tests/fast/inline/outline-continuations.html
+/sdcard/android/layout_tests/fast/inline/inline-text-quirk-bpm.html
+/sdcard/android/layout_tests/fast/inline/inline-padding-disables-text-quirk.html
+/sdcard/android/layout_tests/fast/inline/inline-borders-with-bidi-override.html
+/sdcard/android/layout_tests/fast/inline/emptyInlinesWithinLists.html
+/sdcard/android/layout_tests/fast/inline/drawStyledEmptyInlinesWithWS.html
+/sdcard/android/layout_tests/fast/inline/drawStyledEmptyInlines.html
+/sdcard/android/layout_tests/fast/inline/dirtyLinesForInline.html
+/sdcard/android/layout_tests/fast/inline/continuation-outlines.html
+/sdcard/android/layout_tests/fast/inline/continuation-outlines-with-layers.html
+/sdcard/android/layout_tests/fast/inline/002.html
+/sdcard/android/layout_tests/fast/inline/001.html
+/sdcard/android/layout_tests/fast/images/svg-as-tiled-background.html
+/sdcard/android/layout_tests/fast/images/svg-as-relative-image.html
+/sdcard/android/layout_tests/fast/images/svg-as-image.html
+/sdcard/android/layout_tests/fast/images/svg-as-background.html
+/sdcard/android/layout_tests/fast/images/pdf-as-tiled-background.html
+/sdcard/android/layout_tests/fast/images/pdf-as-image.html
+/sdcard/android/layout_tests/fast/images/pdf-as-image-landscape.html
+/sdcard/android/layout_tests/fast/images/pdf-as-background.html
+/sdcard/android/layout_tests/fast/images/object-image.html
+/sdcard/android/layout_tests/fast/images/image-map-anchor-children.html
+/sdcard/android/layout_tests/fast/images/image-in-map.html
+/sdcard/android/layout_tests/fast/images/favicon-as-image.html
+/sdcard/android/layout_tests/fast/images/embed-image.html
+/sdcard/android/layout_tests/fast/images/animated-gif-with-offsets.html
+/sdcard/android/layout_tests/fast/html/marquee-scroll.html
+/sdcard/android/layout_tests/fast/html/listing.html
+/sdcard/android/layout_tests/fast/html/link-rel-stylesheet.html
+/sdcard/android/layout_tests/fast/html/keygen.html
+/sdcard/android/layout_tests/fast/history/history_reload.html
+/sdcard/android/layout_tests/fast/history/clicked-link-is-visited.html
+/sdcard/android/layout_tests/fast/frames/viewsource-attribute.html
+/sdcard/android/layout_tests/fast/frames/valid.html
+/sdcard/android/layout_tests/fast/frames/onlyCommentInIFrame.html
+/sdcard/android/layout_tests/fast/frames/no-frame-borders.html
+/sdcard/android/layout_tests/fast/frames/invalid.html
+/sdcard/android/layout_tests/fast/frames/inline-object-inside-frameset.html
+/sdcard/android/layout_tests/fast/frames/iframe-with-frameborder.html
+/sdcard/android/layout_tests/fast/frames/iframe-text-contents.html
+/sdcard/android/layout_tests/fast/frames/iframe-scrolling-attribute.html
+/sdcard/android/layout_tests/fast/frames/frameset-style-recalc.html
+/sdcard/android/layout_tests/fast/frames/frameElement-iframe.html
+/sdcard/android/layout_tests/fast/frames/frameElement-frame.html
+/sdcard/android/layout_tests/fast/frames/frame-src-attribute.html
+/sdcard/android/layout_tests/fast/frames/frame-set-whitespace-attributes.html
+/sdcard/android/layout_tests/fast/frames/frame-scrolling-attribute.html
+/sdcard/android/layout_tests/fast/frames/frame-navigation.html
+/sdcard/android/layout_tests/fast/frames/frame-length-fractional.html
+/sdcard/android/layout_tests/fast/frames/frame-element-name.html
+/sdcard/android/layout_tests/fast/frames/empty-cols-attribute.html
+/sdcard/android/layout_tests/fast/frames/contentWindow_iFrame.html
+/sdcard/android/layout_tests/fast/frames/contentWindow_Frame.html
+/sdcard/android/layout_tests/fast/frames/calculate-round.html
+/sdcard/android/layout_tests/fast/frames/calculate-relative.html
+/sdcard/android/layout_tests/fast/frames/calculate-percentage.html
+/sdcard/android/layout_tests/fast/frames/calculate-order.html
+/sdcard/android/layout_tests/fast/frames/calculate-fixed.html
+/sdcard/android/layout_tests/fast/frames/002.html
+/sdcard/android/layout_tests/fast/frames/001.html
+/sdcard/android/layout_tests/fast/forms/thumbslider-no-parent-slider.html
+/sdcard/android/layout_tests/fast/forms/thumbslider-crash.html
+/sdcard/android/layout_tests/fast/forms/textfield-outline.html
+/sdcard/android/layout_tests/fast/forms/textfield-drag-into-disabled.html
+/sdcard/android/layout_tests/fast/forms/textAreaLineHeight.html
+/sdcard/android/layout_tests/fast/forms/textarea-width.html
+/sdcard/android/layout_tests/fast/forms/textarea-setinnerhtml.html
+/sdcard/android/layout_tests/fast/forms/textarea-scrolled-type.html
+/sdcard/android/layout_tests/fast/forms/textarea-rows-cols.html
+/sdcard/android/layout_tests/fast/forms/slider-thumb-shared-style.html
+/sdcard/android/layout_tests/fast/forms/slider-padding.html
+/sdcard/android/layout_tests/fast/forms/select-writing-direction-natural.html
+/sdcard/android/layout_tests/fast/forms/select-size.html
+/sdcard/android/layout_tests/fast/forms/select-selected.html
+/sdcard/android/layout_tests/fast/forms/select-list-box-with-height.html
+/sdcard/android/layout_tests/fast/forms/select-initial-position.html
+/sdcard/android/layout_tests/fast/forms/select-display-none-style-resolve.html
+/sdcard/android/layout_tests/fast/forms/select-disabled-appearance.html
+/sdcard/android/layout_tests/fast/forms/select-change-popup-to-listbox.html
+/sdcard/android/layout_tests/fast/forms/select-change-listbox-to-popup.html
+/sdcard/android/layout_tests/fast/forms/select-change-listbox-size.html
+/sdcard/android/layout_tests/fast/forms/select-block-background.html
+/sdcard/android/layout_tests/fast/forms/select-baseline.html
+/sdcard/android/layout_tests/fast/forms/select-align.html
+/sdcard/android/layout_tests/fast/forms/search-placeholder-value-changed.html
+/sdcard/android/layout_tests/fast/forms/search-display-none-cancel-button.html
+/sdcard/android/layout_tests/fast/forms/radio_checked_dynamic.html
+/sdcard/android/layout_tests/fast/forms/radio_checked.html
+/sdcard/android/layout_tests/fast/forms/radio-nested-labels.html
+/sdcard/android/layout_tests/fast/forms/radio-attr-order.html
+/sdcard/android/layout_tests/fast/forms/preserveFormDuringResidualStyle.html
+/sdcard/android/layout_tests/fast/forms/plaintext-mode-2.html
+/sdcard/android/layout_tests/fast/forms/placeholder-set-attribute.html
+/sdcard/android/layout_tests/fast/forms/placeholder-pseudo-style.html
+/sdcard/android/layout_tests/fast/forms/password-placeholder.html
+/sdcard/android/layout_tests/fast/forms/password-placeholder-text-security.html
+/sdcard/android/layout_tests/fast/forms/option-text-clip.html
+/sdcard/android/layout_tests/fast/forms/option-strip-whitespace.html
+/sdcard/android/layout_tests/fast/forms/option-script.html
+/sdcard/android/layout_tests/fast/forms/option-index.html
+/sdcard/android/layout_tests/fast/forms/negativeLineHeight.html
+/sdcard/android/layout_tests/fast/forms/minWidthPercent.html
+/sdcard/android/layout_tests/fast/forms/menulist-width-change.html
+/sdcard/android/layout_tests/fast/forms/menulist-separator-painting.html
+/sdcard/android/layout_tests/fast/forms/menulist-restrict-line-height.html
+/sdcard/android/layout_tests/fast/forms/menulist-option-wrap.html
+/sdcard/android/layout_tests/fast/forms/menulist-no-overflow.html
+/sdcard/android/layout_tests/fast/forms/menulist-narrow-width.html
+/sdcard/android/layout_tests/fast/forms/menulist-deselect-update.html
+/sdcard/android/layout_tests/fast/forms/menulist-clip.html
+/sdcard/android/layout_tests/fast/forms/listbox-width-change.html
+/sdcard/android/layout_tests/fast/forms/listbox-selection-2.html
+/sdcard/android/layout_tests/fast/forms/listbox-scrollbar-incremental-load.html
+/sdcard/android/layout_tests/fast/forms/listbox-deselect-scroll.html
+/sdcard/android/layout_tests/fast/forms/listbox-clip.html
+/sdcard/android/layout_tests/fast/forms/input-width.html
+/sdcard/android/layout_tests/fast/forms/input-value.html
+/sdcard/android/layout_tests/fast/forms/input-type-text-min-width.html
+/sdcard/android/layout_tests/fast/forms/input-type-change2.html
+/sdcard/android/layout_tests/fast/forms/input-type-change.html
+/sdcard/android/layout_tests/fast/forms/input-text-word-wrap.html
+/sdcard/android/layout_tests/fast/forms/input-text-self-emptying-click.html
+/sdcard/android/layout_tests/fast/forms/input-text-scroll-left-on-blur.html
+/sdcard/android/layout_tests/fast/forms/input-text-paste-maxlength.html
+/sdcard/android/layout_tests/fast/forms/input-text-option-delete.html
+/sdcard/android/layout_tests/fast/forms/input-text-maxlength.html
+/sdcard/android/layout_tests/fast/forms/input-text-drag-down.html
+/sdcard/android/layout_tests/fast/forms/input-text-double-click.html
+/sdcard/android/layout_tests/fast/forms/input-text-click-outside.html
+/sdcard/android/layout_tests/fast/forms/input-text-click-inside.html
+/sdcard/android/layout_tests/fast/forms/input-table.html
+/sdcard/android/layout_tests/fast/forms/input-spaces.html
+/sdcard/android/layout_tests/fast/forms/input-readonly-empty.html
+/sdcard/android/layout_tests/fast/forms/input-readonly-dimmed.html
+/sdcard/android/layout_tests/fast/forms/input-readonly-autoscroll.html
+/sdcard/android/layout_tests/fast/forms/input-paste-undo.html
+/sdcard/android/layout_tests/fast/forms/input-no-renderer.html
+/sdcard/android/layout_tests/fast/forms/input-field-text-truncated.html
+/sdcard/android/layout_tests/fast/forms/input-double-click-selection-gap-bug.html
+/sdcard/android/layout_tests/fast/forms/input-disabled-color.html
+/sdcard/android/layout_tests/fast/forms/input-baseline.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-width.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-visibility.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-selection.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-readonly.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-preventDefault.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-height.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-focus.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-default-bkcolor.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-bkcolor.html
+/sdcard/android/layout_tests/fast/forms/input-align.html
+/sdcard/android/layout_tests/fast/forms/input-align-image.html
+/sdcard/android/layout_tests/fast/forms/indeterminate.html
+/sdcard/android/layout_tests/fast/forms/image-border.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label07.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label06.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label05.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label04.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label03.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label02.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label01.html
+/sdcard/android/layout_tests/fast/forms/hidden-listbox.html
+/sdcard/android/layout_tests/fast/forms/hidden-input-file.html
+/sdcard/android/layout_tests/fast/forms/formmove3.html
+/sdcard/android/layout_tests/fast/forms/formmove2.html
+/sdcard/android/layout_tests/fast/forms/formmove.html
+/sdcard/android/layout_tests/fast/forms/form-hides-table.html
+/sdcard/android/layout_tests/fast/forms/float-before-fieldset.html
+/sdcard/android/layout_tests/fast/forms/file-input-disabled.html
+/sdcard/android/layout_tests/fast/forms/file-input-direction.html
+/sdcard/android/layout_tests/fast/forms/fieldset-with-float.html
+/sdcard/android/layout_tests/fast/forms/fieldset-align.html
+/sdcard/android/layout_tests/fast/forms/dragging-to-file-input.html
+/sdcard/android/layout_tests/fast/forms/dragging-to-disabled-file-input.html
+/sdcard/android/layout_tests/fast/forms/disabled-select-change-index.html
+/sdcard/android/layout_tests/fast/forms/control-restrict-line-height.html
+/sdcard/android/layout_tests/fast/forms/control-clip.html
+/sdcard/android/layout_tests/fast/forms/control-clip-overflow.html
+/sdcard/android/layout_tests/fast/forms/checkbox-radio-onchange.html
+/sdcard/android/layout_tests/fast/forms/button-white-space.html
+/sdcard/android/layout_tests/fast/forms/button-text-transform.html
+/sdcard/android/layout_tests/fast/forms/button-table-styles.html
+/sdcard/android/layout_tests/fast/forms/button-submit.html
+/sdcard/android/layout_tests/fast/forms/button-sizes.html
+/sdcard/android/layout_tests/fast/forms/button-positioned.html
+/sdcard/android/layout_tests/fast/forms/button-inner-block-reuse.html
+/sdcard/android/layout_tests/fast/forms/button-generated-content.html
+/sdcard/android/layout_tests/fast/forms/button-default-title.html
+/sdcard/android/layout_tests/fast/forms/button-cannot-be-nested.html
+/sdcard/android/layout_tests/fast/forms/button-align.html
+/sdcard/android/layout_tests/fast/forms/box-shadow-override.html
+/sdcard/android/layout_tests/fast/forms/blankbuttons.html
+/sdcard/android/layout_tests/fast/forms/006.html
+/sdcard/android/layout_tests/fast/forms/005.html
+/sdcard/android/layout_tests/fast/forms/004.html
+/sdcard/android/layout_tests/fast/forms/003.html
+/sdcard/android/layout_tests/fast/forms/002.html
+/sdcard/android/layout_tests/fast/forms/001.html
+/sdcard/android/layout_tests/fast/flexbox/flex-hang.html
+/sdcard/android/layout_tests/fast/flexbox/026.html
+/sdcard/android/layout_tests/fast/flexbox/025.html
+/sdcard/android/layout_tests/fast/flexbox/024.html
+/sdcard/android/layout_tests/fast/flexbox/023.html
+/sdcard/android/layout_tests/fast/flexbox/022.html
+/sdcard/android/layout_tests/fast/flexbox/021.html
+/sdcard/android/layout_tests/fast/flexbox/020.html
+/sdcard/android/layout_tests/fast/flexbox/019.html
+/sdcard/android/layout_tests/fast/flexbox/018.html
+/sdcard/android/layout_tests/fast/flexbox/017.html
+/sdcard/android/layout_tests/fast/flexbox/016.html
+/sdcard/android/layout_tests/fast/flexbox/015.html
+/sdcard/android/layout_tests/fast/flexbox/014.html
+/sdcard/android/layout_tests/fast/flexbox/013.html
+/sdcard/android/layout_tests/fast/flexbox/012.html
+/sdcard/android/layout_tests/fast/flexbox/011.html
+/sdcard/android/layout_tests/fast/flexbox/010.html
+/sdcard/android/layout_tests/fast/flexbox/009.html
+/sdcard/android/layout_tests/fast/flexbox/008.html
+/sdcard/android/layout_tests/fast/flexbox/007.html
+/sdcard/android/layout_tests/fast/flexbox/006.html
+/sdcard/android/layout_tests/fast/flexbox/005.html
+/sdcard/android/layout_tests/fast/flexbox/004.html
+/sdcard/android/layout_tests/fast/flexbox/003.html
+/sdcard/android/layout_tests/fast/flexbox/002.html
+/sdcard/android/layout_tests/fast/flexbox/001.html
+/sdcard/android/layout_tests/fast/events/updateLayoutForHitTest.html
+/sdcard/android/layout_tests/fast/events/standalone-image-drag-to-editable.html
+/sdcard/android/layout_tests/fast/events/reveal-link-when-focused.html
+/sdcard/android/layout_tests/fast/events/onloadFrameCrash.html
+/sdcard/android/layout_tests/fast/events/onload-re-entry.html
+/sdcard/android/layout_tests/fast/events/mouseout-dead-node.html
+/sdcard/android/layout_tests/fast/events/label-focus.html
+/sdcard/android/layout_tests/fast/events/keydown-1.html
+/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/event-listener-on-link.html
+/sdcard/android/layout_tests/fast/events/context-onmousedown-event.html
+/sdcard/android/layout_tests/fast/events/autoscroll.html
+/sdcard/android/layout_tests/fast/events/attempt-scroll-with-no-scrollbars.html
+/sdcard/android/layout_tests/fast/events/5056619.html
+/sdcard/android/layout_tests/fast/encoding/xmacroman-encoding-test.html
+/sdcard/android/layout_tests/fast/encoding/utf-16-no-bom.xml
+/sdcard/android/layout_tests/fast/encoding/utf-16-little-endian.html
+/sdcard/android/layout_tests/fast/encoding/utf-16-big-endian.html
+/sdcard/android/layout_tests/fast/encoding/invalid-UTF-8.html
+/sdcard/android/layout_tests/fast/encoding/denormalised-voiced-japanese-chars.html
+/sdcard/android/layout_tests/fast/dynamic/view-overflow.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-table-cell-height.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-parent-static-y.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-no-common-root-static-y.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-boundary-percent-height.html
+/sdcard/android/layout_tests/fast/dynamic/staticY.html
+/sdcard/android/layout_tests/fast/dynamic/staticY-marking-parents-regression.html
+/sdcard/android/layout_tests/fast/dynamic/selection-highlight-adjust.html
+/sdcard/android/layout_tests/fast/dynamic/positioned-movement-with-positioned-children.html
+/sdcard/android/layout_tests/fast/dynamic/outerHTML-img.html
+/sdcard/android/layout_tests/fast/dynamic/outerHTML-doc.html
+/sdcard/android/layout_tests/fast/dynamic/noninlinebadness.html
+/sdcard/android/layout_tests/fast/dynamic/move-node-with-selection.html
+/sdcard/android/layout_tests/fast/dynamic/link-href-change.html
+/sdcard/android/layout_tests/fast/dynamic/layer-hit-test-crash.html
+/sdcard/android/layout_tests/fast/dynamic/insert-before-table-part-in-continuation.html
+/sdcard/android/layout_tests/fast/dynamic/genContentDestroyChildren.html
+/sdcard/android/layout_tests/fast/dynamic/floating-to-positioned.html
+/sdcard/android/layout_tests/fast/dynamic/floating-to-positioned-2.html
+/sdcard/android/layout_tests/fast/dynamic/float-withdrawal.html
+/sdcard/android/layout_tests/fast/dynamic/float-withdrawal-2.html
+/sdcard/android/layout_tests/fast/dynamic/float-no-longer-overhanging.html
+/sdcard/android/layout_tests/fast/dynamic/float-in-trailing-whitespace-after-last-line-break.html
+/sdcard/android/layout_tests/fast/dynamic/flash-replacement-test.html
+/sdcard/android/layout_tests/fast/dynamic/create-renderer-for-whitespace-only-text.html
+/sdcard/android/layout_tests/fast/dynamic/containing-block-change.html
+/sdcard/android/layout_tests/fast/dynamic/anonymous-block-orphaned-lines.html
+/sdcard/android/layout_tests/fast/dynamic/anonymous-block-layer-lost.html
+/sdcard/android/layout_tests/fast/dynamic/015.html
+/sdcard/android/layout_tests/fast/dynamic/014.html
+/sdcard/android/layout_tests/fast/dynamic/013.html
+/sdcard/android/layout_tests/fast/dynamic/012.html
+/sdcard/android/layout_tests/fast/dynamic/011.html
+/sdcard/android/layout_tests/fast/dynamic/010.html
+/sdcard/android/layout_tests/fast/dynamic/009.html
+/sdcard/android/layout_tests/fast/dynamic/008.html
+/sdcard/android/layout_tests/fast/dynamic/007.html
+/sdcard/android/layout_tests/fast/dynamic/006.html
+/sdcard/android/layout_tests/fast/dynamic/005.html
+/sdcard/android/layout_tests/fast/dynamic/004.html
+/sdcard/android/layout_tests/fast/dynamic/002.html
+/sdcard/android/layout_tests/fast/dynamic/001.html
+/sdcard/android/layout_tests/fast/dom/Window/open-existing-pop-up-blocking.html
+/sdcard/android/layout_tests/fast/dom/Window/btoa-pnglet.html
+/sdcard/android/layout_tests/fast/dom/Range/surroundContents-1.html
+/sdcard/android/layout_tests/fast/dom/Range/create-contextual-fragment.html
+/sdcard/android/layout_tests/fast/dom/HTMLTextAreaElement/reset-textarea.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/createCaption.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/colSpan.html
+/sdcard/android/layout_tests/fast/dom/HTMLStyleElement/insert-parser-generated.html
+/sdcard/android/layout_tests/fast/dom/HTMLObjectElement/vspace-hspace-as-number.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead5.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead4.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead3.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead2.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead1.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/head-link-style-href-check.html
+/sdcard/android/layout_tests/fast/dom/HTMLElement/bdo.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/frameless-location-bugzilla10837.html
+/sdcard/android/layout_tests/fast/dom/Element/null-offset-parent.html
+/sdcard/android/layout_tests/fast/dom/Document/early-document-access.html
+/sdcard/android/layout_tests/fast/dom/row-inner-text.html
+/sdcard/android/layout_tests/fast/dom/replaceChild.html
+/sdcard/android/layout_tests/fast/dom/outerText.html
+/sdcard/android/layout_tests/fast/dom/isindex-002.html
+/sdcard/android/layout_tests/fast/dom/isindex-001.html
+/sdcard/android/layout_tests/fast/dom/focus-contenteditable.html
+/sdcard/android/layout_tests/fast/dom/dom-parse-serialize-display.html
+/sdcard/android/layout_tests/fast/dom/delete-contents.html
+/sdcard/android/layout_tests/fast/dom/css-rule-functions.html
+/sdcard/android/layout_tests/fast/dom/css-mediarule-insertRule-update.html
+/sdcard/android/layout_tests/fast/dom/css-mediarule-deleteRule-update.html
+/sdcard/android/layout_tests/fast/dom/css-inline-style-important.html
+/sdcard/android/layout_tests/fast/dom/css-cached-import-rule.html
+/sdcard/android/layout_tests/fast/dom/clone-node-dynamic-style.html
+/sdcard/android/layout_tests/fast/dom/clone-contents-0-end-offset.html
+/sdcard/android/layout_tests/fast/dom/clientWidthAfterDocumentIsRemoved.html
+/sdcard/android/layout_tests/fast/dom/children-nodes.html
+/sdcard/android/layout_tests/fast/dom/blur-contenteditable.html
+/sdcard/android/layout_tests/fast/dom/attr_dead_doc.html
+/sdcard/android/layout_tests/fast/doctypes/004.html
+/sdcard/android/layout_tests/fast/doctypes/003.html
+/sdcard/android/layout_tests/fast/doctypes/002.html
+/sdcard/android/layout_tests/fast/doctypes/001.html
+/sdcard/android/layout_tests/fast/css-generated-content/wbr-with-before-content.html
+/sdcard/android/layout_tests/fast/css-generated-content/visibleContentHiddenParent.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-with-before.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-row-with-before.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-row-group-with-before.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-row-group-to-inline.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-cell-before-content.html
+/sdcard/android/layout_tests/fast/css-generated-content/spellingToolTip-assert.html
+/sdcard/android/layout_tests/fast/css-generated-content/positioned-background-hit-test-crash.html
+/sdcard/android/layout_tests/fast/css-generated-content/no-openclose-quote.html
+/sdcard/android/layout_tests/fast/css-generated-content/inline-display-types.html
+/sdcard/android/layout_tests/fast/css-generated-content/hover-style-change.html
+/sdcard/android/layout_tests/fast/css-generated-content/before-with-first-letter.html
+/sdcard/android/layout_tests/fast/css-generated-content/after-order.html
+/sdcard/android/layout_tests/fast/css-generated-content/absolute-position-inside-inline.html
+/sdcard/android/layout_tests/fast/css-generated-content/016.html
+/sdcard/android/layout_tests/fast/css-generated-content/015.html
+/sdcard/android/layout_tests/fast/css-generated-content/014.html
+/sdcard/android/layout_tests/fast/css-generated-content/013.html
+/sdcard/android/layout_tests/fast/css-generated-content/012.html
+/sdcard/android/layout_tests/fast/css-generated-content/011.html
+/sdcard/android/layout_tests/fast/css-generated-content/010.html
+/sdcard/android/layout_tests/fast/css-generated-content/009.html
+/sdcard/android/layout_tests/fast/css-generated-content/008.html
+/sdcard/android/layout_tests/fast/css-generated-content/007.html
+/sdcard/android/layout_tests/fast/css-generated-content/005.html
+/sdcard/android/layout_tests/fast/css-generated-content/004.html
+/sdcard/android/layout_tests/fast/css-generated-content/003.html
+/sdcard/android/layout_tests/fast/css-generated-content/002.html
+/sdcard/android/layout_tests/fast/css-generated-content/001.html
+/sdcard/android/layout_tests/fast/css/variables/variable-iteration-test.html
+/sdcard/android/layout_tests/fast/css/variables/shorthand-test.html
+/sdcard/android/layout_tests/fast/css/variables/set-variable-test.html
+/sdcard/android/layout_tests/fast/css/variables/remove-variable-test.html
+/sdcard/android/layout_tests/fast/css/variables/print-test.html
+/sdcard/android/layout_tests/fast/css/variables/override-test.html
+/sdcard/android/layout_tests/fast/css/variables/multiple-term-test.html
+/sdcard/android/layout_tests/fast/css/variables/multiple-blocks-test.html
+/sdcard/android/layout_tests/fast/css/variables/misplaced-variables-test.html
+/sdcard/android/layout_tests/fast/css/variables/misplaced-import-test.html
+/sdcard/android/layout_tests/fast/css/variables/margin-test.html
+/sdcard/android/layout_tests/fast/css/variables/invalid-variable-test.html
+/sdcard/android/layout_tests/fast/css/variables/inline-style-test.html
+/sdcard/android/layout_tests/fast/css/variables/import-test.html
+/sdcard/android/layout_tests/fast/css/variables/image-test.html
+/sdcard/android/layout_tests/fast/css/variables/font-test.html
+/sdcard/android/layout_tests/fast/css/variables/declaration-block-test.html
+/sdcard/android/layout_tests/fast/css/variables/colors-test.html
+/sdcard/android/layout_tests/fast/css/variables/block-cycle-test.html
+/sdcard/android/layout_tests/fast/css/namespaces/007.xml
+/sdcard/android/layout_tests/fast/css/namespaces/006.xml
+/sdcard/android/layout_tests/fast/css/namespaces/005.xml
+/sdcard/android/layout_tests/fast/css/namespaces/004.xml
+/sdcard/android/layout_tests/fast/css/namespaces/003.xml
+/sdcard/android/layout_tests/fast/css/namespaces/002.xml
+/sdcard/android/layout_tests/fast/css/namespaces/001.xml
+/sdcard/android/layout_tests/fast/css/counters/invalidate-cached-counter-node.html
+/sdcard/android/layout_tests/fast/css/counters/counter-text-transform.html
+/sdcard/android/layout_tests/fast/css/counters/counter-text-security.html
+/sdcard/android/layout_tests/fast/css/zoom-property-parsing.html
+/sdcard/android/layout_tests/fast/css/zoom-font-size.html
+/sdcard/android/layout_tests/fast/css/ZeroOpacityLayers2.html
+/sdcard/android/layout_tests/fast/css/ZeroOpacityLayers.html
+/sdcard/android/layout_tests/fast/css/xml-stylesheet-pi-not-in-prolog.xml
+/sdcard/android/layout_tests/fast/css/word-space-extra.html
+/sdcard/android/layout_tests/fast/css/visibility-hit-test.html
+/sdcard/android/layout_tests/fast/css/vertical-align-lengths.html
+/sdcard/android/layout_tests/fast/css/value-list-out-of-bounds-crash.html
+/sdcard/android/layout_tests/fast/css/universal-hover-quirk.html
+/sdcard/android/layout_tests/fast/css/transition-color-unspecified.html
+/sdcard/android/layout_tests/fast/css/transform-default-parameter.html
+/sdcard/android/layout_tests/fast/css/textCapitalizeEdgeCases.html
+/sdcard/android/layout_tests/fast/css/text-security.html
+/sdcard/android/layout_tests/fast/css/text-align.html
+/sdcard/android/layout_tests/fast/css/target-fragment-match.html
+/sdcard/android/layout_tests/fast/css/table-text-align-strict.html
+/sdcard/android/layout_tests/fast/css/table-text-align-quirk.html
+/sdcard/android/layout_tests/fast/css/style-parsed-outside-head.html
+/sdcard/android/layout_tests/fast/css/style-outside-head.html
+/sdcard/android/layout_tests/fast/css/simple-selector-chain-parsing.html
+/sdcard/android/layout_tests/fast/css/shadow-multiple.html
+/sdcard/android/layout_tests/fast/css/selector-set-attribute.html
+/sdcard/android/layout_tests/fast/css/rtl-ordering.html
+/sdcard/android/layout_tests/fast/css/rgb-float.html
+/sdcard/android/layout_tests/fast/css/resize-corner-tracking.html
+/sdcard/android/layout_tests/fast/css/quirk-orphaned-units.html
+/sdcard/android/layout_tests/fast/css/position-negative-top-margin.html
+/sdcard/android/layout_tests/fast/css/percentage-non-integer.html
+/sdcard/android/layout_tests/fast/css/pendingStylesheetFontSize.html
+/sdcard/android/layout_tests/fast/css/outline-auto-location.html
+/sdcard/android/layout_tests/fast/css/outline-auto-empty-rects.html
+/sdcard/android/layout_tests/fast/css/only-of-type-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/only-child-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/negative-nth-child.html
+/sdcard/android/layout_tests/fast/css/max-height-none.html
+/sdcard/android/layout_tests/fast/css/MarqueeLayoutTest.html
+/sdcard/android/layout_tests/fast/css/marginComputedStyle.html
+/sdcard/android/layout_tests/fast/css/margin-top-bottom-dynamic.html
+/sdcard/android/layout_tests/fast/css/margin-bottom-form-element-strict.html
+/sdcard/android/layout_tests/fast/css/margin-bottom-form-element-quirk.html
+/sdcard/android/layout_tests/fast/css/live-cssrules.html
+/sdcard/android/layout_tests/fast/css/list-outline.html
+/sdcard/android/layout_tests/fast/css/link-outside-head.html
+/sdcard/android/layout_tests/fast/css/line-height.html
+/sdcard/android/layout_tests/fast/css/line-height-overflow.html
+/sdcard/android/layout_tests/fast/css/line-height-negative.html
+/sdcard/android/layout_tests/fast/css/line-height-font-order.html
+/sdcard/android/layout_tests/fast/css/layerZOrderCrash.html
+/sdcard/android/layout_tests/fast/css/last-of-type-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/last-child-style-sharing.html
+/sdcard/android/layout_tests/fast/css/last-child-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/invalidation-errors.html
+/sdcard/android/layout_tests/fast/css/invalidation-errors-3.html
+/sdcard/android/layout_tests/fast/css/invalidation-errors-2.html
+/sdcard/android/layout_tests/fast/css/invalid-pseudo-classes.html
+/sdcard/android/layout_tests/fast/css/invalid-percentage-property.html
+/sdcard/android/layout_tests/fast/css/inline-properties-important.html
+/sdcard/android/layout_tests/fast/css/import_with_baseurl.html
+/sdcard/android/layout_tests/fast/css/import-rule-regression-11590.html
+/sdcard/android/layout_tests/fast/css/imageTileOpacity.html
+/sdcard/android/layout_tests/fast/css/ignore-text-zoom.html
+/sdcard/android/layout_tests/fast/css/hsla-color.html
+/sdcard/android/layout_tests/fast/css/hsl-color.html
+/sdcard/android/layout_tests/fast/css/hover-subselector.html
+/sdcard/android/layout_tests/fast/css/font_property_normal.html
+/sdcard/android/layout_tests/fast/css/font-weight-1.html
+/sdcard/android/layout_tests/fast/css/font-size-negative.html
+/sdcard/android/layout_tests/fast/css/font-shorthand-weight-only.html
+/sdcard/android/layout_tests/fast/css/font-face-unicode-range.html
+/sdcard/android/layout_tests/fast/css/font-face-remote.html
+/sdcard/android/layout_tests/fast/css/font-face-multiple-remote-sources.html
+/sdcard/android/layout_tests/fast/css/font-face-multiple-faces.html
+/sdcard/android/layout_tests/fast/css/font-face-descriptor-multiple-values.html
+/sdcard/android/layout_tests/fast/css/font-face-in-media-rule.html
+/sdcard/android/layout_tests/fast/css/font-face-default-font.html
+/sdcard/android/layout_tests/fast/css/first-of-type-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/first-letter-visibility.html
+/sdcard/android/layout_tests/fast/css/first-letter-skip-out-of-flow.html
+/sdcard/android/layout_tests/fast/css/first-letter-recalculation.html
+/sdcard/android/layout_tests/fast/css/first-letter-hover.html
+/sdcard/android/layout_tests/fast/css/first-letter-float.html
+/sdcard/android/layout_tests/fast/css/first-letter-float-after-float.html
+/sdcard/android/layout_tests/fast/css/first-letter-detach.html
+/sdcard/android/layout_tests/fast/css/first-letter-capitalized.html
+/sdcard/android/layout_tests/fast/css/first-child-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/find-next-layer.html
+/sdcard/android/layout_tests/fast/css/fieldset-display-row.html
+/sdcard/android/layout_tests/fast/css/ex-after-font-variant.html
+/sdcard/android/layout_tests/fast/css/error-in-last-decl.html
+/sdcard/android/layout_tests/fast/css/empty-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/empty-generated-content.html
+/sdcard/android/layout_tests/fast/css/empty-body-test.html
+/sdcard/android/layout_tests/fast/css/dynamic-sibling-selector.html
+/sdcard/android/layout_tests/fast/css/disabled-author-styles.html
+/sdcard/android/layout_tests/fast/css/css3-nth-child.html
+/sdcard/android/layout_tests/fast/css/css3-modsel-22.html
+/sdcard/android/layout_tests/fast/css/css2-system-fonts.html
+/sdcard/android/layout_tests/fast/css/css-imports.html
+/sdcard/android/layout_tests/fast/css/continuationCrash.html
+/sdcard/android/layout_tests/fast/css/contentImage.html
+/sdcard/android/layout_tests/fast/css/contentDivWithChildren.html
+/sdcard/android/layout_tests/fast/css/contentDiv.html
+/sdcard/android/layout_tests/fast/css/content-dynamic.html
+/sdcard/android/layout_tests/fast/css/color-quirk.html
+/sdcard/android/layout_tests/fast/css/border-height.html
+/sdcard/android/layout_tests/fast/css/begin-end-contain-selector-empty-value.html
+/sdcard/android/layout_tests/fast/css/background-shorthand-invalid-url.html
+/sdcard/android/layout_tests/fast/css/background-image-with-baseurl.html
+/sdcard/android/layout_tests/fast/css/attribute-selector-empty-value.html
+/sdcard/android/layout_tests/fast/css/apple-prefix.html
+/sdcard/android/layout_tests/fast/css/affected-by-hover-after-style-change.html
+/sdcard/android/layout_tests/fast/css/acid2.html
+/sdcard/android/layout_tests/fast/css/acid2-pixel.html
+/sdcard/android/layout_tests/fast/css/absolute-poition-in-rtl-parent.html
+/sdcard/android/layout_tests/fast/css/008.html
+/sdcard/android/layout_tests/fast/css/007.html
+/sdcard/android/layout_tests/fast/css/006.html
+/sdcard/android/layout_tests/fast/css/005.html
+/sdcard/android/layout_tests/fast/css/004.html
+/sdcard/android/layout_tests/fast/css/003.html
+/sdcard/android/layout_tests/fast/css/002.html
+/sdcard/android/layout_tests/fast/css/001.html
+/sdcard/android/layout_tests/fast/compact/003.html
+/sdcard/android/layout_tests/fast/compact/002.html
+/sdcard/android/layout_tests/fast/compact/001.html
+/sdcard/android/layout_tests/fast/clip/outline-overflowClip.html
+/sdcard/android/layout_tests/fast/clip/nestedTransparencyClip.html
+/sdcard/android/layout_tests/fast/clip/017.html
+/sdcard/android/layout_tests/fast/clip/016.html
+/sdcard/android/layout_tests/fast/clip/015.html
+/sdcard/android/layout_tests/fast/clip/014.html
+/sdcard/android/layout_tests/fast/clip/013.html
+/sdcard/android/layout_tests/fast/clip/012.html
+/sdcard/android/layout_tests/fast/clip/011.html
+/sdcard/android/layout_tests/fast/clip/010.html
+/sdcard/android/layout_tests/fast/clip/009.html
+/sdcard/android/layout_tests/fast/clip/008.html
+/sdcard/android/layout_tests/fast/clip/007.html
+/sdcard/android/layout_tests/fast/clip/006.html
+/sdcard/android/layout_tests/fast/clip/005.html
+/sdcard/android/layout_tests/fast/clip/004.html
+/sdcard/android/layout_tests/fast/clip/003.html
+/sdcard/android/layout_tests/fast/clip/002.html
+/sdcard/android/layout_tests/fast/clip/001.html
+/sdcard/android/layout_tests/fast/canvas/zero-size-fill-rect.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-7.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-6.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-5.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-4.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-3.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-2.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-1.html
+/sdcard/android/layout_tests/fast/canvas/quadraticCurveTo.xml
+/sdcard/android/layout_tests/fast/canvas/patternfill-repeat.html
+/sdcard/android/layout_tests/fast/canvas/image-object-in-canvas.html
+/sdcard/android/layout_tests/fast/canvas/gradient-empty-path.html
+/sdcard/android/layout_tests/fast/canvas/fillrect_gradient.html
+/sdcard/android/layout_tests/fast/canvas/fillrect-gradient-zero-stops.html
+/sdcard/android/layout_tests/fast/canvas/fill-stroke-clip-reset-path.html
+/sdcard/android/layout_tests/fast/canvas/drawImage.html
+/sdcard/android/layout_tests/fast/canvas/canvasDrawingIntoSelf.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transforms-during-path.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-skewed.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-non-invertible.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-nan.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-multiply.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-infinity.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-identity.html
+/sdcard/android/layout_tests/fast/canvas/canvas-text-baseline.html
+/sdcard/android/layout_tests/fast/canvas/canvas-text-alignment.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-before-css.html
+/sdcard/android/layout_tests/fast/box-sizing/panels-two.html
+/sdcard/android/layout_tests/fast/box-sizing/panels-one.html
+/sdcard/android/layout_tests/fast/box-sizing/box-sizing.html
+/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/borders/svg-as-border-image.html
+/sdcard/android/layout_tests/fast/borders/svg-as-border-image-2.html
+/sdcard/android/layout_tests/fast/borders/outline-offset-min-assert.html
+/sdcard/android/layout_tests/fast/borders/inline-mask-overlay-image.html
+/sdcard/android/layout_tests/fast/borders/fieldsetBorderRadius.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid04.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid03.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid02.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusRidge01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusOutset01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusInvalidColor.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusInset01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusGroove02.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusGroove01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDouble03.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDouble02.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDouble01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDotted03.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDotted02.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDotted01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDashed03.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDashed02.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDashed01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusArcs01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusAllStylesAllCorners.html
+/sdcard/android/layout_tests/fast/borders/border-radius-huge-assert.html
+/sdcard/android/layout_tests/fast/borders/border-image-scale-transform.html
+/sdcard/android/layout_tests/fast/borders/border-image-rotate-transform.html
+/sdcard/android/layout_tests/fast/borders/border-image-omit-right-slice.html
+/sdcard/android/layout_tests/fast/borders/border-image-01.html
+/sdcard/android/layout_tests/fast/borders/border-fit.html
+/sdcard/android/layout_tests/fast/borders/border-color-inherit.html
+/sdcard/android/layout_tests/fast/borders/block-mask-overlay-image.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/007.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/006.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/005.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/004.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/003.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/002.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/001.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/010.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/009.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/008.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/007.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/006.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/005.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/004.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/003.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/002.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/001.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/008.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/007.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/006.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/005.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/004.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/003.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/002.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/001.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/007.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/006.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/005.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/004.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/003.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/002.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/001.html
+/sdcard/android/layout_tests/fast/block/positioning/window-height-change.html
+/sdcard/android/layout_tests/fast/block/positioning/replaced-inside-fixed-top-bottom.html
+/sdcard/android/layout_tests/fast/block/positioning/relayout-on-position-change.html
+/sdcard/android/layout_tests/fast/block/positioning/relative-overflow-replaced.html
+/sdcard/android/layout_tests/fast/block/positioning/relative-overflow-replaced-float.html
+/sdcard/android/layout_tests/fast/block/positioning/relative-overflow-block.html
+/sdcard/android/layout_tests/fast/block/positioning/relative-overconstrained.html
+/sdcard/android/layout_tests/fast/block/positioning/pref-width-change.html
+/sdcard/android/layout_tests/fast/block/positioning/padding-percent.html
+/sdcard/android/layout_tests/fast/block/positioning/offsetLeft-offsetTop-borders.html
+/sdcard/android/layout_tests/fast/block/positioning/negative-right-pos.html
+/sdcard/android/layout_tests/fast/block/positioning/move-with-auto-width.html
+/sdcard/android/layout_tests/fast/block/positioning/leftmargin-topmargin.html
+/sdcard/android/layout_tests/fast/block/positioning/inline-block-relposition.html
+/sdcard/android/layout_tests/fast/block/positioning/height-change.html
+/sdcard/android/layout_tests/fast/block/positioning/complex-percentage-height.html
+/sdcard/android/layout_tests/fast/block/positioning/child-of-absolute-with-auto-height.html
+/sdcard/android/layout_tests/fast/block/positioning/auto-height-with-top-and-bottom.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-with-html-border-strict.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-with-html-border-quirks.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-positioned-overconstrained.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-position-direction-strict.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-position-direction-quirk.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-length-of-neg-666666.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-short-rtl.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-short-ltr.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-rtl.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-rtl-3.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-rtl-2.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-ltr.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-ltr-3.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-in-inline-ltr-2.html
+/sdcard/android/layout_tests/fast/block/positioning/abs-inside-inline-rel.html
+/sdcard/android/layout_tests/fast/block/positioning/062.html
+/sdcard/android/layout_tests/fast/block/positioning/061.html
+/sdcard/android/layout_tests/fast/block/positioning/060.html
+/sdcard/android/layout_tests/fast/block/positioning/059.html
+/sdcard/android/layout_tests/fast/block/positioning/058.html
+/sdcard/android/layout_tests/fast/block/positioning/057.html
+/sdcard/android/layout_tests/fast/block/positioning/056.html
+/sdcard/android/layout_tests/fast/block/positioning/055.html
+/sdcard/android/layout_tests/fast/block/positioning/054.html
+/sdcard/android/layout_tests/fast/block/positioning/053.html
+/sdcard/android/layout_tests/fast/block/positioning/052.html
+/sdcard/android/layout_tests/fast/block/positioning/051.html
+/sdcard/android/layout_tests/fast/block/positioning/050.html
+/sdcard/android/layout_tests/fast/block/positioning/049.html
+/sdcard/android/layout_tests/fast/block/positioning/048.html
+/sdcard/android/layout_tests/fast/block/positioning/047.html
+/sdcard/android/layout_tests/fast/block/positioning/046.html
+/sdcard/android/layout_tests/fast/block/positioning/045.html
+/sdcard/android/layout_tests/fast/block/positioning/044.html
+/sdcard/android/layout_tests/fast/block/positioning/043.html
+/sdcard/android/layout_tests/fast/block/positioning/042.html
+/sdcard/android/layout_tests/fast/block/positioning/041.html
+/sdcard/android/layout_tests/fast/block/positioning/040.html
+/sdcard/android/layout_tests/fast/block/positioning/039.html
+/sdcard/android/layout_tests/fast/block/positioning/038.html
+/sdcard/android/layout_tests/fast/block/positioning/037.html
+/sdcard/android/layout_tests/fast/block/positioning/036.html
+/sdcard/android/layout_tests/fast/block/positioning/035.html
+/sdcard/android/layout_tests/fast/block/positioning/034.html
+/sdcard/android/layout_tests/fast/block/positioning/033.html
+/sdcard/android/layout_tests/fast/block/positioning/032.html
+/sdcard/android/layout_tests/fast/block/positioning/031.html
+/sdcard/android/layout_tests/fast/block/positioning/030.html
+/sdcard/android/layout_tests/fast/block/positioning/029.html
+/sdcard/android/layout_tests/fast/block/positioning/028.html
+/sdcard/android/layout_tests/fast/block/positioning/027.html
+/sdcard/android/layout_tests/fast/block/positioning/026.html
+/sdcard/android/layout_tests/fast/block/positioning/025.html
+/sdcard/android/layout_tests/fast/block/positioning/024.html
+/sdcard/android/layout_tests/fast/block/positioning/023.html
+/sdcard/android/layout_tests/fast/block/positioning/022.html
+/sdcard/android/layout_tests/fast/block/positioning/021.html
+/sdcard/android/layout_tests/fast/block/positioning/020.html
+/sdcard/android/layout_tests/fast/block/positioning/019.html
+/sdcard/android/layout_tests/fast/block/positioning/018.html
+/sdcard/android/layout_tests/fast/block/positioning/017.html
+/sdcard/android/layout_tests/fast/block/positioning/016.html
+/sdcard/android/layout_tests/fast/block/positioning/015.html
+/sdcard/android/layout_tests/fast/block/positioning/014.html
+/sdcard/android/layout_tests/fast/block/positioning/013.html
+/sdcard/android/layout_tests/fast/block/positioning/012.html
+/sdcard/android/layout_tests/fast/block/positioning/011.html
+/sdcard/android/layout_tests/fast/block/positioning/010.html
+/sdcard/android/layout_tests/fast/block/positioning/009.html
+/sdcard/android/layout_tests/fast/block/positioning/008.html
+/sdcard/android/layout_tests/fast/block/positioning/007.html
+/sdcard/android/layout_tests/fast/block/positioning/006.html
+/sdcard/android/layout_tests/fast/block/positioning/005.html
+/sdcard/android/layout_tests/fast/block/positioning/004.html
+/sdcard/android/layout_tests/fast/block/positioning/003.html
+/sdcard/android/layout_tests/fast/block/positioning/002.html
+/sdcard/android/layout_tests/fast/block/positioning/001.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/negative-margins.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/empty-clear-blocks.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/104.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/103.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/102.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/101.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/100.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/063.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/062.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/059.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/058.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/057.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/056.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/055.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/045.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/044.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/043.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/042.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/041.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/040.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/039.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/038.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/037.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/035.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/034.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/033.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/032.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/031.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/030.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/029.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/028.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/027.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/026.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/025.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/022.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/021.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/020.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/019.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/018.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/017.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/016.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/015.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/012.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/011.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/010.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/006.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/005.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/004.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/003.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/002.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/001.html
+/sdcard/android/layout_tests/fast/block/float/width-update-after-clear.html
+/sdcard/android/layout_tests/fast/block/float/vertical-move-relayout.html
+/sdcard/android/layout_tests/fast/block/float/tableshifting.html
+/sdcard/android/layout_tests/fast/block/float/table-relayout.html
+/sdcard/android/layout_tests/fast/block/float/shrink-to-fit-width.html
+/sdcard/android/layout_tests/fast/block/float/relative-painted-twice.html
+/sdcard/android/layout_tests/fast/block/float/overhanging-after-height-decrease.html
+/sdcard/android/layout_tests/fast/block/float/overhanging-after-height-decrease-offsets.html
+/sdcard/android/layout_tests/fast/block/float/nowrap-clear-min-width.html
+/sdcard/android/layout_tests/fast/block/float/nopaint-after-layer-destruction2.html
+/sdcard/android/layout_tests/fast/block/float/nopaint-after-layer-destruction.html
+/sdcard/android/layout_tests/fast/block/float/nestedAnonymousBlocks2.html
+/sdcard/android/layout_tests/fast/block/float/nestedAnonymousBlocks.html
+/sdcard/android/layout_tests/fast/block/float/negative-margin-clear.html
+/sdcard/android/layout_tests/fast/block/float/narrow-after-wide.html
+/sdcard/android/layout_tests/fast/block/float/multiple-float-positioning.html
+/sdcard/android/layout_tests/fast/block/float/marquee-shrink-to-avoid-floats.html
+/sdcard/android/layout_tests/fast/block/float/intruding-painted-twice.html
+/sdcard/android/layout_tests/fast/block/float/independent-align-positioning.html
+/sdcard/android/layout_tests/fast/block/float/float-on-zero-height-line.html
+/sdcard/android/layout_tests/fast/block/float/float-in-float-painting.html
+/sdcard/android/layout_tests/fast/block/float/float-in-float-hit-testing.html
+/sdcard/android/layout_tests/fast/block/float/float-avoidance.html
+/sdcard/android/layout_tests/fast/block/float/editable-text-overlapping-float.html
+/sdcard/android/layout_tests/fast/block/float/dynamic-unfloat-pref-width.html
+/sdcard/android/layout_tests/fast/block/float/clamped-right-float.html
+/sdcard/android/layout_tests/fast/block/float/br-with-clear.html
+/sdcard/android/layout_tests/fast/block/float/br-with-clear-2.html
+/sdcard/android/layout_tests/fast/block/float/4145535Crash.html
+/sdcard/android/layout_tests/fast/block/float/035.html
+/sdcard/android/layout_tests/fast/block/float/034.html
+/sdcard/android/layout_tests/fast/block/float/033.html
+/sdcard/android/layout_tests/fast/block/float/032.html
+/sdcard/android/layout_tests/fast/block/float/031.html
+/sdcard/android/layout_tests/fast/block/float/030.html
+/sdcard/android/layout_tests/fast/block/float/029.html
+/sdcard/android/layout_tests/fast/block/float/028.html
+/sdcard/android/layout_tests/fast/block/float/027.html
+/sdcard/android/layout_tests/fast/block/float/026.html
+/sdcard/android/layout_tests/fast/block/float/025.html
+/sdcard/android/layout_tests/fast/block/float/024.html
+/sdcard/android/layout_tests/fast/block/float/023.html
+/sdcard/android/layout_tests/fast/block/float/022.html
+/sdcard/android/layout_tests/fast/block/float/021.html
+/sdcard/android/layout_tests/fast/block/float/020.html
+/sdcard/android/layout_tests/fast/block/float/019.html
+/sdcard/android/layout_tests/fast/block/float/018.html
+/sdcard/android/layout_tests/fast/block/float/017.html
+/sdcard/android/layout_tests/fast/block/float/016.html
+/sdcard/android/layout_tests/fast/block/float/015.html
+/sdcard/android/layout_tests/fast/block/float/014.html
+/sdcard/android/layout_tests/fast/block/float/013.html
+/sdcard/android/layout_tests/fast/block/float/012.html
+/sdcard/android/layout_tests/fast/block/float/011.html
+/sdcard/android/layout_tests/fast/block/float/010.html
+/sdcard/android/layout_tests/fast/block/float/009.html
+/sdcard/android/layout_tests/fast/block/float/008.html
+/sdcard/android/layout_tests/fast/block/float/007.html
+/sdcard/android/layout_tests/fast/block/float/006.html
+/sdcard/android/layout_tests/fast/block/float/005.html
+/sdcard/android/layout_tests/fast/block/float/004.html
+/sdcard/android/layout_tests/fast/block/float/003.html
+/sdcard/android/layout_tests/fast/block/float/002.html
+/sdcard/android/layout_tests/fast/block/float/001.html
+/sdcard/android/layout_tests/fast/block/basic/white-space-pre-wraps.html
+/sdcard/android/layout_tests/fast/block/basic/text-indent-rtl.html
+/sdcard/android/layout_tests/fast/block/basic/quirk-percent-height-grandchild.html
+/sdcard/android/layout_tests/fast/block/basic/quirk-height.html
+/sdcard/android/layout_tests/fast/block/basic/minheight.html
+/sdcard/android/layout_tests/fast/block/basic/min-pref-width-nowrap-floats.html
+/sdcard/android/layout_tests/fast/block/basic/fieldset-stretch-to-legend.html
+/sdcard/android/layout_tests/fast/block/basic/adding-near-anonymous-block.html
+/sdcard/android/layout_tests/fast/block/basic/021.html
+/sdcard/android/layout_tests/fast/block/basic/020.html
+/sdcard/android/layout_tests/fast/block/basic/019.html
+/sdcard/android/layout_tests/fast/block/basic/018.html
+/sdcard/android/layout_tests/fast/block/basic/016.html
+/sdcard/android/layout_tests/fast/block/basic/015.html
+/sdcard/android/layout_tests/fast/block/basic/014.html
+/sdcard/android/layout_tests/fast/block/basic/013.html
+/sdcard/android/layout_tests/fast/block/basic/012.html
+/sdcard/android/layout_tests/fast/block/basic/011.html
+/sdcard/android/layout_tests/fast/block/basic/010.html
+/sdcard/android/layout_tests/fast/block/basic/009.html
+/sdcard/android/layout_tests/fast/block/basic/008.html
+/sdcard/android/layout_tests/fast/block/basic/007.html
+/sdcard/android/layout_tests/fast/block/basic/006.html
+/sdcard/android/layout_tests/fast/block/basic/005.html
+/sdcard/android/layout_tests/fast/block/basic/004.html
+/sdcard/android/layout_tests/fast/block/basic/003.html
+/sdcard/android/layout_tests/fast/block/basic/002.html
+/sdcard/android/layout_tests/fast/block/basic/001.html
+/sdcard/android/layout_tests/fast/backgrounds/size/zero.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize19.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize18.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize17.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize16.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize15.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize14.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize13.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize12.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize11.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize10.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize09.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize08.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize07.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize06.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize05.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize04.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize03.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize02.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize01.html
+/sdcard/android/layout_tests/fast/backgrounds/repeat/noRepeatCorrectClip.html
+/sdcard/android/layout_tests/fast/backgrounds/repeat/negative-offset-repeat.html
+/sdcard/android/layout_tests/fast/backgrounds/repeat/negative-offset-repeat-transformed.html
+/sdcard/android/layout_tests/fast/backgrounds/repeat/mask-negative-offset-repeat.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-mask.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-6.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-5.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-4.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-3.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-2.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-1.html
+/sdcard/android/layout_tests/fast/backgrounds/solid-color-context-restore.html
+/sdcard/android/layout_tests/fast/backgrounds/mask-composite.html
+/sdcard/android/layout_tests/fast/backgrounds/bgCompositeCopy.html
+/sdcard/android/layout_tests/fast/backgrounds/background-position-rounding.html
+/sdcard/android/layout_tests/fast/backgrounds/background-position-1.html
+/sdcard/android/layout_tests/fast/backgrounds/background-origin-root-element.html
+/sdcard/android/layout_tests/fast/backgrounds/background-inherit-color-bug.html
+/sdcard/android/layout_tests/fast/backgrounds/001.html
diff --git a/tests/DumpRenderTree/results/layout_tests_passed.txt b/tests/DumpRenderTree/results/layout_tests_passed.txt
new file mode 100644
index 0000000..03e920e
--- /dev/null
+++ b/tests/DumpRenderTree/results/layout_tests_passed.txt
@@ -0,0 +1,990 @@
+/sdcard/android/layout_tests/fast/transforms/container-transform-crash.html
+/sdcard/android/layout_tests/fast/tokenizer/write-unclosed-script.html
+/sdcard/android/layout_tests/fast/tokenizer/write-partial-entity.html
+/sdcard/android/layout_tests/fast/tokenizer/write-inline-script-open.html
+/sdcard/android/layout_tests/fast/tokenizer/write-external-script-open.html
+/sdcard/android/layout_tests/fast/tokenizer/nested-multiple-scripts.html
+/sdcard/android/layout_tests/fast/tokenizer/nested-cached-scripts.html
+/sdcard/android/layout_tests/fast/tokenizer/lessthan-terminates-tags-and-attrs.html
+/sdcard/android/layout_tests/fast/tokenizer/image-empty-crash.html
+/sdcard/android/layout_tests/fast/tokenizer/ignore-tags-in-iframe.html
+/sdcard/android/layout_tests/fast/tokenizer/external-script-document-open.html
+/sdcard/android/layout_tests/fast/tokenizer/doctype-search-reset.html
+/sdcard/android/layout_tests/fast/tokenizer/badscript.html
+/sdcard/android/layout_tests/fast/tokenizer/ampersand-in-special-tag.html
+/sdcard/android/layout_tests/fast/tokenizer/004.html
+/sdcard/android/layout_tests/fast/text/line-breaks-after-ideographic-comma-or-full-stop.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/table/td-display-nowrap.html
+/sdcard/android/layout_tests/fast/table/section-in-table-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/rowindex-comment-nodes.html
+/sdcard/android/layout_tests/fast/table/row-in-tbody-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/large-rowspan-crash.html
+/sdcard/android/layout_tests/fast/table/incomplete-table-in-fragment-hang.html
+/sdcard/android/layout_tests/fast/table/incomplete-table-in-fragment-2.html
+/sdcard/android/layout_tests/fast/table/form-in-tbody-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/form-in-table-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/form-in-row-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/empty-auto-column-zero-divide.html
+/sdcard/android/layout_tests/fast/table/destroy-cell-with-selection-crash.html
+/sdcard/android/layout_tests/fast/table/colgroup-relative.html
+/sdcard/android/layout_tests/fast/table/cell-in-row-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/border-changes.html
+/sdcard/android/layout_tests/fast/replaced/object-param-no-name.html
+/sdcard/android/layout_tests/fast/regex/test4.html
+/sdcard/android/layout_tests/fast/regex/test1.html
+/sdcard/android/layout_tests/fast/regex/slow.html
+/sdcard/android/layout_tests/fast/regex/early-acid3-86.html
+/sdcard/android/layout_tests/fast/reflections/teardown-crash.html
+/sdcard/android/layout_tests/fast/reflections/reflection-computed-style.html
+/sdcard/android/layout_tests/fast/parser/test-unicode-characters-in-attribute-name.html
+/sdcard/android/layout_tests/fast/parser/tag-with-exclamation-point.html
+/sdcard/android/layout_tests/fast/parser/strict-img-in-map.html
+/sdcard/android/layout_tests/fast/parser/script-after-frameset-assert.html
+/sdcard/android/layout_tests/fast/parser/rewrite-map.html
+/sdcard/android/layout_tests/fast/parser/rewrite-form.html
+/sdcard/android/layout_tests/fast/parser/residual-style-close-across-removed-block.html
+/sdcard/android/layout_tests/fast/parser/residual-style-close-across-n-blocks.html
+/sdcard/android/layout_tests/fast/parser/remove-parser-current-node.html
+/sdcard/android/layout_tests/fast/parser/remove-node-stack.html
+/sdcard/android/layout_tests/fast/parser/remove-current-node-parent.html
+/sdcard/android/layout_tests/fast/parser/pre-first-line-break.html
+/sdcard/android/layout_tests/fast/parser/parse-wbr.html
+/sdcard/android/layout_tests/fast/parser/p-in-scope.html
+/sdcard/android/layout_tests/fast/parser/p-in-scope-strict.html
+/sdcard/android/layout_tests/fast/parser/open-comment-in-script-tricky.html
+/sdcard/android/layout_tests/fast/parser/number-sign-in-map-name.html
+/sdcard/android/layout_tests/fast/parser/nsup-entity.html
+/sdcard/android/layout_tests/fast/parser/input-textarea-inside-select-element.html
+/sdcard/android/layout_tests/fast/parser/html-whitespace.html
+/sdcard/android/layout_tests/fast/parser/hex-entities-length.html
+/sdcard/android/layout_tests/fast/parser/head-comment.html
+/sdcard/android/layout_tests/fast/parser/entity-surrogate-pairs.html
+/sdcard/android/layout_tests/fast/parser/entity-end-xmp-tag.html
+/sdcard/android/layout_tests/fast/parser/entity-end-title-tag.html
+/sdcard/android/layout_tests/fast/parser/entity-end-textarea-tag.html
+/sdcard/android/layout_tests/fast/parser/entity-end-style-tag.html
+/sdcard/android/layout_tests/fast/parser/entity-end-iframe-tag.html
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-title.html
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-script-tricky.html
+/sdcard/android/layout_tests/fast/parser/entities-in-html.html
+/sdcard/android/layout_tests/fast/parser/duplicate-html-body-element-IDs.html
+/sdcard/android/layout_tests/fast/parser/comment-in-title.html
+/sdcard/android/layout_tests/fast/parser/comment-in-script-tricky.html
+/sdcard/android/layout_tests/fast/parser/assertion-empty-attribute.html
+/sdcard/android/layout_tests/fast/parser/area-in-div.html
+/sdcard/android/layout_tests/fast/overflow/onscroll-layer-self-destruct.html
+/sdcard/android/layout_tests/fast/overflow/generated-content-crash.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/loader/xmlhttprequest-bad-mimetype.html
+/sdcard/android/layout_tests/fast/loader/window-clearing.html
+/sdcard/android/layout_tests/fast/loader/user-style-sheet-resource-load-callbacks.html
+/sdcard/android/layout_tests/fast/loader/url-strip-cr-lf-tab.html
+/sdcard/android/layout_tests/fast/loader/url-parse-1.html
+/sdcard/android/layout_tests/fast/loader/url-data-replace-backslash.html
+/sdcard/android/layout_tests/fast/loader/unloadable-script.html
+/sdcard/android/layout_tests/fast/loader/simultaneous-reloads-assert.html
+/sdcard/android/layout_tests/fast/loader/redirect-with-open-subframe.html
+/sdcard/android/layout_tests/fast/loader/redirect-with-open-subframe-2.html
+/sdcard/android/layout_tests/fast/loader/meta-refresh-vs-open.html
+/sdcard/android/layout_tests/fast/loader/local-css-allowed-in-strict-mode.html
+/sdcard/android/layout_tests/fast/loader/loadInProgress.html
+/sdcard/android/layout_tests/fast/loader/link-no-URL.html
+/sdcard/android/layout_tests/fast/loader/javascript-url-encoding.html
+/sdcard/android/layout_tests/fast/loader/invalid-charset-on-script-crashes-loader.html
+/sdcard/android/layout_tests/fast/loader/inherit-charset-to-empty-frame.html
+/sdcard/android/layout_tests/fast/loader/iframe-recursive-synchronous-load.html
+/sdcard/android/layout_tests/fast/loader/font-face-empty.html
+/sdcard/android/layout_tests/fast/loader/file-URL-with-port-number.html
+/sdcard/android/layout_tests/fast/loader/external-script-URL-location.html
+/sdcard/android/layout_tests/fast/loader/empty-ref-versus-no-ref.html
+/sdcard/android/layout_tests/fast/loader/early-load-cancel.html
+/sdcard/android/layout_tests/fast/loader/data-url-encoding-html.html
+/sdcard/android/layout_tests/fast/loader/charset-parse.html
+/sdcard/android/layout_tests/fast/leaks/002.html
+/sdcard/android/layout_tests/fast/leaks/001.html
+/sdcard/android/layout_tests/fast/layers/resize-layer-deletion-crash.html
+/sdcard/android/layout_tests/fast/layers/removed-by-scroll-handler.html
+/sdcard/android/layout_tests/fast/layers/generated-layer-scrollbar-crash.html
+/sdcard/android/layout_tests/fast/js/pic/rehash-poisons-structure.html
+/sdcard/android/layout_tests/fast/js/pic/get-set-proxy-object.html
+/sdcard/android/layout_tests/fast/js/pic/get-empty-string.html
+/sdcard/android/layout_tests/fast/js/pic/dictionary-prototype.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/cached-getter-setter.html
+/sdcard/android/layout_tests/fast/js/pic/cached-getter-dictionary-and-proto.html
+/sdcard/android/layout_tests/fast/js/pic/cached-deleted-properties.html
+/sdcard/android/layout_tests/fast/js/window-location-href-file-urls.html
+/sdcard/android/layout_tests/fast/js/while-expression-value.html
+/sdcard/android/layout_tests/fast/js/vardecl-preserve-vardecl.html
+/sdcard/android/layout_tests/fast/js/vardecl-preserve-parameters.html
+/sdcard/android/layout_tests/fast/js/vardecl-preserve-arguments.html
+/sdcard/android/layout_tests/fast/js/vardecl-blocks-init.html
+/sdcard/android/layout_tests/fast/js/var-shadows-arg-crash.html
+/sdcard/android/layout_tests/fast/js/var-declarations.html
+/sdcard/android/layout_tests/fast/js/var-declarations-shadowing.html
+/sdcard/android/layout_tests/fast/js/unmatching-argument-count.html
+/sdcard/android/layout_tests/fast/js/unexpected-constant-crash.html
+/sdcard/android/layout_tests/fast/js/typeof-syntax.html
+/sdcard/android/layout_tests/fast/js/typeof-codegen-crash.html
+/sdcard/android/layout_tests/fast/js/toString-try-else.html
+/sdcard/android/layout_tests/fast/js/toString-prefix-postfix-preserve-parens.html
+/sdcard/android/layout_tests/fast/js/toString-overrides.html
+/sdcard/android/layout_tests/fast/js/toString-number-dot-expr.html
+/sdcard/android/layout_tests/fast/js/toString-for-var-decl.html
+/sdcard/android/layout_tests/fast/js/toString-exception.html
+/sdcard/android/layout_tests/fast/js/tostring-exception-in-property-access.html
+/sdcard/android/layout_tests/fast/js/toString-elision-trailing-comma.html
+/sdcard/android/layout_tests/fast/js/toString-dontEnum.html
+/sdcard/android/layout_tests/fast/js/throw-from-array-sort.html
+/sdcard/android/layout_tests/fast/js/this-non-object-proto.html
+/sdcard/android/layout_tests/fast/js/switch-behaviour.html
+/sdcard/android/layout_tests/fast/js/string_replace.html
+/sdcard/android/layout_tests/fast/js/string-substr.html
+/sdcard/android/layout_tests/fast/js/string-split-ignore-case.html
+/sdcard/android/layout_tests/fast/js/string-sort.html
+/sdcard/android/layout_tests/fast/js/string-slice-abnormal-values.html
+/sdcard/android/layout_tests/fast/js/string-replace-exception-crash.html
+/sdcard/android/layout_tests/fast/js/string-replace-3.html
+/sdcard/android/layout_tests/fast/js/string-replace-2.html
+/sdcard/android/layout_tests/fast/js/string-property-iteration.html
+/sdcard/android/layout_tests/fast/js/string-index-overflow.html
+/sdcard/android/layout_tests/fast/js/string-from-char-code.html
+/sdcard/android/layout_tests/fast/js/string-capitalization.html
+/sdcard/android/layout_tests/fast/js/static-scope-object.html
+/sdcard/android/layout_tests/fast/js/statement-list-register-crash.html
+/sdcard/android/layout_tests/fast/js/stack-unwinding.html
+/sdcard/android/layout_tests/fast/js/sparse-array.html
+/sdcard/android/layout_tests/fast/js/sort-stability.html
+/sdcard/android/layout_tests/fast/js/sort-randomly.html
+/sdcard/android/layout_tests/fast/js/sort-large-array.html
+/sdcard/android/layout_tests/fast/js/slash-lineterminator-parse.html
+/sdcard/android/layout_tests/fast/js/select-options-remove.html
+/sdcard/android/layout_tests/fast/js/select-options-remove-gc.html
+/sdcard/android/layout_tests/fast/js/select-options-add.html
+/sdcard/android/layout_tests/fast/js/resize-array-assign.html
+/sdcard/android/layout_tests/fast/js/reserved-words.html
+/sdcard/android/layout_tests/fast/js/removing-Cf-characters.html
+/sdcard/android/layout_tests/fast/js/rehash-assign.html
+/sdcard/android/layout_tests/fast/js/regexp-unicode-overflow.html
+/sdcard/android/layout_tests/fast/js/regexp-unicode-handling.html
+/sdcard/android/layout_tests/fast/js/regexp-stack-overflow.html
+/sdcard/android/layout_tests/fast/js/regexp-ranges-and-escaped-hyphens.html
+/sdcard/android/layout_tests/fast/js/regexp-range-out-of-order.html
+/sdcard/android/layout_tests/fast/js/regexp-overflow.html
+/sdcard/android/layout_tests/fast/js/regexp-non-character.html
+/sdcard/android/layout_tests/fast/js/regexp-non-capturing-groups.html
+/sdcard/android/layout_tests/fast/js/regexp-non-bmp.html
+/sdcard/android/layout_tests/fast/js/regexp-no-extensions.html
+/sdcard/android/layout_tests/fast/js/regexp-negative-special-characters.html
+/sdcard/android/layout_tests/fast/js/regexp-many-brackets.html
+/sdcard/android/layout_tests/fast/js/regexp-lastindex.html
+/sdcard/android/layout_tests/fast/js/regexp-find-first-asserted.html
+/sdcard/android/layout_tests/fast/js/regexp-extended-characters-more.html
+/sdcard/android/layout_tests/fast/js/regexp-extended-characters-match.html
+/sdcard/android/layout_tests/fast/js/regexp-extended-characters-crash.html
+/sdcard/android/layout_tests/fast/js/regexp-divequal.html
+/sdcard/android/layout_tests/fast/js/regexp-compile.html
+/sdcard/android/layout_tests/fast/js/regexp-compile-crash.html
+/sdcard/android/layout_tests/fast/js/regexp-char-insensitive.html
+/sdcard/android/layout_tests/fast/js/regexp-caching.html
+/sdcard/android/layout_tests/fast/js/reentrant-call-unwind.html
+/sdcard/android/layout_tests/fast/js/read-modify-eval.html
+/sdcard/android/layout_tests/fast/js/propertyIsEnumerable.html
+/sdcard/android/layout_tests/fast/js/property-getters-and-setters.html
+/sdcard/android/layout_tests/fast/js/primitive-method-this.html
+/sdcard/android/layout_tests/fast/js/pretty-print.html
+/sdcard/android/layout_tests/fast/js/prefix-syntax.html
+/sdcard/android/layout_tests/fast/js/postfix-syntax.html
+/sdcard/android/layout_tests/fast/js/parse-backslash-before-newline.html
+/sdcard/android/layout_tests/fast/js/order-of-operations.html
+/sdcard/android/layout_tests/fast/js/object-prototype-toLocaleString.html
+/sdcard/android/layout_tests/fast/js/object-prototype-constructor.html
+/sdcard/android/layout_tests/fast/js/object-extra-comma.html
+/sdcard/android/layout_tests/fast/js/numeric-conversion.html
+/sdcard/android/layout_tests/fast/js/number-toString.html
+/sdcard/android/layout_tests/fast/js/number-toprecision.html
+/sdcard/android/layout_tests/fast/js/number-tofixed.html
+/sdcard/android/layout_tests/fast/js/number-toExponential.html
+/sdcard/android/layout_tests/fast/js/null-char-in-string.html
+/sdcard/android/layout_tests/fast/js/non-object-proto.html
+/sdcard/android/layout_tests/fast/js/nested-function-scope.html
+/sdcard/android/layout_tests/fast/js/navigator-plugins-crash.html
+/sdcard/android/layout_tests/fast/js/named-function-expression.html
+/sdcard/android/layout_tests/fast/js/modify-non-references.html
+/sdcard/android/layout_tests/fast/js/mod-crash.html
+/sdcard/android/layout_tests/fast/js/missing-title-end-tag-js.html
+/sdcard/android/layout_tests/fast/js/math.html
+/sdcard/android/layout_tests/fast/js/logical-or-jless.html
+/sdcard/android/layout_tests/fast/js/lexical-lookup-in-function-constructor.html
+/sdcard/android/layout_tests/fast/js/lastModified.html
+/sdcard/android/layout_tests/fast/js/isPrototypeOf.html
+/sdcard/android/layout_tests/fast/js/invalid-syntax-for-function.html
+/sdcard/android/layout_tests/fast/js/integer-extremes.html
+/sdcard/android/layout_tests/fast/js/implicit-global-to-global-reentry.html
+/sdcard/android/layout_tests/fast/js/implicit-call-with-global-reentry.html
+/sdcard/android/layout_tests/fast/js/has-own-property.html
+/sdcard/android/layout_tests/fast/js/gmail-re-re.html
+/sdcard/android/layout_tests/fast/js/global-var-limit.html
+/sdcard/android/layout_tests/fast/js/getter-setter-gc.html
+/sdcard/android/layout_tests/fast/js/function-toString-parentheses.html
+/sdcard/android/layout_tests/fast/js/function-toString-object-literals.html
+/sdcard/android/layout_tests/fast/js/function-redefinition.html
+/sdcard/android/layout_tests/fast/js/function-prototype.html
+/sdcard/android/layout_tests/fast/js/function-names.html
+/sdcard/android/layout_tests/fast/js/function-name.html
+/sdcard/android/layout_tests/fast/js/function-dot-arguments.html
+/sdcard/android/layout_tests/fast/js/function-dot-arguments-and-caller.html
+/sdcard/android/layout_tests/fast/js/function-decompilation-operators.html
+/sdcard/android/layout_tests/fast/js/function-declarations.html
+/sdcard/android/layout_tests/fast/js/function-declarations-in-switch-statement.html
+/sdcard/android/layout_tests/fast/js/function-call-register-allocation.html
+/sdcard/android/layout_tests/fast/js/function-argument-evaluation-before-exception.html
+/sdcard/android/layout_tests/fast/js/function-apply.html
+/sdcard/android/layout_tests/fast/js/for-in-var-scope.html
+/sdcard/android/layout_tests/fast/js/for-in-to-text.html
+/sdcard/android/layout_tests/fast/js/for-in-exeception.html
+/sdcard/android/layout_tests/fast/js/for-in-avoid-duplicates.html
+/sdcard/android/layout_tests/fast/js/finally-codegen-failure.html
+/sdcard/android/layout_tests/fast/js/exec-state-marking.html
+/sdcard/android/layout_tests/fast/js/exception-try-finally-scope-error.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-new.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-function-with-lazy-activation.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-eval-inside-closure.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-equal.html
+/sdcard/android/layout_tests/fast/js/exception-linenums.html
+/sdcard/android/layout_tests/fast/js/exception-linenums-in-html-2.html
+/sdcard/android/layout_tests/fast/js/exception-linenums-in-html-1.html
+/sdcard/android/layout_tests/fast/js/exception-expression-offset.html
+/sdcard/android/layout_tests/fast/js/eval-var-decl.html
+/sdcard/android/layout_tests/fast/js/eval-overriding.html
+/sdcard/android/layout_tests/fast/js/eval-keyword-vs-function.html
+/sdcard/android/layout_tests/fast/js/eval-cross-window.html
+/sdcard/android/layout_tests/fast/js/eval-cache-crash.html
+/sdcard/android/layout_tests/fast/js/equality.html
+/sdcard/android/layout_tests/fast/js/encode-URI-test.html
+/sdcard/android/layout_tests/fast/js/duplicate-param-crash.html
+/sdcard/android/layout_tests/fast/js/dot-node-base-exception.html
+/sdcard/android/layout_tests/fast/js/do-while-without-semicolon.html
+/sdcard/android/layout_tests/fast/js/do-while-semicolon.html
+/sdcard/android/layout_tests/fast/js/do-while-expression-value.html
+/sdcard/android/layout_tests/fast/js/direct-entry-to-function-code.html
+/sdcard/android/layout_tests/fast/js/delete-then-put.html
+/sdcard/android/layout_tests/fast/js/delete-syntax.html
+/sdcard/android/layout_tests/fast/js/delete-multiple-global-blocks.html
+/sdcard/android/layout_tests/fast/js/delete-getters-setters.html
+/sdcard/android/layout_tests/fast/js/delete-function-parameter.html
+/sdcard/android/layout_tests/fast/js/deep-recursion-test.html
+/sdcard/android/layout_tests/fast/js/declaration-in-block.html
+/sdcard/android/layout_tests/fast/js/debugger.html
+/sdcard/android/layout_tests/fast/js/date-set-to-nan.html
+/sdcard/android/layout_tests/fast/js/date-proto-generic-invocation.html
+/sdcard/android/layout_tests/fast/js/date-preserve-milliseconds.html
+/sdcard/android/layout_tests/fast/js/date-parse-test.html
+/sdcard/android/layout_tests/fast/js/date-parse-comments-test.html
+/sdcard/android/layout_tests/fast/js/date-negative-setmonth.html
+/sdcard/android/layout_tests/fast/js/date-DST-time-cusps.html
+/sdcard/android/layout_tests/fast/js/date-DST-pre-1970.html
+/sdcard/android/layout_tests/fast/js/date-constructor.html
+/sdcard/android/layout_tests/fast/js/date-big-setmonth.html
+/sdcard/android/layout_tests/fast/js/date-big-setdate.html
+/sdcard/android/layout_tests/fast/js/date-big-constructor.html
+/sdcard/android/layout_tests/fast/js/cyclic-ref-toString.html
+/sdcard/android/layout_tests/fast/js/cyclic-prototypes.html
+/sdcard/android/layout_tests/fast/js/cyclic-proto.html
+/sdcard/android/layout_tests/fast/js/convert-nan-to-bool.html
+/sdcard/android/layout_tests/fast/js/continue-break-multiple-labels.html
+/sdcard/android/layout_tests/fast/js/constructor.html
+/sdcard/android/layout_tests/fast/js/constructor-attributes.html
+/sdcard/android/layout_tests/fast/js/construct-global-object.html
+/sdcard/android/layout_tests/fast/js/constant-folding.html
+/sdcard/android/layout_tests/fast/js/constant-count.html
+/sdcard/android/layout_tests/fast/js/const.html
+/sdcard/android/layout_tests/fast/js/const-without-initializer.html
+/sdcard/android/layout_tests/fast/js/comparefn-sort-stability.html
+/sdcard/android/layout_tests/fast/js/codegen-temporaries.html
+/sdcard/android/layout_tests/fast/js/codegen-temporaries-multiple-global-blocks.html
+/sdcard/android/layout_tests/fast/js/codegen-peephole-locals.html
+/sdcard/android/layout_tests/fast/js/codegen-loops-logical-nodes.html
+/sdcard/android/layout_tests/fast/js/code-serialize-paren.html
+/sdcard/android/layout_tests/fast/js/closure-inside-extra-arg-call.html
+/sdcard/android/layout_tests/fast/js/char-at.html
+/sdcard/android/layout_tests/fast/js/caller-property.html
+/sdcard/android/layout_tests/fast/js/bitwise-and-on-undefined.html
+/sdcard/android/layout_tests/fast/js/avl-crash.html
+/sdcard/android/layout_tests/fast/js/assign.html
+/sdcard/android/layout_tests/fast/js/ascii-regexp-subject.html
+/sdcard/android/layout_tests/fast/js/array-tostring-ignore-separator.html
+/sdcard/android/layout_tests/fast/js/array-tostring-and-join.html
+/sdcard/android/layout_tests/fast/js/array-splice.html
+/sdcard/android/layout_tests/fast/js/array-sort-reentrance.html
+/sdcard/android/layout_tests/fast/js/array-some.html
+/sdcard/android/layout_tests/fast/js/array-reset-large-index.html
+/sdcard/android/layout_tests/fast/js/array-map.html
+/sdcard/android/layout_tests/fast/js/array-lastIndexOf.html
+/sdcard/android/layout_tests/fast/js/array-join-bug-11524.html
+/sdcard/android/layout_tests/fast/js/array-iterate-backwards.html
+/sdcard/android/layout_tests/fast/js/array-indexof.html
+/sdcard/android/layout_tests/fast/js/array-indexing.html
+/sdcard/android/layout_tests/fast/js/array-index-immediate-types.html
+/sdcard/android/layout_tests/fast/js/array-holes.html
+/sdcard/android/layout_tests/fast/js/array-functions-non-arrays.html
+/sdcard/android/layout_tests/fast/js/array-foreach.html
+/sdcard/android/layout_tests/fast/js/array-float-delete.html
+/sdcard/android/layout_tests/fast/js/array-filter.html
+/sdcard/android/layout_tests/fast/js/array-every.html
+/sdcard/android/layout_tests/fast/js/arguments.html
+/sdcard/android/layout_tests/fast/js/arguments-bad-index.html
+/sdcard/android/layout_tests/fast/js/activation-proto.html
+/sdcard/android/layout_tests/fast/js/activation-object-function-lifetime.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/inspector/cssURLQuotes.html
+/sdcard/android/layout_tests/fast/innerHTML/javascript-url.html
+/sdcard/android/layout_tests/fast/innerHTML/innerHTML-custom-tag.html
+/sdcard/android/layout_tests/fast/innerHTML/innerHTML-case.html
+/sdcard/android/layout_tests/fast/innerHTML/additional-inline-style.html
+/sdcard/android/layout_tests/fast/innerHTML/005.html
+/sdcard/android/layout_tests/fast/inline/clean-after-removing-temp-boxes.html
+/sdcard/android/layout_tests/fast/images/text-content-crash.html
+/sdcard/android/layout_tests/fast/images/text-content-crash-2.html
+/sdcard/android/layout_tests/fast/images/load-img-with-empty-src.html
+/sdcard/android/layout_tests/fast/images/border.html
+/sdcard/android/layout_tests/fast/images/animated-background-image-crash.html
+/sdcard/android/layout_tests/fast/html/xhtml-serialize.html
+/sdcard/android/layout_tests/fast/html/script-allowed-types-languages.html
+/sdcard/android/layout_tests/fast/html/empty-fragment-id-goto-top.html
+/sdcard/android/layout_tests/fast/html/body-offset-properties.html
+/sdcard/android/layout_tests/fast/frames/viewsource-plain-text-tags.html
+/sdcard/android/layout_tests/fast/frames/set-unloaded-frame-location.html
+/sdcard/android/layout_tests/fast/frames/repaint-display-none-crash.html
+/sdcard/android/layout_tests/fast/frames/remove-frame-with-scrollbars-crash.html
+/sdcard/android/layout_tests/fast/frames/onload-remove-iframe-crash.html
+/sdcard/android/layout_tests/fast/frames/negative-remaining-length-crash.html
+/sdcard/android/layout_tests/fast/frames/location-put-after-removal.html
+/sdcard/android/layout_tests/fast/frames/location-change.html
+/sdcard/android/layout_tests/fast/frames/iframe-target.html
+/sdcard/android/layout_tests/fast/frames/iframe-set-same-src.html
+/sdcard/android/layout_tests/fast/frames/iframe-set-same-location.html
+/sdcard/android/layout_tests/fast/frames/iframe-set-inner-html.html
+/sdcard/android/layout_tests/fast/frames/iframe-remove-after-id-change.html
+/sdcard/android/layout_tests/fast/frames/iframe-name-and-id.html
+/sdcard/android/layout_tests/fast/frames/iframe-js-url-clientWidth.html
+/sdcard/android/layout_tests/fast/frames/iframe-double-attach.html
+/sdcard/android/layout_tests/fast/frames/iframe-display-none.html
+/sdcard/android/layout_tests/fast/frames/hover-timer-crash.html
+/sdcard/android/layout_tests/fast/frames/frame-set-same-src.html
+/sdcard/android/layout_tests/fast/frames/frame-set-same-location.html
+/sdcard/android/layout_tests/fast/frames/frame-name-reset.html
+/sdcard/android/layout_tests/fast/frames/frame-display-none-focus.html
+/sdcard/android/layout_tests/fast/frames/empty-frame-document.html
+/sdcard/android/layout_tests/fast/frames/cross-site-this.html
+/sdcard/android/layout_tests/fast/frames/crash-removed-iframe.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-009.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-008.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-007.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-006.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-005.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-004.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-003.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-002.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-001.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-000.html
+/sdcard/android/layout_tests/fast/forms/textfield-focus-out.html
+/sdcard/android/layout_tests/fast/forms/textarea-trailing-newline.html
+/sdcard/android/layout_tests/fast/forms/textarea-setvalue-without-renderer.html
+/sdcard/android/layout_tests/fast/forms/textarea-setvalue-submit.html
+/sdcard/android/layout_tests/fast/forms/textarea-scrollbar-height.html
+/sdcard/android/layout_tests/fast/forms/textarea-linewrap-dynamic.html
+/sdcard/android/layout_tests/fast/forms/textarea-hard-linewrap-empty.html
+/sdcard/android/layout_tests/fast/forms/textarea-crlf.html
+/sdcard/android/layout_tests/fast/forms/text-set-value-crash.html
+/sdcard/android/layout_tests/fast/forms/tabs-with-modifiers.html
+/sdcard/android/layout_tests/fast/forms/tab-in-input.html
+/sdcard/android/layout_tests/fast/forms/submit-with-base.html
+/sdcard/android/layout_tests/fast/forms/submit-to-url-fragment.html
+/sdcard/android/layout_tests/fast/forms/submit-nil-value-field-assert.html
+/sdcard/android/layout_tests/fast/forms/slow-click.html
+/sdcard/android/layout_tests/fast/forms/selected-index-assert.html
+/sdcard/android/layout_tests/fast/forms/select-width-font-change.html
+/sdcard/android/layout_tests/fast/forms/select-type-ahead-list-box-no-selection.html
+/sdcard/android/layout_tests/fast/forms/select-set-inner.html
+/sdcard/android/layout_tests/fast/forms/select-reset.html
+/sdcard/android/layout_tests/fast/forms/select-replace-option.html
+/sdcard/android/layout_tests/fast/forms/select-remove-option.html
+/sdcard/android/layout_tests/fast/forms/select-out-of-bounds-index.html
+/sdcard/android/layout_tests/fast/forms/select-namedItem.html
+/sdcard/android/layout_tests/fast/forms/select-list-box-mouse-focus.html
+/sdcard/android/layout_tests/fast/forms/select-index-setter.html
+/sdcard/android/layout_tests/fast/forms/saved-state-adoptNode-crash.html
+/sdcard/android/layout_tests/fast/forms/remove-radio-button-assert.html
+/sdcard/android/layout_tests/fast/forms/range-reset.html
+/sdcard/android/layout_tests/fast/forms/range-default-value.html
+/sdcard/android/layout_tests/fast/forms/radio_checked_name.html
+/sdcard/android/layout_tests/fast/forms/radio-no-theme-padding.html
+/sdcard/android/layout_tests/fast/forms/radio-check-click-and-drag.html
+/sdcard/android/layout_tests/fast/forms/radio-button-no-change-event.html
+/sdcard/android/layout_tests/fast/forms/paste-multiline-text-input.html
+/sdcard/android/layout_tests/fast/forms/paste-into-textarea.html
+/sdcard/android/layout_tests/fast/forms/option-in-optgroup-removal.html
+/sdcard/android/layout_tests/fast/forms/option-constructor-selected.html
+/sdcard/android/layout_tests/fast/forms/option-change-single-selected.html
+/sdcard/android/layout_tests/fast/forms/old-names.html
+/sdcard/android/layout_tests/fast/forms/missing-action.html
+/sdcard/android/layout_tests/fast/forms/menulist-selection-reset.html
+/sdcard/android/layout_tests/fast/forms/menulist-no-renderer-onmousedown.html
+/sdcard/android/layout_tests/fast/forms/listbox-typeahead-empty.html
+/sdcard/android/layout_tests/fast/forms/listbox-scroll-after-options-removed.html
+/sdcard/android/layout_tests/fast/forms/input-zero-height-focus.html
+/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-mouse.html
+/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-keyboard.html
+/sdcard/android/layout_tests/fast/forms/input-setvalue-selection.html
+/sdcard/android/layout_tests/fast/forms/input-selection-hidden.html
+/sdcard/android/layout_tests/fast/forms/input-named-action-overrides-action-attribute.html
+/sdcard/android/layout_tests/fast/forms/input-changing-value.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-maxlength.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-elementFromPoint.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_selected.html
+/sdcard/android/layout_tests/fast/forms/hidden-input-not-enabled.html
+/sdcard/android/layout_tests/fast/forms/form-post-urlencoded.html
+/sdcard/android/layout_tests/fast/forms/form-get-multipart3.html
+/sdcard/android/layout_tests/fast/forms/form-get-multipart2.html
+/sdcard/android/layout_tests/fast/forms/form-get-multipart.html
+/sdcard/android/layout_tests/fast/forms/form-data-encoding.html
+/sdcard/android/layout_tests/fast/forms/form-data-encoding-normalization-overrun.html
+/sdcard/android/layout_tests/fast/forms/form-data-encoding-2.html
+/sdcard/android/layout_tests/fast/forms/focus-style-pending.html
+/sdcard/android/layout_tests/fast/forms/empty-get.html
+/sdcard/android/layout_tests/fast/forms/element-order.html
+/sdcard/android/layout_tests/fast/forms/element-by-name.html
+/sdcard/android/layout_tests/fast/forms/double-focus.html
+/sdcard/android/layout_tests/fast/forms/domstring-replace-crash.html
+/sdcard/android/layout_tests/fast/forms/document-write.html
+/sdcard/android/layout_tests/fast/forms/display-none-in-onchange-keyboard.html
+/sdcard/android/layout_tests/fast/forms/cursor-position.html
+/sdcard/android/layout_tests/fast/forms/button-in-forms-collection.html
+/sdcard/android/layout_tests/fast/forms/button-click-DOM.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-008.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-007.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-006.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-005.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-004.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-002.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-001.html
+/sdcard/android/layout_tests/fast/forms/autofocus-attribute.html
+/sdcard/android/layout_tests/fast/forms/add-remove-form-elements-stress-test.html
+/sdcard/android/layout_tests/fast/forms/activate-and-disabled-elements.html
+/sdcard/android/layout_tests/fast/forms/8250.html
+/sdcard/android/layout_tests/fast/forms/4628409.html
+/sdcard/android/layout_tests/fast/forms/11423.html
+/sdcard/android/layout_tests/fast/flexbox/inline-children-crash.html
+/sdcard/android/layout_tests/fast/events/window-load-capture.html
+/sdcard/android/layout_tests/fast/events/submit-reset-nested-bubble.html
+/sdcard/android/layout_tests/fast/events/stopPropagation-submit.html
+/sdcard/android/layout_tests/fast/events/stopPropagation-checkbox.html
+/sdcard/android/layout_tests/fast/events/space-scroll-event.html
+/sdcard/android/layout_tests/fast/events/simulated-key-state.html
+/sdcard/android/layout_tests/fast/events/shadow-boundary-crossing.html
+/sdcard/android/layout_tests/fast/events/selectstart-during-autoscroll.html
+/sdcard/android/layout_tests/fast/events/resize-subframe.html
+/sdcard/android/layout_tests/fast/events/remove-event-listener.html
+/sdcard/android/layout_tests/fast/events/programmatic-check-no-change-event.html
+/sdcard/android/layout_tests/fast/events/overflow-events.html
+/sdcard/android/layout_tests/fast/events/onunload-body-property.html
+/sdcard/android/layout_tests/fast/events/onsubmit-bubbling.html
+/sdcard/android/layout_tests/fast/events/onload-after-document-close-with-subresource.html
+/sdcard/android/layout_tests/fast/events/onload-after-document-close-no-subresource.html
+/sdcard/android/layout_tests/fast/events/onerror-bubbling.html
+/sdcard/android/layout_tests/fast/events/no-window-load.html
+/sdcard/android/layout_tests/fast/events/no-blur-on-page-leave.html
+/sdcard/android/layout_tests/fast/events/no-blur-on-enter-button.html
+/sdcard/android/layout_tests/fast/events/nested-window-event.html
+/sdcard/android/layout_tests/fast/events/nested-event-remove-node-crash.html
+/sdcard/android/layout_tests/fast/events/mouseup-outside-button.html
+/sdcard/android/layout_tests/fast/events/mousedown_in_scrollbar.html
+/sdcard/android/layout_tests/fast/events/message-port.html
+/sdcard/android/layout_tests/fast/events/message-port-inactive-document.html
+/sdcard/android/layout_tests/fast/events/message-port-deleted-frame.html
+/sdcard/android/layout_tests/fast/events/message-port-deleted-document.html
+/sdcard/android/layout_tests/fast/events/message-port-constructor-for-deleted-document.html
+/sdcard/android/layout_tests/fast/events/message-channel-listener-circular-ownership.html
+/sdcard/android/layout_tests/fast/events/message-channel-gc.html
+/sdcard/android/layout_tests/fast/events/message-channel-gc-3.html
+/sdcard/android/layout_tests/fast/events/message-channel-gc-2.html
+/sdcard/android/layout_tests/fast/events/keypress-removed-node.html
+/sdcard/android/layout_tests/fast/events/keydown-remove-frame.html
+/sdcard/android/layout_tests/fast/events/init-event-null-view.html
+/sdcard/android/layout_tests/fast/events/init-event-after-dispatch.html
+/sdcard/android/layout_tests/fast/events/event-targets.html
+/sdcard/android/layout_tests/fast/events/event-listener-html-non-html-confusion.html
+/sdcard/android/layout_tests/fast/events/event-instanceof.html
+/sdcard/android/layout_tests/fast/events/event-creation.html
+/sdcard/android/layout_tests/fast/events/div-focus.html
+/sdcard/android/layout_tests/fast/events/dispatch-to-handle-event.html
+/sdcard/android/layout_tests/fast/events/delayed-style-mutation-event-crash.html
+/sdcard/android/layout_tests/fast/events/caller-access-from-event-listener.html
+/sdcard/android/layout_tests/fast/events/anchor-empty-focus.html
+/sdcard/android/layout_tests/fast/encoding/hebrew/logical.html
+/sdcard/android/layout_tests/fast/encoding/hebrew/iso-ir-138.html
+/sdcard/android/layout_tests/fast/encoding/hebrew/hebrew.html
+/sdcard/android/layout_tests/fast/encoding/hebrew/csISO88598I.html
+/sdcard/android/layout_tests/fast/encoding/hebrew/8859-8.html
+/sdcard/android/layout_tests/fast/encoding/hebrew/8859-8-i.html
+/sdcard/android/layout_tests/fast/encoding/hebrew/8859-8-e.html
+/sdcard/android/layout_tests/fast/encoding/gbk/x-gbk.html
+/sdcard/android/layout_tests/fast/encoding/gbk/x-euc-cn.html
+/sdcard/android/layout_tests/fast/encoding/gbk/iso-ir-58.html
+/sdcard/android/layout_tests/fast/encoding/gbk/gb_2312-80.html
+/sdcard/android/layout_tests/fast/encoding/gbk/gbk.html
+/sdcard/android/layout_tests/fast/encoding/gbk/gb2312.html
+/sdcard/android/layout_tests/fast/encoding/gbk/EUC-CN.html
+/sdcard/android/layout_tests/fast/encoding/gbk/csgb231280.html
+/sdcard/android/layout_tests/fast/encoding/gbk/csgb2312.html
+/sdcard/android/layout_tests/fast/encoding/gbk/cn-gb.html
+/sdcard/android/layout_tests/fast/encoding/gbk/close-gbk-converter.html
+/sdcard/android/layout_tests/fast/encoding/gbk/chinese.html
+/sdcard/android/layout_tests/fast/encoding/yahoo-mail.html
+/sdcard/android/layout_tests/fast/encoding/xml-charset-utf16.html
+/sdcard/android/layout_tests/fast/encoding/utf-32-little-endian-nobom.xml
+/sdcard/android/layout_tests/fast/encoding/utf-32-little-endian-bom.html
+/sdcard/android/layout_tests/fast/encoding/utf-32-big-endian-nobom.xml
+/sdcard/android/layout_tests/fast/encoding/utf-32-big-endian-bom.html
+/sdcard/android/layout_tests/fast/encoding/tag-in-title.html
+/sdcard/android/layout_tests/fast/encoding/script-in-head.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml-4.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml-3.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml-2.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-tags-in-attributes.html
+/sdcard/android/layout_tests/fast/encoding/preload-encoding.html
+/sdcard/android/layout_tests/fast/encoding/noscript-in-head.html
+/sdcard/android/layout_tests/fast/encoding/no-charset-on-dynamic-script-load.html
+/sdcard/android/layout_tests/fast/encoding/namespace-tolerance.html
+/sdcard/android/layout_tests/fast/encoding/mispositioned-meta.html
+/sdcard/android/layout_tests/fast/encoding/misplaced-xml-declaration.html
+/sdcard/android/layout_tests/fast/encoding/meta-charset.html
+/sdcard/android/layout_tests/fast/encoding/latin1-winlatin.html
+/sdcard/android/layout_tests/fast/encoding/high-bit-latin1.html
+/sdcard/android/layout_tests/fast/encoding/hanarei-blog32-fc2-com.html
+/sdcard/android/layout_tests/fast/encoding/floraexpress-ru.html
+/sdcard/android/layout_tests/fast/encoding/decoder-allow-null-chars.html
+/sdcard/android/layout_tests/fast/encoding/css-link-charset.html
+/sdcard/android/layout_tests/fast/encoding/css-charset.html
+/sdcard/android/layout_tests/fast/encoding/css-charset-evil.html
+/sdcard/android/layout_tests/fast/encoding/css-charset-dom.html
+/sdcard/android/layout_tests/fast/encoding/charset-xuser-defined.html
+/sdcard/android/layout_tests/fast/encoding/charset-utf16.html
+/sdcard/android/layout_tests/fast/encoding/charset-unicode.html
+/sdcard/android/layout_tests/fast/encoding/charset-invalid.html
+/sdcard/android/layout_tests/fast/encoding/charset-cp1251.html
+/sdcard/android/layout_tests/fast/encoding/bom-in-content.html
+/sdcard/android/layout_tests/fast/encoding/bom-in-content-utf16.html
+/sdcard/android/layout_tests/fast/encoding/bandai-co-jp-releases.html
+/sdcard/android/layout_tests/fast/encoding/ahram-org-eg.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-common-root.html
+/sdcard/android/layout_tests/fast/dynamic/style-access-late-stylesheet-load.html
+/sdcard/android/layout_tests/fast/dynamic/recursive-layout.html
+/sdcard/android/layout_tests/fast/dynamic/outerHTML-no-element.html
+/sdcard/android/layout_tests/fast/dynamic/insertAdjacentText.html
+/sdcard/android/layout_tests/fast/dynamic/insertAdjacentHTML.html
+/sdcard/android/layout_tests/fast/dynamic/insertAdjacentHTML-allowed-parents.html
+/sdcard/android/layout_tests/fast/dynamic/inline-to-block-crash.html
+/sdcard/android/layout_tests/fast/dynamic/hovered-detach.html
+/sdcard/android/layout_tests/fast/dynamic/float-remove-above-line.html
+/sdcard/android/layout_tests/fast/dynamic/checkbox-selection-crash.html
+/sdcard/android/layout_tests/fast/dynamic/ancestor-to-absolute.html
+/sdcard/android/layout_tests/fast/dynamic/5872671.html
+/sdcard/android/layout_tests/fast/dom/Window/window-special-properties.html
+/sdcard/android/layout_tests/fast/dom/Window/window-resize-and-move-sub-frame.html
+/sdcard/android/layout_tests/fast/dom/Window/window-remove-event-listener.html
+/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing.html
+/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing-name.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-top.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-self.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-self-from-other-frame.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-parent.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-parent-no-parent.html
+/sdcard/android/layout_tests/fast/dom/Window/window-object-cross-frame-calls.html
+/sdcard/android/layout_tests/fast/dom/Window/window-location-replace-functions.html
+/sdcard/android/layout_tests/fast/dom/Window/window-function-frame-getter-precedence.html
+/sdcard/android/layout_tests/fast/dom/Window/window-custom-prototype-crash.html
+/sdcard/android/layout_tests/fast/dom/Window/window-closed-crash.html
+/sdcard/android/layout_tests/fast/dom/Window/window-appendages-cleared.html
+/sdcard/android/layout_tests/fast/dom/Window/setTimeout-no-arguments.html
+/sdcard/android/layout_tests/fast/dom/Window/global-opener-function.html
+/sdcard/android/layout_tests/fast/dom/Window/getMatchedCSSRules-null-crash.html
+/sdcard/android/layout_tests/fast/dom/Window/element-constructors-on-window.html
+/sdcard/android/layout_tests/fast/dom/Window/closure-access-after-navigation-iframe.html
+/sdcard/android/layout_tests/fast/dom/Window/attr-constructor.html
+/sdcard/android/layout_tests/fast/dom/Window/atob-btoa.html
+/sdcard/android/layout_tests/fast/dom/Window/alert-undefined.html
+/sdcard/android/layout_tests/fast/dom/TreeWalker/TreeWalker-currentNode.html
+/sdcard/android/layout_tests/fast/dom/Text/replaceWholeText.html
+/sdcard/android/layout_tests/fast/dom/StyleSheet/ownerNode-lifetime.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/viewless-document.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/not-supported-namespace-in-selector.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/id-fastpath.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/id-fastpath-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/id-fastpath-almost-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/elementRoot.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/dumpNodeList.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/dumpNodeList-almost-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/detached-element.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseTag.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseID.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseID-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseID-almost-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/bug-17313.html
+/sdcard/android/layout_tests/fast/dom/Range/range-processing-instructions.html
+/sdcard/android/layout_tests/fast/dom/Range/range-modifycontents.html
+/sdcard/android/layout_tests/fast/dom/Range/range-isPointInRange.html
+/sdcard/android/layout_tests/fast/dom/Range/range-intersectsNode.html
+/sdcard/android/layout_tests/fast/dom/Range/range-insertNode-splittext.html
+/sdcard/android/layout_tests/fast/dom/Range/range-insertNode-separate-endContainer.html
+/sdcard/android/layout_tests/fast/dom/Range/range-exceptions.html
+/sdcard/android/layout_tests/fast/dom/Range/range-comparePoint.html
+/sdcard/android/layout_tests/fast/dom/Range/range-compareNode.html
+/sdcard/android/layout_tests/fast/dom/Range/range-clone-empty.html
+/sdcard/android/layout_tests/fast/dom/Range/mutation.html
+/sdcard/android/layout_tests/fast/dom/Range/compareBoundaryPoints-2.html
+/sdcard/android/layout_tests/fast/dom/Range/compareBoundaryPoints-1.html
+/sdcard/android/layout_tests/fast/dom/Range/acid3-surround-contents.html
+/sdcard/android/layout_tests/fast/dom/Range/13000.html
+/sdcard/android/layout_tests/fast/dom/NodeList/item-by-id-with-no-document.html
+/sdcard/android/layout_tests/fast/dom/NodeList/invalidate-node-lists-when-parsing.html
+/sdcard/android/layout_tests/fast/dom/NodeList/childNodes-reset-cache.html
+/sdcard/android/layout_tests/fast/dom/NodeList/5725058-crash-scenario-3.html
+/sdcard/android/layout_tests/fast/dom/NodeList/5725058-crash-scenario-2.html
+/sdcard/android/layout_tests/fast/dom/NodeList/5725058-crash-scenario-1.html
+/sdcard/android/layout_tests/fast/dom/Node/initial-values.html
+/sdcard/android/layout_tests/fast/dom/Node/DOMNodeRemovedEvent.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableSectionElement/rows.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableRowElement/insertCell.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableRowElement/cells.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/tBodies.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/rows.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/insert-row.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/early-acid3-66-excerpt.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/early-acid3-65-excerpt.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/cellpadding-attribute.html
+/sdcard/android/layout_tests/fast/dom/HTMLSelectElement/options-collection-set-string-length.html
+/sdcard/android/layout_tests/fast/dom/HTMLSelectElement/options-collection-detached.html
+/sdcard/android/layout_tests/fast/dom/HTMLScriptElement/script-set-src.html
+/sdcard/android/layout_tests/fast/dom/HTMLScriptElement/script-reexecution.html
+/sdcard/android/layout_tests/fast/dom/HTMLScriptElement/script-load-events.html
+/sdcard/android/layout_tests/fast/dom/HTMLScriptElement/script-decoding-error-after-setting-src.html
+/sdcard/android/layout_tests/fast/dom/HTMLOptionElement/set-option-index-text.html
+/sdcard/android/layout_tests/fast/dom/HTMLOptionElement/option-text.html
+/sdcard/android/layout_tests/fast/dom/HTMLOptionElement/option-prototype.html
+/sdcard/android/layout_tests/fast/dom/HTMLObjectElement/form/test1.html
+/sdcard/android/layout_tests/fast/dom/HTMLMetaElement/meta-attributes.html
+/sdcard/android/layout_tests/fast/dom/HTMLLabelElement/form/test1.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/size-attribute.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/size-as-number.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/input-text-reset.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/input-hidden-value.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/input-checked-reset.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/checked-pseudo-selector.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-without-renderer-width.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-src-absolute-url.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-natural-width-height.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-lowsrc-getset.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-longdesc-absolute-url.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-loading-gc.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/constructor-mutation-event-dispatch.html
+/sdcard/android/layout_tests/fast/dom/HTMLHtmlElement/set-version.html
+/sdcard/android/layout_tests/fast/dom/HTMLHtmlElement/duplicate-html-element-crash.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/head-check.html
+/sdcard/android/layout_tests/fast/dom/HTMLFormElement/elements-not-in-document.html
+/sdcard/android/layout_tests/fast/dom/HTMLFontElement/size-attribute.html
+/sdcard/android/layout_tests/fast/dom/HTMLElement/set-inner-outer-optimization.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/writeln-multiple-calls.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/writeln-call.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/write-multiple-calls.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/write-call.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/url-getset.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/title-set.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/title-get.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/object-by-name-unknown-child-element.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/object-by-name-or-id.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-special-properties.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-plugins.html
+/sdcard/android/layout_tests/fast/dom/HTMLDivElement/align/getset.html
+/sdcard/android/layout_tests/fast/dom/HTMLButtonElement/value/getset.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/004.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/003.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/002.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/001.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/dumpNodeList.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/015.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/014.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/013.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/012.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/009.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/008.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/007.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/006.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/005.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/004.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/003.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/002.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/001.html
+/sdcard/android/layout_tests/fast/dom/EntityReference/readonly-exceptions.html
+/sdcard/android/layout_tests/fast/dom/Element/setAttribute-with-colon.html
+/sdcard/android/layout_tests/fast/dom/Element/setAttribute-case-insensitivity.html
+/sdcard/android/layout_tests/fast/dom/Element/onclick-case.html
+/sdcard/android/layout_tests/fast/dom/Element/offsetTop-table-cell.html
+/sdcard/android/layout_tests/fast/dom/Element/getAttribute-check-case-sensitivity.html
+/sdcard/android/layout_tests/fast/dom/Element/element-traversal.html
+/sdcard/android/layout_tests/fast/dom/Element/dimension-properties-unrendered.html
+/sdcard/android/layout_tests/fast/dom/Element/contains-method.html
+/sdcard/android/layout_tests/fast/dom/Element/attribute-uppercase.html
+/sdcard/android/layout_tests/fast/dom/Element/attr-param-typechecking.html
+/sdcard/android/layout_tests/fast/dom/DOMImplementation/createDocumentType-err.html
+/sdcard/android/layout_tests/fast/dom/DOMException/RangeException.html
+/sdcard/android/layout_tests/fast/dom/DOMException/prototype-object.html
+/sdcard/android/layout_tests/fast/dom/DOMException/EventException.html
+/sdcard/android/layout_tests/fast/dom/Document/title-property-set-multiple-times.html
+/sdcard/android/layout_tests/fast/dom/Document/title-property-creates-title-element.html
+/sdcard/android/layout_tests/fast/dom/Document/replaceChild-null-oldChild.html
+/sdcard/android/layout_tests/fast/dom/Document/replace-child.html
+/sdcard/android/layout_tests/fast/dom/Document/open-with-pending-load.html
+/sdcard/android/layout_tests/fast/dom/Document/document-reopen.html
+/sdcard/android/layout_tests/fast/dom/Document/document-charset.html
+/sdcard/android/layout_tests/fast/dom/Document/doc-open-while-parsing.html
+/sdcard/android/layout_tests/fast/dom/Document/createElementNS-namespace-err.html
+/sdcard/android/layout_tests/fast/dom/Document/createAttributeNS-namespace-err.html
+/sdcard/android/layout_tests/fast/dom/CSSStyleDeclaration/transition-property-names.html
+/sdcard/android/layout_tests/fast/dom/CSSStyleDeclaration/empty-string-property.html
+/sdcard/android/layout_tests/fast/dom/CSSStyleDeclaration/css-properties-case-sensitive.html
+/sdcard/android/layout_tests/fast/dom/XMLSerializer.html
+/sdcard/android/layout_tests/fast/dom/XMLSerializer-doctype2.html
+/sdcard/android/layout_tests/fast/dom/XMLSerializer-doctype.html
+/sdcard/android/layout_tests/fast/dom/xmlhttprequest-invalid-values.html
+/sdcard/android/layout_tests/fast/dom/xmlhttprequest-html-response-encoding.html
+/sdcard/android/layout_tests/fast/dom/wrapper-identity.html
+/sdcard/android/layout_tests/fast/dom/undetectable-style-filter.html
+/sdcard/android/layout_tests/fast/dom/undetectable-document-all.html
+/sdcard/android/layout_tests/fast/dom/title-text-property.html
+/sdcard/android/layout_tests/fast/dom/title-text-property-2.html
+/sdcard/android/layout_tests/fast/dom/timer-clear-interval-in-handler.html
+/sdcard/android/layout_tests/fast/dom/space-to-text.html
+/sdcard/android/layout_tests/fast/dom/setAttributeNS.html
+/sdcard/android/layout_tests/fast/dom/setAttribute-using-initial-input-value.html
+/sdcard/android/layout_tests/fast/dom/set-inner-text-newlines.html
+/sdcard/android/layout_tests/fast/dom/serialize-cdata.html
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex-multiple.html
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex-bug-12942.html
+/sdcard/android/layout_tests/fast/dom/script-element-without-frame-crash.html
+/sdcard/android/layout_tests/fast/dom/script-element-remove-self.html
+/sdcard/android/layout_tests/fast/dom/script-element-gc.html
+/sdcard/android/layout_tests/fast/dom/script-add.html
+/sdcard/android/layout_tests/fast/dom/resource-locations-in-created-html-document.html
+/sdcard/android/layout_tests/fast/dom/replace-first-child.html
+/sdcard/android/layout_tests/fast/dom/replace-child-siblings.html
+/sdcard/android/layout_tests/fast/dom/remove-style-element.html
+/sdcard/android/layout_tests/fast/dom/remove-named-attribute-crash.html
+/sdcard/android/layout_tests/fast/dom/Range-insertNode-crash.html
+/sdcard/android/layout_tests/fast/dom/prototypes.html
+/sdcard/android/layout_tests/fast/dom/prototype-chain.html
+/sdcard/android/layout_tests/fast/dom/plugin-attributes-enumeration.html
+/sdcard/android/layout_tests/fast/dom/outerText-no-element.html
+/sdcard/android/layout_tests/fast/dom/option-properties.html
+/sdcard/android/layout_tests/fast/dom/objc-big-method-name.html
+/sdcard/android/layout_tests/fast/dom/null-document-xmlhttprequest-open.html
+/sdcard/android/layout_tests/fast/dom/location-assign.html
+/sdcard/android/layout_tests/fast/dom/javascript-backslash.html
+/sdcard/android/layout_tests/fast/dom/innerHTML-nbsp.html
+/sdcard/android/layout_tests/fast/dom/innerHTML-escaping-attribute.html
+/sdcard/android/layout_tests/fast/dom/inner-width-height.html
+/sdcard/android/layout_tests/fast/dom/inner-text-with-no-renderer.html
+/sdcard/android/layout_tests/fast/dom/inner-text-rtl.html
+/sdcard/android/layout_tests/fast/dom/importNode-prefix.html
+/sdcard/android/layout_tests/fast/dom/importNode-null.html
+/sdcard/android/layout_tests/fast/dom/import-document-fragment.html
+/sdcard/android/layout_tests/fast/dom/import-attribute-node.html
+/sdcard/android/layout_tests/fast/dom/implementation-createHTMLDocument.html
+/sdcard/android/layout_tests/fast/dom/ImageDocument-image-deletion.html
+/sdcard/android/layout_tests/fast/dom/image-object.html
+/sdcard/android/layout_tests/fast/dom/iframe-document.html
+/sdcard/android/layout_tests/fast/dom/iframe-contentWindow-crash.html
+/sdcard/android/layout_tests/fast/dom/html-attribute-types.html
+/sdcard/android/layout_tests/fast/dom/getter-on-window-object2.html
+/sdcard/android/layout_tests/fast/dom/getter-on-window-object.html
+/sdcard/android/layout_tests/fast/dom/getelementbyname-invalidation.html
+/sdcard/android/layout_tests/fast/dom/generic-form-element-assert.html
+/sdcard/android/layout_tests/fast/dom/gc-7.html
+/sdcard/android/layout_tests/fast/dom/gc-6.html
+/sdcard/android/layout_tests/fast/dom/gc-5.html
+/sdcard/android/layout_tests/fast/dom/gc-4.html
+/sdcard/android/layout_tests/fast/dom/gc-3.html
+/sdcard/android/layout_tests/fast/dom/gc-2.html
+/sdcard/android/layout_tests/fast/dom/gc-11.html
+/sdcard/android/layout_tests/fast/dom/gc-1.html
+/sdcard/android/layout_tests/fast/dom/frame-contentWindow-crash.html
+/sdcard/android/layout_tests/fast/dom/features.html
+/sdcard/android/layout_tests/fast/dom/exception-no-frame-timeout-crash.html
+/sdcard/android/layout_tests/fast/dom/exception-no-frame-inline-script-crash.html
+/sdcard/android/layout_tests/fast/dom/everything-to-string.html
+/sdcard/android/layout_tests/fast/dom/element-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/early-frame-url.html
+/sdcard/android/layout_tests/fast/dom/duplicate-ids.html
+/sdcard/android/layout_tests/fast/dom/duplicate-ids-document-order.html
+/sdcard/android/layout_tests/fast/dom/DOMParser-assign-variable.html
+/sdcard/android/layout_tests/fast/dom/domListEnumeration.html
+/sdcard/android/layout_tests/fast/dom/dom-instanceof.html
+/sdcard/android/layout_tests/fast/dom/documenturi-loses-to-base-tag.html
+/sdcard/android/layout_tests/fast/dom/documenturi-assigned-junk-implies-relative-urls-do-not-resolve.html
+/sdcard/android/layout_tests/fast/dom/documenturi-assigned-junk-implies-baseuri-null.html
+/sdcard/android/layout_tests/fast/dom/documenturi-affects-relative-paths.html
+/sdcard/android/layout_tests/fast/dom/documentElement-null.html
+/sdcard/android/layout_tests/fast/dom/document-scripts.html
+/sdcard/android/layout_tests/fast/dom/document-dir-property.html
+/sdcard/android/layout_tests/fast/dom/document-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/document-all-select.html
+/sdcard/android/layout_tests/fast/dom/document-all-input.html
+/sdcard/android/layout_tests/fast/dom/dir-no-body.html
+/sdcard/android/layout_tests/fast/dom/destroy-selected-radio-button-crash.html
+/sdcard/android/layout_tests/fast/dom/defaultView.html
+/sdcard/android/layout_tests/fast/dom/css-shortHands.html
+/sdcard/android/layout_tests/fast/dom/css-set-property-exception.html
+/sdcard/android/layout_tests/fast/dom/css-selectorText.html
+/sdcard/android/layout_tests/fast/dom/css-RGBValue.html
+/sdcard/android/layout_tests/fast/dom/css-mediarule-functions.html
+/sdcard/android/layout_tests/fast/dom/css-element-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/css-dom-read.html
+/sdcard/android/layout_tests/fast/dom/css-dom-read-2.html
+/sdcard/android/layout_tests/fast/dom/createElementNS.html
+/sdcard/android/layout_tests/fast/dom/createElement.html
+/sdcard/android/layout_tests/fast/dom/createElement-with-column.xml
+/sdcard/android/layout_tests/fast/dom/createElement-with-column.html
+/sdcard/android/layout_tests/fast/dom/createDocumentType2.html
+/sdcard/android/layout_tests/fast/dom/createDocument.html
+/sdcard/android/layout_tests/fast/dom/createDocument-empty.html
+/sdcard/android/layout_tests/fast/dom/createAttribute-exception.html
+/sdcard/android/layout_tests/fast/dom/constructors-overriding.html
+/sdcard/android/layout_tests/fast/dom/constants.html
+/sdcard/android/layout_tests/fast/dom/computed-style-set-property.html
+/sdcard/android/layout_tests/fast/dom/compatMode-Strict.html
+/sdcard/android/layout_tests/fast/dom/compatMode-Compat.html
+/sdcard/android/layout_tests/fast/dom/compatMode-AlmostStrict.html
+/sdcard/android/layout_tests/fast/dom/comment-dom-node.html
+/sdcard/android/layout_tests/fast/dom/comment-document-fragment.html
+/sdcard/android/layout_tests/fast/dom/collection-null-like-arguments.html
+/sdcard/android/layout_tests/fast/dom/collection-namedItem-via-item.html
+/sdcard/android/layout_tests/fast/dom/clone-node-style.html
+/sdcard/android/layout_tests/fast/dom/clone-node-form-elements.html
+/sdcard/android/layout_tests/fast/dom/clone-node-form-elements-with-attr.html
+/sdcard/android/layout_tests/fast/dom/class-all-whitespace.html
+/sdcard/android/layout_tests/fast/dom/capturing-event-listeners.html
+/sdcard/android/layout_tests/fast/dom/canvasContext2d-element-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/background-shorthand-csstext.html
+/sdcard/android/layout_tests/fast/dom/attribute-namespaces-get-set.html
+/sdcard/android/layout_tests/fast/dom/attribute-empty-value-no-children.html
+/sdcard/android/layout_tests/fast/dom/attribute-downcast-right.html
+/sdcard/android/layout_tests/fast/dom/attribute-case-sensitivity.html
+/sdcard/android/layout_tests/fast/dom/array-special-accessors-should-ignore-items.html
+/sdcard/android/layout_tests/fast/dom/anchor-toString.html
+/sdcard/android/layout_tests/fast/dom/anchor-backslash.html
+/sdcard/android/layout_tests/fast/doctypes/html-doctype.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-parsing.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-in-element.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-at-end.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-after-comment.html
+/sdcard/android/layout_tests/fast/doctypes/005-case-preserving.html
+/sdcard/android/layout_tests/fast/css-generated-content/reset-content-to-initial.html
+/sdcard/android/layout_tests/fast/css-generated-content/empty-content-with-float-crash.html
+/sdcard/android/layout_tests/fast/css/variables/invalid-identifier.html
+/sdcard/android/layout_tests/fast/css/counters/counter-number-input.html
+/sdcard/android/layout_tests/fast/css/counters/counter-function-input.html
+/sdcard/android/layout_tests/fast/css/counters/counter-function-input-2.html
+/sdcard/android/layout_tests/fast/css/word-break-user-modify-allowed-values.html
+/sdcard/android/layout_tests/fast/css/transition_shorthand_parsing.html
+/sdcard/android/layout_tests/fast/css/transition-timing-function.html
+/sdcard/android/layout_tests/fast/css/transform-function-lowercase-assert.html
+/sdcard/android/layout_tests/fast/css/stale-style-selector-crash-2.html
+/sdcard/android/layout_tests/fast/css/stale-style-selector-crash-1.html
+/sdcard/android/layout_tests/fast/css/sheet-title.html
+/sdcard/android/layout_tests/fast/css/remove-shorthand.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-005.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-004.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-003.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-002.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-001.html
+/sdcard/android/layout_tests/fast/css/pseudostyle-anonymous-text.html
+/sdcard/android/layout_tests/fast/css/parse-timing-function-crash.html
+/sdcard/android/layout_tests/fast/css/padding-no-renderer.html
+/sdcard/android/layout_tests/fast/css/overflow-property.html
+/sdcard/android/layout_tests/fast/css/outline-hidden-illegal-value.html
+/sdcard/android/layout_tests/fast/css/orphaned_units_crash.html
+/sdcard/android/layout_tests/fast/css/nested-rule-parent-sheet.html
+/sdcard/android/layout_tests/fast/css/min-device-aspect-ratio.html
+/sdcard/android/layout_tests/fast/css/media-rule-dyn.html
+/sdcard/android/layout_tests/fast/css/max-height-and-max-width.html
+/sdcard/android/layout_tests/fast/css/max-device-aspect-ratio.html
+/sdcard/android/layout_tests/fast/css/legacy-opacity-styles.html
+/sdcard/android/layout_tests/fast/css/invalid-rule-value.html
+/sdcard/android/layout_tests/fast/css/invalid-cursor-property-crash.html
+/sdcard/android/layout_tests/fast/css/insertRule-media.html
+/sdcard/android/layout_tests/fast/css/insertRule-font-face.html
+/sdcard/android/layout_tests/fast/css/import-style-update.html
+/sdcard/android/layout_tests/fast/css/hexColor-isDigit-assert.html
+/sdcard/android/layout_tests/fast/css/getPropertyValue-clip.html
+/sdcard/android/layout_tests/fast/css/getPropertyValue-border.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-zIndex-auto.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-relayout.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-borderRadius.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-border-spacing.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-border-image.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-border-box.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-background-size.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-background-position.html
+/sdcard/android/layout_tests/fast/css/font-property-priority.html
+/sdcard/android/layout_tests/fast/css/font-family-initial.html
+/sdcard/android/layout_tests/fast/css/font-face-multiple-families.html
+/sdcard/android/layout_tests/fast/css/font-face-descriptor-multiple-values-parsing.html
+/sdcard/android/layout_tests/fast/css/emptyStyleTag.html
+/sdcard/android/layout_tests/fast/css/empty-script.html
+/sdcard/android/layout_tests/fast/css/display-none-inline-style-change-crash.html
+/sdcard/android/layout_tests/fast/css/device-aspect-ratio.html
+/sdcard/android/layout_tests/fast/css/dashboard-regions-attr-crash.html
+/sdcard/android/layout_tests/fast/css/CSSPrimitiveValue-exceptions.html
+/sdcard/android/layout_tests/fast/css/css-selector-text.html
+/sdcard/android/layout_tests/fast/css/css-properties-case-insensitive.html
+/sdcard/android/layout_tests/fast/css/computed-style-negative-top.html
+/sdcard/android/layout_tests/fast/css/computed-style-display-none.html
+/sdcard/android/layout_tests/fast/css/child-selector-implicit-tbody.html
+/sdcard/android/layout_tests/fast/css/case-transform.html
+/sdcard/android/layout_tests/fast/css/border-image-crash.html
+/sdcard/android/layout_tests/fast/css/background-position-serialize.html
+/sdcard/android/layout_tests/fast/css/background-position-inherit.html
+/sdcard/android/layout_tests/fast/css/background-currentcolor.html
+/sdcard/android/layout_tests/fast/cookies/local-file-can-set-cookies.html
+/sdcard/android/layout_tests/fast/canvas/unclosed-canvas-4.html
+/sdcard/android/layout_tests/fast/canvas/unclosed-canvas-3.html
+/sdcard/android/layout_tests/fast/canvas/unclosed-canvas-2.html
+/sdcard/android/layout_tests/fast/canvas/unclosed-canvas-1.html
+/sdcard/android/layout_tests/fast/canvas/toDataURL-noData.html
+/sdcard/android/layout_tests/fast/canvas/script-inside-canvas-fallback.html
+/sdcard/android/layout_tests/fast/canvas/radialGradient-infinite-values.html
+/sdcard/android/layout_tests/fast/canvas/pointInPath.html
+/sdcard/android/layout_tests/fast/canvas/linearGradient-infinite-values.html
+/sdcard/android/layout_tests/fast/canvas/pattern-with-transform.html
+/sdcard/android/layout_tests/fast/canvas/gradient-with-clip.html
+/sdcard/android/layout_tests/fast/canvas/gradient-addColorStop-with-invalid-color.html
+/sdcard/android/layout_tests/fast/canvas/drawImage-with-negative-source-destination.html
+/sdcard/android/layout_tests/fast/canvas/drawImage-with-invalid-args.html
+/sdcard/android/layout_tests/fast/canvas/create-pattern-does-not-crash.html
+/sdcard/android/layout_tests/fast/canvas/canvas-with-incorrect-args.html
+/sdcard/android/layout_tests/fast/canvas/canvas-putImageData.html
+/sdcard/android/layout_tests/fast/canvas/canvas-pattern-behaviour.html
+/sdcard/android/layout_tests/fast/canvas/canvas-path-with-inf-nan-dimensions.html
+/sdcard/android/layout_tests/fast/canvas/canvas-invalid-strokestyle.html
+/sdcard/android/layout_tests/fast/canvas/canvas-invalid-fillstyle.html
+/sdcard/android/layout_tests/fast/canvas/canvas-ImageData-behaviour.html
+/sdcard/android/layout_tests/fast/canvas/canvas-hides-fallback.html
+/sdcard/android/layout_tests/fast/canvas/arc-crash.html
+/sdcard/android/layout_tests/fast/canvas/access-zero-sized-canvas.html
diff --git a/tests/DumpRenderTree/run_layout_tests.py b/tests/DumpRenderTree/run_layout_tests.py
new file mode 100755
index 0000000..b4eb685
--- /dev/null
+++ b/tests/DumpRenderTree/run_layout_tests.py
@@ -0,0 +1,176 @@
+#!/usr/bin/python
+
+"""Run layout tests using Android emulator and instrumentation.
+
+ First, you need to get an SD card or sdcard image that has layout tests on it.
+ Layout tests are in following directory:
+ /sdcard/android/layout_tests
+ For example, /sdcard/android/layout_tests/fast
+
+ Usage:
+ Run all tests under fast/ directory:
+ run_layout_tests.py, or
+ run_layout_tests.py fast
+
+ Run all tests under a sub directory:
+ run_layout_tests.py fast/dom
+
+ Run a single test:
+ run_layout_tests.py fast/dom/
+
+ After a merge, if there are changes of layout tests in SD card, you need to
+ use --refresh-test-list option *once* to re-generate test list on the card.
+
+ Some other options are:
+ --time-out-ms (default is 8000 millis) for each test
+ --adb-options="-e" passes option string to adb
+ --results-directory=..., (default is ./layout-test-results) directory name under which results are stored.
+"""
+
+import logging
+import optparse
+import os
+import subprocess
+import sys
+import time
+
+def CountLineNumber(filename):
+ """Compute the number of lines in a given file.
+
+ Args:
+ filename: a file name related to the current directory.
+ """
+
+ fp = open(os.path.abspath(filename), "r");
+ lines = 0
+ for line in fp.readlines():
+ lines = lines + 1
+ fp.close()
+ return lines
+
+def main(options, args):
+ """Run the tests. Will call sys.exit when complete.
+
+ Args:
+ options: a dictionary of command line options
+ args: a list of sub directories or files to test
+ """
+
+ # Set up logging format.
+ log_level = logging.INFO
+ if options.verbose:
+ log_level = logging.DEBUG
+ logging.basicConfig(level=log_level,
+ format='%(message)s')
+
+ # Include all tests if none are specified.
+ if not args:
+ path = 'fast';
+ else:
+ path = ' '.join(args);
+
+ adb_cmd = "adb ";
+ if options.adb_options:
+ adb_cmd += options.adb_options
+
+ # Re-generate the test list if --refresh-test-list is on
+ if options.refresh_test_list:
+ logging.info("Generating test list.");
+ shell_cmd_str = adb_cmd + " shell am instrument -e class com.android.dumprendertree.LayoutTestsAutoTest#generateTestList -e path fast -w com.android.dumprendertree/.LayoutTestsAutoRunner"
+ adb_output = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
+
+ if adb_output.find('Process crashed') != -1:
+ logging.info("Aborting because cannot generate test list.\n" + adb_output)
+ sys.exit(1)
+
+
+ logging.info("Starting tests")
+
+ # Count crashed tests.
+ crashed_tests = []
+
+ timeout_ms = '8000'
+ if options.time_out_ms:
+ timeout_ms = options.time_out_ms
+
+ # Run test until it's done
+
+ # Call LayoutTestsAutoTest::startLayoutTests.
+ shell_cmd_str = adb_cmd + " shell am instrument -e class com.android.dumprendertree.LayoutTestsAutoTest#startLayoutTests -e path \"" + path + "\" -e timeout " + timeout_ms + " -w com.android.dumprendertree/.LayoutTestsAutoRunner"
+ adb_output = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
+ while adb_output.find('Process crashed') != -1:
+ # Get the running_test.txt
+ logging.error("DumpRenderTree crashed, output:\n" + adb_output)
+
+ shell_cmd_str = adb_cmd + " shell cat /sdcard/running_test.txt"
+ crashed_test = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE).communicate()[0]
+
+ logging.info(crashed_test + " CRASHED");
+ crashed_tests.append(crashed_test);
+
+ logging.info("Resuming layout test runner...");
+ # Call LayoutTestsAutoTest::resumeLayoutTests
+ shell_cmd_str = adb_cmd + " shell am instrument -e class com.android.dumprendertree.LayoutTestsAutoTest#resumeLayoutTests -e path \"" + path + "\" -e timeout " + timeout_ms + " -w com.android.dumprendertree/.LayoutTestsAutoRunner"
+
+ adb_output = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
+
+ if adb_output.find('INSTRUMENTATION_FAILED') != -1:
+ logging.error("Error happened : " + adb_output)
+ sys.exit(1)
+
+ logging.info("Done");
+ logging.debug(adb_output);
+
+ # Pull results from /sdcard
+ results_dir = options.results_directory
+ if not os.path.exists(results_dir):
+ os.makedirs(results_dir)
+ if not os.path.isdir(results_dir):
+ logging.error("Cannot create results dir: " + results_dir);
+ sys.exit(1);
+
+ result_files = ["/sdcard/layout_tests_passed.txt",
+ "/sdcard/layout_tests_failed.txt",
+ "/sdcard/layout_tests_nontext.txt"]
+ for file in result_files:
+ shell_cmd_str = adb_cmd + " pull " + file + " " + results_dir
+ adb_output = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
+ logging.debug(adb_output)
+
+ # Create the crash list.
+ fp = open(results_dir + "/layout_tests_crashed.txt", "w");
+ fp.writelines(crashed_tests)
+ fp.close()
+
+ # Count the number of tests in each category.
+ passed_tests = CountLineNumber(results_dir + "/layout_tests_passed.txt")
+ logging.info(str(passed_tests) + " passed")
+ failed_tests = CountLineNumber(results_dir + "/layout_tests_failed.txt")
+ logging.info(str(failed_tests) + " failed")
+ crashed_tests = CountLineNumber(results_dir + "/layout_tests_crashed.txt")
+ logging.info(str(crashed_tests) + " crashed")
+ nontext_tests = CountLineNumber(results_dir + "/layout_tests_nontext.txt")
+ logging.info(str(nontext_tests) + " no dumpAsText")
+
+ logging.info("Results are stored under: " + results_dir)
+
+
+if '__main__' == __name__:
+ option_parser = optparse.OptionParser()
+ option_parser.add_option("", "--time-out-ms",
+ default=None,
+ help="set the timeout for each test")
+ option_parser.add_option("", "--verbose", action="store_true",
+ default=False,
+ help="include debug-level logging")
+ option_parser.add_option("", "--refresh-test-list", action="store_true",
+ default=False,
+ help="re-generate test list, it may take some time.")
+ option_parser.add_option("", "--adb-options",
+ default=None,
+ help="pass options to adb, such as -d -e, etc");
+ option_parser.add_option("", "--results-directory",
+ default="layout-test-results",
+ help="directory name under which results are stored.")
+ options, args = option_parser.parse_args();
+ main(options, args)
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java b/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
index 91597d5..9be33db 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/FileFilter.java
@@ -24,13 +24,19 @@ public class FileFilter {
public static boolean ignoreTest(String file) {
// treat files like directories for the time being.
- int size = ignoreTestList.length;
- for (int i = 0; i < size; i ++) {
- if (file.startsWith(ignoreTestList[i])) {
+ for (int i = 0; i < ignoreTestList.length; i ++) {
+ if (file.endsWith(ignoreTestList[i])) {
Log.e("FileFilter", "File path in IgnoreTest: " + file);
return true;
}
}
+ for (int i = 0; i < ignoreTestDirs.length; i++) {
+ if (file.endsWith(ignoreTestDirs[i])) {
+ Log.e("FileFilter", "File path in ignore list: " + file);
+ return true;
+ }
+ }
+
return false;
}
@@ -64,8 +70,8 @@ public class FileFilter {
fillIgnoreResultSet();
fillBugTable();
}
-
- static final String [] ignoreTestList = {
+
+ static final String[] ignoreTestDirs = {
".", // ignore hidden directories and files
"resources", // ignore resource directories
"AppleScript", // AppleScript not supported
@@ -73,13 +79,16 @@ public class FileFilter {
"xsl", //xsl requires libxml2 & libxslt, not sup.
"kde", // don't run kde tests.
".svn", // don't run anything under .svn folder
- "gradients", //known crash
+ "gradients", // known crash
+ "profiler" // profiler is not supported
+ };
+
+ static final String [] ignoreTestList = {
"toString-stack-overflow.html", // Crashes #606688
"frame-limit.html", // generates too many GREFs
"css-insert-import-rule.html", // Crashes, #717414
"input-text-enter.html", // Crashes. #735088
"text-shadow-extreme-value.html", // Crashes #571671
- "001.html",
"reflection-masks.html",
"frame-creation-removal.html",
"large-expressions.html",
@@ -203,6 +212,8 @@ public class FileFilter {
ignoreResultList.add("fast/loader/local-iFrame-source-from-local.html");
// extra spacing because iFrames rendered next to each other on Apple
ignoreResultList.add("fast/loader/opaque-base-url.html");
+ // RegExp is too large, causing OOM
+ ignoreResultList.add("fast/js/regexp-charclass-crash.html");
ignoreResultList.add("fast/text/plain-text-line-breaks.html");
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java b/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java
index 8b33d16..d685f5d 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/FileList.java
@@ -117,9 +117,14 @@ public abstract class FileList extends ListActivity
{
Map map = (Map) l.getItemAtPosition(position);
String path = (String)map.get("path");
- if (path.length() > 0)
- processFile(path, true);
+ if ((new File(path)).isDirectory()) {
+ mPath = path;
+ mFocusFile = null;
+ updateList();
+ } else {
+ processFile(path, false);
+ }
}
/*
@@ -148,7 +153,7 @@ public abstract class FileList extends ListActivity
protected void setupPath()
{
- mPath = "/sdcard";
+ mPath = "/sdcard/android/layout_tests";
mBaseLength = mPath.length();
}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/HTMLHostActivity.java b/tests/DumpRenderTree/src/com/android/dumprendertree/HTMLHostActivity.java
index 9521f80..c77d98a 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/HTMLHostActivity.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/HTMLHostActivity.java
@@ -16,14 +16,16 @@
package com.android.dumprendertree;
+import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
+import java.io.FileReader;
import java.io.IOException;
+import java.util.List;
import java.util.Vector;
-import java.util.Stack;
import android.app.Activity;
import android.content.Intent;
@@ -38,14 +40,12 @@ import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.os.*;
-import android.test.TestRecorder;
-// SQLite3 in android has a bunch of bugs which
-// is causing TestRecorder to not record the results
-// properly. This class is a wrapper around it and records
-// results in a file as well.
-class TestRecorderV2 extends TestRecorder {
- @Override
+// TestRecorder creates two files, one for passing tests
+// and another for failing tests and writes the paths to
+// layout tests one line at a time. TestRecorder does not
+// have ability to clear the results.
+class TestRecorder {
public void passed(String layout_file) {
try {
mBufferedOutputPassedStream.write(layout_file.getBytes());
@@ -54,72 +54,68 @@ class TestRecorderV2 extends TestRecorder {
} catch(Exception e) {
e.printStackTrace();
}
- super.passed(layout_file);
}
- @Override
public void failed(String layout_file, String reason) {
try {
mBufferedOutputFailedStream.write(layout_file.getBytes());
+ mBufferedOutputFailedStream.write(" : ".getBytes());
+ mBufferedOutputFailedStream.write(reason.getBytes());
mBufferedOutputFailedStream.write('\n');
mBufferedOutputFailedStream.flush();
} catch(Exception e) {
e.printStackTrace();
}
- super.failed(layout_file, reason);
}
- public TestRecorderV2() {
- super();
+ public void nontext(String layout_file) {
+ try {
+ mBufferedOutputNontextStream.write(layout_file.getBytes());
+ mBufferedOutputNontextStream.write('\n');
+ mBufferedOutputNontextStream.flush();
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public TestRecorder(boolean resume) {
try {
- File resultsPassedFile = new File("/sdcard/layout_test_presults.txt");
- File resultsFailedFile = new File("/sdcard/layout_test_fresults.txt");
+ File resultsPassedFile = new File("/sdcard/layout_tests_passed.txt");
+ File resultsFailedFile = new File("/sdcard/layout_tests_failed.txt");
+ File resultsNontextFile = new File("/sdcard/layout_tests_nontext.txt");
mBufferedOutputPassedStream =
- new BufferedOutputStream(new FileOutputStream(resultsPassedFile, true));
+ new BufferedOutputStream(new FileOutputStream(resultsPassedFile, resume));
mBufferedOutputFailedStream =
- new BufferedOutputStream(new FileOutputStream(resultsFailedFile, true));
-
+ new BufferedOutputStream(new FileOutputStream(resultsFailedFile, resume));
+ mBufferedOutputNontextStream =
+ new BufferedOutputStream(new FileOutputStream(resultsNontextFile, resume));
} catch (Exception e) {
e.printStackTrace();
}
}
-
- protected void finalize() throws Throwable {
- mBufferedOutputPassedStream.flush();
- mBufferedOutputFailedStream.flush();
- mBufferedOutputPassedStream.close();
- mBufferedOutputFailedStream.close();
- }
- private static BufferedOutputStream mBufferedOutputPassedStream;
- private static BufferedOutputStream mBufferedOutputFailedStream;
+ public void close() {
+ try {
+ mBufferedOutputPassedStream.close();
+ mBufferedOutputFailedStream.close();
+ mBufferedOutputNontextStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ private BufferedOutputStream mBufferedOutputPassedStream;
+ private BufferedOutputStream mBufferedOutputFailedStream;
+ private BufferedOutputStream mBufferedOutputNontextStream;
}
public class HTMLHostActivity extends Activity
implements LayoutTestController {
-
- private TestRecorderV2 mResultRecorder = new TestRecorderV2();
- private HTMLHostCallbackInterface mCallback = null;
- private CallbackProxy mCallbackProxy;
-
- public class FileEntry {
- public FileEntry(String path, int index) {
- mPath = path; mIndex=index;
- }
- String mPath;
- int mIndex;
- }
public class AsyncHandler extends Handler {
@Override
public void handleMessage(Message msg) {
- if (msg.what == MSG_DUMP) {
- this.removeMessages(MSG_TIMEOUT);
- mTimedOut = false;
- requestWebKitData();
- return;
- } else if (msg.what == MSG_TIMEOUT) {
+ if (msg.what == MSG_TIMEOUT) {
mTimedOut = true;
requestWebKitData();
return;
@@ -127,21 +123,24 @@ public class HTMLHostActivity extends Activity
HTMLHostActivity.this.dump(mTimedOut, (String)msg.obj);
return;
}
-
+
super.handleMessage(msg);
}
+ }
- void requestWebKitData() {
- Message callback = obtainMessage(MSG_WEBKIT_DATA);
- if (dumpAsText) {
- mWebView.documentAsText(callback);
- } else {
- mWebView.externalRepresentation(callback);
- }
+ public void requestWebKitData() {
+ Message callback = mHandler.obtainMessage(MSG_WEBKIT_DATA);
+
+ if (mRequestedWebKitData)
+ throw new AssertionError("Requested webkit data twice: " + mWebView.getUrl());
+
+ mRequestedWebKitData = true;
+ if (mDumpAsText) {
+ mWebView.documentAsText(callback);
+ } else {
+ mWebView.externalRepresentation(callback);
}
-
}
-
// Activity methods
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -153,8 +152,9 @@ public class HTMLHostActivity extends Activity
mWebView = new WebView(this);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(mChromeClient);
- eventSender = new WebViewEventSender(mWebView);
- mCallbackProxy = new CallbackProxy(eventSender, this);
+ mEventSender = new WebViewEventSender(mWebView);
+ mCallbackProxy = new CallbackProxy(mEventSender, this);
+ mFinishedRunning = false;
mWebView.addJavascriptInterface(mCallbackProxy, "layoutTestController");
mWebView.addJavascriptInterface(mCallbackProxy, "eventSender");
@@ -168,32 +168,99 @@ public class HTMLHostActivity extends Activity
super.onRestoreInstanceState(savedInstanceState);
}
+ private void getTestList() {
+ // Read test list.
+ try {
+ BufferedReader inReader = new BufferedReader(new FileReader(LAYOUT_TESTS_LIST_FILE));
+ String line = inReader.readLine();
+ while (line != null) {
+ if (line.startsWith(mTestPathPrefix))
+ mTestList.add(line);
+ line = inReader.readLine();
+ }
+ inReader.close();
+ Log.v(LOGTAG, "Test list has " + mTestList.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 stoped last time.
+ try {
+ BufferedReader inReader = new BufferedReader(new FileReader(TEST_STATUS_FILE));
+ String line = inReader.readLine();
+ 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);
+ }
+ }
+
+ 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 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);
+ }
+ }
+
protected void onResume() {
super.onResume();
- if (mProcessStack == null || mProcessStack.isEmpty() ) {
- mOutstandingLoads = 0;
- dumpAsText = false;
- pageComplete = false;
-
- mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
-
- mFinishedStack = new Stack();
-
+ if (mTestList == null)
+ mTestList = new Vector<String>();
+
+ if (mTestList.isEmpty()) {
+ // Read settings
Intent intent = getIntent();
- if (intent.getData() != null) {
- File f = new File(intent.getData().toString());
-
- if (f.isDirectory()) {
- mProcessStack = new Vector();
- mProcessStack.add(new FileEntry(intent.getData().toString(), 0));
- Log.v(LOGTAG, "Initial dir: "+intent.getData().toString());
- loadNextPage();
- } else {
- mCurrentFile = intent.getData().toString();
- mWebView.loadUrl("file://"+intent.getData().toString());
- }
+ mTestPathPrefix = intent.getStringExtra(TEST_PATH_PREFIX);
+ mSingleTestMode = intent.getBooleanExtra(SINGLE_TEST_MODE, false);
+ boolean resume = intent.getBooleanExtra(RESUME_FROM_CRASH, false);
+ mTimeoutInMillis = intent.getIntExtra(TIMEOUT_IN_MILLIS, 8000);
+
+ mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
+
+ if (mTestPathPrefix == null)
+ throw new AssertionError("mTestPathPrefix cannot be null");
+
+ Log.v(LOGTAG, "Run tests with prefix: " + mTestPathPrefix);
+ mResultRecorder = new TestRecorder(resume);
+
+ if (!resume)
+ clearTestStatus();
+
+ if (!mSingleTestMode) {
+ getTestList();
+ if (resume)
+ resumeTestList();
+ } else {
+ mTestList.add(mTestPathPrefix);
}
+
+ if (!mTestList.isEmpty())
+ runTestAtIndex(0);
else
mWebView.loadUrl("about:");
}
@@ -206,9 +273,17 @@ public class HTMLHostActivity extends Activity
protected void onDestroy() {
super.onDestroy();
+ mResultRecorder.close();
mWebView.destroy();
mWebView = null;
}
+
+ public void onLowMemory() {
+ super.onLowMemory();
+ // Simulate a crash
+ Log.e(LOGTAG, "Low memory, killing self");
+ System.exit(1);
+ }
public boolean dispatchKeyEvent(KeyEvent event) {
// Log key strokes as they don't seem to be matched
@@ -216,82 +291,51 @@ public class HTMLHostActivity extends Activity
return super.dispatchKeyEvent(event);
}
- // Functions
-
- protected void loadNextPage() {
- dumpAsText = false;
- pageComplete = false;
- dumpTitleChanges = false;
- eventSender.resetMouse();
- while (!mProcessStack.isEmpty()) {
- FileEntry fe = (FileEntry)mProcessStack.remove(0);
- if (fe.mIndex == 0) {
- System.out.println();
- System.out.print(fe.mPath);
- }
- Log.v(LOGTAG, "Processing dir: "+fe.mPath+" size: "+mProcessStack.size());
- File f = new File(fe.mPath);
- String [] files = f.list();
- for (int i = fe.mIndex; i < files.length; i++) {
- if (FileFilter.ignoreTest(files[i])) {
- continue;
- }
- File c = new File(f.getPath(), files[i]);
- if (c.isDirectory()) {
- Log.v(LOGTAG, "Adding dir: "+fe.mPath+"/"+files[i]);
- mProcessStack.add(new FileEntry(fe.mPath+"/"+files[i], 0));
- } else if (files[i].toLowerCase().endsWith("ml")) {
- mProcessStack.add(0, new FileEntry(fe.mPath, i+1));
- mCurrentFile = fe.mPath+"/"+files[i];
- Log.e(LOGTAG, "Processing: "+mCurrentFile);
- mWebView.loadUrl("file://"+mCurrentFile);
-
- // Create a timeout timer
- Message m = mHandler.obtainMessage(MSG_TIMEOUT);
- // Some tests can take up to 5secs to run.
- mHandler.sendMessageDelayed(m, 6000);
- return;
- }
- }
- Log.v(LOGTAG, "Finished dir: "+fe.mPath+" size: "+mProcessStack.size());
- }
- // If we got to here, then we must have finished completely
- finished();
- }
-
- public void scheduleDump() {
- // Only schedule if we really are ready
- if (waitToDump || mOutstandingLoads > 0 || mDumpRequested) {
+ // Run a test at specified index in the test list.
+ // Stops activity if run out of tests.
+ protected void runTestAtIndex(int testIndex) {
+ mTestIndex = testIndex;
+
+ resetTestStatus();
+
+ if (testIndex == mTestList.size()) {
+ finished();
return;
}
- mDumpRequested = true;
- mHandler.obtainMessage(MSG_DUMP).sendToTarget();
+ String s = mTestList.elementAt(testIndex);
+ if (!mSingleTestMode)
+ updateTestStatus(s);
+
+ Log.v(LOGTAG, " Running test: "+s);
+ mWebView.loadUrl("file://"+s);
+
+ if (!mSingleTestMode) {
+ // Create a timeout timer
+ Message m = mHandler.obtainMessage(MSG_TIMEOUT);
+ mHandler.sendMessageDelayed(m, mTimeoutInMillis);
+ }
}
-
+
// Dump the page
public void dump(boolean timeout, String webkitData) {
- mDumpRequested = false;
- System.out.print('.');
-
- // remove the extension
- String resultFile = mCurrentFile.substring(0, mCurrentFile.lastIndexOf('.'));
-
- // store the finished file on the stack so that we can do a diff at the end.
- mFinishedStack.push(resultFile);
+ String currentTest = mTestList.elementAt(mTestIndex);
+ String resultFile = currentTest.substring(0, currentTest.lastIndexOf('.'));
// dumpAsText version can be directly compared to expected results
- if (dumpAsText) {
+ if (mDumpAsText) {
resultFile += "-results.txt";
} else {
resultFile += "-android-results.txt";
}
+
try {
FileOutputStream os = new FileOutputStream(resultFile);
if (timeout) {
- Log.i("Layout test: Timeout", resultFile);
- os.write("**Test timeout\n".getBytes());
+ Log.w("Layout test: Timeout", resultFile);
+ os.write(TIMEOUT_STR.getBytes());
+ os.write('\n');
}
- if (dumpTitleChanges)
+ if (mDumpTitleChanges)
os.write(mTitleChanges.toString().getBytes());
if (mDialogStrings != null)
os.write(mDialogStrings.toString().getBytes());
@@ -305,18 +349,15 @@ public class HTMLHostActivity extends Activity
ex.printStackTrace();
}
- if (mProcessStack != null)
- loadNextPage();
- else
- finished();
+ processResult(timeout, currentTest);
+ runTestAtIndex(mTestIndex + 1);
}
// Wrap up
public void failedCase(String file, String reason) {
- Log.i("Layout test:", file + " failed" + reason);
+ Log.w("Layout test: ", file + " failed " + reason);
mResultRecorder.failed(file, reason);
-
- file = file + ".html";
+
String bugNumber = FileFilter.isKnownBug(file);
if (bugNumber != null) {
System.out.println("FAIL known:"+bugNumber+ " "+file+reason);
@@ -327,13 +368,11 @@ public class HTMLHostActivity extends Activity
}
System.out.println("FAIL: "+file+reason);
}
-
+
public void passedCase(String file) {
- // Add the result to the sqlite database
- Log.i("Layout test:", file + " passed");
+ Log.v("Layout test:", file + " passed");
mResultRecorder.passed(file);
- file = file + ".html";
String bugNumber = FileFilter.isKnownBug(file);
if (bugNumber != null) {
System.out.println("Bug Fixed: "+bugNumber+ " "+file);
@@ -345,90 +384,105 @@ public class HTMLHostActivity extends Activity
return;
}
}
+
+ public void nontextCase(String file) {
+ Log.v("Layout test:", file + " nontext");
+ mResultRecorder.nontext(file);
+ }
public void setCallback(HTMLHostCallbackInterface callback) {
mCallback = callback;
}
-
- public void finished() {
- int passed = 0;
- while (!mFinishedStack.empty()) {
- Log.v(LOGTAG, "Comparing dump and reference");
- String file = (String)mFinishedStack.pop();
-
- // Only check results that we can check, ie dumpAsText results
- String dumpFile = file + "-results.txt";
- File f = new File(dumpFile);
- if (f.exists()) {
- try {
- FileInputStream fr = new FileInputStream(file+"-results.txt");
- FileInputStream fe = new FileInputStream(file+"-expected.txt");
-
- mResultRecorder.started(file);
-
- // If the length is different then they are different
- int diff = fe.available() - fr.available();
- if (diff > 1 || diff < 0) {
- failedCase(file, " different length");
- fr.close();
- fe.close();
-
- mResultRecorder.finished(file);
- continue;
- }
- byte[] br = new byte[fr.available()];
- byte[] be = new byte[fe.available()];
- fr.read(br);
- fe.read(be);
- boolean fail = false;
- for (int i = 0; i < br.length; i++) {
- if (br[i] != be[i]) {
- failedCase(file, " @offset: "+i);
- fail = true;
- break;
- }
- }
- if (br.length != be.length && be[be.length-1] == '\n') {
- Log.d(LOGTAG, "Extra new line being ignore:" + file);
- }
+
+ public void processResult(boolean timeout, String test_path) {
+ Log.v(LOGTAG, " Processing result: " + test_path);
+ // remove the extension
+ String short_file = test_path.substring(0, test_path.lastIndexOf('.'));
+ if (timeout) {
+ failedCase(test_path, "TIMEDOUT");
+ return;
+ }
+ // Only check results that we can check, ie dumpAsText results
+ String dumpFile = short_file + "-results.txt";
+ File f = new File(dumpFile);
+ if (f.exists()) {
+ try {
+ FileInputStream fr = new FileInputStream(short_file+"-results.txt");
+ FileInputStream fe = new FileInputStream(short_file+"-expected.txt");
+
+ // If the length is different then they are different
+ int diff = fe.available() - fr.available();
+ if (diff > 1 || diff < 0) {
+ failedCase(test_path, " different length");
fr.close();
fe.close();
- if (!fail) {
- passed++;
- passedCase(file);
+ return;
+ }
+ byte[] br = new byte[fr.available()];
+ byte[] be = new byte[fe.available()];
+ fr.read(br);
+ fe.read(be);
+ boolean fail = false;
+ for (int i = 0; i < br.length; i++) {
+ if (br[i] != be[i]) {
+ failedCase(test_path, " @offset: "+i);
+ fr.close();
+ fe.close();
+ return;
}
- } catch (FileNotFoundException ex) {
- // TODO do something here
- } catch (IOException ex) {
- // Failed on available() or read()
}
- mResultRecorder.finished(file);
+ if (br.length != be.length && be[be.length-1] == '\n') {
+ Log.d(LOGTAG, "Extra new line being ignore:" + test_path);
+ }
+ fr.close();
+ fe.close();
+ passedCase(test_path);
+ } catch (FileNotFoundException ex) {
+ // TODO do something here
+ } catch (IOException ex) {
+ // Failed on available() or read()
}
- }
+
+ return;
+ }
- if (mCallback != null) {
+ File nontext_result = new File(short_file + "-android-results.txt");
+ if (nontext_result.exists())
+ mResultRecorder.nontext(test_path);
+ }
+
+ public void finished() {
+ if (mCallback != null) {
mCallback.waitForFinish();
- }
-
+ }
+
+ mFinishedRunning = true;
finish();
}
// LayoutTestController Functions
public void dumpAsText() {
- dumpAsText = true;
- String url = mWebView.getUrl();
- Log.v(LOGTAG, "dumpAsText called:"+url);
- if (url.length() > 60)
- url = url.substring(60);
+ mDumpAsText = true;
+ if (mWebView != null) {
+ String url = mWebView.getUrl();
+ Log.v(LOGTAG, "dumpAsText called: "+url);
+ }
}
public void waitUntilDone() {
- waitToDump = true;
+ mWaitUntilDone = true;
+ String url = mWebView.getUrl();
+ Log.v(LOGTAG, "waitUntilDone called: " + url);
}
public void notifyDone() {
- waitToDump = false;
- mChromeClient.onProgressChanged(mWebView, 100);
+ String url = mWebView.getUrl();
+ Log.v(LOGTAG, "notifyDone called: " + url);
+ if (mWaitUntilDone) {
+ mWaitUntilDone = false;
+ mChromeClient.onProgressChanged(mWebView, 100);
+ }
}
+
public void display() {
mWebView.invalidate();
}
@@ -461,18 +515,17 @@ public class HTMLHostActivity extends Activity
}
public void dumpTitleChanges() {
- if (!dumpTitleChanges) {
+ if (!mDumpTitleChanges) {
mTitleChanges = new StringBuffer();
}
- dumpTitleChanges = true;
+ mDumpTitleChanges = true;
}
public void keepWebHistory() {
- if (!keepWebHistory) {
+ if (!mKeepWebHistory) {
mWebHistory = new Vector();
}
- keepWebHistory = true;
-
+ mKeepWebHistory = true;
}
public void queueBackNavigation(int howfar) {
@@ -491,7 +544,7 @@ public class HTMLHostActivity extends Activity
}
public void queueReload() {
- mWebView.reload();
+ mWebView.reload();
}
public void queueScript(String scriptToRunInCurrentContext) {
@@ -520,33 +573,36 @@ public class HTMLHostActivity extends Activity
}
public void testRepaint() {
- mWebView.invalidate();
+ mWebView.invalidate();
}
// Instrumentation calls this to find
// if the activity has finished running the layout tests
+ // TODO(fqian): need to sync on mFinisheRunning
public boolean hasFinishedRunning() {
- if( mProcessStack == null || mFinishedStack == null)
- return false;
-
- if (mProcessStack.isEmpty() && mFinishedStack.empty()) {
- return true;
- }
-
- return false;
+ return mFinishedRunning;
}
-
+
private final WebChromeClient mChromeClient = new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
- pageComplete = true;
- String url = mWebView.getUrl();
- if (url != null) {
+ if (!mSingleTestMode && !mTimedOut && !mWaitUntilDone && !mRequestedWebKitData) {
+ String url = mWebView.getUrl();
Log.v(LOGTAG, "Finished: "+ url);
- if (url.length() > 60)
- url = url.substring(60);
- scheduleDump();
+ mHandler.removeMessages(MSG_TIMEOUT);
+ requestWebKitData();
+ } else {
+ String url = mWebView.getUrl();
+ if (mSingleTestMode) {
+ Log.v(LOGTAG, "Single test mode: " + url);
+ } else if (mTimedOut) {
+ Log.v(LOGTAG, "Timed out before finishing: " + url);
+ } else if (mWaitUntilDone) {
+ Log.v(LOGTAG, "Waiting for notifyDone: " + url);
+ } else if (mRequestedWebKitData) {
+ Log.v(LOGTAG, "Requested webkit data ready: " + url);
+ }
}
}
}
@@ -556,7 +612,7 @@ public class HTMLHostActivity extends Activity
if (title.length() > 30)
title = "..."+title.substring(title.length()-30);
setTitle(title);
- if (dumpTitleChanges) {
+ if (mDumpTitleChanges) {
mTitleChanges.append("TITLE CHANGED: ");
mTitleChanges.append(title);
mTitleChanges.append("\n");
@@ -572,36 +628,90 @@ public class HTMLHostActivity extends Activity
mDialogStrings.append("ALERT: ");
mDialogStrings.append(message);
mDialogStrings.append('\n');
- return false;
+ result.confirm();
+ return true;
+ }
+
+ @Override
+ public boolean onJsConfirm(WebView view, String url, String message,
+ JsResult result) {
+ if (mDialogStrings == null) {
+ mDialogStrings = new StringBuffer();
+ }
+ mDialogStrings.append("CONFIRM: ");
+ mDialogStrings.append(message);
+ mDialogStrings.append('\n');
+ result.confirm();
+ return true;
+ }
+
+ @Override
+ public boolean onJsPrompt(WebView view, String url, String message,
+ String defaultValue, JsPromptResult result) {
+ if (mDialogStrings == null) {
+ mDialogStrings = new StringBuffer();
+ }
+ mDialogStrings.append("PROMPT: ");
+ mDialogStrings.append(message);
+ mDialogStrings.append(", default text: ");
+ mDialogStrings.append(defaultValue);
+ mDialogStrings.append('\n');
+ result.confirm();
+ return true;
}
};
-
+
+ private void resetTestStatus() {
+ mWaitUntilDone = false;
+ mDumpAsText = false;
+ mTimedOut = false;
+ mDumpTitleChanges = false;
+ mRequestedWebKitData = false;
+ mEventSender.resetMouse();
+ }
+
+ private TestRecorder mResultRecorder;
+ private HTMLHostCallbackInterface mCallback = null;
+ private CallbackProxy mCallbackProxy;
+
private WebView mWebView;
- private WebViewEventSender eventSender;
- private Vector mProcessStack;
- private Stack mFinishedStack;
- static final String LOGTAG="DumpRenderTree";
- private String mCurrentFile;
- private int mOutstandingLoads;
- private AsyncHandler mHandler;
- private boolean mDumpRequested;
+ private WebViewEventSender mEventSender;
+
+ private Vector<String> mTestList;
+ private int mTestIndex;
- private boolean dumpAsText;
- private boolean waitToDump;
- private boolean pageComplete;
+ private int mTimeoutInMillis;
+ private String mTestPathPrefix;
+ private boolean mSingleTestMode;
+
+ private AsyncHandler mHandler;
+ private boolean mFinishedRunning;
- private boolean dumpTitleChanges;
+ private boolean mTimedOut;
+ private boolean mRequestedWebKitData;
+ private boolean mDumpAsText;
+ private boolean mWaitUntilDone;
+ private boolean mDumpTitleChanges;
+
private StringBuffer mTitleChanges;
-
private StringBuffer mDialogStrings;
- private boolean keepWebHistory;
+ private boolean mKeepWebHistory;
private Vector mWebHistory;
- private boolean mTimedOut;
+ static final String TIMEOUT_STR = "**Test timeout";
+
+ static final int MSG_TIMEOUT = 0;
+ static final int MSG_WEBKIT_DATA = 1;
- static final int MSG_DUMP = 0;
- static final int MSG_TIMEOUT = 1;
- static final int MSG_WEBKIT_DATA = 2;
+ static final String LOGTAG="DumpRenderTree";
+ static final String LAYOUT_TESTS_ROOT = "/sdcard/android/layout_tests/";
+ static final String LAYOUT_TESTS_LIST_FILE = "/sdcard/layout_tests_list.txt";
+ static final String TEST_STATUS_FILE = "/sdcard/running_test.txt";
+
+ static final String RESUME_FROM_CRASH = "ResumeFromCrash";
+ static final String TEST_PATH_PREFIX = "TestPathPrefix";
+ static final String TIMEOUT_IN_MILLIS = "TimeoutInMillis";
+ static final String SINGLE_TEST_MODE = "SingleTestMode";
}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
index e0e535e..1f37405 100755
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
@@ -21,6 +21,9 @@ import com.android.dumprendertree.LayoutTestsAutoTest;
import android.test.InstrumentationTestRunner;
import android.test.InstrumentationTestSuite;
+import android.util.Log;
+import android.content.Intent;
+import android.os.Bundle;
/**
@@ -44,5 +47,22 @@ public class LayoutTestsAutoRunner extends InstrumentationTestRunner {
public ClassLoader getLoader() {
return LayoutTestsAutoRunner.class.getClassLoader();
}
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ String path = (String) icicle.get("path");
+ LayoutTestsAutoTest.setLayoutTestDir(path);
+ String timeout_str = (String) icicle.get("timeout");
+ int timeout = 0; // default value
+ if (timeout_str != null) {
+ try {
+ timeout = Integer.parseInt(timeout_str);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ LayoutTestsAutoTest.setTimeoutInMillis(timeout);
+ }
}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java
index f46b263..3e65f03 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java
@@ -16,142 +16,157 @@
package com.android.dumprendertree;
+import android.app.Activity;
import android.app.Instrumentation;
import android.app.Instrumentation.ActivityMonitor;
import android.content.ContentResolver;
import android.content.ContentValues;
+import android.content.Intent;
+
import android.util.Log;
import android.view.KeyEvent;
+import android.os.Bundle;
+import android.os.Message;
import android.test.ActivityInstrumentationTestCase;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.LargeTest;
import com.android.dumprendertree.HTMLHostActivity;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase<Menu> {
private final static String LOGTAG = "LayoutTests";
- private final static String LAYOUT_TESTS_ROOT = "/sdcard/android/layout_tests/";
-
+ private final static int DEFAULT_TIMEOUT_IN_MILLIS = 6000;
+ private static String layoutTestDir = null;
+ private static int mTimeoutInMillis = 0;
+
public LayoutTestsAutoTest() {
super("com.android.dumprendertree", Menu.class);
}
+ // This function writes the result of the layout test to
+ // Am status so that it can be picked up from a script.
+ public void passOrFailCallback(String file, boolean result) {
+ Instrumentation inst = getInstrumentation();
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(file, result);
+ inst.sendStatus(0, bundle);
+ }
+
+ public static void setTimeoutInMillis(int millis) {
+ mTimeoutInMillis = (millis > 0) ? millis : DEFAULT_TIMEOUT_IN_MILLIS;
+ }
+
+ public static void setLayoutTestDir(String name) {
+ if (name == null)
+ throw new AssertionError("Layout test directory cannot be null.");
+ layoutTestDir = HTMLHostActivity.LAYOUT_TESTS_ROOT + name;
+ Log.v("LayoutTestsAutoTest", " Only running the layout tests : " + layoutTestDir);
+ }
+
// Invokes running of layout tests
// and waits till it has finished running.
- public void executeLayoutTests(String folder) {
+ public void executeLayoutTests(boolean resume) {
Instrumentation inst = getInstrumentation();
- getActivity().processFile(folder, true);
-
+
+ {
+ Activity activity = getActivity();
+ Intent intent = new Intent();
+ intent.setClass(activity, HTMLHostActivity.class);
+ intent.putExtra(HTMLHostActivity.RESUME_FROM_CRASH, resume);
+ intent.putExtra(HTMLHostActivity.SINGLE_TEST_MODE, false);
+ intent.putExtra(HTMLHostActivity.TEST_PATH_PREFIX, layoutTestDir);
+ intent.putExtra(HTMLHostActivity.TIMEOUT_IN_MILLIS, mTimeoutInMillis);
+ activity.startActivity(intent);
+ }
+
ActivityMonitor htmlHostActivityMonitor =
inst.addMonitor("com.android.dumprendertree.HTMLHostActivity", null, false);
+
HTMLHostActivity activity =
- (HTMLHostActivity) htmlHostActivityMonitor.waitForActivityWithTimeout(6000);
-
+ (HTMLHostActivity) htmlHostActivityMonitor.waitForActivity();
+
while (!activity.hasFinishedRunning()) {
// Poll every 5 seconds to determine if the layout
// tests have finished running
try {Thread.sleep(5000); } catch(Exception e){}
}
-
+
// Wait few more seconds so that results are
// flushed to the /sdcard
try {Thread.sleep(5000); } catch(Exception e){}
- return ;
+ // Clean up the HTMLHostActivity activity
+ activity.finish();
+ }
+
+ public void generateTestList() {
+ try {
+ File tests_list = new File(HTMLHostActivity.LAYOUT_TESTS_LIST_FILE);
+ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(tests_list, false));
+ findTestsRecursively(bos, layoutTestDir);
+ bos.flush();
+ bos.close();
+ } catch (Exception e) {
+ Log.e(LOGTAG, "Error when creating test list: " + e.getMessage());
+ }
+ }
+
+ 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
// in chunks.
- @LargeTest
- public void testAllLayoutTests() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast");
- }
-
- @LargeTest
- public void testLayoutSubset1() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/backgrounds");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/borders");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/box-shadow");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/box-sizing");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/canvas");
- }
-
- @LargeTest
- public void testLayoutSubset2() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/clip");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/compact");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/cookies");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/css");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/css-generated-content");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/doctypes");
- }
-
- @LargeTest
- public void testLayoutSubset3() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/dom");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/dynamic");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/encoding");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/events");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/flexbox");
- }
-
- @LargeTest
- public void testLayoutSubset4() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/forms");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/frames");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/gradients");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/history");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/html");
- }
-
- @LargeTest
- public void testLayoutSubset5() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/images");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/inline");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/inline-block");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/innerHTML");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/invalid");
- }
-
- @LargeTest
- public void testLayoutSubset6() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/js");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/layers");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/leaks");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/lists");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/loader");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/media");
- }
-
- @LargeTest
- public void testLayoutSubset7() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/multicol");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/overflow");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/parser");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/profiler");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/reflections");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/regex");
- }
-
- @LargeTest
- public void testLayoutSubset8() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/repaint");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/replaced");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/runin");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/selectors");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/table");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/text");
+ public void startLayoutTests() {
+ try {
+ File tests_list = new File(HTMLHostActivity.LAYOUT_TESTS_LIST_FILE);
+ if (!tests_list.exists())
+ generateTestList();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ executeLayoutTests(false);
}
- @LargeTest
- public void testLayoutSubset9() {
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/tokenizer");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/transforms");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/xpath");
- executeLayoutTests(LAYOUT_TESTS_ROOT + "fast/xsl");
+ public void resumeLayoutTests() {
+ executeLayoutTests(true);
}
}
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java b/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java
index 2def8f3..de0da61 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/Menu.java
@@ -43,9 +43,12 @@ public class Menu extends FileList {
void processFile(String filename, boolean selection)
{
- Intent result = new Intent(null, Uri.parse(filename));
+ Intent result = new Intent();
result.setClass(this, HTMLHostActivity.class);
- result.putExtra("ReturnWhenFinished", selection);
+ result.putExtra(HTMLHostActivity.RESUME_FROM_CRASH, false);
+ result.putExtra(HTMLHostActivity.SINGLE_TEST_MODE, true);
+ result.putExtra(HTMLHostActivity.TEST_PATH_PREFIX, filename);
+ result.putExtra(HTMLHostActivity.TIMEOUT_IN_MILLIS, 8000);
startActivity(result);
}
diff --git a/tests/FrameworkTest/AndroidManifest.xml b/tests/FrameworkTest/AndroidManifest.xml
index 8106a50..c0824c0 100644
--- a/tests/FrameworkTest/AndroidManifest.xml
+++ b/tests/FrameworkTest/AndroidManifest.xml
@@ -845,6 +845,13 @@
</intent-filter>
</activity>
+ <activity android:name=".drawable.MutateDrawable" android:label="MutateDrawable">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
+ </intent-filter>
+ </activity>
+
<activity android:name=".activity.TranslucentFancyActivity" android:label="TranslucentFancyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/tests/FrameworkTest/src/com/android/frameworktest/drawable/MutateDrawable.java b/tests/FrameworkTest/src/com/android/frameworktest/drawable/MutateDrawable.java
new file mode 100644
index 0000000..2fcaea3
--- /dev/null
+++ b/tests/FrameworkTest/src/com/android/frameworktest/drawable/MutateDrawable.java
@@ -0,0 +1,49 @@
+/*
+ * 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.drawable;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.widget.LinearLayout;
+import android.widget.Button;
+import com.android.frameworktest.R;
+
+public class MutateDrawable extends Activity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout layout = new LinearLayout(this);
+
+ Button ok = new Button(this);
+ ok.setId(R.id.a);
+ ok.setBackgroundDrawable(getResources().getDrawable(
+ R.drawable.sym_now_playing_skip_forward_1));
+
+ Button cancel = new Button(this);
+ cancel.setId(R.id.b);
+ cancel.setBackgroundDrawable(getResources().getDrawable(
+ R.drawable.sym_now_playing_skip_forward_1));
+
+ layout.addView(ok);
+ layout.addView(cancel);
+
+ ok.getBackground().mutate().setAlpha(127);
+
+ setContentView(layout);
+ }
+}
diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/drawable/MutateDrawableTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/drawable/MutateDrawableTest.java
new file mode 100644
index 0000000..53085ca
--- /dev/null
+++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/drawable/MutateDrawableTest.java
@@ -0,0 +1,51 @@
+/*
+ * 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.drawable;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.view.View;
+
+public class MutateDrawableTest extends ActivityInstrumentationTestCase2<MutateDrawable> {
+ private View mFirstButton;
+ private View mSecondButton;
+
+ public MutateDrawableTest() {
+ super("com.android.frameworktest", MutateDrawable.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mFirstButton = getActivity().findViewById(com.android.frameworktest.R.id.a);
+ mSecondButton = getActivity().findViewById(com.android.frameworktest.R.id.b);
+ }
+
+ @MediumTest
+ public void testSetUpConditions() throws Exception {
+ assertNotNull(mFirstButton);
+ assertNotNull(mSecondButton);
+ assertNotSame(mFirstButton.getBackground(), mSecondButton.getBackground());
+ }
+
+ @MediumTest
+ public void testDrawableCanMutate() throws Exception {
+ assertNotSame(mFirstButton.getBackground().getConstantState(),
+ mSecondButton.getBackground().getConstantState());
+ }
+}
diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListScrollListenerTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListScrollListenerTest.java
index 485199e..44958d9 100644
--- a/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListScrollListenerTest.java
+++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListScrollListenerTest.java
@@ -24,7 +24,6 @@ import android.view.KeyEvent;
import android.widget.AbsListView;
import android.widget.ListView;
-import com.android.frameworktest.listview.ListScrollListener;
import android.test.TouchUtils;
public class ListScrollListenerTest extends ActivityInstrumentationTestCase<ListScrollListener> implements
@@ -88,8 +87,6 @@ public class ListScrollListenerTest extends ActivityInstrumentationTestCase<List
@LargeTest
public void testTouchScrolling() {
- Instrumentation inst = getInstrumentation();
-
int firstVisibleItem = mFirstVisibleItem;
TouchUtils.dragQuarterScreenUp(this);
TouchUtils.dragQuarterScreenUp(this);
diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListSetSelectionTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListSetSelectionTest.java
index 18b6199..e35d894 100644
--- a/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListSetSelectionTest.java
+++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/listview/ListSetSelectionTest.java
@@ -58,7 +58,7 @@ public class ListSetSelectionTest extends ActivityInstrumentationTestCase2<ListS
}
}
- /** Confirm that you can unset the selection using the same API */
+ /** Confirm that you cannot unset the selection using the same API */
@MediumTest
@UiThreadTest
public void testClearSelection() {
@@ -68,7 +68,6 @@ public class ListSetSelectionTest extends ActivityInstrumentationTestCase2<ListS
// Clear the selection
mListView.setSelection(ListView.INVALID_POSITION);
- assertEquals("Set selection",
- ListView.INVALID_POSITION, mListView.getSelectedItemPosition());
+ assertEquals("Set selection", 0, mListView.getSelectedItemPosition());
}
}
diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/widget/ListViewTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/widget/ListViewTest.java
index dff1610..ecb7d3a 100644
--- a/tests/FrameworkTest/tests/src/com/android/frameworktest/widget/ListViewTest.java
+++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/widget/ListViewTest.java
@@ -92,7 +92,7 @@ public class ListViewTest extends InstrumentationTestCase {
@Override
public Resources getResources() {
- return null;
+ return getInstrumentation().getTargetContext().getResources();
}
@Override
diff --git a/tests/GadgetHost/src/com/android/gadgethost/GadgetPickActivity.java b/tests/GadgetHost/src/com/android/gadgethost/GadgetPickActivity.java
deleted file mode 100644
index a995544..0000000
--- a/tests/GadgetHost/src/com/android/gadgethost/GadgetPickActivity.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2008 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.gadgethost;
-
-import android.app.ListActivity;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.gadget.GadgetInfo;
-import android.gadget.GadgetManager;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-import android.util.Log;
-
-import java.util.List;
-
-public class GadgetPickActivity extends ListActivity
-{
- private static final String TAG = "GadgetPickActivity";
-
- GadgetManager mGadgetManager;
- List<GadgetInfo> mInstalled;
-
- public GadgetPickActivity() {
- mGadgetManager = GadgetManager.getInstance(this);
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- Bundle extras = getIntent().getExtras();
-
- List<GadgetInfo> installed = mGadgetManager.getInstalledProviders();
- mInstalled = installed;
- final int N = installed.size();
- String[] labels = new String[N];
- for (int i=0; i<N; i++) {
- labels[i] = installed.get(i).provider.getClassName();
- }
-
- setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, labels));
- }
-
- @Override
- public void onListItemClick(ListView l, View v, int position, long id)
- {
- int gadgetId = mGadgetManager.allocateGadgetId(getCallingPackage());
- mGadgetManager.bindGadgetId(gadgetId, mInstalled.get(position).provider);
-
- Intent result = new Intent();
- result.putExtra(GadgetManager.EXTRA_GADGET_ID, gadgetId);
-
- setResult(RESULT_OK, result);
- finish();
- }
-}
-
diff --git a/tests/GadgetHost/src/com/android/gadgethost/TestGadgetProvider.java b/tests/GadgetHost/src/com/android/gadgethost/TestGadgetProvider.java
deleted file mode 100644
index 8f9641b..0000000
--- a/tests/GadgetHost/src/com/android/gadgethost/TestGadgetProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2008 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.gadgethost;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-
-public class TestGadgetProvider extends BroadcastReceiver {
-
- static final String TAG = "TestGadgetProvider";
-
- public void onReceive(Context context, Intent intent) {
- Log.d(TAG, "intent=" + intent);
- }
-}
-
diff --git a/tests/ImfTest/AndroidManifest.xml b/tests/ImfTest/AndroidManifest.xml
index 85d6b0c..627ee6d 100755
--- a/tests/ImfTest/AndroidManifest.xml
+++ b/tests/ImfTest/AndroidManifest.xml
@@ -19,6 +19,134 @@
</intent-filter>
</activity>
+ <activity android:name=".samples.AppAdjustmentBigEditTextNonScrollablePanScan" android:label="Big ET !Scroll Pan/Scan">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.ManyEditTextActivityNoScrollPanScan" android:label="ManyEditTextActivityNoScrollPanScan">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.AppAdjustmentBigEditTextNonScrollableResize" android:label="Big ET !Scroll Resize">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.AppAdjustmentBigEditTextScrollablePanScan" android:label="Big ET Scroll Pan/Scan">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.AppAdjustmentBigEditTextScrollableResize" android:label="Big ET Scroll Resize">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.AppAdjustmentEditTextDialog" android:label="ET Dialog">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.ManyEditTextActivityScrollPanScan" android:label="ManyEditTextActivityScrollPanScan">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.ManyEditTextActivityScrollResize" android:label="ManyEditTextActivityScrollResize">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.BottomEditTextActivityPanScan" android:label="BottomEditTextActivityPanScan">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.BottomEditTextActivityResize" android:label="BottomEditTextActivityResize">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.OneEditTextActivitySelected" android:label="OneEditTextActivitySelected">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.OneEditTextActivityNotSelected" android:label="OneEditTextActivityNotSelected">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.AutoCompleteTextViewActivityPortrait" android:label="AutoCompleteTextViewActivityPortrait" android:screenOrientation="portrait">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.AutoCompleteTextViewActivityLandscape" android:label="AutoCompleteTextViewActivityLandscape" android:screenOrientation="landscape">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.OneEditTextActivityLandscape" android:label="OneEditTextActivityLandscape" android:screenOrientation="landscape">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".samples.DialogActivity" android:label="DialogActivity" android:screenOrientation="portrait">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.IMF_TEST" />
+ </intent-filter>
+ </activity>
+
</application>
</manifest>
diff --git a/tests/ImfTest/res/layout/dialog_edit_text_no_scroll.xml b/tests/ImfTest/res/layout/dialog_edit_text_no_scroll.xml
new file mode 100644
index 0000000..e8ffa1c
--- /dev/null
+++ b/tests/ImfTest/res/layout/dialog_edit_text_no_scroll.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:padding="20dip"
+ android:orientation="vertical">
+
+ <View
+ android:id="@+id/blank"
+ android:layout_height="0dip"
+ android:layout_width="fill_parent"
+ android:layout_weight="1"/>
+
+ <EditText
+ android:id="@+id/dialog_edit_text"
+ android:layout_height="wrap_content"
+ android:layout_width="fill_parent"
+ android:scrollHorizontally="true"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+</LinearLayout>
diff --git a/tests/ImfTest/res/layout/full_screen_edit_text.xml b/tests/ImfTest/res/layout/full_screen_edit_text.xml
new file mode 100755
index 0000000..f22aa2f
--- /dev/null
+++ b/tests/ImfTest/res/layout/full_screen_edit_text.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/samples/SampleCode/res/layout/baseline_1.xml
+**
+** Copyright 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.
+*/
+-->
+
+<EditText xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/data"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:minLines="15"
+ android:gravity="top"/>
+
diff --git a/tests/ImfTest/res/layout/one_edit_text_activity.xml b/tests/ImfTest/res/layout/one_edit_text_activity.xml
new file mode 100755
index 0000000..09925e1
--- /dev/null
+++ b/tests/ImfTest/res/layout/one_edit_text_activity.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/samples/SampleCode/res/layout/baseline_1.xml
+**
+** Copyright 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.
+*/
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+>
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:baselineAligned="false">
+
+ <View android:id="@+id/blank"
+ android:layout_height="0dip"
+ android:layout_width="fill_parent"
+ android:layout_weight="1"
+ />
+
+ <EditText android:id="@+id/dialog_edit_text"
+ android:layout_height="wrap_content"
+ android:layout_width="fill_parent"
+ android:scrollHorizontally="true"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ />
+ </LinearLayout>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dip"
+ android:background="@android:drawable/divider_horizontal_dark"
+ />
+</LinearLayout>
diff --git a/tests/ImfTest/res/values/strings.xml b/tests/ImfTest/res/values/strings.xml
index a56c363..fc87480 100755
--- a/tests/ImfTest/res/values/strings.xml
+++ b/tests/ImfTest/res/values/strings.xml
@@ -35,5 +35,16 @@
<string name="normal_datetime_edit_text_label">Datetime</string>
<string name="date_edit_text_label">Date</string>
<string name="time_edit_text_label">Time</string>
+ <string name="cap_chars_edit_text_label">Cap Chars</string>
+ <string name="cap_words_edit_text_label">Cap Words</string>
+ <string name="multiline_edit_text_label">Multiline</string>
+ <string name="search_edit_text_label">Search (flag)</string>
+ <string name="cap_sentences_edit_text_label">Cap Sentences</string>
+ <string name="auto_complete_edit_text_label">Auto Complete</string>
+ <string name="auto_correct_edit_text_label">Auto Correct</string>
+ <string name="test_dialog">Test Dialog</string>
+ <string name="open_dialog_scrollable">open scrollable dialog</string>
+ <string name="open_dialog_nonscrollable">open nonscrollable dialog</string>
+
</resources>
diff --git a/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollablePanScan.java b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollablePanScan.java
new file mode 100644
index 0000000..15a29c8
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollablePanScan.java
@@ -0,0 +1,35 @@
+package com.android.imftest.samples;
+
+import com.android.imftest.R;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+
+public class AppAdjustmentBigEditTextNonScrollablePanScan extends Activity {
+
+ private LinearLayout mLayout;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+
+ mLayout = new LinearLayout(this);
+ mLayout.setOrientation(LinearLayout.VERTICAL);
+ mLayout.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ EditText editText = (EditText) getLayoutInflater().inflate(R.layout.full_screen_edit_text, mLayout, false);
+
+ mLayout.addView(editText);
+
+ setContentView(mLayout);
+ }
+
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollableResize.java b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollableResize.java
new file mode 100644
index 0000000..0726823
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextNonScrollableResize.java
@@ -0,0 +1,35 @@
+package com.android.imftest.samples;
+
+import com.android.imftest.R;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+
+public class AppAdjustmentBigEditTextNonScrollableResize extends Activity {
+
+ private LinearLayout mLayout;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+
+ mLayout = new LinearLayout(this);
+ mLayout.setOrientation(LinearLayout.VERTICAL);
+ mLayout.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ EditText editText = (EditText) getLayoutInflater().inflate(R.layout.full_screen_edit_text, mLayout, false);
+
+ mLayout.addView(editText);
+
+ setContentView(mLayout);
+ }
+
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollablePanScan.java b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollablePanScan.java
new file mode 100644
index 0000000..50a980b
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollablePanScan.java
@@ -0,0 +1,44 @@
+package com.android.imftest.samples;
+
+import com.android.imftest.R;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.ScrollView;
+
+public class AppAdjustmentBigEditTextScrollablePanScan extends Activity {
+
+ private ScrollView mScrollView;
+ private LinearLayout mLayout;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+
+ mScrollView = new ScrollView(this);
+ mScrollView.setFillViewport(true);
+ mScrollView.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ mLayout = new LinearLayout(this);
+ mLayout.setOrientation(LinearLayout.VERTICAL);
+ mLayout.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ EditText editText = (EditText) getLayoutInflater().inflate(R.layout.full_screen_edit_text, mScrollView, false);
+
+ mLayout.addView(editText);
+ mScrollView.addView(mLayout);
+
+ setContentView(mScrollView);
+ }
+
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollableResize.java b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollableResize.java
new file mode 100644
index 0000000..a256878
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentBigEditTextScrollableResize.java
@@ -0,0 +1,44 @@
+package com.android.imftest.samples;
+
+import com.android.imftest.R;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.ScrollView;
+
+public class AppAdjustmentBigEditTextScrollableResize extends Activity {
+
+ private ScrollView mScrollView;
+ private LinearLayout mLayout;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+
+ mScrollView = new ScrollView(this);
+ mScrollView.setFillViewport(true);
+ mScrollView.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ mLayout = new LinearLayout(this);
+ mLayout.setOrientation(LinearLayout.VERTICAL);
+ mLayout.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ EditText editText = (EditText) getLayoutInflater().inflate(R.layout.full_screen_edit_text, mScrollView, false);
+
+ mLayout.addView(editText);
+ mScrollView.addView(mLayout);
+
+ setContentView(mScrollView);
+ }
+
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentEditTextDialog.java b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentEditTextDialog.java
new file mode 100644
index 0000000..e82f1d5
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/AppAdjustmentEditTextDialog.java
@@ -0,0 +1,96 @@
+package com.android.imftest.samples;
+
+import com.android.imftest.R;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.ScrollView;
+
+public class AppAdjustmentEditTextDialog extends Activity {
+
+ private static final int SCROLLABLE_DIALOG_ID = 0;
+ private static final int NONSCROLLABLE_DIALOG_ID = 1;
+
+ private LinearLayout mLayout;
+ private ScrollView mScrollView;
+ private LayoutInflater mInflater;
+ private Button mButton1;
+ private Button mButton2;
+
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ mLayout = new LinearLayout(this);
+ mLayout.setOrientation(LinearLayout.VERTICAL);
+ mLayout.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ mButton1 = new Button(this);
+ mButton1.setText(R.string.open_dialog_scrollable);
+ mButton1.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ showDialog(SCROLLABLE_DIALOG_ID);
+ }
+ });
+
+ mButton2 = new Button(this);
+ mButton2.setText(R.string.open_dialog_nonscrollable);
+ mButton2.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ showDialog(NONSCROLLABLE_DIALOG_ID);
+ }
+ });
+
+ mLayout.addView(mButton1);
+ mLayout.addView(mButton2);
+
+ setContentView(mLayout);
+ }
+
+ @Override
+ protected Dialog onCreateDialog(int id) {
+ switch (id) {
+ case SCROLLABLE_DIALOG_ID:
+ return createDialog(true);
+ case NONSCROLLABLE_DIALOG_ID:
+ return createDialog(false);
+ }
+
+ return super.onCreateDialog(id);
+ }
+
+ protected Dialog createDialog(boolean scrollable) {
+ View layout;
+ EditText editText;
+
+ if (scrollable) {
+ layout = new ScrollView(AppAdjustmentEditTextDialog.this);
+ ((ScrollView) layout).setMinimumHeight(mLayout.getHeight());
+
+ ((ScrollView) layout).addView((
+ LinearLayout) View.inflate(AppAdjustmentEditTextDialog.this,
+ R.layout.dialog_edit_text_no_scroll, null));
+ } else {
+ layout = View.inflate(AppAdjustmentEditTextDialog.this,
+ R.layout.dialog_edit_text_no_scroll, null);
+ }
+
+ Dialog d = new Dialog(AppAdjustmentEditTextDialog.this);
+ d.setTitle(getString(R.string.test_dialog));
+ d.setCancelable(true);
+ d.setContentView(layout);
+ return d;
+ }
+
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java b/tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java
new file mode 100644
index 0000000..9638d34
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java
@@ -0,0 +1,85 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.app.ActivityManagerNative;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.provider.MediaStore;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.AutoCompleteTextView;
+import android.widget.ArrayAdapter;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+
+import com.android.internal.R;
+
+/*
+ * Activity with AutoCompleteTextView forced to landscape mode
+ */
+public class AutoCompleteTextViewActivityLandscape extends Activity
+{
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.auto_complete_list);
+
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
+ android.R.layout.simple_dropdown_item_1line, COUNTRIES);
+ AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.edit);
+ textView.setAdapter(adapter);
+ }
+
+ static final String[] COUNTRIES = new String[] {
+ "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
+ "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
+ "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
+ "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
+ "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
+ "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
+ "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
+ "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
+ "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
+ "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
+ "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
+ "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
+ "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
+ "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
+ "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
+ "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
+ "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
+ "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
+ "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
+ "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
+ "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
+ "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
+ "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
+ "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
+ "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
+ "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
+ "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
+ "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
+ "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
+ "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
+ "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
+ "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
+ "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
+ "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
+ "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
+ "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
+ "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
+ "Ukraine", "United Arab Emirates", "United Kingdom",
+ "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
+ "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
+ "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
+ };
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java b/tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java
new file mode 100644
index 0000000..58651e1
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java
@@ -0,0 +1,79 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.AutoCompleteTextView;
+import android.widget.ArrayAdapter;
+
+import com.android.internal.R;
+
+/*
+ * Activity with AutoCompleteTextView (Candidate bar should not appear)
+ */
+public class AutoCompleteTextViewActivityPortrait extends Activity
+{
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.auto_complete_list);
+
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
+ android.R.layout.simple_dropdown_item_1line, COUNTRIES);
+ AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.edit);
+ textView.setAdapter(adapter);
+ }
+
+ static final String[] COUNTRIES = new String[] {
+ "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
+ "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
+ "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
+ "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
+ "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
+ "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
+ "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
+ "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
+ "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
+ "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
+ "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
+ "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
+ "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
+ "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
+ "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
+ "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
+ "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
+ "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
+ "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
+ "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
+ "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
+ "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
+ "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
+ "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
+ "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
+ "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
+ "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
+ "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
+ "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
+ "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
+ "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
+ "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
+ "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
+ "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
+ "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
+ "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
+ "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
+ "Ukraine", "United Arab Emirates", "United Kingdom",
+ "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
+ "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
+ "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
+ };
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java b/tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java
new file mode 100644
index 0000000..d74b9dd
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java
@@ -0,0 +1,37 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.EditText;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import com.android.imftest.R;
+
+/*
+ * Activity with EditText at the bottom (Pan&Scan)
+ */
+public class BottomEditTextActivityPanScan extends Activity
+{
+ private LayoutInflater mInflater;
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ mInflater = getLayoutInflater();
+
+ View view = mInflater.inflate(R.layout.one_edit_text_activity, layout, false);
+ layout.addView(view);
+
+ setContentView(layout);
+ this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+ }
+} \ No newline at end of file
diff --git a/tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java b/tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java
new file mode 100644
index 0000000..82da29a
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java
@@ -0,0 +1,37 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.EditText;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import com.android.imftest.R;
+
+/*
+ * Activity with EditText at the bottom (Resize)
+ */
+public class BottomEditTextActivityResize extends Activity
+{
+ private LayoutInflater mInflater;
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ mInflater = getLayoutInflater();
+
+ View view = mInflater.inflate(R.layout.one_edit_text_activity, layout, false);
+ layout.addView(view);
+
+ setContentView(layout);
+ this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ }
+} \ No newline at end of file
diff --git a/tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java b/tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java
new file mode 100644
index 0000000..e49301c
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java
@@ -0,0 +1,102 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.EditText;
+import android.widget.Button;
+import android.view.LayoutInflater;
+import android.app.Dialog;
+
+import com.android.internal.R;
+
+public class DialogActivity extends Activity {
+
+ private static final int DIALOG_WITHOUT_EDITTEXT = 0;
+ private static final int DIALOG_WITH_EDITTEXT = 1;
+
+ private LinearLayout mLayout;
+ private LayoutInflater mInflater;
+ private Button mButton1;
+ private Button mButton2;
+ private EditText mEditText;
+
+
+ @Override
+ protected void onCreate(Bundle icicle)
+ {
+ super.onCreate(icicle);
+
+ mLayout = new LinearLayout(this);
+ mLayout.setOrientation(LinearLayout.VERTICAL);
+ mLayout.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT));
+
+ mButton1 = new Button(this);
+ mButton1.setText("Dialog WITHOUT EditText");//(R.string.open_dialog_scrollable);
+ mButton1.setOnClickListener(new View.OnClickListener()
+ {
+ public void onClick(View v)
+ {
+ showDialog(DIALOG_WITHOUT_EDITTEXT);
+ }
+ });
+
+ mButton2 = new Button(this);
+ mButton2.setText("Dialog WITH EditText");//(R.string.open_dialog_nonscrollable);
+ mButton2.setOnClickListener(new View.OnClickListener()
+ {
+ public void onClick(View v)
+ {
+ showDialog(DIALOG_WITH_EDITTEXT);
+ }
+ });
+
+ mEditText = new EditText(this);
+ mLayout.addView(mEditText);
+ mLayout.addView(mButton1);
+ mLayout.addView(mButton2);
+
+ setContentView(mLayout);
+ }
+
+ @Override
+ protected Dialog onCreateDialog(int id)
+ {
+ switch (id)
+ {
+ case DIALOG_WITHOUT_EDITTEXT:
+ return createDialog(false);
+ case DIALOG_WITH_EDITTEXT:
+ return createDialog(true);
+ }
+
+ return super.onCreateDialog(id);
+ }
+
+ protected Dialog createDialog(boolean bEditText)
+ {
+ LinearLayout layout;
+ layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ if(bEditText)
+ {
+ EditText editText;
+ editText = new EditText(this);
+ layout.addView(editText);
+ }
+
+ Dialog d = new Dialog(this);
+ d.setTitle("The DIALOG!!!");
+ d.setCancelable(true);
+ d.setContentView(layout);
+ return d;
+ }
+
+ }
diff --git a/tests/ImfTest/src/com/android/imftest/samples/EditTextActivityNoScrollPanScan.java b/tests/ImfTest/src/com/android/imftest/samples/EditTextActivityNoScrollPanScan.java
new file mode 100644
index 0000000..b596023
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/EditTextActivityNoScrollPanScan.java
@@ -0,0 +1,38 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.ScrollView;
+
+import com.android.internal.R;
+
+public class EditTextActivityNoScrollPanScan extends Activity
+{
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ String string = new String();
+ for (int i=0; i<9; i++)
+ {
+ final EditText editText = new EditText(this);
+ editText.setText(string.valueOf(i));
+ layout.addView(editText);
+ }
+ setContentView(layout);
+ this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+ }
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/InputTypeActivity.java b/tests/ImfTest/src/com/android/imftest/samples/InputTypeActivity.java
index f7aaa7b..6c71e86 100755
--- a/tests/ImfTest/src/com/android/imftest/samples/InputTypeActivity.java
+++ b/tests/ImfTest/src/com/android/imftest/samples/InputTypeActivity.java
@@ -56,43 +56,67 @@ public class InputTypeActivity extends Activity {
mParent = mLayout;
/* Normal Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_NORMAL,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL,
R.string.normal_edit_text_label));
+ /* Normal Edit Text w/Cap Chars Flag*/
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL|EditorInfo.TYPE_TEXT_FLAG_CAP_CHARACTERS,
+ R.string.cap_chars_edit_text_label));
+
+ /* Normal Edit Text w/Cap Words Flag*/
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL|EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS,
+ R.string.cap_words_edit_text_label));
+
+ /* Normal Edit Text w/Cap Multiline Flag */
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL|EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE,
+ R.string.multiline_edit_text_label));
+
+ /* Normal Edit Text w/Cap Sentences Flag */
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL|EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES,
+ R.string.cap_sentences_edit_text_label));
+
+ /* Normal Edit Text w/Auto-complete Flag */
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL|EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE,
+ R.string.auto_complete_edit_text_label));
+
+ /* Normal Edit Text w/Auto-correct Flag */
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL|EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT,
+ R.string.auto_correct_edit_text_label));
+
+ /* Normal Edit Text w/Search Flag*/
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL|EditorInfo.TYPE_TEXT_FLAG_SEARCH,
+ R.string.search_edit_text_label));
+
/* Uri Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_URI,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_URI,
R.string.uri_edit_text_label));
/* Email Address Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS,
R.string.email_address_edit_text_label));
/* Email Subject Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_EMAIL_SUBJECT,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_EMAIL_SUBJECT,
R.string.email_subject_edit_text_label));
/* Email Content Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_EMAIL_CONTENT,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_LONG_MESSAGE,
R.string.email_content_edit_text_label));
/* Person Name Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME,
R.string.person_name_edit_text_label));
/* Postal Address Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_POSTAL_ADDRESS,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_POSTAL_ADDRESS,
R.string.postal_address_edit_text_label));
/* Password Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_PASSWORD,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_PASSWORD,
R.string.password_edit_text_label));
- /* Search String Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_SEARCH_STRING,
- R.string.search_string_edit_text_label));
-
/* Web Edit Text */
- mLayout.addView(buildEntryView(EditorInfo.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT,
+ mLayout.addView(buildEntryView(EditorInfo.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT,
R.string.web_edit_text_label));
/* Signed Number Edit Text */
diff --git a/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java b/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java
new file mode 100644
index 0000000..4cb3af6
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java
@@ -0,0 +1,41 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.ScrollView;
+
+import com.android.internal.R;
+
+/*
+ * Full screen of EditTexts (Non-Scrollable, Pan&Scan)
+ */
+public class ManyEditTextActivityNoScrollPanScan extends Activity
+{
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ String string = new String();
+ for (int i=0; i<9; i++)
+ {
+ final EditText editText = new EditText(this);
+ editText.setText(string.valueOf(i));
+ layout.addView(editText);
+ }
+ setContentView(layout);
+ this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+ }
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java b/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java
new file mode 100644
index 0000000..bd32828
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java
@@ -0,0 +1,45 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.ScrollView;
+
+import com.android.internal.R;
+
+/*
+ * Full screen of EditTexts (Scrollable, Pan&Scan)
+ */
+public class ManyEditTextActivityScrollPanScan extends Activity
+{
+ private ScrollView mScrollView;
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ mScrollView = new ScrollView(this);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ String string = new String();
+ for (int i=0; i<12; i++)
+ {
+ final EditText editText = new EditText(this);
+ editText.setText(string.valueOf(i));
+ layout.addView(editText);
+ }
+
+ mScrollView.addView(layout);
+ setContentView(mScrollView);
+ this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+ }
+} \ No newline at end of file
diff --git a/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java b/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java
new file mode 100644
index 0000000..eaaa98b
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java
@@ -0,0 +1,37 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.EditText;
+import android.widget.ScrollView;
+
+/*
+ * Full screen of EditTexts (Scrollable, Resize)
+ */
+public class ManyEditTextActivityScrollResize extends Activity
+{
+ private ScrollView mScrollView;
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ mScrollView = new ScrollView(this);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ String string = new String();
+ for (int i=0; i<12; i++)
+ {
+ final EditText editText = new EditText(this);
+ editText.setText(string.valueOf(i));
+ layout.addView(editText);
+ }
+
+ mScrollView.addView(layout);
+ setContentView(mScrollView);
+ this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ }
+} \ No newline at end of file
diff --git a/tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java b/tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java
new file mode 100644
index 0000000..5fef884
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java
@@ -0,0 +1,40 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.ScrollView;
+
+import com.android.internal.R;
+
+/*
+ * Activity with non-EditText view selected initially
+ */
+public class OneEditTextActivityNotSelected extends Activity
+{
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ final EditText editText = new EditText(this);
+ final TextView textView = new TextView(this);
+ textView.setText("The focus is here.");
+ layout.addView(editText);
+ layout.addView(textView);
+
+ setContentView(layout);
+ textView.requestFocus();
+ }
+}
diff --git a/tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java b/tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java
new file mode 100644
index 0000000..2fd19e8
--- /dev/null
+++ b/tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java
@@ -0,0 +1,37 @@
+package com.android.imftest.samples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.ScrollView;
+
+import com.android.internal.R;
+
+/*
+ * Activity with EditText selected initially
+ */
+public class OneEditTextActivitySelected extends Activity
+{
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ LinearLayout layout = new LinearLayout(this);
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ final EditText editText = new EditText(this);
+ layout.addView(editText);
+
+ setContentView(layout);
+ editText.requestFocus();
+ }
+}
diff --git a/tests/SmokeTest/tests/AndroidManifest.xml b/tests/SmokeTest/tests/AndroidManifest.xml
index 20b33ee..517eb1e 100644
--- a/tests/SmokeTest/tests/AndroidManifest.xml
+++ b/tests/SmokeTest/tests/AndroidManifest.xml
@@ -25,8 +25,6 @@
<uses-library android:name="android.test.runner" />
</application>
- <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
-
<!--
This declares that this app uses the instrumentation test runner targeting
the package of com.android.smoketest. To run the tests use the command:
diff --git a/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java b/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java
index 4994845..0368651 100644
--- a/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java
+++ b/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java
@@ -17,6 +17,7 @@
package com.android.internal.policy.impl;
import android.content.Context;
+
import com.android.internal.telephony.SimCard;
import android.test.AndroidTestCase;
import android.view.View;
@@ -112,6 +113,11 @@ public class LockPatternKeyguardViewTest extends AndroidTestCase {
}
/** {@inheritDoc} */
+ public boolean needsInput() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
public void onPause() {
mOnPauseCount++;
}
@@ -149,8 +155,9 @@ public class LockPatternKeyguardViewTest extends AndroidTestCase {
- private TestableLockPatternKeyguardView(Context context, KeyguardUpdateMonitor updateMonitor, LockPatternUtils lockPatternUtils) {
- super(context, updateMonitor, lockPatternUtils);
+ private TestableLockPatternKeyguardView(Context context, KeyguardUpdateMonitor updateMonitor,
+ LockPatternUtils lockPatternUtils, KeyguardWindowController controller) {
+ super(context, updateMonitor, lockPatternUtils, controller);
}
@Override
@@ -214,7 +221,11 @@ public class LockPatternKeyguardViewTest extends AndroidTestCase {
mUpdateMonitor = new MockUpdateMonitor(getContext());
mLockPatternUtils = new MockLockPatternUtils();
- mLPKV = new TestableLockPatternKeyguardView(getContext(), mUpdateMonitor, mLockPatternUtils);
+ mLPKV = new TestableLockPatternKeyguardView(getContext(), mUpdateMonitor,
+ mLockPatternUtils, new KeyguardWindowController() {
+ public void setNeedsInput(boolean needsInput) {
+ }
+ });
mKeyguardViewCallback = new MockKeyguardCallback();
mLPKV.setCallback(mKeyguardViewCallback);
}
diff --git a/tests/GadgetHost/Android.mk b/tests/gadgets/GadgetHostTest/Android.mk
index 1d88db8..5e04b81 100644
--- a/tests/GadgetHost/Android.mk
+++ b/tests/gadgets/GadgetHostTest/Android.mk
@@ -5,7 +5,7 @@ LOCAL_MODULE_TAGS := user
LOCAL_SRC_FILES := $(call all-subdir-java-files)
-LOCAL_PACKAGE_NAME := GadgetHost
+LOCAL_PACKAGE_NAME := GadgetHostTest
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
diff --git a/tests/GadgetHost/AndroidManifest.xml b/tests/gadgets/GadgetHostTest/AndroidManifest.xml
index eeb8979..cac2776 100644
--- a/tests/GadgetHost/AndroidManifest.xml
+++ b/tests/gadgets/GadgetHostTest/AndroidManifest.xml
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.gadgethost">
+ package="com.android.tests.gadgethost">
<uses-permission android:name="android.permission.VIBRATE" />
<application>
@@ -10,13 +10,15 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <activity android:name="GadgetPickActivity">
+ <activity android:name="TestGadgetConfigure" android:label="Configure TestGadgetProvider">
<intent-filter>
- <action android:name="android.gadget.action.PICK_GADGET" />
+ <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <receiver android:name="TestGadgetProvider">
+ <receiver android:name="TestGadgetProvider" android:label="@string/oh_hai"
+ android:icon="@drawable/oh_hai_icon">
<intent-filter>
<action android:name="android.gadget.action.GADGET_UPDATE" />
</intent-filter>
diff --git a/tests/gadgets/GadgetHostTest/res/drawable/oh_hai_icon.png b/tests/gadgets/GadgetHostTest/res/drawable/oh_hai_icon.png
new file mode 100644
index 0000000..30ff267
--- /dev/null
+++ b/tests/gadgets/GadgetHostTest/res/drawable/oh_hai_icon.png
Binary files differ
diff --git a/tests/GadgetHost/res/layout/gadget_host.xml b/tests/gadgets/GadgetHostTest/res/layout/gadget_host.xml
index 824cc44..743f6c6 100644
--- a/tests/GadgetHost/res/layout/gadget_host.xml
+++ b/tests/gadgets/GadgetHostTest/res/layout/gadget_host.xml
@@ -31,10 +31,11 @@
android:layout_weight="1"
>
- <com.android.gadgethost.GadgetContainerView
+ <com.android.tests.gadgethost.GadgetContainerView
android:id="@+id/gadget_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:orientation="vertical"
/>
</ScrollView>
diff --git a/tests/GadgetHost/res/layout/test_gadget.xml b/tests/gadgets/GadgetHostTest/res/layout/test_gadget.xml
index 0fb7929..4d483c7 100644
--- a/tests/GadgetHost/res/layout/test_gadget.xml
+++ b/tests/gadgets/GadgetHostTest/res/layout/test_gadget.xml
@@ -15,6 +15,7 @@
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/oh_hai_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/oh_hai"
diff --git a/tests/gadgets/GadgetHostTest/res/layout/test_gadget_configure.xml b/tests/gadgets/GadgetHostTest/res/layout/test_gadget_configure.xml
new file mode 100644
index 0000000..0d9b983
--- /dev/null
+++ b/tests/gadgets/GadgetHostTest/res/layout/test_gadget_configure.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ >
+
+ <TextView
+ android:id="@+id/oh_hai_text"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/oh_hai"
+ />
+
+ <EditText
+ android:id="@+id/edit_text"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ />
+
+ <Button
+ android:id="@+id/save_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/save"
+ />
+
+
+</LinearLayout>
diff --git a/tests/gadgets/GadgetHostTest/res/values/strings.xml b/tests/gadgets/GadgetHostTest/res/values/strings.xml
new file mode 100644
index 0000000..ad9916a
--- /dev/null
+++ b/tests/gadgets/GadgetHostTest/res/values/strings.xml
@@ -0,0 +1,24 @@
+<?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="gadget_view_title">Gadget Test</string>
+ <string name="add_gadget">Add Gadget</string>
+ <string name="oh_hai">Oh hai.</string>
+ <string name="delete_gadget">Delete</string>
+ <string name="save">Save</string>
+</resources>
+
diff --git a/tests/gadgets/GadgetHostTest/res/xml/gadget_info.xml b/tests/gadgets/GadgetHostTest/res/xml/gadget_info.xml
new file mode 100644
index 0000000..353df30
--- /dev/null
+++ b/tests/gadgets/GadgetHostTest/res/xml/gadget_info.xml
@@ -0,0 +1,8 @@
+<gadget-provider xmlns:android="http://schemas.android.com/apk/res/android"
+ android:minWidth="40dp"
+ android:minHeight="30dp"
+ android:updatePeriodMillis="3000"
+ android:initialLayout="@layout/test_gadget"
+ android:configure="com.android.tests.gadgethost.TestGadgetConfigure"
+ >
+</gadget-provider>
diff --git a/tests/GadgetHost/src/com/android/gadgethost/GadgetContainerView.java b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/GadgetContainerView.java
index 159cbe4..3814836 100644
--- a/tests/GadgetHost/src/com/android/gadgethost/GadgetContainerView.java
+++ b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/GadgetContainerView.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.gadgethost;
+package com.android.tests.gadgethost;
import android.content.Context;
import android.util.AttributeSet;
diff --git a/tests/GadgetHost/src/com/android/gadgethost/GadgetHostActivity.java b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/GadgetHostActivity.java
index 38073fa..d3dcf41 100644
--- a/tests/GadgetHost/src/com/android/gadgethost/GadgetHostActivity.java
+++ b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/GadgetHostActivity.java
@@ -14,11 +14,13 @@
* limitations under the License.
*/
-package com.android.gadgethost;
+package com.android.tests.gadgethost;
import android.app.Activity;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.gadget.GadgetHost;
import android.gadget.GadgetHostView;
import android.gadget.GadgetInfo;
@@ -26,6 +28,7 @@ import android.gadget.GadgetManager;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
+import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
@@ -34,7 +37,11 @@ public class GadgetHostActivity extends Activity
static final String TAG = "GadgetHostActivity";
static final int DISCOVER_GADGET_REQUEST = 1;
+ static final int CONFIGURE_GADGET_REQUEST = 2;
+ static final int HOST_ID = 1234;
+ static final String PENDING_GADGET_ID = "pending_gadget";
+
GadgetManager mGadgetManager;
GadgetContainerView mGadgetContainer;
@@ -49,6 +56,14 @@ public class GadgetHostActivity extends Activity
findViewById(R.id.add_gadget).setOnClickListener(mOnClickListener);
mGadgetContainer = (GadgetContainerView)findViewById(R.id.gadget_container);
+
+ if (false) {
+ if (false) {
+ mHost.deleteHost();
+ } else {
+ GadgetHost.deleteAllHosts();
+ }
+ }
}
View.OnClickListener mOnClickListener = new View.OnClickListener() {
@@ -59,24 +74,51 @@ public class GadgetHostActivity extends Activity
void discoverGadget(int requestCode) {
Intent intent = new Intent(GadgetManager.GADGET_PICK_ACTION);
+ intent.putExtra(GadgetManager.EXTRA_HOST_ID, HOST_ID);
+ intent.putExtra(GadgetManager.EXTRA_GADGET_ID, mHost.allocateGadgetId());
+ startActivityForResult(intent, requestCode);
+ }
+
+ void configureGadget(int requestCode, int gadgetId, ComponentName configure) {
+ Intent intent = new Intent(GadgetManager.GADGET_CONFIGURE_ACTION);
+ intent.setComponent(configure);
+ intent.putExtra(GadgetManager.EXTRA_GADGET_ID, gadgetId);
+ SharedPreferences.Editor prefs = getPreferences(0).edit();
+ prefs.putInt(PENDING_GADGET_ID, gadgetId);
+ prefs.commit();
startActivityForResult(intent, requestCode);
}
void handleGadgetPickResult(int resultCode, Intent data) {
+ Bundle extras = data.getExtras();
+ int gadgetId = extras.getInt(GadgetManager.EXTRA_GADGET_ID);
if (resultCode == RESULT_OK) {
- Bundle extras = data.getExtras();
- int gadgetId = extras.getInt(GadgetManager.EXTRA_GADGET_ID);
GadgetInfo gadget = mGadgetManager.getGadgetInfo(gadgetId);
if (gadget.configure != null) {
// configure the gadget if we should
-
- // TODO: start the activity. Watch for a cancel result. If it returns
- // RESULT_CANCELED, then remove the gadget.
+ configureGadget(CONFIGURE_GADGET_REQUEST, gadgetId, gadget.configure);
} else {
// just add it as is
addGadgetView(gadgetId, gadget);
}
+ } else {
+ mHost.deleteGadgetId(gadgetId);
+ }
+ }
+
+ void handleGadgetConfigureResult(int resultCode, Intent data) {
+ int gadgetId = getPreferences(0).getInt(PENDING_GADGET_ID, -1);
+ Log.d(TAG, "resultCode=" + resultCode + " gadgetId=" + gadgetId);
+ if (gadgetId < 0) {
+ Log.w(TAG, "was no preference for PENDING_GADGET_ID");
+ return;
+ }
+ if (resultCode == RESULT_OK) {
+ GadgetInfo gadget = mGadgetManager.getGadgetInfo(gadgetId);
+ addGadgetView(gadgetId, gadget);
+ } else {
+ mHost.deleteGadgetId(gadgetId);
}
}
@@ -86,9 +128,11 @@ public class GadgetHostActivity extends Activity
// Add it to the list
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
- 65, // LinearLayout.LayoutParams.WRAP_CONTENT,
+ LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
mGadgetContainer.addView(view, layoutParams);
+
+ registerForContextMenu(view);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
@@ -96,6 +140,8 @@ public class GadgetHostActivity extends Activity
case DISCOVER_GADGET_REQUEST:
handleGadgetPickResult(resultCode, data);
break;
+ case CONFIGURE_GADGET_REQUEST:
+ handleGadgetConfigureResult(resultCode, data);
}
}
@@ -109,19 +155,41 @@ public class GadgetHostActivity extends Activity
mHost.stopListening();
}
- class MyGadgetView extends GadgetHostView {
- MyGadgetView() {
+ public void onCreateContextMenu(ContextMenu menu, View v,
+ ContextMenu.ContextMenuInfo menuInfo) {
+ menu.add(ContextMenu.NONE, R.string.delete_gadget, ContextMenu.NONE,
+ R.string.delete_gadget);
+ }
+
+ public boolean onContextItemSelected(MenuItem item) {
+ MyGadgetView view = (MyGadgetView)item.getMenuInfo();
+ switch (item.getItemId()) {
+ case R.string.delete_gadget:
+ Log.d(TAG, "delete! " + view.gadgetId);
+ mGadgetContainer.removeView(view);
+ mHost.deleteGadgetId(view.gadgetId);
+ break;
+ }
+
+ return true;
+ }
+
+ class MyGadgetView extends GadgetHostView implements ContextMenu.ContextMenuInfo {
+ int gadgetId;
+
+ MyGadgetView(int gadgetId) {
super(GadgetHostActivity.this);
+ this.gadgetId = gadgetId;
}
- public void createContextMenu(ContextMenu menu) {
- menu.add("Delete");
+ public ContextMenu.ContextMenuInfo getContextMenuInfo() {
+ return this;
}
}
- GadgetHost mHost = new GadgetHost(this, 0) {
+ GadgetHost mHost = new GadgetHost(this, HOST_ID) {
protected GadgetHostView onCreateView(Context context, int gadgetId, GadgetInfo gadget) {
- return new MyGadgetView();
+ return new MyGadgetView(gadgetId);
}
};
diff --git a/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetConfigure.java b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetConfigure.java
new file mode 100644
index 0000000..897c13c
--- /dev/null
+++ b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetConfigure.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2008 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.tests.gadgethost;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.EditText;
+
+public class TestGadgetConfigure extends Activity {
+ static final String TAG = "TestGadgetConfigure";
+
+ public TestGadgetConfigure() {
+ super();
+ }
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setContentView(R.layout.test_gadget_configure);
+
+ findViewById(R.id.save_button).setOnClickListener(mOnClickListener);
+ }
+
+ View.OnClickListener mOnClickListener = new View.OnClickListener() {
+ public void onClick(View v) {
+ String text = ((EditText)findViewById(R.id.edit_text)).getText().toString();
+ Log.d(TAG, "text is '" + text + '\'');
+ SharedPreferences.Editor prefs = getSharedPreferences(TestGadgetProvider.PREFS_NAME, 0)
+ .edit();
+ prefs.putString(TestGadgetProvider.PREF_PREFIX_KEY, text);
+ prefs.commit();
+ setResult(RESULT_OK);
+ finish();
+ }
+ };
+
+}
+
+
diff --git a/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetProvider.java b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetProvider.java
new file mode 100644
index 0000000..7614c9e
--- /dev/null
+++ b/tests/gadgets/GadgetHostTest/src/com/android/tests/gadgethost/TestGadgetProvider.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 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.tests.gadgethost;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.gadget.GadgetManager;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.util.Log;
+import android.widget.RemoteViews;
+
+public class TestGadgetProvider extends BroadcastReceiver {
+ static final String TAG = "TestGadgetProvider";
+
+ static final String PREFS_NAME = "com.android.tests.gadgethost.TestGadgetProvider";
+ static final String PREF_PREFIX_KEY = "prefix";
+
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ Log.d(TAG, "intent=" + intent);
+
+ if (GadgetManager.GADGET_ENABLED_ACTION.equals(action)) {
+ Log.d(TAG, "ENABLED");
+ }
+ else if (GadgetManager.GADGET_DISABLED_ACTION.equals(action)) {
+ Log.d(TAG, "DISABLED");
+ }
+ else if (GadgetManager.GADGET_UPDATE_ACTION.equals(action)) {
+ Log.d(TAG, "UPDATE");
+ Bundle extras = intent.getExtras();
+ int[] gadgetIds = extras.getIntArray(GadgetManager.EXTRA_GADGET_IDS);
+
+ SharedPreferences prefs = context.getSharedPreferences(
+ TestGadgetProvider.PREFS_NAME, 0);
+ String prefix = prefs.getString(PREF_PREFIX_KEY, "hai");
+
+ GadgetManager gm = GadgetManager.getInstance(context);
+ RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_gadget);
+ views.setTextViewText(R.id.oh_hai_text, prefix + ": " + SystemClock.elapsedRealtime());
+ if (false) {
+ gm.updateGadget(gadgetIds, views);
+ } else {
+ gm.updateGadget(new ComponentName("com.android.tests.gadgethost",
+ "com.android.tests.gadgethost.TestGadgetProvider"), views);
+ }
+ }
+ }
+}
+
diff --git a/tests/gadgets/GadgetProviderTest/Android.mk b/tests/gadgets/GadgetProviderTest/Android.mk
new file mode 100644
index 0000000..b9bfcdb
--- /dev/null
+++ b/tests/gadgets/GadgetProviderTest/Android.mk
@@ -0,0 +1,11 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := user
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_PACKAGE_NAME := GadgetProvider
+LOCAL_CERTIFICATE := platform
+
+include $(BUILD_PACKAGE)
diff --git a/tests/gadgets/GadgetProviderTest/AndroidManifest.xml b/tests/gadgets/GadgetProviderTest/AndroidManifest.xml
new file mode 100644
index 0000000..47a7a2e
--- /dev/null
+++ b/tests/gadgets/GadgetProviderTest/AndroidManifest.xml
@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.gadgetprovider">
+ <uses-permission android:name="android.permission.VIBRATE" />
+
+ <application>
+ <receiver android:name="TestGadgetProvider">
+ <intent-filter>
+ <action android:name="android.gadget.action.GADGET_UPDATE" />
+ </intent-filter>
+ <meta-data android:name="android.gadget.provider" android:resource="@xml/gadget_info" />
+ </receiver>
+ </application>
+</manifest>
diff --git a/tests/gadgets/GadgetProviderTest/res/layout/test_gadget.xml b/tests/gadgets/GadgetProviderTest/res/layout/test_gadget.xml
new file mode 100644
index 0000000..4d483c7
--- /dev/null
+++ b/tests/gadgets/GadgetProviderTest/res/layout/test_gadget.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/oh_hai_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/oh_hai"
+/>
+
diff --git a/tests/GadgetHost/res/values/strings.xml b/tests/gadgets/GadgetProviderTest/res/values/strings.xml
index d94cfbd..e07725f 100644
--- a/tests/GadgetHost/res/values/strings.xml
+++ b/tests/gadgets/GadgetProviderTest/res/values/strings.xml
@@ -18,5 +18,6 @@
<string name="gadget_view_title">Gadget Test</string>
<string name="add_gadget">Add Gadget</string>
<string name="oh_hai">Oh hai.</string>
+ <string name="delete_gadget">Delete</string>
</resources>
diff --git a/tests/GadgetHost/res/xml/gadget_info.xml b/tests/gadgets/GadgetProviderTest/res/xml/gadget_info.xml
index 84d0603..0b8ca2e 100644
--- a/tests/GadgetHost/res/xml/gadget_info.xml
+++ b/tests/gadgets/GadgetProviderTest/res/xml/gadget_info.xml
@@ -1,7 +1,7 @@
<gadget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="40dp"
android:minHeight="30dp"
- android:updatePeriodMillis="30000"
+ android:updatePeriodMillis="3000"
android:initialLayout="@layout/test_gadget"
>
</gadget-provider>
diff --git a/tests/gadgets/GadgetProviderTest/src/com/android/tests/gadgetprovider/TestGadgetProvider.java b/tests/gadgets/GadgetProviderTest/src/com/android/tests/gadgetprovider/TestGadgetProvider.java
new file mode 100644
index 0000000..8622bc7
--- /dev/null
+++ b/tests/gadgets/GadgetProviderTest/src/com/android/tests/gadgetprovider/TestGadgetProvider.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 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.tests.gadgetprovider;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.gadget.GadgetManager;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.util.Log;
+import android.widget.RemoteViews;
+
+public class TestGadgetProvider extends BroadcastReceiver {
+
+ static final String TAG = "TestGadgetProvider";
+
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ Log.d(TAG, "intent=" + intent);
+
+ if (GadgetManager.GADGET_ENABLED_ACTION.equals(action)) {
+ Log.d(TAG, "ENABLED");
+ }
+ else if (GadgetManager.GADGET_DISABLED_ACTION.equals(action)) {
+ Log.d(TAG, "DISABLED");
+ }
+ else if (GadgetManager.GADGET_UPDATE_ACTION.equals(action)) {
+ Log.d(TAG, "UPDATE");
+ Bundle extras = intent.getExtras();
+ int[] gadgetIds = extras.getIntArray(GadgetManager.EXTRA_GADGET_IDS);
+
+ GadgetManager gm = GadgetManager.getInstance(context);
+ RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_gadget);
+ views.setTextViewText(R.id.oh_hai_text, "hai: " + SystemClock.elapsedRealtime());
+ if (false) {
+ gm.updateGadget(gadgetIds, views);
+ } else {
+ gm.updateGadget(new ComponentName("com.android.tests.gadgetprovider",
+ "com.android.tests.gadgetprovider.TestGadgetProvider"), views);
+ }
+ }
+ }
+}
+