auto import from //depot/cupcake/@136594
diff --git a/Android.mk b/Android.mk
index 45f0f18..8da1cfc 100644
--- a/Android.mk
+++ b/Android.mk
@@ -100,6 +100,7 @@
 	core/java/com/android/internal/app/IUsageStats.aidl \
 	core/java/com/android/internal/gadget/IGadgetService.aidl \
 	core/java/com/android/internal/gadget/IGadgetHost.aidl \
+    core/java/com/android/internal/os/IResultReceiver.aidl \
 	core/java/com/android/internal/view/IInputContext.aidl \
 	core/java/com/android/internal/view/IInputContextCallback.aidl \
 	core/java/com/android/internal/view/IInputMethod.aidl \
diff --git a/api/current.xml b/api/current.xml
index 25295ca..6999a43 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -58576,19 +58576,6 @@
  visibility="public"
 >
 </constructor>
-<method name="dismissSoftInput"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="flags" type="int">
-</parameter>
-</method>
 <method name="getCandidatesHiddenVisibility"
  return="int"
  abstract="false"
@@ -59221,6 +59208,19 @@
  visibility="public"
 >
 </method>
+<method name="requestHideSelf"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="flags" type="int">
+</parameter>
+</method>
 <method name="sendDefaultEditorAction"
  return="boolean"
  abstract="false"
@@ -59426,6 +59426,10 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="flags" type="int">
+</parameter>
+<parameter name="resultReceiver" type="android.os.ResultReceiver">
+</parameter>
 </method>
 <method name="restartInput"
  return="void"
@@ -59454,6 +59458,8 @@
 >
 <parameter name="flags" type="int">
 </parameter>
+<parameter name="resultReceiver" type="android.os.ResultReceiver">
+</parameter>
 </method>
 <method name="startInput"
  return="void"
@@ -59537,6 +59543,21 @@
  visibility="public"
 >
 </method>
+<method name="toggleSoftInput"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="showFlags" type="int">
+</parameter>
+<parameter name="hideFlags" type="int">
+</parameter>
+</method>
 <method name="updateCursor"
  return="void"
  abstract="false"
@@ -64817,19 +64838,6 @@
 <parameter name="loopCount" type="int">
 </parameter>
 </method>
-<method name="setMarkerReachedListener"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="listener" type="android.media.AudioTrack.OnMarkerReachedListener">
-</parameter>
-</method>
 <method name="setNotificationMarkerPosition"
  return="int"
  abstract="false"
@@ -64843,19 +64851,6 @@
 <parameter name="markerInFrames" type="int">
 </parameter>
 </method>
-<method name="setPeriodicNotificationListener"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="listener" type="android.media.AudioTrack.OnPeriodicNotificationListener">
-</parameter>
-</method>
 <method name="setPlaybackHeadPosition"
  return="int"
  abstract="false"
@@ -64869,6 +64864,34 @@
 <parameter name="positionInFrames" type="int">
 </parameter>
 </method>
+<method name="setPlaybackPositionUpdateListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.media.AudioTrack.OnPlaybackPositionUpdateListener">
+</parameter>
+</method>
+<method name="setPlaybackPositionUpdateListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.media.AudioTrack.OnPlaybackPositionUpdateListener">
+</parameter>
+<parameter name="handler" type="android.os.Handler">
+</parameter>
+</method>
 <method name="setPlaybackRate"
  return="int"
  abstract="false"
@@ -65103,7 +65126,7 @@
 >
 </field>
 </class>
-<interface name="AudioTrack.OnMarkerReachedListener"
+<interface name="AudioTrack.OnPlaybackPositionUpdateListener"
  abstract="true"
  static="true"
  final="false"
@@ -65123,14 +65146,6 @@
 <parameter name="track" type="android.media.AudioTrack">
 </parameter>
 </method>
-</interface>
-<interface name="AudioTrack.OnPeriodicNotificationListener"
- abstract="true"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
 <method name="onPeriodicNotification"
  return="void"
  abstract="true"
@@ -81150,6 +81165,93 @@
 >
 </constructor>
 </class>
+<class name="ResultReceiver"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<constructor name="ResultReceiver"
+ type="android.os.ResultReceiver"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="handler" type="android.os.Handler">
+</parameter>
+</constructor>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="onReceiveResult"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+<parameter name="resultCode" type="int">
+</parameter>
+<parameter name="resultData" type="android.os.Bundle">
+</parameter>
+</method>
+<method name="send"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="resultCode" type="int">
+</parameter>
+<parameter name="resultData" type="android.os.Bundle">
+</parameter>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="out" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
 <class name="StatFs"
  extends="java.lang.Object"
  abstract="false"
@@ -102489,6 +102591,17 @@
  visibility="public"
 >
 </field>
+<field name="TYPE_TEXT_VARIATION_FILTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="176"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TYPE_TEXT_VARIATION_LONG_MESSAGE"
  type="int"
  transient="false"
@@ -102533,6 +102646,17 @@
  visibility="public"
 >
 </field>
+<field name="TYPE_TEXT_VARIATION_PHONETIC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="192"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TYPE_TEXT_VARIATION_POSTAL_ADDRESS"
  type="int"
  transient="false"
@@ -102566,7 +102690,7 @@
  visibility="public"
 >
 </field>
-<field name="TYPE_TEXT_VARIATION_WEB_EDIT_TEXT"
+<field name="TYPE_TEXT_VARIATION_VISIBLE_PASSWORD"
  type="int"
  transient="false"
  volatile="false"
@@ -102577,6 +102701,17 @@
  visibility="public"
 >
 </field>
+<field name="TYPE_TEXT_VARIATION_WEB_EDIT_TEXT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="160"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 </interface>
 <class name="Layout"
  extends="java.lang.Object"
@@ -135050,6 +135185,17 @@
  visibility="public"
 >
 </field>
+<field name="IME_ACTION_DONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="IME_ACTION_GO"
  type="int"
  transient="false"
@@ -135970,6 +136116,10 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="flags" type="int">
+</parameter>
+<parameter name="resultReceiver" type="android.os.ResultReceiver">
+</parameter>
 </method>
 <method name="restartInput"
  return="void"
@@ -136026,6 +136176,8 @@
 >
 <parameter name="flags" type="int">
 </parameter>
+<parameter name="resultReceiver" type="android.os.ResultReceiver">
+</parameter>
 </method>
 <method name="startInput"
  return="void"
@@ -136366,7 +136518,7 @@
 </parameter>
 </method>
 <method name="hideSoftInputFromWindow"
- return="void"
+ return="boolean"
  abstract="false"
  native="false"
  synchronized="false"
@@ -136380,6 +136532,23 @@
 <parameter name="flags" type="int">
 </parameter>
 </method>
+<method name="hideSoftInputFromWindow"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="windowToken" type="android.os.IBinder">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+<parameter name="resultReceiver" type="android.os.ResultReceiver">
+</parameter>
+</method>
 <method name="hideStatusIcon"
  return="void"
  abstract="false"
@@ -136509,7 +136678,7 @@
 >
 </method>
 <method name="showSoftInput"
- return="void"
+ return="boolean"
  abstract="false"
  native="false"
  synchronized="false"
@@ -136523,6 +136692,38 @@
 <parameter name="flags" type="int">
 </parameter>
 </method>
+<method name="showSoftInput"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="view" type="android.view.View">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+<parameter name="resultReceiver" type="android.os.ResultReceiver">
+</parameter>
+</method>
+<method name="showSoftInputFromInputMethod"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="token" type="android.os.IBinder">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
 <method name="showStatusIcon"
  return="void"
  abstract="false"
@@ -136540,6 +136741,38 @@
 <parameter name="iconId" type="int">
 </parameter>
 </method>
+<method name="toggleSoftInput"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="showFlags" type="int">
+</parameter>
+<parameter name="hideFlags" type="int">
+</parameter>
+</method>
+<method name="toggleSoftInputFromWindow"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="windowToken" type="android.os.IBinder">
+</parameter>
+<parameter name="showFlags" type="int">
+</parameter>
+<parameter name="hideFlags" type="int">
+</parameter>
+</method>
 <method name="updateCursor"
  return="void"
  abstract="false"
@@ -136621,6 +136854,50 @@
  visibility="public"
 >
 </field>
+<field name="RESULT_HIDDEN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESULT_SHOWN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESULT_UNCHANGED_HIDDEN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESULT_UNCHANGED_SHOWN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SHOW_FORCED"
  type="int"
  transient="false"
@@ -136724,6 +137001,21 @@
  visibility="public"
 >
 </method>
+<method name="toggleSoftInput"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="showFlags" type="int">
+</parameter>
+<parameter name="hideFlags" type="int">
+</parameter>
+</method>
 <method name="updateCursor"
  return="void"
  abstract="true"
@@ -138147,6 +138439,75 @@
 </parameter>
 </method>
 </interface>
+<class name="PluginData"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="PluginData"
+ type="android.webkit.PluginData"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="stream" type="java.io.InputStream">
+</parameter>
+<parameter name="length" type="long">
+</parameter>
+<parameter name="headers" type="java.util.Map&lt;java.lang.String, java.lang.String[]&gt;">
+</parameter>
+<parameter name="code" type="int">
+</parameter>
+</constructor>
+<method name="getContentLength"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getHeaders"
+ return="java.util.Map&lt;java.lang.String, java.lang.String[]&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getInputStream"
+ return="java.io.InputStream"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStatusCode"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
 <class name="PluginList"
  extends="java.lang.Object"
  abstract="false"
@@ -138500,6 +138861,21 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<method name="getPluginData"
+ return="android.webkit.PluginData"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="url" type="java.lang.String">
+</parameter>
+<parameter name="headers" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;">
+</parameter>
+</method>
 <method name="service"
  return="android.webkit.CacheManager.CacheResult"
  abstract="true"
@@ -138507,7 +138883,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="url" type="java.lang.String">
@@ -138532,6 +138908,21 @@
  visibility="public"
 >
 </constructor>
+<method name="getPluginData"
+ return="android.webkit.PluginData"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="url" type="java.lang.String">
+</parameter>
+<parameter name="headers" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;">
+</parameter>
+</method>
 <method name="getSurrogate"
  return="android.webkit.CacheManager.CacheResult"
  abstract="false"
@@ -138539,7 +138930,7 @@
  synchronized="true"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="url" type="java.lang.String">
@@ -155451,6 +155842,17 @@
 <parameter name="depth" type="int">
 </parameter>
 </method>
+<method name="didTouchFocusSelectAll"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="endBatchEdit"
  return="void"
  abstract="false"
@@ -157233,17 +157635,6 @@
 <parameter name="pixels" type="int">
 </parameter>
 </method>
-<method name="shouldAdvanceFocusOnEnter"
- return="boolean"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="protected"
->
-</method>
 </class>
 <class name="TextView.BufferType"
  extends="java.lang.Enum"
diff --git a/cmds/dumpstate/dumpstate.c b/cmds/dumpstate/dumpstate.c
index e08230f..5ef7499 100644
--- a/cmds/dumpstate/dumpstate.c
+++ b/cmds/dumpstate/dumpstate.c
@@ -127,7 +127,10 @@
         PRINT("========================================================");
         PRINT("== dumpsys");
         PRINT("========================================================");
-        EXEC("dumpsys");
+        /* the full dumpsys is starting to take a long time, so we need
+           to increase its timeout.  we really need to do the timeouts in
+           dumpsys itself... */
+        EXEC_TIMEOUT("dumpsys", 40);
     }
 }
 
diff --git a/cmds/dumpstate/dumpstate.h b/cmds/dumpstate/dumpstate.h
index 4e88e4b..33127fb 100644
--- a/cmds/dumpstate/dumpstate.h
+++ b/cmds/dumpstate/dumpstate.h
@@ -43,6 +43,15 @@
     run_command(&c, TIMEOUT);   \
 }
 
+#define EXEC_TIMEOUT(cmd, tmout)\
+{                               \
+    static struct Command c = { \
+        "/system/bin/" cmd,     \
+        { cmd, 0 }              \
+    };                          \
+    run_command(&c, tmout);     \
+}
+
 #define EXEC_XBIN(cmd)          \
 {                               \
     static struct Command c = { \
diff --git a/core/java/android/database/sqlite/SQLiteProgram.java b/core/java/android/database/sqlite/SQLiteProgram.java
index f89c87d..9e85452 100644
--- a/core/java/android/database/sqlite/SQLiteProgram.java
+++ b/core/java/android/database/sqlite/SQLiteProgram.java
@@ -22,7 +22,7 @@
  * A base class for compiled SQLite programs.
  */
 public abstract class SQLiteProgram extends SQLiteClosable {
-    static final String TAG = "SQLiteProgram";
+    private static final String TAG = "SQLiteProgram";
 
     /** The database this program is compiled against. */
     protected SQLiteDatabase mDatabase;
diff --git a/core/java/android/database/sqlite/SQLiteQuery.java b/core/java/android/database/sqlite/SQLiteQuery.java
index 5bfa0e8..1386a0d 100644
--- a/core/java/android/database/sqlite/SQLiteQuery.java
+++ b/core/java/android/database/sqlite/SQLiteQuery.java
@@ -18,13 +18,14 @@
 
 import android.database.CursorWindow;
 import android.os.SystemClock;
+import android.util.Log;
 
 /**
  * A SQLite program that represents a query that reads the resulting rows into a CursorWindow.
  * This class is used by SQLiteCursor and isn't useful itself.
  */
 public class SQLiteQuery extends SQLiteProgram {
-    //private static final String TAG = "Cursor";
+    private static final String TAG = "Cursor";
 
     /** The index of the unbound OFFSET parameter */
     private int mOffsetIndex;
@@ -73,6 +74,11 @@
                 // is not safe in this situation. the native code will ignore maxRead
                 int numRows = native_fill_window(window, window.getStartPosition(), mOffsetIndex,
                         maxRead, lastPos);
+
+                // Logging
+                if (SQLiteDebug.DEBUG_SQL_STATEMENTS) {
+                    Log.d(TAG, "fillWindow(): " + mQuery);
+                }
                 if (logStats) {
                     mDatabase.logTimeStat(true /* read */, startTime,
                             SystemClock.elapsedRealtime());
diff --git a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
index 5a85c66..6cf90d6 100644
--- a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
@@ -30,6 +30,7 @@
     private static final int DO_UPDATE_SELECTION = 90;
     private static final int DO_UPDATE_CURSOR = 95;
     private static final int DO_APP_PRIVATE_COMMAND = 100;
+    private static final int DO_TOGGLE_SOFT_INPUT = 105;
    
     final HandlerCaller mCaller;
     final InputMethodSession mInputMethodSession;
@@ -106,6 +107,10 @@
                 mCaller.recycleArgs(args);
                 return;
             }
+            case DO_TOGGLE_SOFT_INPUT: {
+                mInputMethodSession.toggleSoftInput(msg.arg1, msg.arg2);
+                return;
+            }
         }
         Log.w(TAG, "Unhandled message code: " + msg.what);
     }
@@ -149,4 +154,8 @@
     public void appPrivateCommand(String action, Bundle data) {
         mCaller.executeOrSendMessage(mCaller.obtainMessageOO(DO_APP_PRIVATE_COMMAND, action, data));
     }
+    
+    public void toggleSoftInput(int showFlags, int hideFlags) {
+        mCaller.executeOrSendMessage(mCaller.obtainMessageII(DO_TOGGLE_SOFT_INPUT, showFlags, hideFlags));
+    }
 }
diff --git a/core/java/android/inputmethodservice/IInputMethodWrapper.java b/core/java/android/inputmethodservice/IInputMethodWrapper.java
index a2c75b5..20a05a5 100644
--- a/core/java/android/inputmethodservice/IInputMethodWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodWrapper.java
@@ -13,6 +13,7 @@
 import android.os.IBinder;
 import android.os.Message;
 import android.os.RemoteException;
+import android.os.ResultReceiver;
 import android.util.Log;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputBinding;
@@ -144,10 +145,10 @@
                 mInputMethod.revokeSession((InputMethodSession)msg.obj);
                 return;
             case DO_SHOW_SOFT_INPUT:
-                mInputMethod.showSoftInput(msg.arg1);
+                mInputMethod.showSoftInput(msg.arg1, (ResultReceiver)msg.obj);
                 return;
             case DO_HIDE_SOFT_INPUT:
-                mInputMethod.hideSoftInput();
+                mInputMethod.hideSoftInput(msg.arg1, (ResultReceiver)msg.obj);
                 return;
         }
         Log.w(TAG, "Unhandled message code: " + msg.what);
@@ -225,12 +226,13 @@
         }
     }
     
-    public void showSoftInput(int flags) {
-        mCaller.executeOrSendMessage(mCaller.obtainMessageI(DO_SHOW_SOFT_INPUT,
-                flags));
+    public void showSoftInput(int flags, ResultReceiver resultReceiver) {
+        mCaller.executeOrSendMessage(mCaller.obtainMessageIO(DO_SHOW_SOFT_INPUT,
+                flags, resultReceiver));
     }
     
-    public void hideSoftInput() {
-        mCaller.executeOrSendMessage(mCaller.obtainMessage(DO_HIDE_SOFT_INPUT));
+    public void hideSoftInput(int flags, ResultReceiver resultReceiver) {
+        mCaller.executeOrSendMessage(mCaller.obtainMessageIO(DO_HIDE_SOFT_INPUT,
+                flags, resultReceiver));
     }
 }
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 1e2e2f3..f1e613e 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -26,6 +26,7 @@
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.os.ResultReceiver;
 import android.os.SystemClock;
 import android.provider.Settings;
 import android.text.InputType;
@@ -53,7 +54,6 @@
 import android.view.inputmethod.EditorInfo;
 import android.widget.Button;
 import android.widget.FrameLayout;
-
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 
@@ -348,23 +348,37 @@
         /**
          * Handle a request by the system to hide the soft input area.
          */
-        public void hideSoftInput() {
+        public void hideSoftInput(int flags, ResultReceiver resultReceiver) {
             if (DEBUG) Log.v(TAG, "hideSoftInput()");
+            boolean wasVis = isInputViewShown();
             mShowInputFlags = 0;
             mShowInputRequested = false;
             mShowInputForced = false;
             hideWindow();
+            if (resultReceiver != null) {
+                resultReceiver.send(wasVis != isInputViewShown()
+                        ? InputMethodManager.RESULT_HIDDEN
+                        : (wasVis ? InputMethodManager.RESULT_UNCHANGED_SHOWN
+                                : InputMethodManager.RESULT_UNCHANGED_HIDDEN), null);
+            }
         }
 
         /**
          * Handle a request by the system to show the soft input area.
          */
-        public void showSoftInput(int flags) {
+        public void showSoftInput(int flags, ResultReceiver resultReceiver) {
             if (DEBUG) Log.v(TAG, "showSoftInput()");
+            boolean wasVis = isInputViewShown();
             mShowInputFlags = 0;
             if (onShowInputRequested(flags, false)) {
                 showWindow(true);
             }
+            if (resultReceiver != null) {
+                resultReceiver.send(wasVis != isInputViewShown()
+                        ? InputMethodManager.RESULT_SHOWN
+                        : (wasVis ? InputMethodManager.RESULT_UNCHANGED_SHOWN
+                                : InputMethodManager.RESULT_UNCHANGED_HIDDEN), null);
+            }
         }
     }
     
@@ -440,6 +454,13 @@
             }
             InputMethodService.this.onAppPrivateCommand(action, data);
         }
+        
+        /**
+         * 
+         */
+        public void toggleSoftInput(int showFlags, int hideFlags) {
+            InputMethodService.this.onToggleSoftInput(showFlags, hideFlags);
+        }
     }
     
     /**
@@ -1048,7 +1069,7 @@
      * text; you can override this (not calling the base class implementation)
      * to perform whatever behavior you would like.
      * 
-     * @boolean finishingInput If true, {@link #onFinishInput} will be
+     * @param finishingInput If true, {@link #onFinishInput} will be
      * called immediately after.
      */
     public void onFinishInputView(boolean finishingInput) {
@@ -1092,7 +1113,7 @@
      * text; you can override this (not calling the base class implementation)
      * to perform whatever behavior you would like.
      * 
-     * @boolean finishingInput If true, {@link #onFinishInput} will be
+     * @param finishingInput If true, {@link #onFinishInput} will be
      * called immediately after.
      */
     public void onFinishCandidatesView(boolean finishingInput) {
@@ -1107,14 +1128,14 @@
     /**
      * The system has decided that it may be time to show your input method.
      * This is called due to a corresponding call to your
-     * {@link InputMethod#showSoftInput(int) InputMethod.showSoftInput(int)}
+     * {@link InputMethod#showSoftInput InputMethod.showSoftInput()}
      * method.  The default implementation uses
      * {@link #onEvaluateInputViewShown()}, {@link #onEvaluateFullscreenMode()},
      * and the current configuration to decide whether the input view should
      * be shown at this point.
      * 
      * @param flags Provides additional information about the show request,
-     * as per {@link InputMethod#showSoftInput(int) InputMethod.showSoftInput(int)}.
+     * as per {@link InputMethod#showSoftInput InputMethod.showSoftInput()}.
      * @param configChange This is true if we are re-showing due to a
      * configuration change.
      * @return Returns true to indicate that the window should be shown.
@@ -1290,7 +1311,7 @@
         mStartedInputConnection = null;
         mCurCompletions = null;
     }
-    
+
     void doStartInput(InputConnection ic, EditorInfo attribute, boolean restarting) {
         if (!restarting) {
             doFinishInput();
@@ -1399,11 +1420,25 @@
      * 0 or have the {@link InputMethodManager#HIDE_IMPLICIT_ONLY
      * InputMethodManager.HIDE_IMPLICIT_ONLY} bit set.
      */
-    public void dismissSoftInput(int flags) {
+    public void requestHideSelf(int flags) {
         mImm.hideSoftInputFromInputMethod(mToken, flags);
     }
     
     /**
+     * Show the input method. This is a call back to the
+     * IMF to handle showing the input method.
+     * Close this input method's soft input area, removing it from the display.
+     * The input method will continue running, but the user can no longer use
+     * it to generate input by touching the screen.
+     * @param flags Provides additional operating flags.  Currently may be
+     * 0 or have the {@link InputMethodManager#SHOW_FORCED
+     * InputMethodManager.} bit set.
+     */
+    private void requestShowSelf(int flags) {
+        mImm.showSoftInputFromInputMethod(mToken, flags);
+    }
+    
+    /**
      * Override this to intercept key down events before they are processed by the
      * application.  If you return true, the application will not itself
      * process the event.  If you return true, the normal application processing
@@ -1421,7 +1456,7 @@
             if (mShowInputRequested) {
                 // If the soft input area is shown, back closes it and we
                 // consume the back key.
-                dismissSoftInput(0);
+                requestHideSelf(0);
                 return true;
             } else if (mWindowVisible) {
                 if (mCandidatesVisibility == View.VISIBLE) {
@@ -1438,7 +1473,6 @@
                 }
             }
         }
-        
         return doMovementKey(keyCode, event, MOVEMENT_DOWN);
     }
 
@@ -1480,6 +1514,18 @@
     public void onAppPrivateCommand(String action, Bundle data) {
     }
     
+    /**
+     * Handle a request by the system to toggle the soft input area.
+     */
+    private void onToggleSoftInput(int showFlags, int hideFlags) {
+        if (DEBUG) Log.v(TAG, "toggleSoftInput()");
+        if (isInputViewShown()) {
+            requestHideSelf(hideFlags);
+        } else {
+            requestShowSelf(showFlags);
+        }
+    }
+    
     static final int MOVEMENT_DOWN = -1;
     static final int MOVEMENT_UP = -2;
     
@@ -1737,6 +1783,8 @@
                 return getText(com.android.internal.R.string.ime_action_send);
             case EditorInfo.IME_ACTION_NEXT:
                 return getText(com.android.internal.R.string.ime_action_next);
+            case EditorInfo.IME_ACTION_DONE:
+                return getText(com.android.internal.R.string.ime_action_done);
             default:
                 return getText(com.android.internal.R.string.ime_action_default);
         }
@@ -1777,7 +1825,7 @@
      */
     public void onExtractingInputChanged(EditorInfo ei) {
         if (ei.inputType == InputType.TYPE_NULL) {
-            dismissSoftInput(InputMethodManager.HIDE_NOT_ALWAYS);
+            requestHideSelf(InputMethodManager.HIDE_NOT_ALWAYS);
         }
     }
     
diff --git a/core/java/android/inputmethodservice/KeyboardView.java b/core/java/android/inputmethodservice/KeyboardView.java
index c838779..f58b7ef 100755
--- a/core/java/android/inputmethodservice/KeyboardView.java
+++ b/core/java/android/inputmethodservice/KeyboardView.java
@@ -502,7 +502,7 @@
     }
 
     private CharSequence adjustCase(CharSequence label) {
-        if (mKeyboard.isShifted() && label != null && label.length() == 1
+        if (mKeyboard.isShifted() && label != null && label.length() < 3
                 && Character.isLowerCase(label.charAt(0))) {
             label = label.toString().toUpperCase();
         }
diff --git a/core/java/android/net/http/AndroidHttpClient.java b/core/java/android/net/http/AndroidHttpClient.java
index 0c4fcda..c2013d5 100644
--- a/core/java/android/net/http/AndroidHttpClient.java
+++ b/core/java/android/net/http/AndroidHttpClient.java
@@ -63,6 +63,7 @@
 import android.content.ContentResolver;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.os.SystemProperties;
 
 /**
  * Subclass of the Apache {@link DefaultHttpClient} that is configured with
@@ -387,10 +388,12 @@
         }
 
         /**
-         * Returns true if auth logging is turned on for this configuration.
+         * Returns true if auth logging is turned on for this configuration.  Can only be set on
+         * insecure devices.
          */
         private boolean isAuthLoggable() {
-            return Log.isLoggable(tag + "-auth", level);
+            String secure = SystemProperties.get("ro.secure");
+            return "0".equals(secure) && Log.isLoggable(tag + "-auth", level);
         }
 
         /**
diff --git a/core/java/android/os/ResultReceiver.aidl b/core/java/android/os/ResultReceiver.aidl
new file mode 100644
index 0000000..28ce6d5
--- /dev/null
+++ b/core/java/android/os/ResultReceiver.aidl
@@ -0,0 +1,20 @@
+/* //device/java/android/android/os/ParcelFileDescriptor.aidl
+**
+** 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.
+*/
+
+package android.os;
+
+parcelable ResultReceiver;
diff --git a/core/java/android/os/ResultReceiver.java b/core/java/android/os/ResultReceiver.java
new file mode 100644
index 0000000..711d4d9e
--- /dev/null
+++ b/core/java/android/os/ResultReceiver.java
@@ -0,0 +1,130 @@
+/*
+ * 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 android.os;
+
+import com.android.internal.os.IResultReceiver;
+
+/**
+ * Generic interface for receiving a callback result from someone.  Use this
+ * by creating a subclass and implement {@link #onReceiveResult}, which you can
+ * then pass to others and send through IPC, and receive results they
+ * supply with {@link #send}.
+ */
+public class ResultReceiver implements Parcelable {
+    final boolean mLocal;
+    final Handler mHandler;
+    
+    IResultReceiver mReceiver;
+    
+    class MyRunnable implements Runnable {
+        final int mResultCode;
+        final Bundle mResultData;
+        
+        MyRunnable(int resultCode, Bundle resultData) {
+            mResultCode = resultCode;
+            mResultData = resultData;
+        }
+        
+        public void run() {
+            onReceiveResult(mResultCode, mResultData);
+        }
+    }
+    
+    class MyResultReceiver extends IResultReceiver.Stub {
+        public void send(int resultCode, Bundle resultData) {
+            if (mHandler != null) {
+                mHandler.post(new MyRunnable(resultCode, resultData));
+            } else {
+                onReceiveResult(resultCode, resultData);
+            }
+        }
+    }
+    
+    /**
+     * Create a new ResultReceive to receive results.  Your
+     * {@link #onReceiveResult} method will be called from the thread running
+     * <var>handler</var> if given, or from an arbitrary thread if null.
+     */
+    public ResultReceiver(Handler handler) {
+        mLocal = true;
+        mHandler = handler;
+    }
+    
+    /**
+     * Deliver a result to this receiver.  Will call {@link #onReceiveResult},
+     * always asynchronously if the receiver has supplied a Handler in which
+     * to dispatch the result.
+     * @param resultCode Arbitrary result code to deliver, as defined by you.
+     * @param resultData Any additional data provided by you.
+     */
+    public void send(int resultCode, Bundle resultData) {
+        if (mLocal) {
+            if (mHandler != null) {
+                mHandler.post(new MyRunnable(resultCode, resultData));
+            } else {
+                onReceiveResult(resultCode, resultData);
+            }
+            return;
+        }
+        
+        if (mReceiver != null) {
+            try {
+                mReceiver.send(resultCode, resultData);
+            } catch (RemoteException e) {
+            }
+        }
+    }
+    
+    /**
+     * Override to receive results delivered to this object.
+     * 
+     * @param resultCode Arbitrary result code delivered by the sender, as
+     * defined by the sender.
+     * @param resultData Any additional data provided by the sender.
+     */
+    protected void onReceiveResult(int resultCode, Bundle resultData) {
+    }
+    
+    public int describeContents() {
+        return 0;
+    }
+
+    public void writeToParcel(Parcel out, int flags) {
+        synchronized (this) {
+            if (mReceiver == null) {
+                mReceiver = new MyResultReceiver();
+            }
+            out.writeStrongBinder(mReceiver.asBinder());
+        }
+    }
+
+    ResultReceiver(Parcel in) {
+        mLocal = false;
+        mHandler = null;
+        mReceiver = IResultReceiver.Stub.asInterface(in.readStrongBinder());
+    }
+    
+    public static final Parcelable.Creator<ResultReceiver> CREATOR
+            = new Parcelable.Creator<ResultReceiver>() {
+        public ResultReceiver createFromParcel(Parcel in) {
+            return new ResultReceiver(in);
+        }
+        public ResultReceiver[] newArray(int size) {
+            return new ResultReceiver[size];
+        }
+    };
+}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index b536b0d..b0ee479 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2825,6 +2825,11 @@
         public static final String BATTERY_DISCHARGE_DURATION_THRESHOLD =
                 "battery_discharge_duration_threshold";
         public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold";
+        
+        /**
+         * An email address that anr bugreports should be sent to.
+         */
+        public static final String ANR_BUGREPORT_RECIPIENT = "anr_bugreport_recipient";
 
         /**
          * @deprecated
diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
index 18c64ed..d802c14 100644
--- a/core/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -1023,6 +1023,11 @@
          * <P>Type: INTEGER</P>
          */
         public static final String ERROR = "error";
+        /**
+         * Indicates whether this thread contains any attachments.
+         * <P>Type: INTEGER</P>
+         */
+        public static final String HAS_ATTACHMENT = "has_attachment";
     }
 
     /**
diff --git a/core/java/android/text/InputType.java b/core/java/android/text/InputType.java
index f643f92..d50684a 100644
--- a/core/java/android/text/InputType.java
+++ b/core/java/android/text/InputType.java
@@ -179,9 +179,27 @@
     public static final int TYPE_TEXT_VARIATION_PASSWORD = 0x00000080;
     
     /**
+     * Variation of {@link #TYPE_CLASS_TEXT}: entering a password, which should
+     * be visible to the user.
+     */
+    public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 0x00000090;
+    
+    /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering text inside of a web form.
      */
-    public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 0x00000090;
+    public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 0x000000a0;
+    
+    /**
+     * Variation of {@link #TYPE_CLASS_TEXT}: entering text to filter contents
+     * of a list etc.
+     */
+    public static final int TYPE_TEXT_VARIATION_FILTER = 0x000000b0;
+    
+    /**
+     * Variation of {@link #TYPE_CLASS_TEXT}: entering text for phonetic
+     * pronunciation, such as a phonetic name field in contacts.
+     */
+    public static final int TYPE_TEXT_VARIATION_PHONETIC = 0x000000c0;
     
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
diff --git a/core/java/android/text/method/ArrowKeyMovementMethod.java b/core/java/android/text/method/ArrowKeyMovementMethod.java
index 6df0b35..8aa49af 100644
--- a/core/java/android/text/method/ArrowKeyMovementMethod.java
+++ b/core/java/android/text/method/ArrowKeyMovementMethod.java
@@ -204,7 +204,7 @@
                                 MotionEvent event) {
         boolean handled = Touch.onTouchEvent(widget, buffer, event);
 
-        if (widget.isFocused()) {
+        if (widget.isFocused() && !widget.didTouchFocusSelectAll()) {
             if (event.getAction() == MotionEvent.ACTION_UP) {
                 int x = (int) event.getX();
                 int y = (int) event.getY();
diff --git a/core/java/android/text/method/QwertyKeyListener.java b/core/java/android/text/method/QwertyKeyListener.java
index 0b39517..3f8288c 100644
--- a/core/java/android/text/method/QwertyKeyListener.java
+++ b/core/java/android/text/method/QwertyKeyListener.java
@@ -296,20 +296,27 @@
                 String old = new String(repl[0].mText);
 
                 content.removeSpan(repl[0]);
-                content.setSpan(TextKeyListener.INHIBIT_REPLACEMENT,
-                                en, en, Spannable.SPAN_POINT_POINT);
-                content.replace(st, en, old);
 
-                en = content.getSpanStart(TextKeyListener.INHIBIT_REPLACEMENT);
-                if (en - 1 >= 0) {
+                // only cancel the autocomplete if the cursor is at the end of
+                // the replaced span
+                if (selStart == en) {
                     content.setSpan(TextKeyListener.INHIBIT_REPLACEMENT,
-                                    en - 1, en,
-                                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-                } else {
-                    content.removeSpan(TextKeyListener.INHIBIT_REPLACEMENT);
-                }
+                                    en, en, Spannable.SPAN_POINT_POINT);
+                    content.replace(st, en, old);
 
-                adjustMetaAfterKeypress(content);
+                    en = content.getSpanStart(TextKeyListener.INHIBIT_REPLACEMENT);
+                    if (en - 1 >= 0) {
+                        content.setSpan(TextKeyListener.INHIBIT_REPLACEMENT,
+                                        en - 1, en,
+                                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+                    } else {
+                        content.removeSpan(TextKeyListener.INHIBIT_REPLACEMENT);
+                    }
+                    adjustMetaAfterKeypress(content);
+                } else {
+                    adjustMetaAfterKeypress(content);
+                    return super.onKeyDown(view, content, keyCode, event);
+                }
 
                 return true;
             }
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 70cc2a9..dc7b299 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -1387,14 +1387,10 @@
                     // The child need to draw an animation, potentially offscreen, so
                     // make sure we do not cancel invalidate requests
                     mPrivateFlags |= DRAW_ANIMATION;
-                    // Enlarge the invalidate region to account for rounding errors
-                    // in Animation#getInvalidateRegion(); Using 0.5f is unfortunately
-                    // not enough for some types of animations (e.g. scale down.)
-                    final int left = cl + (int) (region.left - 1.0f);
-                    final int top = ct + (int) (region.top - 1.0f);
-                    invalidate(left, top,
-                            left + (int) (region.width() + 1.0f),
-                            top + (int) (region.height() + 1.0f));
+
+                    final int left = cl + (int) region.left;
+                    final int top = ct + (int) region.top;
+                    invalidate(left, top, left + (int) region.width(), top + (int) region.height());
                 }
             }
         } else if ((flags & FLAG_SUPPORT_STATIC_TRANSFORMATIONS) ==
diff --git a/core/java/android/view/animation/Animation.java b/core/java/android/view/animation/Animation.java
index b9c8ec3..a662760 100644
--- a/core/java/android/view/animation/Animation.java
+++ b/core/java/android/view/animation/Animation.java
@@ -340,6 +340,7 @@
      * to run.
      */
     public void restrictDuration(long durationMillis) {
+        // If we start after the duration, then we just won't run.
         if (mStartOffset > durationMillis) {
             mStartOffset = durationMillis;
             mDuration = 0;
@@ -349,11 +350,26 @@
         
         long dur = mDuration + mStartOffset;
         if (dur > durationMillis) {
-            mDuration = dur = durationMillis-mStartOffset;
+            mDuration = durationMillis-mStartOffset;
+            dur = durationMillis;
         }
+        // If the duration is 0 or less, then we won't run.
+        if (mDuration <= 0) {
+            mDuration = 0;
+            mRepeatCount = 0;
+            return;
+        }
+        // Reduce the number of repeats to keep below the maximum duration.
+        // The comparison between mRepeatCount and duration is to catch
+        // overflows after multiplying them.
         if (mRepeatCount < 0 || mRepeatCount > durationMillis
                 || (dur*mRepeatCount) > durationMillis) {
-            mRepeatCount = (int)(durationMillis/dur);
+            // Figure out how many times to do the animation.  Subtract 1 since
+            // repeat count is the number of times to repeat so 0 runs once.
+            mRepeatCount = (int)(durationMillis/dur) - 1;
+            if (mRepeatCount < 0) {
+                mRepeatCount = 0;
+            }
         }
     }
     
@@ -416,7 +432,7 @@
      * Sets how many times the animation should be repeated. If the repeat
      * count is 0, the animation is never repeated. If the repeat count is
      * greater than 0 or {@link #INFINITE}, the repeat mode will be taken
-     * into account. The repeat count if 0 by default.
+     * into account. The repeat count is 0 by default.
      *
      * @param repeatCount the number of times the animation should be repeated
      * @attr ref android.R.styleable#Animation_repeatCount
@@ -806,6 +822,8 @@
 
         invalidate.set(left, top, right, bottom);
         transformation.getMatrix().mapRect(invalidate);
+        // Enlarge the invalidate region to account for rounding errors
+        invalidate.inset(-1.0f, -1.0f);
         tempRegion.set(invalidate);
         invalidate.union(previousRegion);
 
@@ -830,6 +848,8 @@
     public void initializeInvalidateRegion(int left, int top, int right, int bottom) {
         final RectF region = mPreviousRegion;
         region.set(left, top, right, bottom);
+        // Enlarge the invalidate region to account for rounding errors
+        region.inset(-1.0f, -1.0f);
         if (mFillBefore) {
             final Transformation previousTransformation = mPreviousTransformation;
             applyTransformation(0.0f, previousTransformation);
diff --git a/core/java/android/view/animation/AnimationSet.java b/core/java/android/view/animation/AnimationSet.java
index 590ce06..98b2594 100644
--- a/core/java/android/view/animation/AnimationSet.java
+++ b/core/java/android/view/animation/AnimationSet.java
@@ -266,32 +266,10 @@
     /**
      * @hide
      */
-    public void getInvalidateRegion(int left, int top, int right, int bottom,
-            RectF invalidate, Transformation transformation) {
-
-        final RectF previousRegion = mPreviousRegion;
-
-        invalidate.set(left, top, right, bottom);
-        transformation.getMatrix().mapRect(invalidate);
-        invalidate.union(previousRegion);
-
-        previousRegion.set(left, top, right, bottom);
-        transformation.getMatrix().mapRect(previousRegion);
-
-        final Transformation tempTransformation = mTransformation;
-        final Transformation previousTransformation = mPreviousTransformation;
-
-        tempTransformation.set(transformation);
-        transformation.set(previousTransformation);
-        previousTransformation.set(tempTransformation);
-    }
-
-    /**
-     * @hide
-     */
     public void initializeInvalidateRegion(int left, int top, int right, int bottom) {
         final RectF region = mPreviousRegion;
         region.set(left, top, right, bottom);
+        region.inset(-1.0f, -1.0f);
 
         if (mFillBefore) {
             final int count = mAnimations.size();
@@ -400,8 +378,12 @@
 
 
         long[] storedOffsets = mStoredOffsets;
-        if (storedOffsets == null || storedOffsets.length != count) {
-            storedOffsets = mStoredOffsets = new long[count];
+        if (startOffsetSet) {
+            if (storedOffsets == null || storedOffsets.length != count) {
+                storedOffsets = mStoredOffsets = new long[count];
+            }
+        } else if (storedOffsets != null) {
+            storedOffsets = mStoredOffsets = null;
         }
 
         for (int i = 0; i < count; i++) {
@@ -446,7 +428,6 @@
         final ArrayList<Animation> children = mAnimations;
         final int count = children.size();
 
-
         for (int i = 0; i < count; i++) {
             children.get(i).setStartOffset(offsets[i]);
         }
diff --git a/core/java/android/view/inputmethod/EditorInfo.java b/core/java/android/view/inputmethod/EditorInfo.java
index 0405371..1c0d42a 100644
--- a/core/java/android/view/inputmethod/EditorInfo.java
+++ b/core/java/android/view/inputmethod/EditorInfo.java
@@ -66,6 +66,12 @@
     public static final int IME_ACTION_NEXT = 0x00000004;
     
     /**
+     * Bits of {@link #IME_MASK_ACTION}: the action key performs a "done"
+     * operation, typically meaning the IME will be closed.
+     */
+    public static final int IME_ACTION_DONE = 0x00000005;
+    
+    /**
      * Flag of {@link #imeOptions}: used in conjunction with
      * {@link #IME_MASK_ACTION}, this indicates that the action should not
      * be available in-line as the same as a "enter" key.  Typically this is
diff --git a/core/java/android/view/inputmethod/InputMethod.java b/core/java/android/view/inputmethod/InputMethod.java
index 740dca8..a5e0e94 100644
--- a/core/java/android/view/inputmethod/InputMethod.java
+++ b/core/java/android/view/inputmethod/InputMethod.java
@@ -18,6 +18,7 @@
 
 import android.inputmethodservice.InputMethodService;
 import android.os.IBinder;
+import android.os.ResultReceiver;
 
 /**
  * The InputMethod interface represents an input method which can generate key
@@ -171,7 +172,7 @@
     public void revokeSession(InputMethodSession session);
     
     /**
-     * Flag for {@link #showSoftInput(int)}: this show has been explicitly
+     * Flag for {@link #showSoftInput}: this show has been explicitly
      * requested by the user.  If not set, the system has decided it may be
      * a good idea to show the input method based on a navigation operation
      * in the UI.
@@ -179,7 +180,7 @@
     public static final int SHOW_EXPLICIT = 0x00001;
     
     /**
-     * Flag for {@link #showSoftInput(int)}: this show has been forced to
+     * Flag for {@link #showSoftInput}: this show has been forced to
      * happen by the user.  If set, the input method should remain visible
      * until deliberated dismissed by the user in its UI.
      */
@@ -188,13 +189,29 @@
     /**
      * Request that any soft input part of the input method be shown to the user.
      * 
-     * @param flags Provide additional information about the show request.
+     * @param flags Provides additional information about the show request.
      * Currently may be 0 or have the bit {@link #SHOW_EXPLICIT} set.
+     * @param resultReceiver The client requesting the show may wish to
+     * be told the impact of their request, which should be supplied here.
+     * The result code should be
+     * {@link InputMethodManager#RESULT_UNCHANGED_SHOWN InputMethodManager.RESULT_UNCHANGED_SHOWN},
+     * {@link InputMethodManager#RESULT_UNCHANGED_HIDDEN InputMethodManager.RESULT_UNCHANGED_HIDDEN},
+     * {@link InputMethodManager#RESULT_SHOWN InputMethodManager.RESULT_SHOWN}, or
+     * {@link InputMethodManager#RESULT_HIDDEN InputMethodManager.RESULT_HIDDEN}.
      */
-    public void showSoftInput(int flags);
+    public void showSoftInput(int flags, ResultReceiver resultReceiver);
     
     /**
      * Request that any soft input part of the input method be hidden from the user.
+     * @param flags Provides additional information about the show request.
+     * Currently always 0.
+     * @param resultReceiver The client requesting the show may wish to
+     * be told the impact of their request, which should be supplied here.
+     * The result code should be
+     * {@link InputMethodManager#RESULT_UNCHANGED_SHOWN InputMethodManager.RESULT_UNCHANGED_SHOWN},
+     * {@link InputMethodManager#RESULT_UNCHANGED_HIDDEN InputMethodManager.RESULT_UNCHANGED_HIDDEN},
+     * {@link InputMethodManager#RESULT_SHOWN InputMethodManager.RESULT_SHOWN}, or
+     * {@link InputMethodManager#RESULT_HIDDEN InputMethodManager.RESULT_HIDDEN}.
      */
-    public void hideSoftInput();
+    public void hideSoftInput(int flags, ResultReceiver resultReceiver);
 }
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 0aa1d6c..916ffea 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -24,6 +24,7 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.RemoteException;
+import android.os.ResultReceiver;
 import android.os.ServiceManager;
 import android.util.Log;
 import android.util.PrintWriterPrinter;
@@ -287,6 +288,9 @@
     // -----------------------------------------------------------
     
     static final int MSG_DUMP = 1;
+    static final int MSG_BIND = 2;
+    static final int MSG_UNBIND = 3;
+    static final int MSG_SET_ACTIVE = 4;
     
     class H extends Handler {
         H(Looper looper) {
@@ -309,6 +313,68 @@
                     }
                     return;
                 }
+                case MSG_BIND: {
+                    final InputBindResult res = (InputBindResult)msg.obj;
+                    synchronized (mH) {
+                        if (mBindSequence < 0 || mBindSequence != res.sequence) {
+                            Log.w(TAG, "Ignoring onBind: cur seq=" + mBindSequence
+                                    + ", given seq=" + res.sequence);
+                            return;
+                        }
+                        
+                        mCurMethod = res.method;
+                        mCurId = res.id;
+                        mBindSequence = res.sequence;
+                    }
+                    startInputInner();
+                    return;
+                }
+                case MSG_UNBIND: {
+                    final int sequence = msg.arg1;
+                    synchronized (mH) {
+                        if (mBindSequence == sequence) {
+                            if (false) {
+                                // XXX the server has already unbound!
+                                if (mCurMethod != null && mCurrentTextBoxAttribute != null) {
+                                    try {
+                                        mCurMethod.finishInput();
+                                    } catch (RemoteException e) {
+                                        Log.w(TAG, "IME died: " + mCurId, e);
+                                    }
+                                }
+                            }
+                            clearBindingLocked();
+                            
+                            // If we were actively using the last input method, then
+                            // we would like to re-connect to the next input method.
+                            if (mServedView != null && mServedView.isFocused()) {
+                                mServedConnecting = true;
+                            }
+                        }
+                        startInputInner();
+                    }
+                    return;
+                }
+                case MSG_SET_ACTIVE: {
+                    final boolean active = msg.arg1 != 0;
+                    synchronized (mH) {
+                        mActive = active;
+                        mFullscreenMode = false;
+                        if (!active) {
+                            // Some other client has starting using the IME, so note
+                            // that this happened and make sure our own editor's
+                            // state is reset.
+                            mHasBeenInactive = true;
+                            try {
+                                // Note that finishComposingText() is allowed to run
+                                // even when we are not active.
+                                mIInputContext.finishComposingText();
+                            } catch (RemoteException e) {
+                            }
+                        }
+                    }
+                    return;
+                }
             }
         }
     }
@@ -348,62 +414,15 @@
         }
         
         public void onBindMethod(InputBindResult res) {
-            synchronized (mH) {
-                if (mBindSequence < 0 || mBindSequence != res.sequence) {
-                    Log.w(TAG, "Ignoring onBind: cur seq=" + mBindSequence
-                            + ", given seq=" + res.sequence);
-                    return;
-                }
-                
-                mCurMethod = res.method;
-                mCurId = res.id;
-                mBindSequence = res.sequence;
-            }
-            startInputInner();
+            mH.sendMessage(mH.obtainMessage(MSG_BIND, res));
         }
         
         public void onUnbindMethod(int sequence) {
-            synchronized (mH) {
-                if (mBindSequence == sequence) {
-                    if (false) {
-                        // XXX the server has already unbound!
-                        if (mCurMethod != null && mCurrentTextBoxAttribute != null) {
-                            try {
-                                mCurMethod.finishInput();
-                            } catch (RemoteException e) {
-                                Log.w(TAG, "IME died: " + mCurId, e);
-                            }
-                        }
-                    }
-                    clearBindingLocked();
-                    
-                    // If we were actively using the last input method, then
-                    // we would like to re-connect to the next input method.
-                    if (mServedView != null && mServedView.isFocused()) {
-                        mServedConnecting = true;
-                    }
-                }
-                startInputInner();
-            }
+            mH.sendMessage(mH.obtainMessage(MSG_UNBIND, sequence, 0));
         }
         
         public void setActive(boolean active) {
-            synchronized (mH) {
-                mActive = active;
-                mFullscreenMode = false;
-                if (!active) {
-                    // Some other client has starting using the IME, so note
-                    // that this happened and make sure our own editor's
-                    // state is reset.
-                    mHasBeenInactive = true;
-                    try {
-                        // Note that finishComposingText() is allowed to run
-                        // even when we are not active.
-                        mIInputContext.finishComposingText();
-                    } catch (RemoteException e) {
-                    }
-                }
-            }
+            mH.sendMessage(mH.obtainMessage(MSG_SET_ACTIVE, active ? 1 : 0, 0));
         }
     };    
     
@@ -646,6 +665,52 @@
     public static final int SHOW_FORCED = 0x0002;
     
     /**
+     * Synonym for {@link #showSoftInput(View, int, ResultReceiver)} without
+     * a result receiver: explicitly request that the current input method's
+     * soft input area be shown to the user, if needed.
+     * 
+     * @param view The currently focused view, which would like to receive
+     * soft keyboard input.
+     * @param flags Provides additional operating flags.  Currently may be
+     * 0 or have the {@link #SHOW_IMPLICIT} bit set.
+     */
+    public boolean showSoftInput(View view, int flags) {
+        return showSoftInput(view, flags, null);
+    }
+    
+    /**
+     * Flag for the {@link ResultReceiver} result code from
+     * {@link #showSoftInput(View, int, ResultReceiver)} and
+     * {@link #hideSoftInputFromWindow(IBinder, int, ResultReceiver)}: the
+     * state of the soft input window was unchanged and remains shown.
+     */
+    public static final int RESULT_UNCHANGED_SHOWN = 0;
+    
+    /**
+     * Flag for the {@link ResultReceiver} result code from
+     * {@link #showSoftInput(View, int, ResultReceiver)} and
+     * {@link #hideSoftInputFromWindow(IBinder, int, ResultReceiver)}: the
+     * state of the soft input window was unchanged and remains hidden.
+     */
+    public static final int RESULT_UNCHANGED_HIDDEN = 1;
+    
+    /**
+     * Flag for the {@link ResultReceiver} result code from
+     * {@link #showSoftInput(View, int, ResultReceiver)} and
+     * {@link #hideSoftInputFromWindow(IBinder, int, ResultReceiver)}: the
+     * state of the soft input window changed from hidden to shown.
+     */
+    public static final int RESULT_SHOWN = 2;
+    
+    /**
+     * Flag for the {@link ResultReceiver} result code from
+     * {@link #showSoftInput(View, int, ResultReceiver)} and
+     * {@link #hideSoftInputFromWindow(IBinder, int, ResultReceiver)}: the
+     * state of the soft input window changed from shown to hidden.
+     */
+    public static final int RESULT_HIDDEN = 3;
+    
+    /**
      * Explicitly request that the current input method's soft input area be
      * shown to the user, if needed.  Call this if the user interacts with
      * your view in such a way that they have expressed they would like to
@@ -655,25 +720,33 @@
      * soft keyboard input.
      * @param flags Provides additional operating flags.  Currently may be
      * 0 or have the {@link #SHOW_IMPLICIT} bit set.
+     * @param resultReceiver If non-null, this will be called by the IME when
+     * it has processed your request to tell you what it has done.  The result
+     * code you receive may be either {@link #RESULT_UNCHANGED_SHOWN},
+     * {@link #RESULT_UNCHANGED_HIDDEN}, {@link #RESULT_SHOWN}, or
+     * {@link #RESULT_HIDDEN}.
      */
-    public void showSoftInput(View view, int flags) {
+    public boolean showSoftInput(View view, int flags,
+            ResultReceiver resultReceiver) {
         checkFocus();
         synchronized (mH) {
             if (mServedView != view) {
-                return;
+                return false;
             }
 
             try {
-                mService.showSoftInput(mClient, flags);
+                return mService.showSoftInput(mClient, flags, resultReceiver);
             } catch (RemoteException e) {
             }
+            
+            return false;
         }
     }
     
     /** @hide */
-    public void showSoftInputUnchecked(int flags) {
+    public void showSoftInputUnchecked(int flags, ResultReceiver resultReceiver) {
         try {
-            mService.showSoftInput(mClient, flags);
+            mService.showSoftInput(mClient, flags, resultReceiver);
         } catch (RemoteException e) {
         }
     }
@@ -693,6 +766,20 @@
     public static final int HIDE_NOT_ALWAYS = 0x0002;
     
     /**
+     * Synonym for {@link #hideSoftInputFromWindow(IBinder, int, ResultReceiver)
+     * without a result: request to hide the soft input window from the
+     * context of the window that is currently accepting input.
+     * 
+     * @param windowToken The token of the window that is making the request,
+     * as returned by {@link View#getWindowToken() View.getWindowToken()}.
+     * @param flags Provides additional operating flags.  Currently may be
+     * 0 or have the {@link #HIDE_IMPLICIT_ONLY} bit set.
+     */
+    public boolean hideSoftInputFromWindow(IBinder windowToken, int flags) {
+        return hideSoftInputFromWindow(windowToken, flags, null);
+    }
+    
+    /**
      * Request to hide the soft input window from the context of the window
      * that is currently accepting input.  This should be called as a result
      * of the user doing some actually than fairly explicitly requests to
@@ -702,21 +789,77 @@
      * as returned by {@link View#getWindowToken() View.getWindowToken()}.
      * @param flags Provides additional operating flags.  Currently may be
      * 0 or have the {@link #HIDE_IMPLICIT_ONLY} bit set.
+     * @param resultReceiver If non-null, this will be called by the IME when
+     * it has processed your request to tell you what it has done.  The result
+     * code you receive may be either {@link #RESULT_UNCHANGED_SHOWN},
+     * {@link #RESULT_UNCHANGED_HIDDEN}, {@link #RESULT_SHOWN}, or
+     * {@link #RESULT_HIDDEN}.
      */
-    public void hideSoftInputFromWindow(IBinder windowToken, int flags) {
+    public boolean hideSoftInputFromWindow(IBinder windowToken, int flags,
+            ResultReceiver resultReceiver) {
         checkFocus();
         synchronized (mH) {
             if (mServedView == null || mServedView.getWindowToken() != windowToken) {
+                return false;
+            }
+
+            try {
+                return mService.hideSoftInput(mClient, flags, resultReceiver);
+            } catch (RemoteException e) {
+            }
+            return false;
+        }
+    }
+    
+
+    /**
+     * This method toggles the input method window display.
+     * If the input window is already displayed, it gets hidden. 
+     * If not the input window will be displayed.
+     * @param windowToken The token of the window that is making the request,
+     * as returned by {@link View#getWindowToken() View.getWindowToken()}.
+     * @param showFlags Provides additional operating flags.  May be
+     * 0 or have the {@link #SHOW_IMPLICIT},
+     * {@link #SHOW_FORCED} bit set.
+     * @param hideFlags Provides additional operating flags.  May be
+     * 0 or have the {@link #HIDE_IMPLICIT_ONLY},
+     * {@link #HIDE_NOT_ALWAYS} bit set.
+     **/
+    public void toggleSoftInputFromWindow(IBinder windowToken, int showFlags, int hideFlags) {
+        synchronized (mH) {
+            if (mServedView == null || mServedView.getWindowToken() != windowToken) {
                 return;
             }
+            if (mCurMethod != null) {
+                try {
+                    mCurMethod.toggleSoftInput(showFlags, hideFlags);
+                } catch (RemoteException e) {
+                }
+            }
+        }
+    }
 
+    /*
+     * This method toggles the input method window display.
+     * If the input window is already displayed, it gets hidden. 
+     * If not the input window will be displayed.
+     * @param showFlags Provides additional operating flags.  May be
+     * 0 or have the {@link #SHOW_IMPLICIT},
+     * {@link #SHOW_FORCED} bit set.
+     * @param hideFlags Provides additional operating flags.  May be
+     * 0 or have the {@link #HIDE_IMPLICIT_ONLY},
+     * {@link #HIDE_NOT_ALWAYS} bit set.
+     * @hide
+     */
+    public void toggleSoftInput(int showFlags, int hideFlags) {
+        if (mCurMethod != null) {
             try {
-                mService.hideSoftInput(mClient, flags);
+                mCurMethod.toggleSoftInput(showFlags, hideFlags);
             } catch (RemoteException e) {
             }
         }
     }
-    
+
     /**
      * If the input method is currently connected to the given view,
      * restart it with its new contents.  You should call this when the text
@@ -956,7 +1099,7 @@
     
     void closeCurrentInput() {
         try {
-            mService.hideSoftInput(mClient, HIDE_NOT_ALWAYS);
+            mService.hideSoftInput(mClient, HIDE_NOT_ALWAYS, null);
         } catch (RemoteException e) {
         }
     }
@@ -1118,7 +1261,8 @@
      * when it was started, which allows it to perform this operation on
      * itself.
      * @param flags Provides additional operating flags.  Currently may be
-     * 0 or have the {@link #HIDE_IMPLICIT_ONLY} bit set.
+     * 0 or have the {@link #HIDE_IMPLICIT_ONLY},
+     * {@link #HIDE_NOT_ALWAYS} bit set.
      */
     public void hideSoftInputFromInputMethod(IBinder token, int flags) {
         try {
@@ -1129,6 +1273,27 @@
     }
     
     /**
+     * Show the input method's soft input area, so the user 
+     * sees the input method window and can interact with it.
+     * This can only be called from the currently active input method,
+     * as validated by the given token.
+     * 
+     * @param token Supplies the identifying token given to an input method
+     * when it was started, which allows it to perform this operation on
+     * itself.
+     * @param flags Provides additional operating flags.  Currently may be
+     * 0 or have the {@link #SHOW_IMPLICIT} or
+     * {@link #SHOW_FORCED} bit set.
+     */
+    public void showSoftInputFromInputMethod(IBinder token, int flags) {
+        try {
+            mService.showMySoftInput(token, flags);
+        } catch (RemoteException e) {
+            throw new RuntimeException(e);
+        }
+    }
+    
+    /**
      * @hide
      */
     public void dispatchKeyEvent(Context context, int seq, KeyEvent key,
@@ -1204,7 +1369,7 @@
             }
         }
     }
-    
+
     void doDump(FileDescriptor fd, PrintWriter fout, String[] args) {
         final Printer p = new PrintWriterPrinter(fout);
         p.println("Input method client state for " + this + ":");
diff --git a/core/java/android/view/inputmethod/InputMethodSession.java b/core/java/android/view/inputmethod/InputMethodSession.java
index b5bbaff..bb03afa 100644
--- a/core/java/android/view/inputmethod/InputMethodSession.java
+++ b/core/java/android/view/inputmethod/InputMethodSession.java
@@ -139,4 +139,16 @@
      * @param data Any data to include with the command.
      */
     public void appPrivateCommand(String action, Bundle data);
+    
+    /**
+     * Toggle the soft input window. 
+     * Applications can toggle the state of the soft input window.
+     * @param showFlags Provides additional operating flags.  May be
+     * 0 or have the {@link InputMethodManager#SHOW_IMPLICIT},
+     * {@link InputMethodManager#SHOW_FORCED} bit set.
+     * @param hideFlags Provides additional operating flags.  May be
+     * 0 or have the {@link  InputMethodManager#HIDE_IMPLICIT_ONLY},
+     * {@link  InputMethodManager#HIDE_NOT_ALWAYS} bit set.
+     */
+    public void toggleSoftInput(int showFlags, int hideFlags);
 }
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index 451af6d..5401a6e 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -201,10 +201,14 @@
             final String failingUrl) {
         // As this is called for the main resource and loading will be stopped
         // after, reset the state variables.
+        resetLoadingStates();
+        mCallbackProxy.onReceivedError(errorCode, description, failingUrl);
+    }
+
+    private void resetLoadingStates() {
         mCommitted = true;
         mWebViewCore.mEndScaleZoom = mFirstLayoutDone == false;
         mFirstLayoutDone = true;
-        mCallbackProxy.onReceivedError(errorCode, description, failingUrl);
     }
 
     /* package */boolean committed() {
@@ -290,6 +294,7 @@
 
         if (isMainFrame || loadType == FRAME_LOADTYPE_STANDARD) {
             if (isMainFrame) {
+                resetLoadingStates();
                 mCallbackProxy.switchOutDrawHistory();
                 mCallbackProxy.onPageFinished(url);
             }
@@ -555,8 +560,11 @@
                 method, isHighPriority);
         loader.setHeaders(headers);
         loader.setPostData(postData);
-        loader.setCacheMode(cacheMode); // Set the load mode to the mode used
-                                        // for the current page.
+        // Set the load mode to the mode used for the current page.
+        // If WebKit wants validation, go to network directly.
+        loader.setCacheMode(headers.containsKey("If-Modified-Since")
+                || headers.containsKey("If-None-Match") ? 
+                        WebSettings.LOAD_NO_CACHE : cacheMode);
         // Set referrer to current URL?
         if (!loader.executeLoad()) {
             checker.responseAlert("startLoadingResource fail");
@@ -751,7 +759,14 @@
     /**
      * Stop loading the current page.
      */
-    public native void stopLoading();
+    public void stopLoading() {
+        if (mIsMainFrame) {
+            resetLoadingStates();
+        }
+        nativeStopLoading();
+    }
+
+    private native void nativeStopLoading();
 
     /**
      * Return true if the document has images.
diff --git a/core/java/android/webkit/FrameLoader.java b/core/java/android/webkit/FrameLoader.java
index 5e323eb..42d03f0 100644
--- a/core/java/android/webkit/FrameLoader.java
+++ b/core/java/android/webkit/FrameLoader.java
@@ -21,7 +21,6 @@
 import android.util.Config;
 import android.util.Log;
 import android.webkit.CacheManager.CacheResult;
-import android.webkit.UrlInterceptRegistry;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -234,12 +233,14 @@
     private boolean handleUrlIntercept() {
         // Check if the URL can be served from UrlIntercept. If
         // successful, return the data just like a cache hit.
-        CacheResult result = UrlInterceptRegistry.getSurrogate(
+
+        PluginData data = UrlInterceptRegistry.getPluginData(
                 mListener.url(), mHeaders);
-        if(result != null) {
-            // Intercepted. The data is stored in result.stream. Setup
-            // a load from the CacheResult.
-            startCacheLoad(result);
+
+        if(data != null) {
+            PluginContentLoader loader =
+                    new PluginContentLoader(mListener, data);
+            loader.load();
             return true;
         }
         // Not intercepted. Carry on as normal.
diff --git a/core/java/android/webkit/LoadListener.java b/core/java/android/webkit/LoadListener.java
index dfae17d..8d4b220 100644
--- a/core/java/android/webkit/LoadListener.java
+++ b/core/java/android/webkit/LoadListener.java
@@ -1126,6 +1126,7 @@
                 mCacheResult = null;
             }
 
+            // This will strip the anchor
             setUrl(redirectTo);
 
             // Redirect may be in the cache
@@ -1143,7 +1144,7 @@
                 // mRequestHandle can be null when the request was satisfied
                 // by the cache, and the cache returned a redirect
                 if (mRequestHandle != null) {
-                    mRequestHandle.setupRedirect(redirectTo, mStatusCode,
+                    mRequestHandle.setupRedirect(mUrl, mStatusCode,
                             mRequestHeaders);
                 } else {
                     // If the original request came from the cache, there is no
@@ -1336,19 +1337,16 @@
      */
     void setUrl(String url) {
         if (url != null) {
-            if (URLUtil.isDataUrl(url)) {
-             // Don't strip anchor as that is a valid part of the URL
-                mUrl = url;
-            } else {
-                mUrl = URLUtil.stripAnchor(url);
-            }
             mUri = null;
-            if (URLUtil.isNetworkUrl(mUrl)) {
+            if (URLUtil.isNetworkUrl(url)) {
+                mUrl = URLUtil.stripAnchor(url);
                 try {
                     mUri = new WebAddress(mUrl);
                 } catch (ParseException e) {
                     e.printStackTrace();
                 }
+            } else {
+                mUrl = url;
             }
         }
     }
diff --git a/core/java/android/webkit/PluginContentLoader.java b/core/java/android/webkit/PluginContentLoader.java
new file mode 100644
index 0000000..2069599
--- /dev/null
+++ b/core/java/android/webkit/PluginContentLoader.java
@@ -0,0 +1,96 @@
+/*
+ * 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 android.webkit;
+
+import android.net.http.Headers;
+
+import java.io.InputStream;
+import java.util.*;
+
+import org.apache.http.util.CharArrayBuffer;
+
+/**
+ * This class is a concrete implementation of StreamLoader that uses a
+ * PluginData object as the source for the stream.
+ */
+class PluginContentLoader extends StreamLoader {
+
+    private PluginData mData;  // Content source
+
+    /**
+     * Constructs a PluginDataLoader for use when loading content from
+     * a plugin.
+     *
+     * @param loadListener LoadListener to pass the content to
+     * @param data PluginData used as the source for the content.
+     */
+    PluginContentLoader(LoadListener loadListener, PluginData data) {
+        super(loadListener);
+        mData = data;
+    }
+
+    @Override
+    protected boolean setupStreamAndSendStatus() {
+        mDataStream = mData.getInputStream();
+        mContentLength = mData.getContentLength();
+        mHandler.status(1, 1, mData.getStatusCode(), "OK");
+        return true;
+    }
+
+    @Override
+    protected void buildHeaders(Headers headers) {
+        // Crate a CharArrayBuffer with an arbitrary initial capacity.
+        CharArrayBuffer buffer = new CharArrayBuffer(100);
+        Iterator<Map.Entry<String, String[]>> responseHeadersIt =
+                mData.getHeaders().entrySet().iterator();
+        while (responseHeadersIt.hasNext()) {
+            Map.Entry<String, String[]> entry = responseHeadersIt.next();
+            // Headers.parseHeader() expects lowercase keys, so keys
+            // such as "Accept-Ranges" will fail to parse.
+            //
+            // UrlInterceptHandler instances supply a mapping of
+            // lowercase key to [ unmodified key, value ], so for
+            // Headers.parseHeader() to succeed, we need to construct
+            // a string using the key (i.e. entry.getKey()) and the
+            // element denoting the header value in the
+            // [ unmodified key, value ] pair (i.e. entry.getValue()[1).
+            //
+            // The reason why UrlInterceptHandler instances supply such a
+            // mapping in the first place is historical. Early versions of
+            // the Gears plugin used java.net.HttpURLConnection, which always
+            // returned headers names as capitalized strings. When these were
+            // fed back into webkit, they failed to parse.
+            //
+            // Mewanwhile, Gears was modified to use Apache HTTP library
+            // instead, so this design is now obsolete. Changing it however,
+            // would require changes to the Gears C++ codebase and QA-ing and
+            // submitting a new binary to the Android tree. Given the
+            // timelines for the next Android release, we will not do this
+            // for now.
+            //
+            // TODO: fix C++ Gears to remove the need for this
+            // design.
+            String keyValue = entry.getKey() + ": " + entry.getValue()[1];
+            buffer.ensureCapacity(keyValue.length());
+            buffer.append(keyValue);
+            // Parse it into the header container.
+            headers.parseHeader(buffer);
+            // Clear the buffer
+            buffer.clear();
+        }
+    }
+}
diff --git a/core/java/android/webkit/PluginData.java b/core/java/android/webkit/PluginData.java
new file mode 100644
index 0000000..2b539fe
--- /dev/null
+++ b/core/java/android/webkit/PluginData.java
@@ -0,0 +1,116 @@
+/*
+ * 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 android.webkit;
+
+import java.io.InputStream;
+import java.util.Map;
+
+/**
+ * This class encapsulates the content generated by a plugin.  The
+ * data itself is meant to be loaded into webkit via the
+ * PluginContentLoader class, which needs to be able to construct an
+ * HTTP response. For this, it needs a stream with the response body,
+ * the length of the body, the response headers, and the response
+ * status code. The PluginData class is the container for all these
+ * parts.
+ *
+ */
+public final class PluginData {
+    /**
+     * The content stream.
+     */
+    private InputStream mStream;
+    /**
+     * The content length.
+     */
+    private long mContentLength;
+    /**
+     * The associated HTTP response headers stored as a map of
+     * lowercase header name to [ unmodified header name, header value].
+     * TODO: This design was always a hack. Remove (involves updating
+     * the Gears C++ side).
+     */
+    private Map<String, String[]> mHeaders;
+
+    /**
+     * The index of the header value in the above mapping.
+     */
+    private int mHeaderValueIndex;
+    /**
+     * The associated HTTP response code.
+     */
+    private int mStatusCode;
+
+    /**
+     * Creates a PluginData instance.
+     *
+     * @param stream The stream that supplies content for the plugin.
+     * @param length The length of the plugin content.
+     * @param headers The response headers. Map of
+     * lowercase header name to [ unmodified header name, header value]
+     * @param length The HTTP response status code.
+     */
+    public PluginData(
+            InputStream stream,
+            long length,
+            Map<String, String[]> headers,
+            int code) {
+        mStream = stream;
+        mContentLength = length;
+        mHeaders = headers;
+        mStatusCode = code;
+    }
+
+    /**
+     * Returns the input stream that contains the plugin content.
+     *
+     * @return An InputStream instance with the plugin content.
+     */
+    public InputStream getInputStream() {
+        return mStream;
+    }
+
+    /**
+     * Returns the length of the plugin content.
+     *
+     * @return the length of the plugin content.
+     */
+    public long getContentLength() {
+        return mContentLength;
+    }
+
+    /**
+     * Returns the HTTP response headers associated with the plugin
+     * content.
+     *
+     * @return A Map<String, String[]> containing all headers. The
+     * mapping is 'lowercase header name' to ['unmodified header
+     * name', header value].
+     */
+    public Map<String, String[]> getHeaders() {
+        return mHeaders;
+    }
+
+    /**
+     * Returns the HTTP status code for the response.
+     *
+     * @return The HTTP statue code, e.g 200.
+     */
+    public int getStatusCode() {
+        return mStatusCode;
+    }
+}
diff --git a/core/java/android/webkit/TextDialog.java b/core/java/android/webkit/TextDialog.java
index 8a82411..39806dc 100644
--- a/core/java/android/webkit/TextDialog.java
+++ b/core/java/android/webkit/TextDialog.java
@@ -113,13 +113,7 @@
         // that other applications that use embedded WebViews will properly
         // display the text in textfields.
         setTextColor(Color.BLACK);
-    }
-
-    @Override
-    protected boolean shouldAdvanceFocusOnEnter() {
-        // In the browser, single line textfields use enter as a form submit,
-        // so we never want to advance the focus on enter.
-        return false;
+        setImeOptions(EditorInfo.IME_ACTION_NONE);
     }
 
     @Override
diff --git a/core/java/android/webkit/UrlInterceptHandler.java b/core/java/android/webkit/UrlInterceptHandler.java
index e1c9d61..9216413 100644
--- a/core/java/android/webkit/UrlInterceptHandler.java
+++ b/core/java/android/webkit/UrlInterceptHandler.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.webkit.CacheManager.CacheResult;
+import android.webkit.PluginData;
 import java.util.Map;
 
 public interface UrlInterceptHandler {
@@ -29,6 +30,20 @@
      * @param url URL string.
      * @param headers The headers associated with the request. May be null.
      * @return The CacheResult containing the surrogate response.
+     * @Deprecated Use PluginData getPluginData(String url,
+     * Map<String, String> headers); instead
      */
+    @Deprecated
     public CacheResult service(String url, Map<String, String> headers);
+
+    /**
+     * Given an URL, returns the PluginData which contains the
+     * surrogate response for the request, or null if the handler is
+     * not interested.
+     *
+     * @param url URL string.
+     * @param headers The headers associated with the request. May be null.
+     * @return The PluginData containing the surrogate response.
+     */
+    public PluginData getPluginData(String url, Map<String, String> headers);
 }
diff --git a/core/java/android/webkit/UrlInterceptRegistry.java b/core/java/android/webkit/UrlInterceptRegistry.java
index a218191..6051f29 100644
--- a/core/java/android/webkit/UrlInterceptRegistry.java
+++ b/core/java/android/webkit/UrlInterceptRegistry.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.webkit.CacheManager.CacheResult;
+import android.webkit.PluginData;
 import android.webkit.UrlInterceptHandler;
 
 import java.util.Iterator;
@@ -82,17 +83,21 @@
             UrlInterceptHandler handler) {
         return getHandlers().remove(handler);
     }
-    
+
     /**
      * Given an url, returns the CacheResult of the first
      * UrlInterceptHandler interested, or null if none are.
-     * 
+     *
      * @return A CacheResult containing surrogate content.
+     * @Deprecated Use PluginData getPluginData( String url,
+     * Map<String, String> headers) instead.
      */
+    @Deprecated
     public static synchronized CacheResult getSurrogate(
             String url, Map<String, String> headers) {
-        if (urlInterceptDisabled())
+        if (urlInterceptDisabled()) {
             return null;
+        }
         Iterator iter = getHandlers().listIterator();
         while (iter.hasNext()) {
             UrlInterceptHandler handler = (UrlInterceptHandler) iter.next();
@@ -103,4 +108,27 @@
         }
         return null;
     }
+
+    /**
+     * Given an url, returns the PluginData of the first
+     * UrlInterceptHandler interested, or null if none are or if
+     * intercepts are disabled.
+     *
+     * @return A PluginData instance containing surrogate content.
+     */
+    public static synchronized PluginData getPluginData(
+            String url, Map<String, String> headers) {
+        if (urlInterceptDisabled()) {
+            return null;
+        }
+        Iterator iter = getHandlers().listIterator();
+        while (iter.hasNext()) {
+            UrlInterceptHandler handler = (UrlInterceptHandler) iter.next();
+            PluginData data = handler.getPluginData(url, headers);
+            if (data != null) {
+                return data;
+            }
+        }
+        return null;
+    }
 }
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 5126ef0..91795a3 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -689,7 +689,10 @@
             return true;
         }
 
-        public void onSimpleZoom(boolean zoomIn) {
+        public void onSimpleZoom(boolean zoomIn, int centerX, int centerY) {
+            mZoomCenterX = (float) centerX;
+            mZoomCenterY = (float) centerY;
+            
             if (zoomIn) {
                 zoomIn();
             } else {
@@ -736,12 +739,12 @@
         mFocusData.mY = 0;
         mScroller = new Scroller(context);
         mZoomRingController = new ZoomRingController(context, this);
-        mZoomRingController.setResetThumbAutomatically(false);
         mZoomRingController.setCallback(mZoomListener);
-        mZoomRingController.setZoomRingTrack(
+        mZoomRingController.setTrackDrawable(
                 com.android.internal.R.drawable.zoom_ring_track_absolute);
-        mZoomRingController.setPannerAcceleration(160);
-        mZoomRingController.setPannerStartAcceleratingDuration(700);
+        float density = context.getResources().getDisplayMetrics().density;
+        mZoomRingController.setPannerAcceleration((int) (160 * density));
+        mZoomRingController.setPannerStartAcceleratingDuration((int) (700 * density));
         createZoomRingOverviewTab();
         mZoomButtonsController = new ZoomButtonsController(context, this);
         mZoomButtonsController.setOverviewVisible(true);
@@ -760,7 +763,7 @@
             }
 
             public void onZoom(boolean zoomIn) {
-                mZoomListener.onSimpleZoom(zoomIn);
+                mZoomListener.onSimpleZoom(zoomIn, getWidth() / 2, getHeight() / 2);
             }
         });
     }
@@ -4491,6 +4494,14 @@
         return zoomControls;
     }
 
+    // This used to be the value returned by ViewConfiguration.getTouchSlop().
+    // We pass this to the navigation cache to find where the user clicked.
+    // TouchSlop has been increased for other purposes, but for the
+    // navigation cache it is too big, and may result in clicking the wrong
+    // spot.  This is a concern when the cache is out of date, and clicking
+    // finds a node which is wrong but nearby.
+    private static final int NAV_SLOP = 12;
+
     private void updateSelection() {
         if (mNativeClass == 0) {
             return;
@@ -4498,7 +4509,7 @@
         // mLastTouchX and mLastTouchY are the point in the current viewport
         int contentX = viewToContent((int) mLastTouchX + mScrollX);
         int contentY = viewToContent((int) mLastTouchY + mScrollY);
-        int contentSize = ViewConfiguration.getTouchSlop();
+        int contentSize = NAV_SLOP;
         Rect rect = new Rect(contentX - contentSize, contentY - contentSize,
                 contentX + contentSize, contentY + contentSize);
         // If we were already focused on a textfield, update its cache.
@@ -4513,7 +4524,7 @@
             View v = mTextEntry;
             int x = viewToContent((v.getLeft() + v.getRight()) >> 1);
             int y = viewToContent((v.getTop() + v.getBottom()) >> 1);
-            int contentSize = ViewConfiguration.get(getContext()).getScaledTouchSlop();
+            int contentSize = NAV_SLOP;
             nativeMotionUp(x, y, contentSize, true);
         }
     }
@@ -4526,7 +4537,7 @@
         // mLastTouchX and mLastTouchY are the point in the current viewport
         int contentX = viewToContent((int) mLastTouchX + mScrollX);
         int contentY = viewToContent((int) mLastTouchY + mScrollY);
-        int contentSize = ViewConfiguration.get(getContext()).getScaledTouchSlop();
+        int contentSize = NAV_SLOP;
         if (nativeMotionUp(contentX, contentY, contentSize, true)) {
             if (mLogEvent) {
                 Checkin.updateStats(mContext.getContentResolver(),
diff --git a/core/java/android/webkit/gears/UrlInterceptHandlerGears.java b/core/java/android/webkit/gears/UrlInterceptHandlerGears.java
index 2a5cbe9..43104bf 100644
--- a/core/java/android/webkit/gears/UrlInterceptHandlerGears.java
+++ b/core/java/android/webkit/gears/UrlInterceptHandlerGears.java
@@ -25,16 +25,14 @@
 
 package android.webkit.gears;
 
-import android.net.http.Headers;
 import android.util.Log;
-import android.webkit.CacheManager;
 import android.webkit.CacheManager.CacheResult;
 import android.webkit.Plugin;
+import android.webkit.PluginData;
 import android.webkit.UrlInterceptRegistry;
 import android.webkit.UrlInterceptHandler;
 import android.webkit.WebView;
 
-import org.apache.http.impl.cookie.DateUtils;
 import org.apache.http.util.CharArrayBuffer;
 
 import java.io.*;
@@ -53,12 +51,6 @@
   private static final String LOG_TAG = "Gears-J";
   /** Buffer size for reading/writing streams. */
   private static final int BUFFER_SIZE = 4096;
-  /**
-   * Number of milliseconds to expire LocalServer temporary entries in
-   * the browser's cache. Somewhat arbitrarily chosen as a compromise
-   * between being a) long enough not to expire during page load and
-   * b) short enough to evict entries during a session. */
-  private static final int CACHE_EXPIRY_MS = 60000; // 1 minute.
   /** Enable/disable all logging in this class. */
   private static boolean logEnabled = false;
   /** The unmodified (case-sensitive) key in the headers map is the
@@ -140,6 +132,8 @@
     private String encoding;
     // The stream which contains the body when read().
     private InputStream inputStream;
+    // The length of the content body.
+    private long contentLength;
 
     /**
      * Initialize members using an in-memory array to return the body.
@@ -160,6 +154,7 @@
       this.mimeType = mimeType;
       this.encoding = encoding;
       // Setup a stream to read out of the byte array.
+      this.contentLength = body.length;
       this.inputStream = new ByteArrayInputStream(body);
     }
     
@@ -185,7 +180,9 @@
       this.encoding = encoding;
       try {
         // Setup a stream to read out of a file on disk.
-        this.inputStream = new FileInputStream(new File(path));
+        File file = new File(path);
+        this.contentLength = file.length();
+        this.inputStream = new FileInputStream(file);
         return true;
       } catch (java.io.FileNotFoundException ex) {
         log("File not found: " + path);
@@ -274,6 +271,13 @@
     public InputStream getInputStream() {
       return inputStream;
     }
+
+    /**
+     * @return The length of the response body.
+     */
+    public long getContentLength() {
+      return contentLength;
+    }
   }
 
   /**
@@ -319,44 +323,32 @@
     UrlInterceptRegistry.unregisterHandler(this);
   }
 
-  /**
-   * Copy the entire InputStream to OutputStream.
-   * @param inputStream The stream to read from.
-   * @param outputStream The stream to write to.
-   * @return True if the entire stream copied successfully, false on error.
-   */
-  private boolean copyStream(InputStream inputStream,
-      OutputStream outputStream) {
-    try {
-      // Temporary buffer to copy stream through.
-      byte[] buf = new byte[BUFFER_SIZE];
-      for (;;) {
-        // Read up to BUFFER_SIZE bytes.
-        int bytes = inputStream.read(buf);
-        if (bytes < 0) {
-          break;
-        }
-        // Write the number of bytes we just read.
-        outputStream.write(buf, 0, bytes);
-      }
-    } catch (IOException ex) {
-      log("Got IOException copying stream: " + ex);
-      return false;
+    /**
+     * Given an URL, returns the CacheResult which contains the
+     * surrogate response for the request, or null if the handler is
+     * not interested.
+     *
+     * @param url URL string.
+     * @param headers The headers associated with the request. May be null.
+     * @return The CacheResult containing the surrogate response.
+     * @Deprecated Use PluginData getPluginData(String url,
+     * Map<String, String> headers); instead
+     */
+    @Deprecated
+    public CacheResult service(String url, Map<String, String> headers) {
+      throw new UnsupportedOperationException("unimplemented");
     }
-    return true;
-  }
 
   /**
-   * Given an URL, returns a CacheResult which contains the response
-   * for the request. This implements the UrlInterceptHandler interface.
+   * Given an URL, returns a PluginData instance which contains the
+   * response for the request. This implements the UrlInterceptHandler
+   * interface.
    *
-   * @param url            The fully qualified URL being requested.
+   * @param url The fully qualified URL being requested.
    * @param requestHeaders The request headers for this URL.
-   * @return If a response can be crafted, a CacheResult initialized
-   *         to return the surrogate response. If this URL cannot
-   *         be serviced, returns null.
+   * @return a PluginData object.
    */
-  public CacheResult service(String url, Map<String, String> requestHeaders) {
+  public PluginData getPluginData(String url, Map<String, String> requestHeaders) {
     // Thankfully the browser does call us with case-sensitive
     // headers. We just need to map it case-insensitive.
     Map<String, String[]> lowercaseRequestHeaders =
@@ -374,86 +366,10 @@
       // No result for this URL.
       return null;
     }
-    // Translate the ServiceResponse to a CacheResult.
-    // Translate http -> gears, https -> gearss, so we don't overwrite
-    // existing entries.
-    String gearsUrl = "gears" + url.substring("http".length());
-    // Set the result to expire, so that entries don't pollute the
-    // browser's cache for too long.
-    long now_ms = System.currentTimeMillis();
-    String expires = DateUtils.formatDate(new Date(now_ms + CACHE_EXPIRY_MS));
-    response.setResponseHeader(ApacheHttpRequestAndroid.KEY_EXPIRES, expires);
-    // The browser is only interested in a small subset of headers,
-    // contained in a Headers object. Iterate the map of all headers
-    // and add them to Headers.
-    Headers headers = new Headers();
-    Iterator<Map.Entry<String, String[]>> responseHeadersIt =
-        response.getResponseHeaders().entrySet().iterator();
-    while (responseHeadersIt.hasNext()) {
-      Map.Entry<String, String[]> entry = responseHeadersIt.next();
-      // Headers.parseHeader() expects lowercase keys.
-      String keyValue = entry.getKey() + ": "
-          + entry.getValue()[HEADERS_MAP_INDEX_VALUE];
-      CharArrayBuffer buffer = new CharArrayBuffer(keyValue.length());
-      buffer.append(keyValue);
-      // Parse it into the header container.
-      headers.parseHeader(buffer);
-    }
-    CacheResult cacheResult = CacheManager.createCacheFile(
-        gearsUrl,
-        response.getStatusCode(),
-        headers,
-        response.getMimeType(),
-        true); // forceCache
-
-    if (cacheResult == null) {
-      // With the no-cache policy we could end up
-      // with a null result
-      return null;
-    }
-
-    // Set encoding if specified.
-    String encoding = response.getEncoding();
-    if (encoding != null) {
-      cacheResult.setEncoding(encoding);
-    }
-    // Copy the response body to the CacheResult. This handles all
-    // combinations of memory vs on-disk on both sides.
-    InputStream inputStream = response.getInputStream();
-    OutputStream outputStream = cacheResult.getOutputStream();
-    boolean copied = copyStream(inputStream, outputStream);
-    // Close the input and output streams to relinquish their
-    // resources earlier.
-    try {
-      inputStream.close();
-    } catch (IOException ex) {
-      log("IOException closing InputStream: " + ex);
-      copied = false;
-    }
-    try {
-      outputStream.close();
-    } catch (IOException ex) {
-      log("IOException closing OutputStream: " + ex);
-      copied = false;
-    }
-    if (!copied) {
-      log("copyStream of local result failed");
-      return null;
-    }
-    // Save the entry into the browser's cache.
-    CacheManager.saveCacheFile(gearsUrl, cacheResult);
-    // Get it back from the cache, this time properly initialized to
-    // be used for input.
-    cacheResult = CacheManager.getCacheFile(gearsUrl, null);
-    if (cacheResult != null) {
-      log("Returning surrogate result");
-      return cacheResult;
-    } else {
-      // Not an expected condition, but handle gracefully. Perhaps out
-      // of memory or disk?
-      Log.e(LOG_TAG, "Lost CacheResult between save and get. Can't serve.\n");
-      return null;
-    }
+    return new PluginData(response.getInputStream(),
+                          response.getContentLength(),
+                          response.getResponseHeaders(),
+                          response.getStatusCode());
   }
 
   /**
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 9da78d0..d72570a 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -2766,6 +2766,7 @@
     private void showPopup() {
         // Make sure we have a window before showing the popup
         if (getWindowVisibility() == View.VISIBLE) {
+            createTextFilter(true);
             positionPopup(false);
             // Make sure we get focus if we are showing the popup
             checkFocus();
@@ -2913,8 +2914,8 @@
         if (mPopup == null) {
             Context c = getContext();
             PopupWindow p = new PopupWindow(c);
-            LayoutInflater layoutInflater = (LayoutInflater) c
-                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            LayoutInflater layoutInflater = (LayoutInflater)
+                    c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             mTextFilter = (EditText) layoutInflater.inflate(
                     com.android.internal.R.layout.typing_filter, null);
             mTextFilter.addTextChangedListener(this);
@@ -3136,6 +3137,14 @@
          */
         int viewType;
 
+        /**
+         * When this boolean is set, the view has been added to the AbsListView
+         * at least once. It is used to know whether headers/footers have already
+         * been added to the list view and whether they should be treated as
+         * recycled views or not.
+         */
+        boolean recycledHeaderFooter;
+
         public LayoutParams(Context c, AttributeSet attrs) {
             super(c, attrs);
         }
@@ -3269,7 +3278,7 @@
                 if (lp != null && lp.viewType != AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
                     // Note:  We do place AdapterView.ITEM_VIEW_TYPE_IGNORE in active views.
                     //        However, we will NOT place them into scrap views.
-                    activeViews[i] = getChildAt(i);
+                    activeViews[i] = child;
                 }
             }
         }
diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java
index 57e21e4..0a552e8 100644
--- a/core/java/android/widget/FastScroller.java
+++ b/core/java/android/widget/FastScroller.java
@@ -62,6 +62,8 @@
     private int mVisibleItem;
     private Paint mPaint;
     private int mListOffset;
+    private int mItemCount = -1;
+    private boolean mLongList;
     
     private Object [] mSections;
     private String mSectionText;
@@ -219,8 +221,12 @@
     
     void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, 
             int totalItemCount) {
-        // Are there enough pages to require fast scroll?
-        if (visibleItemCount > 0 && totalItemCount / visibleItemCount < MIN_PAGES) {
+        // Are there enough pages to require fast scroll? Recompute only if total count changes
+        if (mItemCount != totalItemCount && visibleItemCount > 0) {
+            mItemCount = totalItemCount;
+            mLongList = mItemCount / visibleItemCount >= MIN_PAGES;
+        }
+        if (!mLongList) {
             if (mState != STATE_NONE) {
                 setState(STATE_NONE);
             }
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java
index 6bbf062..11fab8f 100644
--- a/core/java/android/widget/GridView.java
+++ b/core/java/android/widget/GridView.java
@@ -929,6 +929,7 @@
             if (p == null) {
                 p = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
                         ViewGroup.LayoutParams.WRAP_CONTENT, 0);
+                child.setLayoutParams(p);
             }
             p.viewType = mAdapter.getItemViewType(0);
 
@@ -1328,11 +1329,8 @@
      */
     @Override
     void setSelectionInt(int position) {
-        mBlockLayoutRequests = true;
         setNextSelectedPositionInt(position);
         layoutChildren();
-
-        mBlockLayoutRequests = false;
     }
 
     @Override
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index a4523b92..480b0b8 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -333,6 +333,12 @@
         resizeFromDrawable();
     }
 
+    /**
+     * Sets the image level, when it is constructed from a 
+     * {@link android.graphics.drawable.LevelListDrawable}.
+     *
+     * @param level The new level for the image.
+     */
     @android.view.RemotableViewMethod
     public void setImageLevel(int level) {
         mLevel = level;
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index 404a4ee..c2f3a85 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -26,7 +26,6 @@
 import android.os.Parcelable;
 import android.util.AttributeSet;
 import android.util.SparseBooleanArray;
-import android.util.SparseArray;
 import android.view.FocusFinder;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
@@ -1040,6 +1039,7 @@
         if (p == null) {
             p = new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
                     ViewGroup.LayoutParams.WRAP_CONTENT, 0);
+            child.setLayoutParams(p);
         }
         p.viewType = mAdapter.getItemViewType(position);
 
@@ -1320,6 +1320,8 @@
         final boolean blockLayoutRequests = mBlockLayoutRequests;
         if (!blockLayoutRequests) {
             mBlockLayoutRequests = true;
+        } else {
+            return;
         }
 
         try {
@@ -1429,15 +1431,12 @@
                 // we can remember the focused view to restore after relayout if the
                 // data hasn't changed, or if the focused position is a header or footer
                 if (!dataChanged || isDirectChildHeaderOrFooter(focusedChild)) {
-                    focusLayoutRestoreDirectChild = getFocusedChild();
-                    if (focusLayoutRestoreDirectChild != null) {
-
-                        // remember the specific view that had focus
-                        focusLayoutRestoreView = findFocus();
-                        if (focusLayoutRestoreView != null) {
-                            // tell it we are going to mess with it
-                            focusLayoutRestoreView.onStartTemporaryDetach();
-                        }
+                    focusLayoutRestoreDirectChild = focusedChild;
+                    // remember the specific view that had focus
+                    focusLayoutRestoreView = findFocus();
+                    if (focusLayoutRestoreView != null) {
+                        // tell it we are going to mess with it
+                        focusLayoutRestoreView.onStartTemporaryDetach();
                     }
                 }
                 requestFocus();
@@ -1657,9 +1656,12 @@
         }
         p.viewType = mAdapter.getItemViewType(position);
 
-        if (recycled) {
+        if (recycled || (p.recycledHeaderFooter && p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER)) {
             attachViewToParent(child, flowDown ? -1 : 0, p);
         } else {
+            if (p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
+                p.recycledHeaderFooter = true;
+            }
             addViewInLayout(child, flowDown ? -1 : 0, p, true);
         }
 
@@ -1766,10 +1768,8 @@
      */
     @Override
     void setSelectionInt(int position) {
-        mBlockLayoutRequests = true;
         setNextSelectedPositionInt(position);
         layoutChildren();
-        mBlockLayoutRequests = false;
     }
 
     /**
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 080f3de..3f4912f 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -33,6 +33,7 @@
 import android.os.Handler;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.os.ResultReceiver;
 import android.os.SystemClock;
 import android.os.Message;
 import android.text.BoringLayout;
@@ -234,6 +235,7 @@
     private CharWrapper mCharWrapper = null;
 
     private boolean mSelectionMoved = false;
+    private boolean mTouchFocusSelectedAll = false;
 
     private Marquee mMarquee;
     private boolean mRestartMarquee;
@@ -837,6 +839,11 @@
         if (password) {
             setTransformationMethod(PasswordTransformationMethod.getInstance());
             typefaceIndex = MONOSPACE;
+        } else if ((mInputType&(EditorInfo.TYPE_MASK_CLASS
+                |EditorInfo.TYPE_MASK_VARIATION))
+                == (EditorInfo.TYPE_CLASS_TEXT
+                        |EditorInfo.TYPE_TEXT_VARIATION_PASSWORD)) {
+            typefaceIndex = MONOSPACE;
         }
 
         setTypefaceByIndex(typefaceIndex, styleIndex);
@@ -2244,6 +2251,7 @@
         int selEnd;
         CharSequence text;
         boolean frozenWithFocus;
+        CharSequence error;
 
         SavedState(Parcelable superState) {
             super(superState);
@@ -2256,6 +2264,13 @@
             out.writeInt(selEnd);
             out.writeInt(frozenWithFocus ? 1 : 0);
             TextUtils.writeToParcel(text, out, flags);
+
+            if (error == null) {
+                out.writeInt(0);
+            } else {
+                out.writeInt(1);
+                TextUtils.writeToParcel(error, out, flags);
+            }
         }
 
         @Override
@@ -2286,6 +2301,10 @@
             selEnd = in.readInt();
             frozenWithFocus = (in.readInt() != 0);
             text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
+
+            if (in.readInt() != 0) {
+                error = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
+            }
         }
     }
 
@@ -2338,6 +2357,8 @@
                 ss.frozenWithFocus = true;
             }
 
+            ss.error = mError;
+
             return ss;
         }
 
@@ -2383,6 +2404,10 @@
                 }
             }
         }
+
+        if (ss.error != null) {
+            setError(ss.error);
+        }
     }
 
     /**
@@ -2799,8 +2824,9 @@
      */
     public void setInputType(int type) {
         setInputType(type, false);
-        final boolean isPassword = (type&(EditorInfo.TYPE_MASK_CLASS
-                |EditorInfo.TYPE_MASK_VARIATION))
+        final int variation = type&(EditorInfo.TYPE_MASK_CLASS
+                |EditorInfo.TYPE_MASK_VARIATION);
+        final boolean isPassword = variation
                 == (EditorInfo.TYPE_CLASS_TEXT
                         |EditorInfo.TYPE_TEXT_VARIATION_PASSWORD);
         boolean forceUpdate = false;
@@ -2809,8 +2835,14 @@
             setTypefaceByIndex(MONOSPACE, 0);
         } else if (mTransformation == PasswordTransformationMethod.getInstance()) {
             // We need to clean up if we were previously in password mode.
-            setTypefaceByIndex(-1, -1);
+            if (variation != (EditorInfo.TYPE_CLASS_TEXT
+                        |EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)) {
+                setTypefaceByIndex(-1, -1);
+            }
             forceUpdate = true;
+        } else if (variation == (EditorInfo.TYPE_CLASS_TEXT
+                        |EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)) {
+            setTypefaceByIndex(MONOSPACE, 0);
         }
         
         boolean multiLine = (type&(EditorInfo.TYPE_MASK_CLASS
@@ -2999,23 +3031,28 @@
                 }
             }
         }
-        
-        if (actionCode == EditorInfo.IME_ACTION_NEXT &&
-                (ict != null || !shouldAdvanceFocusOnEnter())) {
-            // This is the default handling for the NEXT action, to advance
-            // focus.  Note that for backwards compatibility we don't do this
+        if (ict != null || !shouldAdvanceFocusOnEnter()) {
+            // This is the handling for some default action.
+            // Note that for backwards compatibility we don't do this
             // default handling if explicit ime options have not been given,
-            // and we do not advance by default on an enter key -- in that
-            // case, we want to turn this into the normal enter key codes that
-            // an app may be expecting.
-            View v = focusSearch(FOCUS_DOWN);
-            if (v != null) {
-                if (!v.requestFocus(FOCUS_DOWN)) {
-                    throw new IllegalStateException("focus search returned a view " +
-                            "that wasn't able to take focus!");
+            // to instead turn this into the normal enter key codes that an
+            // app may be expecting.
+            if (actionCode == EditorInfo.IME_ACTION_NEXT) {
+                View v = focusSearch(FOCUS_DOWN);
+                if (v != null) {
+                    if (!v.requestFocus(FOCUS_DOWN)) {
+                        throw new IllegalStateException("focus search returned a view " +
+                                "that wasn't able to take focus!");
+                    }
+                }
+                return;
+                
+            } else if (actionCode == EditorInfo.IME_ACTION_DONE) {
+                InputMethodManager imm = InputMethodManager.peekInstance();
+                if (imm != null) {
+                    imm.hideSoftInputFromWindow(getWindowToken(), 0);
                 }
             }
-            return;
         }
         
         Handler h = getHandler();
@@ -3998,7 +4035,7 @@
      * but also in mail addresses and subjects which will display on multiple
      * lines but where it doesn't make sense to insert newlines.
      */
-    protected boolean shouldAdvanceFocusOnEnter() {
+    private boolean shouldAdvanceFocusOnEnter() {
         if (mInput == null) {
             return false;
         }
@@ -4192,6 +4229,14 @@
                              */
                             super.onKeyUp(keyCode, event);
                             return true;
+                        } else if ((event.getFlags()
+                                & KeyEvent.FLAG_SOFT_KEYBOARD) != 0) {
+                            // No target for next focus, but make sure the IME
+                            // if this came from it.
+                            InputMethodManager imm = InputMethodManager.peekInstance();
+                            if (imm != null) {
+                                imm.hideSoftInputFromWindow(getWindowToken(), 0);
+                            }
                         }
                     }
 
@@ -4234,9 +4279,13 @@
                     // An action has not been set, but the enter key will move to
                     // the next focus, so set the action to that.
                     outAttrs.imeOptions = EditorInfo.IME_ACTION_NEXT;
-                    if (!shouldAdvanceFocusOnEnter()) {
-                        outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_ENTER_ACTION;
-                    }
+                } else {
+                    // An action has not been set, and there is no focus to move
+                    // to, so let's just supply a "done" action.
+                    outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE;
+                }
+                if (!shouldAdvanceFocusOnEnter()) {
+                    outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_ENTER_ACTION;
                 }
             }
             outAttrs.hintText = mHint;
@@ -5977,6 +6026,7 @@
 
                 if (mSelectAllOnFocus) {
                     Selection.setSelection((Spannable) mText, 0, mText.length());
+                    mTouchFocusSelectedAll = true;
                 }
 
                 if (selMoved && selStart >= 0 && selEnd >= 0) {
@@ -6078,12 +6128,32 @@
         }
     }
 
+    class CommitSelectionReceiver extends ResultReceiver {
+        int mNewStart;
+        int mNewEnd;
+        
+        CommitSelectionReceiver() {
+            super(getHandler());
+        }
+        
+        protected void onReceiveResult(int resultCode, Bundle resultData) {
+            if (resultCode != InputMethodManager.RESULT_SHOWN) {
+                Selection.setSelection((Spannable)mText, mNewStart, mNewEnd);
+            }
+        }
+    }
+    
     @Override
     public boolean onTouchEvent(MotionEvent event) {
+        final int action = event.getAction();
+        if (action == MotionEvent.ACTION_DOWN) {
+            // Reset this state; it will be re-set if super.onTouchEvent
+            // causes focus to move to the view.
+            mTouchFocusSelectedAll = false;
+        }
+        
         final boolean superResult = super.onTouchEvent(event);
 
-        final int action = event.getAction();
-        
         /*
          * Don't handle the release after a long press, because it will
          * move the selection away from whatever the menu action was
@@ -6100,17 +6170,44 @@
                 mScrolled = false;
             }
             
-            boolean moved = mMovement.onTouchEvent(this, (Spannable) mText, event);
+            boolean handled = false;
+            
+            int oldSelStart = Selection.getSelectionStart(mText);
+            int oldSelEnd = Selection.getSelectionEnd(mText);
+            
+            handled |= mMovement.onTouchEvent(this, (Spannable) mText, event);
 
             if (mText instanceof Editable && onCheckIsTextEditor()) {
                 if (action == MotionEvent.ACTION_UP && isFocused() && !mScrolled) {
                     InputMethodManager imm = (InputMethodManager)
                             getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
-                    imm.showSoftInput(this, 0);
+                    
+                    // This is going to be gross...  if tapping on the text view
+                    // causes the IME to be displayed, we don't want the selection
+                    // to change.  But the selection has already changed, and
+                    // we won't know right away whether the IME is getting
+                    // displayed, so...
+                    
+                    int newSelStart = Selection.getSelectionStart(mText);
+                    int newSelEnd = Selection.getSelectionEnd(mText);
+                    CommitSelectionReceiver csr = null;
+                    if (newSelStart != oldSelStart || newSelEnd != oldSelEnd) {
+                        csr = new CommitSelectionReceiver();
+                        csr.mNewStart = newSelStart;
+                        csr.mNewEnd = newSelEnd;
+                    }
+                    
+                    if (imm.showSoftInput(this, 0, csr) && csr != null) {
+                        // The IME might get shown -- revert to the old
+                        // selection, and change to the new when we finally
+                        // find out of it is okay.
+                        Selection.setSelection((Spannable)mText, oldSelStart, oldSelEnd);
+                        handled = true;
+                    }
                 }
             }
 
-            if (moved) {
+            if (handled) {
                 return true;
             }
         }
@@ -6118,6 +6215,15 @@
         return superResult;
     }
 
+    /**
+     * Returns true, only while processing a touch gesture, if the initial
+     * touch down event caused focus to move to the text view and as a result
+     * it selected all of its text.
+     */
+    public boolean didTouchFocusSelectAll() {
+        return mTouchFocusSelectedAll;
+    }
+    
     @Override
     public void cancelLongPress() {
         super.cancelLongPress();
diff --git a/core/java/android/widget/ZoomRing.java b/core/java/android/widget/ZoomRing.java
index a5a867b..83a1225 100644
--- a/core/java/android/widget/ZoomRing.java
+++ b/core/java/android/widget/ZoomRing.java
@@ -1,9 +1,26 @@
+/*
+ * 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 android.widget;
 
 import com.android.internal.R;
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.RotateDrawable;
@@ -18,36 +35,47 @@
 import android.view.ViewConfiguration;
 
 /**
+ * A view that has a draggable thumb on a circle.
+ * 
  * @hide
  */
 public class ZoomRing extends View {
-
-    // TODO: move to ViewConfiguration?
-    static final int DOUBLE_TAP_DISMISS_TIMEOUT = ViewConfiguration.getDoubleTapTimeout();
-    // TODO: get from theme
     private static final String TAG = "ZoomRing";
 
     // TODO: Temporary until the trail is done
     private static final boolean DRAW_TRAIL = false;
 
-    // TODO: xml
-    private static final int THUMB_DISTANCE = 63;
-
-    /** To avoid floating point calculations, we multiply radians by this value. */
+    /**
+     * To avoid floating point calculations and int round-offs, we multiply
+     * radians by this value.
+     */
     public static final int RADIAN_INT_MULTIPLIER = 10000;
+    /** The allowable margin of error when comparing two angles. */
     public static final int RADIAN_INT_ERROR = 100;
-    /** PI using our multiplier. */
     public static final int PI_INT_MULTIPLIED = (int) (Math.PI * RADIAN_INT_MULTIPLIER);
     public static final int TWO_PI_INT_MULTIPLIED = PI_INT_MULTIPLIED * 2;
-    /** PI/2 using our multiplier. */
     private static final int HALF_PI_INT_MULTIPLIED = PI_INT_MULTIPLIED / 2;
 
-    private int mZeroAngle = HALF_PI_INT_MULTIPLIED * 3;
-    
+    private static final int DOUBLE_TAP_DISMISS_TIMEOUT = ViewConfiguration.getDoubleTapTimeout();
+    private final int mTouchSlop;
+
+    /** The slop when the user is grabbing the thumb. */
     private static final int THUMB_GRAB_SLOP = PI_INT_MULTIPLIED / 8;
+    /** The slop until a user starts dragging the thumb. */
     private static final int THUMB_DRAG_SLOP = PI_INT_MULTIPLIED / 12;
 
+    /** The distance (in px) from the center of the ring to the center of the thumb. */ 
+    private int mThumbDistance;
+
+    /** The angle on a unit circle that is considered to be the zoom ring's 0 degree. */
+    private int mZeroAngle = HALF_PI_INT_MULTIPLIED * 3;
+
     /**
+     * The maximum delta angle that the thumb can move. The primary use is to
+     * ensure that when a user taps on the ring, the movement to reach that
+     * target angle is not ambiguous (for example, if the thumb is at 0 and he
+     * taps 180, should the thumb go clockwise or counterclockwise?
+     * <p>
      * Includes error because we compare this to the result of
      * getDelta(getClosestTickeAngle(..), oldAngle) which ends up having some
      * rounding error.
@@ -55,58 +83,93 @@
     private static final int MAX_ABS_JUMP_DELTA_ANGLE = (2 * PI_INT_MULTIPLIED / 3) +
             RADIAN_INT_ERROR; 
 
-    /** The cached X of our center. */
+    /** The cached X of the zoom ring's center (in zoom ring coordinates). */
     private int mCenterX;
-    /** The cached Y of our center. */
+    /** The cached Y of the zoom ring's center (in zoom ring coordinates). */
     private int mCenterY;
 
     /** The angle of the thumb (in int radians) */
     private int mThumbAngle;
+    /** The cached width/2 of the zoom ring. */
     private int mThumbHalfWidth;
+    /** The cached height/2 of the zoom ring. */
     private int mThumbHalfHeight;
     
+    /**
+     * The bound for the thumb's movement when it is being dragged clockwise.
+     * Can be Integer.MIN_VALUE if there is no bound in this direction.
+     */
     private int mThumbCwBound = Integer.MIN_VALUE;
+    /**
+     * The bound for the thumb's movement when it is being dragged
+     * counterclockwise. Can be Integer.MIN_VALUE if there is no bound in this
+     * direction.
+     */
     private int mThumbCcwBound = Integer.MIN_VALUE;
+    
+    /**
+     * Whether to enforce the maximum absolute jump delta. See
+     * {@link #MAX_ABS_JUMP_DELTA_ANGLE}.
+     */
     private boolean mEnforceMaxAbsJump = true;
     
     /** The inner radius of the track. */
-    private int mBoundInnerRadiusSquared = 0;
+    private int mTrackInnerRadius;
+    /** Cached square of the inner radius of the track. */
+    private int mTrackInnerRadiusSquared;
     /** The outer radius of the track. */
-    private int mBoundOuterRadiusSquared = Integer.MAX_VALUE;
+    private int mTrackOuterRadius;
+    /** Cached square of the outer radius of the track. */
+    private int mTrackOuterRadiusSquared;
 
+    /** The raw X of where the widget previously was located. */
     private int mPreviousWidgetDragX;
+    /** The raw Y of where the widget previously was located. */
     private int mPreviousWidgetDragY;
 
+    /** Whether the thumb should be visible. */
     private boolean mThumbVisible = true;
+    
+    /** The drawable for the thumb. */
     private Drawable mThumbDrawable;
     
     /** Shown beneath the thumb if we can still zoom in. */
-    private Drawable mThumbPlusArrowDrawable;
+    private Drawable mZoomInArrowDrawable;
     /** Shown beneath the thumb if we can still zoom out. */
-    private Drawable mThumbMinusArrowDrawable;
+    private Drawable mZoomOutArrowDrawable;
+    
+    /** @see #mThumbArrowsToDraw */
     private static final int THUMB_ARROW_PLUS = 1 << 0;
+    /** @see #mThumbArrowsToDraw */
     private static final int THUMB_ARROW_MINUS = 1 << 1;
     /** Bitwise-OR of {@link #THUMB_ARROW_MINUS} and {@link #THUMB_ARROW_PLUS} */
     private int mThumbArrowsToDraw;
+    
+    /** The duration for the thumb arrows fading out */
     private static final int THUMB_ARROWS_FADE_DURATION = 300;
+    /** The time when the fade out started. */
     private long mThumbArrowsFadeStartTime;
+    /** The current alpha for the thumb arrows. */
     private int mThumbArrowsAlpha = 255;
 
-    private static final int THUMB_PLUS_MINUS_DISTANCE = 69;
-    private static final int THUMB_PLUS_MINUS_OFFSET_ANGLE = TWO_PI_INT_MULTIPLIED / 11;
+    /** The distance from the center to the zoom arrow hints (usually plus and minus). */
+    private int mZoomArrowHintDistance;
+    /** The offset angle from the thumb angle to draw the zoom arrow hints. */
+    private int mZoomArrowHintOffsetAngle = TWO_PI_INT_MULTIPLIED / 11;
     /** Drawn (without rotation) on top of the arrow. */
-    private Drawable mThumbPlusDrawable;
+    private Drawable mZoomInArrowHintDrawable;
     /** Drawn (without rotation) on top of the arrow. */
-    private Drawable mThumbMinusDrawable;
+    private Drawable mZoomOutArrowHintDrawable;
     
+    /** Zoom ring is just chillin' */
     private static final int MODE_IDLE = 0;
-
     /**
      * User has his finger down somewhere on the ring (besides the thumb) and we
      * are waiting for him to move the slop amount before considering him in the
      * drag thumb state.
      */
     private static final int MODE_WAITING_FOR_DRAG_THUMB_AFTER_JUMP = 5;
+    /** User is dragging the thumb. */
     private static final int MODE_DRAG_THUMB = 1;
     /**
      * User has his finger down, but we are waiting for him to pass the touch
@@ -114,51 +177,65 @@
      * show the movable hint.
      */
     private static final int MODE_WAITING_FOR_MOVE_ZOOM_RING = 4;
+    /** User is moving the zoom ring. */
     private static final int MODE_MOVE_ZOOM_RING = 2;
+    /** User is dragging the thumb via tap-drag. */
     private static final int MODE_TAP_DRAG = 3;
     /** Ignore the touch interaction until the user touches the thumb again. */
     private static final int MODE_IGNORE_UNTIL_TOUCHES_THUMB = 6;
+    /** The current mode of interaction. */
     private int mMode;
-    
     /** Records the last mode the user was in. */
     private int mPreviousMode;
-    
+
+    /** The previous time of the up-touch on the center. */
     private long mPreviousCenterUpTime;
+    /** The previous X of down-touch. */
     private int mPreviousDownX;
+    /** The previous Y of down-touch. */
     private int mPreviousDownY;
 
-    private int mWaitingForDragThumbDownAngle;
+    /** The angle where the user first grabbed the thumb. */
+    private int mInitialGrabThumbAngle;
     
+    /** The callback. */
     private OnZoomRingCallback mCallback;
-    private int mPreviousCallbackAngle;
-    private int mCallbackThreshold = Integer.MAX_VALUE;
+    /** The tick angle that we previously called back with. */
+    private int mPreviousCallbackTickAngle;
+    /** The delta angle between ticks.  A tick is a callback point. */
+    private int mTickDelta = Integer.MAX_VALUE;
     /** If the user drags to within __% of a tick, snap to that tick. */
-    private int mFuzzyCallbackThreshold = Integer.MAX_VALUE;
+    private int mFuzzyTickDelta = Integer.MAX_VALUE;
     
-    private boolean mResetThumbAutomatically = true;
+    /** The angle where the thumb is officially starting to be dragged. */
     private int mThumbDragStartAngle;
 
-    private final int mTouchSlop;
-
+    /** The drawable for the zoom trail. */
     private Drawable mTrail;
+    /** The accumulated angle for the trail. */
     private double mAcculumalatedTrailAngle;
     
+    /** The animation-step tracker for scrolling the thumb to a particular position. */
     private Scroller mThumbScroller;
 
+    /** Whether to ever vibrate when passing a tick. */
     private boolean mVibration = true;
     
-    private static final int MSG_THUMB_SCROLLER_TICK = 1;
-    private static final int MSG_THUMB_ARROWS_FADE_TICK = 2;
+    /** The drawable used to hint that this can pan its owner. */
+    private Drawable mPanningArrowsDrawable;
+    
+    private static final int MSG_THUMB_SCROLLER_STEP = 1;
+    private static final int MSG_THUMB_ARROWS_FADE_STEP = 2;
     private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {
-                case MSG_THUMB_SCROLLER_TICK:
-                    onThumbScrollerTick();
+                case MSG_THUMB_SCROLLER_STEP:
+                    onThumbScrollerStep();
                     break;
                     
-                case MSG_THUMB_ARROWS_FADE_TICK:
-                    onThumbArrowsFadeTick();
+                case MSG_THUMB_ARROWS_FADE_STEP:
+                    onThumbArrowsFadeStep();
                     break;
             }
         }
@@ -170,50 +247,64 @@
         ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
         mTouchSlop = viewConfiguration.getScaledTouchSlop();
 
-        // TODO get drawables from style instead
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ZoomRing, defStyle, 0);
+        mThumbDistance = (int) a.getDimension(R.styleable.ZoomRing_thumbDistance, 0);
+        setTrackRadii(
+                (int) a.getDimension(R.styleable.ZoomRing_trackInnerRadius, 0),
+                (int) a.getDimension(R.styleable.ZoomRing_trackOuterRadius, Integer.MAX_VALUE));
+        mThumbDrawable = a.getDrawable(R.styleable.ZoomRing_thumbDrawable);
+        mZoomInArrowDrawable = a.getDrawable(R.styleable.ZoomRing_zoomInArrowDrawable);
+        mZoomOutArrowDrawable = a.getDrawable(R.styleable.ZoomRing_zoomOutArrowDrawable);
+        mZoomInArrowHintDrawable = a.getDrawable(R.styleable.ZoomRing_zoomInArrowHintDrawable);
+        mZoomOutArrowHintDrawable = a.getDrawable(R.styleable.ZoomRing_zoomOutArrowHintDrawable);
+        mZoomArrowHintDistance =
+                (int) a.getDimension(R.styleable.ZoomRing_zoomArrowHintDistance, 0);
+        mZoomArrowHintOffsetAngle =
+                (int) (a.getInteger(R.styleable.ZoomRing_zoomArrowHintOffsetAngle, 0)
+                        * TWO_PI_INT_MULTIPLIED / 360);
+        mPanningArrowsDrawable = a.getDrawable(R.styleable.ZoomRing_panningArrowsDrawable);
+        a.recycle();
+        
         Resources res = context.getResources();
-        mThumbDrawable = res.getDrawable(R.drawable.zoom_ring_thumb);
-        mThumbPlusArrowDrawable = res.getDrawable(R.drawable.zoom_ring_thumb_plus_arrow_rotatable).
-                mutate();
-        mThumbMinusArrowDrawable = res.getDrawable(R.drawable.zoom_ring_thumb_minus_arrow_rotatable).
-                mutate();
-        mThumbPlusDrawable = res.getDrawable(R.drawable.zoom_ring_thumb_plus);
-        mThumbMinusDrawable = res.getDrawable(R.drawable.zoom_ring_thumb_minus);
         if (DRAW_TRAIL) {
+            // TODO get drawables from style instead
             mTrail = res.getDrawable(R.drawable.zoom_ring_trail).mutate();
         }
 
-        // TODO: add padding to drawable
-        setBackgroundResource(R.drawable.zoom_ring_track);
-        // TODO get from style
-        setRingBounds(43, Integer.MAX_VALUE);
-
         mThumbHalfHeight = mThumbDrawable.getIntrinsicHeight() / 2;
         mThumbHalfWidth = mThumbDrawable.getIntrinsicWidth() / 2;
 
-        setCallbackThreshold(PI_INT_MULTIPLIED / 6);
+        setTickDelta(PI_INT_MULTIPLIED / 6);
     }
 
     public ZoomRing(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
+        this(context, attrs, com.android.internal.R.attr.zoomRingStyle);
     }
 
     public ZoomRing(Context context) {
         this(context, null);
     }
 
+    public void setTrackDrawable(Drawable drawable) {
+        setBackgroundDrawable(drawable);
+    }
+    
     public void setCallback(OnZoomRingCallback callback) {
         mCallback = callback;
     }
 
-    // TODO: rename
-    public void setCallbackThreshold(int callbackThreshold) {
-        mCallbackThreshold = callbackThreshold;
-        mFuzzyCallbackThreshold = (int) (callbackThreshold * 0.65f);
+    /**
+     * Sets the distance between ticks.  This will be used as a callback threshold.
+     * 
+     * @param angle The angle between ticks.
+     */
+    public void setTickDelta(int angle) {
+        mTickDelta = angle;
+        mFuzzyTickDelta = (int) (angle * 0.65f);
     }
 
-    public void setVibration(boolean vibrate) {
-        mVibration = vibrate;
+    public void setVibration(boolean vibration) {
+        mVibration = vibration;
     }
     
     public void setThumbVisible(boolean thumbVisible) {
@@ -223,28 +314,42 @@
         }
     }
     
-    // TODO: from XML too
-    public void setRingBounds(int innerRadius, int outerRadius) {
-        mBoundInnerRadiusSquared = innerRadius * innerRadius;
-        if (mBoundInnerRadiusSquared < innerRadius) {
+    public Drawable getPanningArrowsDrawable() {
+        return mPanningArrowsDrawable;
+    }
+    
+    public void setTrackRadii(int innerRadius, int outerRadius) {
+        mTrackInnerRadius = innerRadius;
+        mTrackOuterRadius = outerRadius;
+        
+        mTrackInnerRadiusSquared = innerRadius * innerRadius;
+        if (mTrackInnerRadiusSquared < innerRadius) {
             // Prevent overflow
-            mBoundInnerRadiusSquared = Integer.MAX_VALUE;
+            mTrackInnerRadiusSquared = Integer.MAX_VALUE;
         }
 
-        mBoundOuterRadiusSquared = outerRadius * outerRadius;
-        if (mBoundOuterRadiusSquared < outerRadius) {
+        mTrackOuterRadiusSquared = outerRadius * outerRadius;
+        if (mTrackOuterRadiusSquared < outerRadius) {
             // Prevent overflow
-            mBoundOuterRadiusSquared = Integer.MAX_VALUE;
+            mTrackOuterRadiusSquared = Integer.MAX_VALUE;
         }
     }
 
+    public int getTrackInnerRadius() {
+        return mTrackInnerRadius;
+    }
+    
+    public int getTrackOuterRadius() {
+        return mTrackOuterRadius;
+    }
+    
     public void setThumbClockwiseBound(int angle) {
         if (angle < 0) {
             mThumbCwBound = Integer.MIN_VALUE;
         } else {
             mThumbCwBound = getClosestTickAngle(angle);
         }
-        setEnforceMaxAbsJump();
+        updateEnforceMaxAbsJump();
     }
     
     public void setThumbCounterclockwiseBound(int angle) {
@@ -253,14 +358,14 @@
         } else {
             mThumbCcwBound = getClosestTickAngle(angle);
         }
-        setEnforceMaxAbsJump();
+        updateEnforceMaxAbsJump();
     }
     
-    private void setEnforceMaxAbsJump() {
+    private void updateEnforceMaxAbsJump() {
         // If there are bounds in both direction, there is no reason to restrict
         // the amount that a user can absolute jump to
         mEnforceMaxAbsJump =
-            mThumbCcwBound == Integer.MIN_VALUE || mThumbCwBound == Integer.MIN_VALUE;
+                mThumbCcwBound == Integer.MIN_VALUE || mThumbCwBound == Integer.MIN_VALUE;
     }
     
     public int getThumbAngle() {
@@ -269,7 +374,7 @@
     
     public void setThumbAngle(int angle) {
         angle = getValidAngle(angle);
-        mPreviousCallbackAngle = getClosestTickAngle(angle);
+        mPreviousCallbackTickAngle = getClosestTickAngle(angle);
         setThumbAngleAuto(angle, false, false);
     }
     
@@ -299,9 +404,9 @@
         mThumbAngle = angle;
         int unoffsetAngle = angle + mZeroAngle;
         int thumbCenterX = (int) (Math.cos(1f * unoffsetAngle / RADIAN_INT_MULTIPLIER) *
-                THUMB_DISTANCE) + mCenterX;
+                mThumbDistance) + mCenterX;
         int thumbCenterY = (int) (Math.sin(1f * unoffsetAngle / RADIAN_INT_MULTIPLIER) *
-                THUMB_DISTANCE) * -1 + mCenterY;
+                mThumbDistance) * -1 + mCenterY;
 
         mThumbDrawable.setBounds(thumbCenterX - mThumbHalfWidth,
                 thumbCenterY - mThumbHalfHeight,
@@ -356,7 +461,7 @@
             duration = getAnimationDuration(deltaAngle);
         }
         mThumbScroller.startScroll(startAngle, 0, deltaAngle, 0, duration);
-        onThumbScrollerTick();
+        onThumbScrollerStep();
     }
     
     private int getAnimationDuration(int deltaAngle) {
@@ -364,10 +469,10 @@
         return 300 + deltaAngle * 300 / RADIAN_INT_MULTIPLIER; 
     }
     
-    private void onThumbScrollerTick() {
+    private void onThumbScrollerStep() {
         if (!mThumbScroller.computeScrollOffset()) return;
         setThumbAngleInt(getThumbScrollerAngle());        
-        mHandler.sendEmptyMessage(MSG_THUMB_SCROLLER_TICK);
+        mHandler.sendEmptyMessage(MSG_THUMB_SCROLLER_STEP);
     }
 
     private int getThumbScrollerAngle() {
@@ -375,16 +480,10 @@
     }
     
     public void resetThumbAngle() {
-        if (mResetThumbAutomatically) {
-            mPreviousCallbackAngle = 0;
-            setThumbAngleInt(0);
-        }
+        mPreviousCallbackTickAngle = 0;
+        setThumbAngleInt(0);
     }
     
-    public void setResetThumbAutomatically(boolean resetThumbAutomatically) {
-        mResetThumbAutomatically = resetThumbAutomatically;
-    }
-
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         setMeasuredDimension(resolveSize(getSuggestedMinimumWidth(), widthMeasureSpec),
@@ -411,14 +510,12 @@
         }
         
         // These drawables are the same size as the track
-        mThumbPlusArrowDrawable.setBounds(0, 0, right - left, bottom - top);
-        mThumbMinusArrowDrawable.setBounds(0, 0, right - left, bottom - top);
+        mZoomInArrowDrawable.setBounds(0, 0, right - left, bottom - top);
+        mZoomOutArrowDrawable.setBounds(0, 0, right - left, bottom - top);
     }
 
     @Override
     public boolean onTouchEvent(MotionEvent event) {
-//        Log.d(TAG, "History size: " + event.getHistorySize());
-        
         return handleTouch(event.getAction(), event.getEventTime(),
                 (int) event.getX(), (int) event.getY(), (int) event.getRawX(),
                 (int) event.getRawY());
@@ -457,15 +554,10 @@
         boolean isTouchingRing = mThumbVisible;
         
         int touchAngle = getAngle(localX, localY);
-//        printAngle("touchAngle", touchAngle);
-//        printAngle("mThumbAngle", mThumbAngle);
-//        printAngle("mPreviousCallbackAngle", mPreviousCallbackAngle);
-//        Log.d(TAG, "");
-        		
         
         int radiusSquared = localX * localX + localY * localY;
-        if (radiusSquared < mBoundInnerRadiusSquared ||
-                radiusSquared > mBoundOuterRadiusSquared) {
+        if (radiusSquared < mTrackInnerRadiusSquared ||
+                radiusSquared > mTrackOuterRadiusSquared) {
             // Out-of-bounds
             isTouchingThumb = false;
             isTouchingRing = false;
@@ -486,7 +578,7 @@
                 if (!isTouchingRing &&
                         (time - mPreviousCenterUpTime <= DOUBLE_TAP_DISMISS_TIMEOUT)) {
                     // Make sure the double-tap is in the center of the widget (and not on the ring)
-                    mCallback.onZoomRingDismissed(true);
+                    mCallback.onZoomRingDismissed();
                     onTouchUp(time, isTouchingRing);
                     
                     // Dismissing, so halt here
@@ -557,7 +649,7 @@
                 }
 
                 setMode(MODE_WAITING_FOR_DRAG_THUMB_AFTER_JUMP);
-                mWaitingForDragThumbDownAngle = touchAngle;
+                mInitialGrabThumbAngle = touchAngle;
                 boolean ccw = deltaThumbAndTick > 0;
                 setThumbAngleAnimated(tickAngle, 0, ccw);
                 
@@ -577,9 +669,9 @@
             }
 
         } else if (mMode == MODE_WAITING_FOR_DRAG_THUMB_AFTER_JUMP) {
-            int deltaDownAngle = getDelta(mWaitingForDragThumbDownAngle, touchAngle);
+            int deltaDownAngle = getDelta(mInitialGrabThumbAngle, touchAngle);
             if ((deltaDownAngle < -THUMB_DRAG_SLOP || deltaDownAngle > THUMB_DRAG_SLOP) &&
-                    isDeltaInBounds(mWaitingForDragThumbDownAngle, deltaDownAngle)) {
+                    isDeltaInBounds(mInitialGrabThumbAngle, deltaDownAngle)) {
                 setMode(MODE_DRAG_THUMB);
                 
                 // No need to call onThumbDragStarted, since that was done when they tapped-to-jump
@@ -591,6 +683,8 @@
                 /* Make sure the user has moved the slop amount before going into that mode. */
                 setMode(MODE_MOVE_ZOOM_RING);
                 mCallback.onZoomRingMovingStarted();
+                // Move the zoom ring so it is under the finger where the user first touched
+                mCallback.onZoomRingMoved(x - mPreviousDownX, y - mPreviousDownY, rawX, rawY);
             }
         } else if (mMode == MODE_IGNORE_UNTIL_TOUCHES_THUMB) {
             if (isTouchingThumb) {
@@ -629,7 +723,7 @@
             
             if (mode == MODE_DRAG_THUMB || mode == MODE_TAP_DRAG) {
                 // Animate back to a tick
-                setThumbAngleAnimated(mPreviousCallbackAngle, 0);
+                setThumbAngleAnimated(mPreviousCallbackTickAngle, 0);
             }
         }
         mCallback.onUserInteractionStopped();
@@ -741,9 +835,9 @@
         boolean animateThumbToNewAngle = false;
         
         int totalDeltaAngle;
-        totalDeltaAngle = getDelta(mPreviousCallbackAngle, touchAngle, useDirection, ccw);
-        if (totalDeltaAngle >= mFuzzyCallbackThreshold
-                || totalDeltaAngle <= -mFuzzyCallbackThreshold) {
+        totalDeltaAngle = getDelta(mPreviousCallbackTickAngle, touchAngle, useDirection, ccw);
+        if (totalDeltaAngle >= mFuzzyTickDelta
+                || totalDeltaAngle <= -mFuzzyTickDelta) {
 
             if (!useDirection) {
                 // Set ccw to match the direction found by getDelta
@@ -763,9 +857,9 @@
             if (ccw && mThumbCcwBound != Integer.MIN_VALUE) {
                 int deltaCcwBoundAndTouch =
                         getDelta(mThumbCcwBound, touchAngle, useDirection, true);
-                if (deltaCcwBoundAndTouch >= mCallbackThreshold / 2) {
+                if (deltaCcwBoundAndTouch >= mTickDelta / 2) {
                     // The touch has past a bound
-                    int deltaPreviousCbAndTouch = getDelta(mPreviousCallbackAngle,
+                    int deltaPreviousCbAndTouch = getDelta(mPreviousCallbackTickAngle,
                             touchAngle, useDirection, true);
                     if (deltaPreviousCbAndTouch >= deltaCcwBoundAndTouch) {
                         // The bound is between the previous callback angle and the touch
@@ -778,8 +872,8 @@
                 // See block above for general comments
                 int deltaCwBoundAndTouch =
                         getDelta(mThumbCwBound, touchAngle, useDirection, false);
-                if (deltaCwBoundAndTouch <= -mCallbackThreshold / 2) {
-                    int deltaPreviousCbAndTouch = getDelta(mPreviousCallbackAngle,
+                if (deltaCwBoundAndTouch <= -mTickDelta / 2) {
+                    int deltaPreviousCbAndTouch = getDelta(mPreviousCallbackTickAngle,
                             touchAngle, useDirection, false);
                     /*
                      * Both of these will be negative since we got delta in
@@ -795,7 +889,7 @@
             }
             if (touchAngle != oldTouchAngle) {
                 // We bounded the touch angle
-                totalDeltaAngle = getDelta(mPreviousCallbackAngle, touchAngle, useDirection, ccw);
+                totalDeltaAngle = getDelta(mPreviousCallbackTickAngle, touchAngle, useDirection, ccw);
                 animateThumbToNewAngle = true;
                 setMode(MODE_IGNORE_UNTIL_TOUCHES_THUMB);
             }
@@ -819,7 +913,7 @@
              * hit. If we do int division, we'll end up with one level lower
              * than the one he was going for.
              */
-            int deltaLevels = Math.round((float) totalDeltaAngle / mCallbackThreshold); 
+            int deltaLevels = Math.round((float) totalDeltaAngle / mTickDelta); 
             if (deltaLevels != 0) {
                 boolean canStillZoom = mCallback.onZoomRingThumbDragged(
                         deltaLevels, mThumbDragStartAngle, touchAngle);
@@ -833,8 +927,8 @@
                 }
                 
                 // Set the callback angle to the actual angle based on how many delta levels we gave
-                mPreviousCallbackAngle = getValidAngle(
-                        mPreviousCallbackAngle + (deltaLevels * mCallbackThreshold));
+                mPreviousCallbackTickAngle = getValidAngle(
+                        mPreviousCallbackTickAngle + (deltaLevels * mTickDelta));
             }
         }
 
@@ -993,14 +1087,14 @@
     }
 
     private int getClosestTickAngle(int angle) {
-        int smallerAngleDistance = angle % mCallbackThreshold;
+        int smallerAngleDistance = angle % mTickDelta;
         int smallerAngle = angle - smallerAngleDistance;
-        if (smallerAngleDistance < mCallbackThreshold / 2) {
+        if (smallerAngleDistance < mTickDelta / 2) {
             // Closer to the smaller angle
             return smallerAngle;
         } else {
             // Closer to the bigger angle (premodding)
-            return (smallerAngle + mCallbackThreshold) % TWO_PI_INT_MULTIPLIED; 
+            return (smallerAngle + mTickDelta) % TWO_PI_INT_MULTIPLIED; 
         }
     }
 
@@ -1025,7 +1119,7 @@
         super.onWindowFocusChanged(hasWindowFocus);
 
         if (!hasWindowFocus) {
-            mCallback.onZoomRingDismissed(true);
+            mCallback.onZoomRingDismissed();
         }
     }
     
@@ -1054,12 +1148,12 @@
                 mTrail.draw(canvas);
             }
             if ((mThumbArrowsToDraw & THUMB_ARROW_PLUS) != 0) {
-                mThumbPlusArrowDrawable.draw(canvas);
-                mThumbPlusDrawable.draw(canvas);
+                mZoomInArrowDrawable.draw(canvas);
+                mZoomInArrowHintDrawable.draw(canvas);
             }
             if ((mThumbArrowsToDraw & THUMB_ARROW_MINUS) != 0) {
-                mThumbMinusArrowDrawable.draw(canvas);
-                mThumbMinusDrawable.draw(canvas);
+                mZoomOutArrowDrawable.draw(canvas);
+                mZoomOutArrowHintDrawable.draw(canvas);
             }
             mThumbDrawable.draw(canvas);
         }
@@ -1067,48 +1161,48 @@
     
     private void setThumbArrowsAngle(int angle) {
         int level = -angle * 10000 / ZoomRing.TWO_PI_INT_MULTIPLIED;
-        mThumbPlusArrowDrawable.setLevel(level);
-        mThumbMinusArrowDrawable.setLevel(level);
+        mZoomInArrowDrawable.setLevel(level);
+        mZoomOutArrowDrawable.setLevel(level);
         
         // Assume it is a square
-        int halfSideLength = mThumbPlusDrawable.getIntrinsicHeight() / 2;
+        int halfSideLength = mZoomInArrowHintDrawable.getIntrinsicHeight() / 2;
         int unoffsetAngle = angle + mZeroAngle;
         
-        int plusCenterX = (int) (Math.cos(1f * (unoffsetAngle - THUMB_PLUS_MINUS_OFFSET_ANGLE)
-                / RADIAN_INT_MULTIPLIER) * THUMB_PLUS_MINUS_DISTANCE) + mCenterX;
-        int plusCenterY = (int) (Math.sin(1f * (unoffsetAngle - THUMB_PLUS_MINUS_OFFSET_ANGLE)
-                / RADIAN_INT_MULTIPLIER) * THUMB_PLUS_MINUS_DISTANCE) * -1 + mCenterY;
-        mThumbPlusDrawable.setBounds(plusCenterX - halfSideLength,
+        int plusCenterX = (int) (Math.cos(1f * (unoffsetAngle - mZoomArrowHintOffsetAngle)
+                / RADIAN_INT_MULTIPLIER) * mZoomArrowHintDistance) + mCenterX;
+        int plusCenterY = (int) (Math.sin(1f * (unoffsetAngle - mZoomArrowHintOffsetAngle)
+                / RADIAN_INT_MULTIPLIER) * mZoomArrowHintDistance) * -1 + mCenterY;
+        mZoomInArrowHintDrawable.setBounds(plusCenterX - halfSideLength,
                 plusCenterY - halfSideLength,
                 plusCenterX + halfSideLength,
                 plusCenterY + halfSideLength);
         
-        int minusCenterX = (int) (Math.cos(1f * (unoffsetAngle + THUMB_PLUS_MINUS_OFFSET_ANGLE)
-                / RADIAN_INT_MULTIPLIER) * THUMB_PLUS_MINUS_DISTANCE) + mCenterX;
-        int minusCenterY = (int) (Math.sin(1f * (unoffsetAngle + THUMB_PLUS_MINUS_OFFSET_ANGLE)
-                / RADIAN_INT_MULTIPLIER) * THUMB_PLUS_MINUS_DISTANCE) * -1 + mCenterY;
-        mThumbMinusDrawable.setBounds(minusCenterX - halfSideLength,
+        int minusCenterX = (int) (Math.cos(1f * (unoffsetAngle + mZoomArrowHintOffsetAngle)
+                / RADIAN_INT_MULTIPLIER) * mZoomArrowHintDistance) + mCenterX;
+        int minusCenterY = (int) (Math.sin(1f * (unoffsetAngle + mZoomArrowHintOffsetAngle)
+                / RADIAN_INT_MULTIPLIER) * mZoomArrowHintDistance) * -1 + mCenterY;
+        mZoomOutArrowHintDrawable.setBounds(minusCenterX - halfSideLength,
                 minusCenterY - halfSideLength,
                 minusCenterX + halfSideLength,
                 minusCenterY + halfSideLength);
     }
     
-    public void setThumbArrowsVisible(boolean visible) {
+    void setThumbArrowsVisible(boolean visible) {
         if (visible) {
             mThumbArrowsAlpha = 255;
-            int callbackAngle = mPreviousCallbackAngle;
+            int callbackAngle = mPreviousCallbackTickAngle;
             if (callbackAngle < mThumbCwBound - RADIAN_INT_ERROR ||
                     callbackAngle > mThumbCwBound + RADIAN_INT_ERROR) {
-                mThumbPlusArrowDrawable.setAlpha(255);
-                mThumbPlusDrawable.setAlpha(255);
+                mZoomInArrowDrawable.setAlpha(255);
+                mZoomInArrowHintDrawable.setAlpha(255);
                 mThumbArrowsToDraw |= THUMB_ARROW_PLUS;                
             } else {
                 mThumbArrowsToDraw &= ~THUMB_ARROW_PLUS;
             }
             if (callbackAngle < mThumbCcwBound - RADIAN_INT_ERROR ||
                     callbackAngle > mThumbCcwBound + RADIAN_INT_ERROR) {
-                mThumbMinusArrowDrawable.setAlpha(255);
-                mThumbMinusDrawable.setAlpha(255);
+                mZoomOutArrowDrawable.setAlpha(255);
+                mZoomOutArrowHintDrawable.setAlpha(255);
                 mThumbArrowsToDraw |= THUMB_ARROW_MINUS;
             } else {
                 mThumbArrowsToDraw &= ~THUMB_ARROW_MINUS;
@@ -1117,11 +1211,11 @@
         } else if (mThumbArrowsAlpha == 255) {
             // Only start fade if we're fully visible (otherwise another fade is happening already)
             mThumbArrowsFadeStartTime = SystemClock.elapsedRealtime();
-            onThumbArrowsFadeTick();
+            onThumbArrowsFadeStep();
         }
     }
     
-    private void onThumbArrowsFadeTick() {
+    private void onThumbArrowsFadeStep() {
         if (mThumbArrowsAlpha <= 0) {
             mThumbArrowsToDraw = 0;
             return;
@@ -1132,20 +1226,20 @@
                         / THUMB_ARROWS_FADE_DURATION));
         if (mThumbArrowsAlpha < 0) mThumbArrowsAlpha = 0;
         if ((mThumbArrowsToDraw & THUMB_ARROW_PLUS) != 0) {
-            mThumbPlusArrowDrawable.setAlpha(mThumbArrowsAlpha);
-            mThumbPlusDrawable.setAlpha(mThumbArrowsAlpha);
-            invalidateDrawable(mThumbPlusDrawable);
-            invalidateDrawable(mThumbPlusArrowDrawable);
+            mZoomInArrowDrawable.setAlpha(mThumbArrowsAlpha);
+            mZoomInArrowHintDrawable.setAlpha(mThumbArrowsAlpha);
+            invalidateDrawable(mZoomInArrowHintDrawable);
+            invalidateDrawable(mZoomInArrowDrawable);
         }
         if ((mThumbArrowsToDraw & THUMB_ARROW_MINUS) != 0) {
-            mThumbMinusArrowDrawable.setAlpha(mThumbArrowsAlpha);
-            mThumbMinusDrawable.setAlpha(mThumbArrowsAlpha);
-            invalidateDrawable(mThumbMinusDrawable);
-            invalidateDrawable(mThumbMinusArrowDrawable);
+            mZoomOutArrowDrawable.setAlpha(mThumbArrowsAlpha);
+            mZoomOutArrowHintDrawable.setAlpha(mThumbArrowsAlpha);
+            invalidateDrawable(mZoomOutArrowHintDrawable);
+            invalidateDrawable(mZoomOutArrowDrawable);
         }
             
-        if (!mHandler.hasMessages(MSG_THUMB_ARROWS_FADE_TICK)) {
-            mHandler.sendEmptyMessage(MSG_THUMB_ARROWS_FADE_TICK);
+        if (!mHandler.hasMessages(MSG_THUMB_ARROWS_FADE_STEP)) {
+            mHandler.sendEmptyMessage(MSG_THUMB_ARROWS_FADE_STEP);
         }
     }
     
@@ -1168,7 +1262,7 @@
         boolean onZoomRingThumbDragged(int numLevels, int startAngle, int curAngle);
         void onZoomRingThumbDraggingStopped();
         
-        void onZoomRingDismissed(boolean dismissImmediately);
+        void onZoomRingDismissed();
         
         void onUserInteractionStarted();
         void onUserInteractionStopped();
diff --git a/core/java/android/widget/ZoomRingController.java b/core/java/android/widget/ZoomRingController.java
index 19f66a0..3bf3b22 100644
--- a/core/java/android/widget/ZoomRingController.java
+++ b/core/java/android/widget/ZoomRingController.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * 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.
@@ -30,7 +30,8 @@
 import android.os.Message;
 import android.os.SystemClock;
 import android.provider.Settings;
-import android.util.Log;
+import android.util.DisplayMetrics;
+import android.view.GestureDetector;
 import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -44,11 +45,9 @@
 import android.view.animation.AnimationUtils;
 import android.view.animation.DecelerateInterpolator;
 
-// TODO: make sure no px values exist, only dip (scale if necessary from Viewconfiguration)
-
 /**
- * TODO: Docs
- *
+ * A controller to simplify the use of the zoom ring widget.   
+ * <p>
  * If you are using this with a custom View, please call
  * {@link #setVisible(boolean) setVisible(false)} from the
  * {@link View#onDetachedFromWindow}.
@@ -58,13 +57,7 @@
 public class ZoomRingController implements ZoomRing.OnZoomRingCallback,
         View.OnTouchListener, View.OnKeyListener {
 
-    private static final int ZOOM_RING_RADIUS_INSET = 24;
-
-    private static final int ZOOM_RING_RECENTERING_DURATION = 500;
-
-    private static final String TAG = "ZoomRing";
-
-    public static final boolean USE_OLD_ZOOM = false;
+    // Temporary methods for different zoom types
     static int getZoomType(Context context) {
         return Settings.System.getInt(context.getContentResolver(), "zoom", 1);
     }
@@ -75,19 +68,43 @@
         return getZoomType(context) == 1;
     }
 
-    private static final int ZOOM_CONTROLS_TIMEOUT =
-            (int) ViewConfiguration.getZoomControlsTimeout();
+    /** The duration for the animation to re-center the zoom ring. */
+    private static final int RECENTERING_DURATION = 500;
 
-    // TODO: move these to ViewConfiguration or re-use existing ones
-    // TODO: scale px values based on latest from ViewConfiguration
-    private static final int SECOND_TAP_TIMEOUT = 500;
-    private static final int ZOOM_RING_DISMISS_DELAY = SECOND_TAP_TIMEOUT / 2;
-    // TODO: view config?  at least scaled
-    private static final int MAX_PAN_GAP = 20;
-    private static final int MAX_INITIATE_PAN_GAP = 10;
-    // TODO view config
+    /** The inactivity timeout for the zoom ring. */
+    private static final int INACTIVITY_TIMEOUT =
+            (int) ViewConfiguration.getZoomControlsTimeout();
+    
+    /**
+     * The delay when the user taps outside to dismiss the zoom ring. This is
+     * because the user can do a second-tap to recenter the owner view instead
+     * of dismissing the zoom ring.
+     */
+    private static final int OUTSIDE_TAP_DISMISS_DELAY =
+            ViewConfiguration.getDoubleTapTimeout() / 2;
+    
+    /**
+     * When the zoom ring is on the edge, this is the delay before we actually
+     * start panning the owner.
+     * @see #mInitiatePanGap
+     */
     private static final int INITIATE_PAN_DELAY = 300;
 
+    /**
+     * While already panning, if the zoom ring remains this close to an edge,
+     * the owner will continue to be panned.
+     */
+    private int mPanGap;
+    
+    /** To begin a pan, the zoom ring must be this close to an edge. */
+    private int mInitiatePanGap;
+
+    /** Initialized from ViewConfiguration. */
+    private int mScaledTouchSlop;
+
+    /**
+     * The setting name that tracks whether we've shown the zoom ring toast.
+     */
     private static final String SETTING_NAME_SHOWN_TOAST = "shown_zoom_ring_toast";
 
     private Context mContext;
@@ -137,25 +154,37 @@
      * screen once (for the first tap down) instead of twice (for the first tap
      * down and then to grab the thumb).
      */
+    /** The X where the tap-drag started. */
     private int mTapDragStartX;
+    /** The Y where the tap-drag started. */
     private int mTapDragStartY;
 
+    /** The controller is idle */
     private static final int TOUCH_MODE_IDLE = 0;
-    private static final int TOUCH_MODE_WAITING_FOR_SECOND_TAP = 1;
+    /**
+     * In the middle of a second-tap interaction, waiting for either an up-touch
+     * or the user to start dragging to go into tap-drag mode.
+     */
     private static final int TOUCH_MODE_WAITING_FOR_TAP_DRAG_MOVEMENT = 2;
+    /** In the middle of a tap-drag. */
     private static final int TOUCH_MODE_FORWARDING_FOR_TAP_DRAG = 3;
     private int mTouchMode;
 
+    /** Whether the zoom ring is visible. */
     private boolean mIsZoomRingVisible;
 
     private ZoomRing mZoomRing;
+    /** Cached width of the zoom ring. */
     private int mZoomRingWidth;
+    /** Cached height of the zoom ring. */
     private int mZoomRingHeight;
 
     /** Invokes panning of owner view if the zoom ring is touching an edge. */
     private Panner mPanner;
+    /** The time when the zoom ring first touched the edge. */
     private long mTouchingEdgeStartTime;
-    private boolean mPanningEnabledForThisInteraction;
+    /** Whether the user has already initiated the panning. */
+    private boolean mPanningInitiated;
 
     /**
      * When the finger moves the zoom ring to an edge, this is the horizontal
@@ -167,16 +196,21 @@
     /** Vertical accumulator, see {@link #mMovingZoomRingOobX} */
     private int mMovingZoomRingOobY;
 
+    /** Arrows that hint that the zoom ring is movable. */
     private ImageView mPanningArrows;
+    /** The animation shown when the panning arrows are being shown. */
     private Animation mPanningArrowsEnterAnimation;
+    /** The animation shown when the panning arrows are being hidden. */
     private Animation mPanningArrowsExitAnimation;
 
+    /**
+     * Temporary rectangle, only use from the UI thread (and ideally don't rely
+     * on it being unused across many method calls.)
+     */
     private Rect mTempRect = new Rect();
 
     private OnZoomListener mCallback;
 
-    private ViewConfiguration mViewConfig;
-
     /**
      * When the zoom ring is centered on screen, this will be the x value used
      * for the container's layout params.
@@ -217,6 +251,7 @@
     private IntentFilter mConfigurationChangedFilter =
             new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED);
 
+    /** Listens for configuration changes so we can make sure we're still in a reasonable state. */
     private BroadcastReceiver mConfigurationChangedReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -228,7 +263,7 @@
     };
 
     /** Keeps the scroller going (or starts it). */
-    private static final int MSG_SCROLLER_TICK = 1;
+    private static final int MSG_SCROLLER_STEP = 1;
     /** When configuration changes, this is called after the UI thread is idle. */
     private static final int MSG_POST_CONFIGURATION_CHANGED = 2;
     /** Used to delay the zoom ring dismissal. */
@@ -244,8 +279,8 @@
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {
-                case MSG_SCROLLER_TICK:
-                    onScrollerTick();
+                case MSG_SCROLLER_STEP:
+                    onScrollerStep();
                     break;
 
                 case MSG_POST_CONFIGURATION_CHANGED:
@@ -296,8 +331,7 @@
         mContainerLayoutParams.width = LayoutParams.WRAP_CONTENT;
         mContainerLayoutParams.type = LayoutParams.TYPE_APPLICATION_PANEL;
         mContainerLayoutParams.format = PixelFormat.TRANSPARENT;
-        // TODO: make a new animation for this
-        mContainerLayoutParams.windowAnimations = com.android.internal.R.style.Animation_Dialog;
+        mContainerLayoutParams.windowAnimations = com.android.internal.R.style.Animation_ZoomRing;
 
         mContainer = new FrameLayout(context);
         mContainer.setLayoutParams(mContainerLayoutParams);
@@ -308,13 +342,17 @@
 
         mScroller = new Scroller(context, new DecelerateInterpolator());
 
-        mViewConfig = ViewConfiguration.get(context);
+        ViewConfiguration vc = ViewConfiguration.get(context);
+        mScaledTouchSlop = vc.getScaledTouchSlop();
+        
+        float density = context.getResources().getDisplayMetrics().density;
+        mPanGap = (int) (20 * density);
+        mInitiatePanGap = (int) (10 * density);
     }
 
     private void createPanningArrows() {
-        // TODO: style
         mPanningArrows = new ImageView(mContext);
-        mPanningArrows.setImageResource(com.android.internal.R.drawable.zoom_ring_arrows);
+        mPanningArrows.setImageDrawable(mZoomRing.getPanningArrowsDrawable());
         mPanningArrows.setLayoutParams(new FrameLayout.LayoutParams(
                 FrameLayout.LayoutParams.WRAP_CONTENT,
                 FrameLayout.LayoutParams.WRAP_CONTENT,
@@ -328,15 +366,16 @@
     }
 
     /**
-     * Sets the angle (in radians) a user must travel in order for the client to
-     * get a callback. Once there is a callback, the accumulator resets. For
-     * example, if you set this to PI/6, it will give a callback every time the
-     * user moves PI/6 amount on the ring.
-     *
-     * @param callbackThreshold The angle for the callback threshold, in radians
+     * Sets the angle (in radians) between ticks. This is also the angle a user
+     * must move the thumb in order for the client to get a callback. Once there
+     * is a callback, the accumulator resets. For example, if you set this to
+     * PI/6, it will give a callback every time the user moves PI/6 amount on
+     * the ring.
+     * 
+     * @param angle The angle for the callback threshold, in radians
      */
-    public void setZoomCallbackThreshold(float callbackThreshold) {
-        mZoomRing.setCallbackThreshold((int) (callbackThreshold * ZoomRing.RADIAN_INT_MULTIPLIER));
+    public void setTickDelta(float angle) {
+        mZoomRing.setTickDelta((int) (angle * ZoomRing.RADIAN_INT_MULTIPLIER));
     }
 
     /**
@@ -346,14 +385,23 @@
      * @hide Need a better way of doing this, but this one-off for browser so it
      *       can have its final look for the usability study
      */
-    public void setZoomRingTrack(int drawable) {
+    public void setTrackDrawable(int drawable) {
         mZoomRing.setBackgroundResource(drawable);
     }
-
+    
+    /**
+     * Sets the callback for the zoom ring controller.
+     * 
+     * @param callback The callback.
+     */
     public void setCallback(OnZoomListener callback) {
         mCallback = callback;
     }
 
+    public void setVibration(boolean vibrate) {
+        mZoomRing.setVibration(vibrate);
+    }
+    
     public void setThumbAngle(float angle) {
         mZoomRing.setThumbAngle((int) (angle * ZoomRing.RADIAN_INT_MULTIPLIER));
     }
@@ -362,14 +410,6 @@
         mZoomRing.setThumbAngleAnimated((int) (angle * ZoomRing.RADIAN_INT_MULTIPLIER), 0);
     }
 
-    public void setResetThumbAutomatically(boolean resetThumbAutomatically) {
-        mZoomRing.setResetThumbAutomatically(resetThumbAutomatically);
-    }
-
-    public void setVibration(boolean vibrate) {
-        mZoomRing.setVibration(vibrate);
-    }
-    
     public void setThumbVisible(boolean thumbVisible) {
         mZoomRing.setThumbVisible(thumbVisible);
     }
@@ -407,7 +447,7 @@
                 return;
             }
             
-            dismissZoomRingDelayed(ZOOM_CONTROLS_TIMEOUT);
+            dismissZoomRingDelayed(INACTIVITY_TIMEOUT);
         } else {
             mPanner.stop();
         }
@@ -429,12 +469,7 @@
                     public void run() {
                         refreshPositioningVariables();
                         resetZoomRing();
-
-                        // TODO: remove this 'update' and just center zoom ring before the
-                        // 'add', but need to make sure we have the width and height (which
-                        // probably can only be retrieved after it's measured, which happens
-                        // after it's added).
-                        mWindowManager.updateViewLayout(mContainer, mContainerLayoutParams);
+                        refreshContainerLayout();
 
                         if (mCallback != null) {
                             mCallback.onVisibilityChanged(true);
@@ -479,19 +514,34 @@
 
     }
 
+    private void refreshContainerLayout() {
+        if (mIsZoomRingVisible) {
+            mWindowManager.updateViewLayout(mContainer, mContainerLayoutParams);
+        }
+    }
+
     /**
-     * TODO: docs
-     *
+     * Returns the container of the zoom ring widget. The client can add views
+     * here to be shown alongside the zoom ring.  See {@link #getZoomRingId()}.
+     * <p>
      * Notes:
-     * - Touch dispatching is different.  Only direct children who are clickable are eligble for touch events.
-     * - Please ensure you set your View to INVISIBLE not GONE when hiding it.
-     *
-     * @return
+     * <ul>
+     * <li> The controller dispatches touch events differently than the regular view
+     * framework.
+     * <li> Please ensure you set your view to INVISIBLE not GONE when hiding it.
+     * </ul>
+     * 
+     * @return The layout used by the container.
      */
     public FrameLayout getContainer() {
         return mContainer;
     }
 
+    /**
+     * Returns the id of the zoom ring widget.
+     * 
+     * @return The id of the zoom ring widget.
+     */
     public int getZoomRingId() {
         return mZoomRing.getId();
     }
@@ -514,7 +564,10 @@
     /**
      * Should be called by the client for each event belonging to the second tap
      * (the down, move, up, and cancel events).
-     *
+     * <p>
+     * In most cases, the client can use a {@link GestureDetector} and forward events from
+     * {@link GestureDetector.OnDoubleTapListener#onDoubleTapEvent(MotionEvent)}.
+     * 
      * @param event The event belonging to the second tap.
      * @return Whether the event was consumed.
      */
@@ -550,9 +603,9 @@
                         case MotionEvent.ACTION_MOVE:
                             int x = (int) event.getX();
                             int y = (int) event.getY();
-                            if (Math.abs(x - mTapDragStartX) > mViewConfig.getScaledTouchSlop() ||
+                            if (Math.abs(x - mTapDragStartX) > mScaledTouchSlop ||
                                     Math.abs(y - mTapDragStartY) >
-                                    mViewConfig.getScaledTouchSlop()) {
+                                    mScaledTouchSlop) {
                                 mZoomRing.setTapDragMode(true, x, y);
                                 mTouchMode = TOUCH_MODE_FORWARDING_FOR_TAP_DRAG;
                                 setTouchTargetView(mZoomRing);
@@ -600,8 +653,8 @@
             int width = mContainer.getWidth();
             int height = mContainer.getHeight();
             mScroller.startScroll(lp.x, lp.y, mCenteredContainerX - lp.x,
-                    mCenteredContainerY - lp.y, ZOOM_RING_RECENTERING_DURATION);
-            mHandler.sendEmptyMessage(MSG_SCROLLER_TICK);
+                    mCenteredContainerY - lp.y, RECENTERING_DURATION);
+            mHandler.sendEmptyMessage(MSG_SCROLLER_STEP);
         }
     }
 
@@ -636,18 +689,22 @@
         mZoomRing.handleTouch(event.getAction(), event.getEventTime(), x, y, rawX, rawY);
     }
 
+    /** @hide */
     public void onZoomRingSetMovableHintVisible(boolean visible) {
         setPanningArrowsVisible(visible);
     }
 
+    /** @hide */
     public void onUserInteractionStarted() {
         mHandler.removeMessages(MSG_DISMISS_ZOOM_RING);
     }
 
+    /** @hide */
     public void onUserInteractionStopped() {
-        dismissZoomRingDelayed(ZOOM_CONTROLS_TIMEOUT);
+        dismissZoomRingDelayed(INACTIVITY_TIMEOUT);
     }
 
+    /** @hide */
     public void onZoomRingMovingStarted() {
         mScroller.abortAnimation();
         mTouchingEdgeStartTime = 0;
@@ -664,6 +721,7 @@
         mPanningArrows.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
     }
 
+    /** @hide */
     public boolean onZoomRingMoved(int deltaX, int deltaY, int rawX, int rawY) {
 
         if (mMovingZoomRingOobX != 0) {
@@ -721,12 +779,12 @@
                     ownerBounds.bottom - mZoomRingHeight : newZoomRingY;
         lp.y = newZoomRingY - zoomRingTop;
 
-        mWindowManager.updateViewLayout(mContainer, lp);
-
+        refreshContainerLayout();
+        
         // Check for pan
         boolean horizontalPanning = true;
         int leftGap = newZoomRingX - ownerBounds.left;
-        if (leftGap < MAX_PAN_GAP) {
+        if (leftGap < mPanGap) {
             if (leftGap == 0 && deltaX != 0 && mMovingZoomRingOobX == 0) {
                 // Future moves in this direction should be accumulated in mMovingZoomRingOobX
                 mMovingZoomRingOobX = deltaX / Math.abs(deltaX);
@@ -736,7 +794,7 @@
             }
         } else {
             int rightGap = ownerBounds.right - (lp.x + mZoomRingWidth + zoomRingLeft);
-            if (rightGap < MAX_PAN_GAP) {
+            if (rightGap < mPanGap) {
                 if (rightGap == 0 && deltaX != 0 && mMovingZoomRingOobX == 0) {
                     mMovingZoomRingOobX = deltaX / Math.abs(deltaX);
                 }
@@ -750,7 +808,7 @@
         }
 
         int topGap = newZoomRingY - ownerBounds.top;
-        if (topGap < MAX_PAN_GAP) {
+        if (topGap < mPanGap) {
             if (topGap == 0 && deltaY != 0 && mMovingZoomRingOobY == 0) {
                 mMovingZoomRingOobY = deltaY / Math.abs(deltaY);
             }
@@ -759,7 +817,7 @@
             }
         } else {
             int bottomGap = ownerBounds.bottom - (lp.y + mZoomRingHeight + zoomRingTop);
-            if (bottomGap < MAX_PAN_GAP) {
+            if (bottomGap < mPanGap) {
                 if (bottomGap == 0 && deltaY != 0 && mMovingZoomRingOobY == 0) {
                     mMovingZoomRingOobY = deltaY / Math.abs(deltaY);
                 }
@@ -771,7 +829,7 @@
                 if (!horizontalPanning) {
                     // Neither are panning, reset any timer to start pan mode
                     mTouchingEdgeStartTime = 0;
-                    mPanningEnabledForThisInteraction = false;
+                    mPanningInitiated = false;
                     mPanner.stop();
                 }
             }
@@ -781,13 +839,13 @@
     }
 
     private boolean shouldPan(int gap) {
-        if (mPanningEnabledForThisInteraction) return true;
+        if (mPanningInitiated) return true;
 
-        if (gap < MAX_INITIATE_PAN_GAP) {
+        if (gap < mInitiatePanGap) {
             long time = SystemClock.elapsedRealtime();
             if (mTouchingEdgeStartTime != 0 &&
                     mTouchingEdgeStartTime + INITIATE_PAN_DELAY < time) {
-                mPanningEnabledForThisInteraction = true;
+                mPanningInitiated = true;
                 return true;
             } else if (mTouchingEdgeStartTime == 0) {
                 mTouchingEdgeStartTime = time;
@@ -800,6 +858,7 @@
         return false;
     }
 
+    /** @hide */
     public void onZoomRingMovingStopped() {
         mPanner.stop();
         setPanningArrowsVisible(false);
@@ -809,27 +868,25 @@
     }
 
     private int getStrengthFromGap(int gap) {
-        return gap > MAX_PAN_GAP ? 0 :
-            (MAX_PAN_GAP - gap) * 100 / MAX_PAN_GAP;
+        return gap > mPanGap ? 0 :
+            (mPanGap - gap) * 100 / mPanGap;
     }
 
+    /** @hide */
     public void onZoomRingThumbDraggingStarted() {
         if (mCallback != null) {
             mCallback.onBeginDrag();
         }
     }
 
+    /** @hide */
     public boolean onZoomRingThumbDragged(int numLevels, int startAngle, int curAngle) {
         if (mCallback != null) {
             int deltaZoomLevel = -numLevels;
-            int globalZoomCenterX = mContainerLayoutParams.x + mZoomRing.getLeft() +
-                    mZoomRingWidth / 2;
-            int globalZoomCenterY = mContainerLayoutParams.y + mZoomRing.getTop() +
-                    mZoomRingHeight / 2;
 
             return mCallback.onDragZoom(deltaZoomLevel,
-                    globalZoomCenterX - mOwnerViewBounds.left,
-                    globalZoomCenterY - mOwnerViewBounds.top,
+                    getZoomRingCenterXInOwnerCoordinates(),
+                    getZoomRingCenterYInOwnerCoordinates(),
                     (float) startAngle / ZoomRing.RADIAN_INT_MULTIPLIER,
                     (float) curAngle / ZoomRing.RADIAN_INT_MULTIPLIER);
         }
@@ -837,24 +894,36 @@
         return false;
     }
 
+    private int getZoomRingCenterXInOwnerCoordinates() {
+        int globalZoomCenterX = mContainerLayoutParams.x + mZoomRing.getLeft() +
+                mZoomRingWidth / 2;
+        return globalZoomCenterX - mOwnerViewBounds.left;
+    }
+
+    private int getZoomRingCenterYInOwnerCoordinates() {
+        int globalZoomCenterY = mContainerLayoutParams.y + mZoomRing.getTop() +
+                mZoomRingHeight / 2;
+        return globalZoomCenterY - mOwnerViewBounds.top;
+    }
+
+    /** @hide */
     public void onZoomRingThumbDraggingStopped() {
         if (mCallback != null) {
             mCallback.onEndDrag();
         }
     }
 
-    public void onZoomRingDismissed(boolean dismissImmediately) {
-        if (dismissImmediately) {
-            mHandler.removeMessages(MSG_DISMISS_ZOOM_RING);
-            setVisible(false);
-        } else {
-            dismissZoomRingDelayed(ZOOM_RING_DISMISS_DELAY);
-        }
+    /** @hide */
+    public void onZoomRingDismissed() {
+        mHandler.removeMessages(MSG_DISMISS_ZOOM_RING);
+        setVisible(false);
     }
 
+    /** @hide */
     public void onRingDown(int tickAngle, int touchAngle) {
     }
 
+    /** @hide */
     public boolean onTouch(View v, MotionEvent event) {
         if (sTutorialDialog != null && sTutorialDialog.isShowing() &&
                 SystemClock.elapsedRealtime() - sTutorialShowTime >= TUTORIAL_MIN_DISPLAY_TIME) {
@@ -904,8 +973,9 @@
             return retValue;
 
         } else {
+//            dismissZoomRingDelayed(ZOOM_CONTROLS_TIMEOUT);
             if (action == MotionEvent.ACTION_DOWN) {
-                dismissZoomRingDelayed(ZOOM_RING_DISMISS_DELAY);
+                dismissZoomRingDelayed(OUTSIDE_TAP_DISMISS_DELAY);
             }
 
             return false;
@@ -932,7 +1002,7 @@
         int containerCenterY = mContainerLayoutParams.y + mContainer.getHeight() / 2;
         int distanceFromCenterX = rawX - containerCenterX;
         int distanceFromCenterY = rawY - containerCenterY;
-        int zoomRingRadius = mZoomRingWidth / 2 - ZOOM_RING_RADIUS_INSET;
+        int zoomRingRadius = mZoomRing.getTrackOuterRadius();
         if (distanceFromCenterX * distanceFromCenterX +
                 distanceFromCenterY * distanceFromCenterY <=
                 zoomRingRadius * zoomRingRadius) {
@@ -960,7 +1030,11 @@
         return null;
     }
 
-    /** Steals key events from the owner view. */
+    /**
+     * Steals key events from the owner view.
+     * 
+     * @hide
+     */
     public boolean onKey(View v, int keyCode, KeyEvent event) {
         switch (keyCode) {
             case KeyEvent.KEYCODE_DPAD_LEFT:
@@ -971,12 +1045,14 @@
             case KeyEvent.KEYCODE_DPAD_UP:
             case KeyEvent.KEYCODE_DPAD_DOWN:
                 // Keep the zoom alive a little longer
-                dismissZoomRingDelayed(ZOOM_CONTROLS_TIMEOUT);
+                dismissZoomRingDelayed(INACTIVITY_TIMEOUT);
                 // They started zooming, hide the thumb arrows
                 mZoomRing.setThumbArrowsVisible(false);
 
                 if (mCallback != null && event.getAction() == KeyEvent.ACTION_DOWN) {
-                    mCallback.onSimpleZoom(keyCode == KeyEvent.KEYCODE_DPAD_UP);
+                    mCallback.onSimpleZoom(keyCode == KeyEvent.KEYCODE_DPAD_UP,
+                            getZoomRingCenterXInOwnerCoordinates(),
+                            getZoomRingCenterYInOwnerCoordinates());
                 }
 
                 return true;
@@ -985,18 +1061,18 @@
         return false;
     }
 
-    private void onScrollerTick() {
+    private void onScrollerStep() {
         if (!mScroller.computeScrollOffset() || !mIsZoomRingVisible) return;
 
         mContainerLayoutParams.x = mScroller.getCurrX();
         mContainerLayoutParams.y = mScroller.getCurrY();
-        mWindowManager.updateViewLayout(mContainer, mContainerLayoutParams);
+        refreshContainerLayout();
 
-        mHandler.sendEmptyMessage(MSG_SCROLLER_TICK);
+        mHandler.sendEmptyMessage(MSG_SCROLLER_STEP);
     }
 
     private void onPostConfigurationChanged() {
-        dismissZoomRingDelayed(ZOOM_CONTROLS_TIMEOUT);
+        dismissZoomRingDelayed(INACTIVITY_TIMEOUT);
         refreshPositioningVariables();
         ensureZoomRingIsCentered();
     }
@@ -1056,6 +1132,7 @@
         sTutorialShowTime = SystemClock.elapsedRealtime();
     }
 
+    /** @hide Should only be used by Android platform apps */
     public static void finishZoomTutorial(Context context, boolean userNotified) {
         if (sTutorialDialog == null) return;
 
@@ -1078,22 +1155,45 @@
         }
     }
 
+    /** @hide Should only be used by Android platform apps */
     public void finishZoomTutorial() {
         finishZoomTutorial(mContext, true);
     }
 
+    /**
+     * Sets the initial velocity of a pan.
+     * 
+     * @param startVelocity The initial velocity to move the owner view, in
+     *            pixels per second.
+     */
     public void setPannerStartVelocity(float startVelocity) {
         mPanner.mStartVelocity = startVelocity;
     }
 
+    /**
+     * Sets the accelartion of the pan.
+     *
+     * @param acceleration The acceleration, in pixels per second squared.
+     */
     public void setPannerAcceleration(float acceleration) {
         mPanner.mAcceleration = acceleration;
     }
 
+    /**
+     * Sets the maximum velocity of a pan.
+     * 
+     * @param maxVelocity The max velocity to move the owner view, in pixels per
+     *            second.
+     */
     public void setPannerMaxVelocity(float maxVelocity) {
         mPanner.mMaxVelocity = maxVelocity;
     }
 
+    /**
+     * Sets the duration before acceleration will be applied.
+     * 
+     * @param duration The duration, in milliseconds.
+     */
     public void setPannerStartAcceleratingDuration(int duration) {
         mPanner.mStartAcceleratingDuration = duration;
     }
@@ -1201,16 +1301,83 @@
 
     }
 
+    /**
+     * Interface used to inform the client of zoom events that the user
+     * triggers.
+     */
     public interface OnZoomListener {
+        /**
+         * Called when the user begins dragging the thumb on the zoom ring.
+         */
         void onBeginDrag();
+
+        /**
+         * Called when the user drags the thumb and passes a tick causing a
+         * zoom.
+         * 
+         * @param deltaZoomLevel The number of levels to be zoomed. Positive to
+         *            zoom in, negative to zoom out.
+         * @param centerX The point about which to zoom. The zoom should pin
+         *            this point, leaving it at the same coordinate. This is
+         *            relative to the owner view's upper-left.
+         * @param centerY The point about which to zoom. The zoom should pin
+         *            this point, leaving it at the same coordinate. This is
+         *            relative to the owner view's upper-left.
+         * @param startAngle The angle where the user started dragging the thumb.
+         * @param curAngle The current angle of the thumb.
+         * @return Whether the owner was zoomed.
+         */
         boolean onDragZoom(int deltaZoomLevel, int centerX, int centerY, float startAngle,
                 float curAngle);
+        
+        /**
+         * Called when the user releases the thumb.
+         */
         void onEndDrag();
-        void onSimpleZoom(boolean deltaZoomLevel);
+
+        /**
+         * Called when the user zooms via some other mechanism, for example
+         * arrow keys or a trackball.
+         * 
+         * @param zoomIn Whether to zoom in (true) or out (false).
+         * @param centerX See {@link #onDragZoom(int, int, int, float, float)}.
+         * @param centerY See {@link #onDragZoom(int, int, int, float, float)}.
+         */
+        void onSimpleZoom(boolean zoomIn, int centerX, int centerY);
+
+        /**
+         * Called when the user begins moving the zoom ring in order to pan the
+         * owner.
+         */
         void onBeginPan();
+        
+        /**
+         * Called when the owner should pan as a result of the user moving the zoom ring.
+         * 
+         * @param deltaX The amount to pan horizontally.
+         * @param deltaY The amount to pan vertically.
+         * @return Whether the owner was panned.
+         */
         boolean onPan(int deltaX, int deltaY);
+        
+        /**
+         * Called when the user releases the zoom ring.
+         */
         void onEndPan();
+        
+        /**
+         * Called when the client should center the owner on the given point.
+         * 
+         * @param x The x to center on, relative to the owner view's upper-left.
+         * @param y The y to center on, relative to the owner view's upper-left.
+         */
         void onCenter(int x, int y);
+        
+        /**
+         * Called when the zoom ring's visibility changes.
+         * 
+         * @param visible Whether the zoom ring is visible (true) or not (false).
+         */
         void onVisibilityChanged(boolean visible);
     }
 }
diff --git a/core/java/com/android/internal/os/HandlerCaller.java b/core/java/com/android/internal/os/HandlerCaller.java
index bab1e21..932555d 100644
--- a/core/java/com/android/internal/os/HandlerCaller.java
+++ b/core/java/com/android/internal/os/HandlerCaller.java
@@ -120,6 +120,10 @@
         return mH.obtainMessage(what, arg1, 0);
     }
     
+    public Message obtainMessageII(int what, int arg1, int arg2) {
+        return mH.obtainMessage(what, arg1, arg2);
+    }
+    
     public Message obtainMessageIO(int what, int arg1, Object arg2) {
         return mH.obtainMessage(what, arg1, 0, arg2);
     }
diff --git a/core/java/com/android/internal/os/IResultReceiver.aidl b/core/java/com/android/internal/os/IResultReceiver.aidl
new file mode 100644
index 0000000..2b70f95
--- /dev/null
+++ b/core/java/com/android/internal/os/IResultReceiver.aidl
@@ -0,0 +1,25 @@
+/* //device/java/android/android/app/IActivityPendingResult.aidl
+**
+** 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.
+*/
+
+package com.android.internal.os;
+
+import android.os.Bundle;
+
+/** @hide */
+oneway interface IResultReceiver {
+    void send(int resultCode, in Bundle resultData);
+}
diff --git a/core/java/com/android/internal/view/IInputMethod.aidl b/core/java/com/android/internal/view/IInputMethod.aidl
index 9b00402..8ff18ed 100644
--- a/core/java/com/android/internal/view/IInputMethod.aidl
+++ b/core/java/com/android/internal/view/IInputMethod.aidl
@@ -18,6 +18,7 @@
 
 import android.graphics.Rect;
 import android.os.IBinder;
+import android.os.ResultReceiver;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.inputmethod.EditorInfo;
@@ -48,7 +49,7 @@
     
     void revokeSession(IInputMethodSession session);
     
-    void showSoftInput(int flags);
+    void showSoftInput(int flags, in ResultReceiver resultReceiver);
     
-    void hideSoftInput();
+    void hideSoftInput(int flags, in ResultReceiver resultReceiver);
 }
diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl
index 1b1c7f7..9030a3e 100644
--- a/core/java/com/android/internal/view/IInputMethodManager.aidl
+++ b/core/java/com/android/internal/view/IInputMethodManager.aidl
@@ -16,6 +16,7 @@
 
 package com.android.internal.view;
 
+import android.os.ResultReceiver;
 import android.view.inputmethod.InputMethodInfo;
 import android.view.inputmethod.EditorInfo;
 import com.android.internal.view.InputBindResult;
@@ -38,8 +39,10 @@
             IInputContext inputContext, in EditorInfo attribute,
             boolean initial, boolean needResult);
     void finishInput(in IInputMethodClient client);
-    void showSoftInput(in IInputMethodClient client, int flags);
-    void hideSoftInput(in IInputMethodClient client, int flags);
+    boolean showSoftInput(in IInputMethodClient client, int flags,
+            in ResultReceiver resultReceiver);
+    boolean hideSoftInput(in IInputMethodClient client, int flags,
+            in ResultReceiver resultReceiver);
     void windowGainedFocus(in IInputMethodClient client,
             boolean viewHasFocus, boolean isTextEditor,
             int softInputMode, boolean first, int windowFlags);
@@ -47,6 +50,7 @@
     void showInputMethodPickerFromClient(in IInputMethodClient client);
     void setInputMethod(in IBinder token, String id);
     void hideMySoftInput(in IBinder token, int flags);
+    void showMySoftInput(in IBinder token, int flags);
     void updateStatusIcon(in IBinder token, String packageName, int iconId);
     
     boolean setInputMethodEnabled(String id, boolean enabled);
diff --git a/core/java/com/android/internal/view/IInputMethodSession.aidl b/core/java/com/android/internal/view/IInputMethodSession.aidl
index 8a44976..a05ff14 100644
--- a/core/java/com/android/internal/view/IInputMethodSession.aidl
+++ b/core/java/com/android/internal/view/IInputMethodSession.aidl
@@ -46,4 +46,6 @@
     void dispatchTrackballEvent(int seq, in MotionEvent event, IInputMethodCallback callback);
 
     void appPrivateCommand(String action, in Bundle data);
+
+    void toggleSoftInput(int showFlags, int hideFlags);
 }
diff --git a/core/java/com/android/internal/widget/EditStyledText.java b/core/java/com/android/internal/widget/EditStyledText.java
new file mode 100644
index 0000000..48b4780
--- /dev/null
+++ b/core/java/com/android/internal/widget/EditStyledText.java
@@ -0,0 +1,653 @@
+/*
+ * 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.internal.widget;
+
+import android.content.Context;
+import android.text.Editable;
+import android.text.Spannable;
+import android.text.style.AbsoluteSizeSpan;
+import android.text.style.ForegroundColorSpan;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.widget.EditText;
+
+/**
+ * EditStyledText extends EditText for managing the flow and status 
+ * to edit the styled text. This manages the states and flows of editing,
+ * supports inserting image, import/export HTML.
+ */
+public class EditStyledText extends EditText {
+
+    private static final String LOG_TAG = "EditStyledText";
+    private static final boolean DBG = true;
+
+    /**
+     * The modes of editing actions.
+     */
+    /** The mode that no editing action is done. */
+    public static final int MODE_NOTHING = 0;
+    /** The mode of copy. */
+    public static final int MODE_COPY = 1;
+    /** The mode of paste. */
+    public static final int MODE_PASTE = 2;
+    /** The mode of changing size. */
+    public static final int MODE_SIZE = 3;
+    /** The mode of changing color. */
+    public static final int MODE_COLOR = 4;
+    /** The mode of selection. */
+    public static final int MODE_SELECT = 5;
+
+    /**
+     * The state of selection.
+     */
+    /** The state that selection isn't started. */
+    public static final int STATE_SELECT_OFF = 0;
+    /** The state that selection is started. */
+    public static final int STATE_SELECT_ON = 1;
+    /** The state that selection is done, but not fixed. */
+    public static final int STATE_SELECTED = 2;
+    /** The state that selection is done and not fixed.*/
+    public static final int STATE_SELECT_FIX = 3;
+
+    /**
+     * The help message strings.
+     */
+    public static final int HINT_MSG_NULL = 0;
+    public static final int HINT_MSG_COPY_BUF_BLANK = 1;
+    public static final int HINT_MSG_SELECT_START = 2;
+    public static final int HINT_MSG_SELECT_END = 3;
+    public static final int HINT_MSG_PUSH_COMPETE = 4;
+
+
+    /**
+     * EditStyledTextInterface provides functions for notifying messages
+     * to calling class.
+     */
+    public interface EditStyledTextInterface {
+        public void notifyHintMsg(int msg_id);
+    }
+    private EditStyledTextInterface mESTInterface;
+
+    /**
+     * EditStyledTextEditorManager manages the flow and status of 
+     * each function for editing styled text.
+     */
+    private EditStyledTextEditorManager mManager;
+
+    /**
+      * EditStyledText extends EditText for managing flow of each editing
+      * action.
+      */
+    public EditStyledText(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        init();
+    }
+
+    public EditStyledText(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public EditStyledText(Context context) {
+        super(context);
+        init();
+    }
+
+    /**
+     * Set View objects used in EditStyledText.
+     * @param helptext The view shows help messages.
+     */
+    public void setParts(EditStyledTextInterface est_interface) {
+        mESTInterface = est_interface;
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        final boolean superResult = super.onTouchEvent(event);
+        if (event.getAction() == MotionEvent.ACTION_UP) {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onTouchEvent");
+            }
+            mManager.onTouchScreen();
+        }
+        return superResult;
+    }
+
+    /**
+     * Start editing. This function have to be called before other
+     * editing actions.
+     */
+    public void onStartEdit() {
+        mManager.onStartEdit();
+    }
+
+    /**
+     * End editing.
+     */
+    public void onEndEdit() {
+        mManager.onEndEdit();
+    }
+
+    /**
+     * Start "Copy" action.
+     */
+    public void onStartCopy() {
+        mManager.onStartCopy();
+    }
+
+    /**
+     * Start "Paste" action.
+     */
+    public void onStartPaste() {
+        mManager.onStartPaste();
+    }
+
+    /**
+     * Start changing "Size" action.
+     */
+    public void onStartSize() {
+        mManager.onStartSize();
+    }
+
+    /**
+     * Start changing "Color" action.
+     */
+    public void onStartColor() {
+        mManager.onStartColor();
+    }
+
+    /**
+     * Start "Select" action.
+     */
+    public void onStartSelect() {
+        mManager.onStartSelect();
+    }
+
+    /**
+     * Start "SelectAll" action.
+     */
+    public void onStartSelectAll() {
+        mManager.onStartSelectAll();
+    }
+
+    /**
+     * Fix Selected Item.
+     */
+    public void fixSelectedItem() {
+        mManager.onFixSelectItem();
+    }
+
+    /**
+     * Set Size of the Item.
+     * @param size The size of the Item.
+     */
+    public void setItemSize(int size) {
+        mManager.setItemSize(size);
+    }
+
+    /**
+     * Set Color of the Item.
+     * @param color The color of the Item.
+     */
+    public void setItemColor(int color) {
+        mManager.setItemColor(color);
+    }
+
+    /**
+     * Check editing is started.
+     * @return Whether editing is started or not.
+     */
+    public boolean isEditting() {
+        return mManager.isEditting();
+    }
+
+    /**
+     * Get the mode of the action.
+     * @return The mode of the action.
+     */
+    public int getEditMode() {
+        return mManager.getEditMode();
+    }
+
+    /**
+     * Get the state of the selection.
+     * @return The state of the selection.
+     */
+    public int getSelectState() {
+        return mManager.getSelectState();
+    }
+
+    /**
+     * Initialize members.
+     */
+    private void init() {
+        if (DBG) {
+            Log.d(LOG_TAG, "--- init");
+            requestFocus();
+        }
+        mManager = new EditStyledTextEditorManager(this);
+    }
+
+    /**
+     * Notify hint messages what action is expected to calling class.
+     * @param msg
+     */
+    private void setHintMessage(int msg_id) {
+        if (mESTInterface != null) {
+            mESTInterface.notifyHintMsg(msg_id);
+        }
+    }
+
+    /**
+     * Object which manages the flow and status of editing actions.
+     */
+    private class EditStyledTextEditorManager {
+        private boolean mEditFlag = false;
+        private int mMode = 0;
+        private int mState = 0;
+        private int mCurStart = 0;
+        private int mCurEnd = 0;
+        private EditStyledText mEST;
+        private Editable mTextSelectBuffer;
+        private CharSequence mTextCopyBufer;
+
+        EditStyledTextEditorManager(EditStyledText est) {
+            mEST = est;
+        }
+
+        public void onStartEdit() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onEdit");
+            }
+            handleResetEdit();
+        }
+
+        public void onEndEdit() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickCancel");
+            }
+            handleCancel();
+        }
+
+        public void onStartCopy() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickCopy");
+            }
+            handleCopy();
+        }
+
+        public void onStartPaste() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickPaste");
+            }
+            handlePaste();
+        }
+
+        public void onStartSize() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickSize");
+            }
+            handleSize();
+        }
+
+        public void setItemSize(int size) {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickSizeItem");
+            }
+            if (mState == STATE_SELECTED || mState == STATE_SELECT_FIX) {
+                changeSizeSelectedText(size);
+                handleResetEdit();
+            }
+        }
+
+        public void setItemColor(int color) {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickColorItem");
+            }
+            if (mState == STATE_SELECTED || mState == STATE_SELECT_FIX) {
+                changeColorSelectedText(color);
+                handleResetEdit();
+            }
+        }
+
+        public void onStartColor() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickColor");
+            }
+            handleColor();
+        }
+
+        public void onStartSelect() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickSelect");
+            }
+            mMode = MODE_SELECT;
+            if (mState == STATE_SELECT_OFF) {
+                handleSelect();
+            } else {
+                offSelect();
+                handleSelect();
+            }
+        }
+
+        public void onStartSelectAll() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickSelectAll");
+            }
+            handleSelectAll();
+        }
+
+        public void onTouchScreen() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickView");
+            }
+            if (mState == STATE_SELECT_ON || mState == STATE_SELECTED) {
+                handleSelect();
+            }
+        }
+
+        public void onFixSelectItem() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onClickComplete");
+            }
+            handleComplete();
+        }
+
+        public boolean isEditting() {
+            return mEditFlag;
+        }
+
+        public int getEditMode() {
+            return mMode;
+        }
+
+        public int getSelectState() {
+            return mState;
+        }
+
+        private void handleCancel() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handleCancel");
+            }
+            mMode = MODE_NOTHING;
+            mState = STATE_SELECT_OFF;
+            mEditFlag = false;
+            offSelect();
+        }
+
+        private void handleComplete() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handleComplete");
+            }
+            if (!mEditFlag) {
+                return;
+            }
+            if (mState == STATE_SELECTED) {
+                mState = STATE_SELECT_FIX;
+            }
+            switch (mMode) {
+            case MODE_COPY:
+                handleCopy();
+                break;
+            default:
+                break;
+            }
+        }
+
+        private void handleCopy() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handleCopy: " + mMode + "," + mState);
+            }
+            if (!mEditFlag) {
+                return;
+            }
+            if (mMode == MODE_NOTHING || mMode == MODE_SELECT) {
+                mMode = MODE_COPY;
+                if (mState == STATE_SELECTED) {
+                    mState = STATE_SELECT_FIX;
+                    storeSelectedText();
+                } else {
+                    handleSelect();
+                }
+            } else if (mMode != MODE_COPY) {
+                handleCancel();
+                mMode = MODE_COPY;
+                handleCopy();
+            } else if (mState == STATE_SELECT_FIX) {
+                mEST.setHintMessage(HINT_MSG_NULL);
+                storeSelectedText();
+                handleResetEdit();
+            }
+        }
+
+        private void handlePaste() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handlePaste");
+            }
+            if (!mEditFlag) {
+                return;
+            }
+            if (mTextSelectBuffer != null && mTextCopyBufer.length() > 0) {
+                mTextSelectBuffer.insert(mEST.getSelectionStart(),
+                        mTextCopyBufer);
+            } else {
+                mEST.setHintMessage(HINT_MSG_COPY_BUF_BLANK);
+            }
+        }
+
+        private void handleSize() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handleSize: " + mMode + "," + mState);
+            }
+            if (!mEditFlag) {
+                return;
+            }
+            if (mMode == MODE_NOTHING || mMode == MODE_SELECT) {
+                mMode = MODE_SIZE;
+                if (mState == STATE_SELECTED) {
+                    mState = STATE_SELECT_FIX;
+                } else {
+                    handleSelect();
+                }
+            } else if (mMode != MODE_SIZE) {
+                handleCancel();
+                mMode = MODE_SIZE;
+                handleSize();
+            } else if (mState == STATE_SELECT_FIX) {
+                mEST.setHintMessage(HINT_MSG_NULL);
+            }
+        }
+
+        private void handleColor() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handleColor");
+            }
+            if (!mEditFlag) {
+                return;
+            }
+            if (mMode == MODE_NOTHING || mMode == MODE_SELECT) {
+                mMode = MODE_COLOR;
+                if (mState == STATE_SELECTED) {
+                    mState = STATE_SELECT_FIX;
+                } else {
+                    handleSelect();
+                }
+            } else if (mMode != MODE_COLOR) {
+                handleCancel();
+                mMode = MODE_COLOR;
+                handleSize();
+            } else if (mState == STATE_SELECT_FIX) {
+                mEST.setHintMessage(HINT_MSG_NULL);
+            }
+        }
+
+        private void handleSelect() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handleSelect" + mEditFlag + "," + mState);
+            }
+            if (!mEditFlag) {
+                return;
+            }
+            if (mState == STATE_SELECT_OFF) {
+                if (isTextSelected()) {
+                    Log.e(LOG_TAG, "Selection state is off, but selected");
+                }
+                setSelectStartPos();
+                mEST.setHintMessage(HINT_MSG_SELECT_END);
+            } else if (mState == STATE_SELECT_ON) {
+                if (isTextSelected()) {
+                    Log.e(LOG_TAG, "Selection state now start, but selected");
+                }
+                setSelectEndPos();
+                mEST.setHintMessage(HINT_MSG_PUSH_COMPETE);
+                doNextHandle();
+            } else if (mState == STATE_SELECTED) {
+                if (!isTextSelected()) {
+                    Log.e(LOG_TAG,
+                            "Selection state is done, but not selected");
+                }
+                setSelectEndPos();
+                doNextHandle();
+            }
+        }
+
+        private void handleSelectAll() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- handleSelectAll");
+            }
+            if (!mEditFlag) {
+                return;
+            }
+            mEST.selectAll();
+        }
+
+        private void doNextHandle() {
+            switch (mMode) {
+            case MODE_COPY:
+                handleCopy();
+                break;
+            case MODE_PASTE:
+                handlePaste();
+                break;
+            case MODE_SIZE:
+                handleSize();
+                break;
+            case MODE_COLOR:
+                handleColor();
+                break;
+            default:
+                break;
+            }
+        }
+
+        private void handleResetEdit() {
+            handleCancel();
+            mEditFlag = true;
+            mEST.setHintMessage(HINT_MSG_SELECT_START);
+        }
+
+        // Methods of selection
+        private void onSelect() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- onSelect");
+            }
+            if (mCurStart >= 0 && mCurStart <= mEST.getText().length()
+                    && mCurEnd >= 0 && mCurEnd <= mEST.getText().length()) {
+                mEST.setSelection(mCurStart, mCurEnd);
+                mState = STATE_SELECTED;
+            } else {
+                Log.e(LOG_TAG,
+                        "Select is on, but cursor positions are illigal.:"
+                                + mEST.getText().length() + "," + mCurStart
+                                + "," + mCurEnd);
+            }
+        }
+
+        private void offSelect() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- offSelect");
+            }
+            int currpos = mEST.getSelectionStart();
+            mEST.setSelection(currpos, currpos);
+            mState = STATE_SELECT_OFF;
+        }
+
+        private void setSelectStartPos() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- setSelectStartPos");
+            }
+            mCurStart = mEST.getSelectionStart();
+            mState = STATE_SELECT_ON;
+        }
+
+        private void setSelectEndPos() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- setSelectEndPos:"
+                        + mEST.getSelectionStart());
+            }
+            int curpos = mEST.getSelectionStart();
+            if (curpos < mCurStart) {
+                if (DBG) {
+                    Log.d(LOG_TAG, "--- setSelectEndPos: swap is done.");
+                }
+                mCurEnd = mCurStart;
+                mCurStart = curpos;
+            } else {
+                mCurEnd = curpos;
+            }
+            onSelect();
+        }
+
+        private boolean isTextSelected() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- isTextSelected:" + mCurStart + ","
+                        + mCurEnd);
+            }
+            return (mCurStart != mCurEnd)
+                    && (mState == STATE_SELECTED ||
+                            mState == STATE_SELECT_FIX);
+        }
+
+        private void storeSelectedText() {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- storeSelectedText");
+            }
+            mTextSelectBuffer = mEST.getText();
+            mTextCopyBufer = mTextSelectBuffer.subSequence(mCurStart, mCurEnd);
+        }
+
+        private void changeSizeSelectedText(int size) {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- changeSizeSelectedText:" + size + ","
+                        + mCurStart + "," + mCurEnd);
+            }
+            mEST.getText().setSpan(new AbsoluteSizeSpan(size), mCurStart,
+                    mCurEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        private void changeColorSelectedText(int color) {
+            if (DBG) {
+                Log.d(LOG_TAG, "--- changeCollorSelectedText:" + color + ","
+                        + mCurStart + "," + mCurEnd);
+            }
+            mEST.getText().setSpan(new ForegroundColorSpan(color), mCurStart,
+                    mCurEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+    }
+
+}
diff --git a/core/jni/android/graphics/Typeface.cpp b/core/jni/android/graphics/Typeface.cpp
index 32954ce..e951431 100644
--- a/core/jni/android/graphics/Typeface.cpp
+++ b/core/jni/android/graphics/Typeface.cpp
@@ -32,11 +32,11 @@
     SkTypeface* face;
 
     if (NULL == name) {
-        face = SkTypeface::Create(NULL, (SkTypeface::Style)style);
+        face = SkTypeface::CreateFromName(NULL, (SkTypeface::Style)style);
     }
     else {
         AutoJavaStringToUTF8    str(env, name);
-        face = SkTypeface::Create(str.c_str(), style);
+        face = SkTypeface::CreateFromName(str.c_str(), style);
     }
     return face;
 }
@@ -50,7 +50,7 @@
 }
 
 static int Typeface_getStyle(JNIEnv* env, jobject obj, SkTypeface* face) {
-    return face->getStyle();
+    return face->style();
 }
 
 class AssetStream : public SkStream {
diff --git a/core/jni/android_text_format_Time.cpp b/core/jni/android_text_format_Time.cpp
index 8e41ec7..923e1aa 100644
--- a/core/jni/android_text_format_Time.cpp
+++ b/core/jni/android_text_format_Time.cpp
@@ -52,6 +52,9 @@
 static jfieldID g_amField = 0;
 static jfieldID g_pmField = 0;
 static jfieldID g_dateCommandField = 0;
+static jfieldID g_localeField = 0;
+
+static jclass g_timeClass = NULL;
 
 static inline bool java2time(JNIEnv* env, Time* t, jobject o)
 {
@@ -183,57 +186,102 @@
 static jstring android_text_format_Time_format(JNIEnv* env, jobject This,
                             jstring formatObject)
 {
-    Time t;
-    struct strftime_locale locale;
-    jclass timeClass = env->FindClass("android/text/format/Time");
-    jstring js_mon[12], js_month[12], js_wday[7], js_weekday[7];
-    jstring js_X_fmt, js_x_fmt, js_c_fmt, js_am, js_pm, js_date_fmt;
-    jobjectArray ja;
+    // We only teardown and setup our 'locale' struct and other state
+    // when the Java-side locale changed.  This is safe to do here
+    // without locking because we're always called from Java code
+    // synchronized on the class instance.
+    static jobject js_locale_previous = NULL;
+    static struct strftime_locale locale;
+    static jstring js_mon[12], js_month[12], js_wday[7], js_weekday[7];
+    static jstring js_X_fmt, js_x_fmt, js_c_fmt, js_am, js_pm, js_date_fmt;
 
+    Time t;
     if (!java2time(env, &t, This)) return env->NewStringUTF("");
 
-    ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_shortMonthsField);
-    for (int i = 0; i < 12; i++) {
-        js_mon[i] = (jstring) env->GetObjectArrayElement(ja, i);
-        locale.mon[i] = env->GetStringUTFChars(js_mon[i], NULL);
+    jclass timeClass = g_timeClass;
+    jobject js_locale = (jobject) env->GetStaticObjectField(timeClass, g_localeField);
+    if (js_locale_previous != js_locale) {
+        if (js_locale_previous != NULL) {
+            // Free the old one.
+            for (int i = 0; i < 12; i++) {
+                env->ReleaseStringUTFChars(js_mon[i], locale.mon[i]);
+                env->ReleaseStringUTFChars(js_month[i], locale.month[i]);
+                env->DeleteGlobalRef(js_mon[i]);
+                env->DeleteGlobalRef(js_month[i]);
+            }
+
+            for (int i = 0; i < 7; i++) {
+                env->ReleaseStringUTFChars(js_wday[i], locale.wday[i]);
+                env->ReleaseStringUTFChars(js_weekday[i], locale.weekday[i]);
+                env->DeleteGlobalRef(js_wday[i]);
+                env->DeleteGlobalRef(js_weekday[i]);
+            }
+
+            env->ReleaseStringUTFChars(js_X_fmt, locale.X_fmt);
+            env->ReleaseStringUTFChars(js_x_fmt, locale.x_fmt);
+            env->ReleaseStringUTFChars(js_c_fmt, locale.c_fmt);
+            env->ReleaseStringUTFChars(js_am, locale.am);
+            env->ReleaseStringUTFChars(js_pm, locale.pm);
+            env->ReleaseStringUTFChars(js_date_fmt, locale.date_fmt);
+            env->DeleteGlobalRef(js_X_fmt);
+            env->DeleteGlobalRef(js_x_fmt);
+            env->DeleteGlobalRef(js_c_fmt);
+            env->DeleteGlobalRef(js_am);
+            env->DeleteGlobalRef(js_pm);
+            env->DeleteGlobalRef(js_date_fmt);
+        }
+        js_locale_previous = js_locale;
+
+        jobjectArray ja;
+        ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_shortMonthsField);
+        for (int i = 0; i < 12; i++) {
+            js_mon[i] = (jstring) env->NewGlobalRef(env->GetObjectArrayElement(ja, i));
+            locale.mon[i] = env->GetStringUTFChars(js_mon[i], NULL);
+        }
+
+        ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_longMonthsField);
+        for (int i = 0; i < 12; i++) {
+            js_month[i] = (jstring) env->NewGlobalRef(env->GetObjectArrayElement(ja, i));
+            locale.month[i] = env->GetStringUTFChars(js_month[i], NULL);
+        }
+
+        ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_shortWeekdaysField);
+        for (int i = 0; i < 7; i++) {
+            js_wday[i] = (jstring) env->NewGlobalRef(env->GetObjectArrayElement(ja, i));
+            locale.wday[i] = env->GetStringUTFChars(js_wday[i], NULL);
+        }
+
+        ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_longWeekdaysField);
+        for (int i = 0; i < 7; i++) {
+            js_weekday[i] = (jstring) env->NewGlobalRef(env->GetObjectArrayElement(ja, i));
+            locale.weekday[i] = env->GetStringUTFChars(js_weekday[i], NULL);
+        }
+
+        js_X_fmt = (jstring) env->NewGlobalRef(env->GetStaticObjectField(
+                                                       timeClass, g_timeOnlyFormatField));
+        locale.X_fmt = env->GetStringUTFChars(js_X_fmt, NULL);
+
+        js_x_fmt = (jstring) env->NewGlobalRef(env->GetStaticObjectField(
+                                                       timeClass, g_dateOnlyFormatField));
+        locale.x_fmt = env->GetStringUTFChars(js_x_fmt, NULL);
+
+        js_c_fmt = (jstring) env->NewGlobalRef(env->GetStaticObjectField(
+                                                       timeClass, g_dateTimeFormatField));
+        locale.c_fmt = env->GetStringUTFChars(js_c_fmt, NULL);
+
+        js_am = (jstring) env->NewGlobalRef(env->GetStaticObjectField(
+                                                    timeClass, g_amField));
+        locale.am = env->GetStringUTFChars(js_am, NULL);
+
+        js_pm = (jstring) env->NewGlobalRef(env->GetStaticObjectField(
+                                                    timeClass, g_pmField));
+        locale.pm = env->GetStringUTFChars(js_pm, NULL);
+
+        js_date_fmt = (jstring) env->NewGlobalRef(env->GetStaticObjectField(
+                                                          timeClass, g_dateCommandField));
+        locale.date_fmt = env->GetStringUTFChars(js_date_fmt, NULL);
     }
 
-    ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_longMonthsField);
-    for (int i = 0; i < 12; i++) {
-        js_month[i] = (jstring) env->GetObjectArrayElement(ja, i);
-        locale.month[i] = env->GetStringUTFChars(js_month[i], NULL);
-    }
-
-    ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_shortWeekdaysField);
-    for (int i = 0; i < 7; i++) {
-        js_wday[i] = (jstring) env->GetObjectArrayElement(ja, i);
-        locale.wday[i] = env->GetStringUTFChars(js_wday[i], NULL);
-    }
-
-    ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_longWeekdaysField);
-    for (int i = 0; i < 7; i++) {
-        js_weekday[i] = (jstring) env->GetObjectArrayElement(ja, i);
-        locale.weekday[i] = env->GetStringUTFChars(js_weekday[i], NULL);
-    }
-
-    js_X_fmt = (jstring) env->GetStaticObjectField(timeClass, g_timeOnlyFormatField);
-    locale.X_fmt = env->GetStringUTFChars(js_X_fmt, NULL);
-
-    js_x_fmt = (jstring) env->GetStaticObjectField(timeClass, g_dateOnlyFormatField);
-    locale.x_fmt = env->GetStringUTFChars(js_x_fmt, NULL);
-
-    js_c_fmt = (jstring) env->GetStaticObjectField(timeClass, g_dateTimeFormatField);
-    locale.c_fmt = env->GetStringUTFChars(js_c_fmt, NULL);
-
-    js_am = (jstring) env->GetStaticObjectField(timeClass, g_amField);
-    locale.am = env->GetStringUTFChars(js_am, NULL);
-
-    js_pm = (jstring) env->GetStaticObjectField(timeClass, g_pmField);
-    locale.pm = env->GetStringUTFChars(js_pm, NULL);
-
-    js_date_fmt = (jstring) env->GetStaticObjectField(timeClass, g_dateCommandField);
-    locale.date_fmt = env->GetStringUTFChars(js_date_fmt, NULL);
-
     ACQUIRE_TIMEZONE(This, t)
 
     const char* format = env->GetStringUTFChars(formatObject, NULL);
@@ -243,23 +291,6 @@
     env->ReleaseStringUTFChars(formatObject, format);
     RELEASE_TIMEZONE(This, t)
 
-    for (int i = 0; i < 12; i++) {
-        env->ReleaseStringUTFChars(js_mon[i], locale.mon[i]);
-        env->ReleaseStringUTFChars(js_month[i], locale.month[i]);
-    }
-
-    for (int i = 0; i < 7; i++) {
-        env->ReleaseStringUTFChars(js_wday[i], locale.wday[i]);
-        env->ReleaseStringUTFChars(js_weekday[i], locale.weekday[i]);
-    }
-
-    env->ReleaseStringUTFChars(js_X_fmt, locale.X_fmt);
-    env->ReleaseStringUTFChars(js_x_fmt, locale.x_fmt);
-    env->ReleaseStringUTFChars(js_c_fmt, locale.c_fmt);
-    env->ReleaseStringUTFChars(js_am, locale.am);
-    env->ReleaseStringUTFChars(js_pm, locale.pm);
-    env->ReleaseStringUTFChars(js_date_fmt, locale.date_fmt);
-
     return env->NewStringUTF(r.string());
 }
 
@@ -307,7 +338,6 @@
 {
     env->SetBooleanField(This, g_allDayField, JNI_FALSE);
     Time t;
-    if (!java2time(env, &t, This)) return;
     ACQUIRE_TIMEZONE(This, t)
 
     t.set(millis);
@@ -592,6 +622,8 @@
 {
     jclass timeClass = env->FindClass("android/text/format/Time");
 
+    g_timeClass = (jclass) env->NewGlobalRef(timeClass);
+
     g_allDayField = env->GetFieldID(timeClass, "allDay", "Z");
     g_secField = env->GetFieldID(timeClass, "second", "I");
     g_minField = env->GetFieldID(timeClass, "minute", "I");
@@ -615,9 +647,9 @@
     g_amField = env->GetStaticFieldID(timeClass, "sAm", "Ljava/lang/String;");
     g_pmField = env->GetStaticFieldID(timeClass, "sPm", "Ljava/lang/String;");
     g_dateCommandField = env->GetStaticFieldID(timeClass, "sDateCommand", "Ljava/lang/String;");
+    g_localeField = env->GetStaticFieldID(timeClass, "sLocale", "Ljava/util/Locale;");
 
     return AndroidRuntime::registerNativeMethods(env, "android/text/format/Time", gMethods, NELEM(gMethods));
 }
 
 }; // namespace android
-
diff --git a/core/res/assets/webkit/nullplugin.png b/core/res/assets/webkit/nullPlugin.png
similarity index 100%
rename from core/res/assets/webkit/nullplugin.png
rename to core/res/assets/webkit/nullPlugin.png
Binary files differ
diff --git a/core/res/res/anim/zoom_ring_enter.xml b/core/res/res/anim/zoom_ring_enter.xml
new file mode 100644
index 0000000..13d89b2
--- /dev/null
+++ b/core/res/res/anim/zoom_ring_enter.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/res/anim/fade_in.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.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:interpolator="@anim/decelerate_interpolator">
+    <scale android:fromXScale="0.75" android:toXScale="1.0"
+           android:fromYScale="0.75" android:toYScale="1.0"
+           android:pivotX="50%" android:pivotY="50%"
+           android:duration="75" />
+    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
+            android:duration="75" />
+</set>
diff --git a/core/res/res/anim/zoom_ring_exit.xml b/core/res/res/anim/zoom_ring_exit.xml
new file mode 100644
index 0000000..177a4c3
--- /dev/null
+++ b/core/res/res/anim/zoom_ring_exit.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/res/anim/fade_out.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.
+*/
+-->
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:interpolator="@anim/accelerate_interpolator">
+    <scale android:fromXScale="1.0" android:toXScale="0.75"
+           android:fromYScale="1.0" android:toYScale="0.75"
+           android:pivotX="50%" android:pivotY="50%"
+           android:duration="75" />
+    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
+            android:duration="75"/>
+</set>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 44da1d5..30b26fa 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -371,6 +371,8 @@
         <attr name="spinnerItemStyle" format="reference" />
         <!-- Default MapView style. -->
         <attr name="mapViewStyle" format="reference" />
+        <!-- Default ZoomRing style. -->
+        <attr name="zoomRingStyle" format="reference" />
 
         <!-- =================== -->
         <!-- Preference styles   -->
@@ -529,10 +531,23 @@
              {@link android.text.InputType#TYPE_CLASS_TEXT} |
              {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}. -->
         <flag name="textPassword" value="0x00000081" />
+        <!-- Text that is a password that should be visible.  Corresponds to
+             {@link android.text.InputType#TYPE_CLASS_TEXT} |
+             {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}. -->
+        <flag name="textVisiblePassword" value="0x00000091" />
         <!-- Text that is being supplied as text in a web form.  Corresponds to
              {@link android.text.InputType#TYPE_CLASS_TEXT} |
              {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}. -->
-        <flag name="textWebEditText" value="0x00000091" />
+        <flag name="textWebEditText" value="0x000000a1" />
+        <!-- Text that is filtering some other data.  Corresponds to
+             {@link android.text.InputType#TYPE_CLASS_TEXT} |
+             {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}. -->
+        <flag name="textFilter" value="0x000000b1" />
+        <!-- Text that is for phonetic pronunciation, such as a phonetic name
+             field in a contact entry.  Corresponds to
+             {@link android.text.InputType#TYPE_CLASS_TEXT} |
+             {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}. -->
+        <flag name="textPhonetic" value="0x000000c1" />
         <!-- A numeric only field.  Corresponds to
              {@link android.text.InputType#TYPE_CLASS_NUMBER}. -->
         <flag name="number" value="0x00000002" />
@@ -1920,6 +1935,34 @@
         </attr>
         <attr name="inputType" />
     </declare-styleable>
+    <declare-styleable name="ZoomRing">
+        <!-- Defines the drawable used as the thumb. -->
+        <attr name="thumbDrawable" format="reference" />
+        <!-- Defines the distance of the thumb from the center of the ring. -->
+        <attr name="thumbDistance" format="dimension" />
+        <!-- Defines the distance from the center of the ring to the beginning of the track. -->
+        <attr name="trackInnerRadius" format="dimension" />
+        <!-- Defines the distance from the center of the ring to the end of the track. -->
+        <attr name="trackOuterRadius" format="dimension" />
+        <!-- Defines the drawable used as a hint to show which direction is zoom in. This should be
+             the same size as the zoom ring's asset.  It will be rotated programmatically. -->
+        <attr name="zoomInArrowDrawable" format="reference" />
+        <!-- Defines the drawable used as a hint to show which direction is zoom out. This should be
+             the same size as the zoom ring's asset.  It will be rotated programmatically. -->
+        <attr name="zoomOutArrowDrawable" format="reference" />
+        <!-- Defines the drawable that is laid on top of the zoom in arrow.
+             For example, this could be a +. -->
+        <attr name="zoomInArrowHintDrawable" format="reference" />
+        <!-- Defines the drawable that is laid on top of the zoom out arrow.
+             For example, this could be a -. -->
+        <attr name="zoomOutArrowHintDrawable" format="reference" />
+        <!-- Defines the distance of the zoom arrow hint from the center of the ring. -->
+        <attr name="zoomArrowHintDistance" format="dimension" />
+        <!-- Defines the offset of the zoom arrow hints from the thumb. Valid ranges are [0, 359] -->
+        <attr name="zoomArrowHintOffsetAngle" format="integer" />
+        <!-- Defines the drawable used to hint that the zoom ring can pan its owner. -->
+        <attr name="panningArrowsDrawable" format="reference" />
+    </declare-styleable>    
     <declare-styleable name="PopupWindow">
         <attr name="popupBackground" format="reference|color" />
     </declare-styleable>
@@ -2183,7 +2226,9 @@
     </declare-styleable>
     
     <declare-styleable name="LevelListDrawableItem">
+        <!-- The minimum level allowed for this item. -->
         <attr name="minLevel" format="integer" />
+        <!-- The maximum level allowed for this item. -->
         <attr name="maxLevel" format="integer" />
         <attr name="drawable" />
     </declare-styleable>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 346fa80..d54bca3 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1565,7 +1565,7 @@
          want a 24-hour clock.
          You can remove the colon
          or make other punctuation changes appropriate for your locale. -->
-    <string name="twenty_four_hour_time_format" format="date"><xliff:g id="hour" example="23">H</xliff:g>:<xliff:g id="minute" example="59">mm</xliff:g></string>
+    <string name="twenty_four_hour_time_format" format="date"><xliff:g id="hour" example="23">HH</xliff:g>:<xliff:g id="minute" example="59">mm</xliff:g></string>
 
     <!-- Quoted name for 12pm, lowercase -->
     <string name="noon">"noon"</string>
@@ -2293,6 +2293,9 @@
     <!-- Long label for a button on a full-screen input method for the "Next" action. -->
     <string name="ime_action_next">Next</string>
     
+    <!-- Long label for a button on a full-screen input method for the "Done" action. -->
+    <string name="ime_action_done">Done</string>
+    
     <!-- Long label for a button on a full-screen input method for an unknown action. -->
     <string name="ime_action_default">Execute</string>
     
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 54eba62..9f4d82e 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -144,6 +144,11 @@
         <item name="windowExitAnimation">@anim/search_bar_exit</item>
     </style>
 
+    <!-- Standard animations for the zoom ring. -->
+    <style name="Animation.ZoomRing">
+        <item name="windowEnterAnimation">@anim/zoom_ring_enter</item>
+        <item name="windowExitAnimation">@anim/zoom_ring_exit</item>
+    </style>
     <!-- Status Bar Styles -->
 
     <style name="TextAppearance.StatusBarTitle">
@@ -456,6 +461,21 @@
         <item name="android:shadowRadius">2.75</item>
     </style>
 
+    <style name="Widget.ZoomRing">
+        <item name="android:background">@android:drawable/zoom_ring_track</item>
+        <item name="android:thumbDrawable">@android:drawable/zoom_ring_thumb</item>
+        <item name="android:thumbDistance">63dip</item>
+        <item name="android:trackInnerRadius">43dip</item>
+        <item name="android:trackOuterRadius">91dip</item>
+        <item name="android:zoomInArrowDrawable">@android:drawable/zoom_ring_thumb_plus_arrow_rotatable</item>
+        <item name="android:zoomOutArrowDrawable">@android:drawable/zoom_ring_thumb_minus_arrow_rotatable</item>
+        <item name="android:zoomInArrowHintDrawable">@android:drawable/zoom_ring_thumb_plus</item>
+        <item name="android:zoomOutArrowHintDrawable">@android:drawable/zoom_ring_thumb_minus</item>
+        <item name="android:zoomArrowHintDistance">69dip</item>
+        <item name="android:zoomArrowHintOffsetAngle">33</item>
+        <item name="android:panningArrowsDrawable">@android:drawable/zoom_ring_arrows</item>
+    </style>
+
     <!-- Text Appearances -->
     <eat-comment />
 
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 01c46de..bde6b2a 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -162,6 +162,7 @@
         <item name="spinnerItemStyle">@android:style/Widget.TextView.SpinnerItem</item>
         <item name="dropDownHintAppearance">@android:style/TextAppearance.Widget.DropDownHint</item>
         <item name="keyboardViewStyle">@android:style/Widget.KeyboardView</item>
+        <item name="zoomRingStyle">@android:style/Widget.ZoomRing</item>
         
         <!-- Preference styles -->
         <item name="preferenceScreenStyle">@android:style/Preference.PreferenceScreen</item>
diff --git a/graphics/java/android/graphics/drawable/LevelListDrawable.java b/graphics/java/android/graphics/drawable/LevelListDrawable.java
index cf94a3a..7ae649f 100644
--- a/graphics/java/android/graphics/drawable/LevelListDrawable.java
+++ b/graphics/java/android/graphics/drawable/LevelListDrawable.java
@@ -34,9 +34,20 @@
  * battery level.
  * <p>
  * It can be defined in an XML file with the <code>&lt;level-list></code> element.
- * Each Drawable level is defined in a nested <code>&lt;item></code>
+ * Each Drawable level is defined in a nested <code>&lt;item></code>. For example:
  * </p>
- *
+ * <pre>
+ * &lt;level-list xmlns:android="http://schemas.android.com/apk/res/android">
+ *  &lt;item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1" />
+ *  &lt;item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2" />
+ *  &lt;item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3" />
+ *  &lt;item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4" />
+ * &lt;/level-list>
+ *</pre>
+ * <p>With this XML saved into the res/drawable/ folder of the project, it can be referenced as
+ * the drawable for an {@link android.widget.ImageView}. The default image is the first in the list.
+ * It can then be changed to one of the other levels with
+ * {@link android.widget.ImageView#setImageLevel(int)}.</p>
  * @attr ref android.R.styleable#LevelListDrawableItem_minLevel
  * @attr ref android.R.styleable#LevelListDrawableItem_maxLevel
  * @attr ref android.R.styleable#LevelListDrawableItem_drawable
diff --git a/include/ui/ICameraService.h b/include/ui/ICameraService.h
index dfd8923..c652c51 100644
--- a/include/ui/ICameraService.h
+++ b/include/ui/ICameraService.h
@@ -28,7 +28,7 @@
 
 class ICameraService : public IInterface
 {
-protected:
+public:
     enum {
         CONNECT = IBinder::FIRST_CALL_TRANSACTION,
     };
diff --git a/include/utils/threads.h b/include/utils/threads.h
index 7dca810..8d8d46a 100644
--- a/include/utils/threads.h
+++ b/include/utils/threads.h
@@ -249,41 +249,6 @@
 
 
 /*
- * Read/write lock.  The resource can have multiple readers or one writer,
- * but can't be read and written at the same time.
- *
- * The same thread should not call a lock function while it already has
- * a lock.  (Should be okay for multiple readers.)
- */
-class ReadWriteLock {
-public:
-    ReadWriteLock()
-        : mNumReaders(0), mNumWriters(0)
-        {}
-    ~ReadWriteLock() {}
-
-    void lockForRead();
-    bool tryLockForRead();
-    void unlockForRead();
-
-    void lockForWrite();
-    bool tryLockForWrite();
-    void unlockForWrite();
-
-private:
-    int         mNumReaders;
-    int         mNumWriters;
-
-    Mutex       mLock;
-    Condition   mReadWaiter;
-    Condition   mWriteWaiter;
-#if defined(PRINT_RENDER_TIMES)
-    DurationTimer mDebugTimer;
-#endif
-};
-
-
-/*
  * This is our spiffy thread object!
  */
 
diff --git a/libs/utils/CallStack.cpp b/libs/utils/CallStack.cpp
index 26fb22a..2fdaa71 100644
--- a/libs/utils/CallStack.cpp
+++ b/libs/utils/CallStack.cpp
@@ -120,13 +120,18 @@
         char name[];
     };
 
-    const char *map_to_name(uint64_t pc, const char* def) {
+    const char *map_to_name(uint64_t pc, const char* def, uint64_t* start) {
         mapinfo* mi = getMapInfoList();
         while(mi) {
-            if ((pc >= mi->start) && (pc < mi->end))
+            if ((pc >= mi->start) && (pc < mi->end)) {
+                if (start) 
+                    *start = mi->start;
                 return mi->name;
+            }
             mi = mi->next;
         }
+        if (start) 
+            *start = 0;
         return def;
     }
 
@@ -183,8 +188,15 @@
         }
     }
     
-    static const char *mapAddressToName(const void* pc, const char* def) {
-        return sMapInfo.map_to_name((uint64_t)pc, def);
+    static const char *mapAddressToName(const void* pc, const char* def,
+            void const** start) 
+    {
+        uint64_t s;
+        char const* name = sMapInfo.map_to_name(uint64_t(uintptr_t(pc)), def, &s);
+        if (start) {
+            *start = (void*)s;
+        }
+        return name;
     }
 
 };
@@ -297,8 +309,9 @@
         res.append(name);
         res.append(tmp2);
     } else { 
-        name = MapInfo::mapAddressToName(ip, "<unknown>");
-        snprintf(tmp, 256, "pc %p  %s", ip, name);
+        void const* start = 0;
+        name = MapInfo::mapAddressToName(ip, "<unknown>", &start);
+        snprintf(tmp, 256, "pc %08lx  %s", uintptr_t(ip)-uintptr_t(start), name);
         res.append(tmp);
     }
     res.append("\n");
diff --git a/libs/utils/ResourceTypes.cpp b/libs/utils/ResourceTypes.cpp
index 71e7cd7..2ad3bfe 100644
--- a/libs/utils/ResourceTypes.cpp
+++ b/libs/utils/ResourceTypes.cpp
@@ -176,7 +176,9 @@
 
 void* Res_png_9patch::serialize()
 {
-    void* newData = malloc(serializedSize());
+    // Use calloc since we're going to leave a few holes in the data
+    // and want this to run cleanly under valgrind
+    void* newData = calloc(1, serializedSize());
     serialize(newData);
     return newData;
 }
@@ -3150,13 +3152,13 @@
             const char16_t* pos = s;
             while (pos < end && !failed) {
                 const char16_t* start = pos;
-                end++;
+                pos++;
                 while (pos < end && *pos != '|') {
                     pos++;
                 }
-				//printf("Looking for: %s\n", String8(start, pos-start).string());
+                //printf("Looking for: %s\n", String8(start, pos-start).string());
                 const bag_entry* bagi = bag;
-				ssize_t i;
+                ssize_t i;
                 for (i=0; i<cnt; i++, bagi++) {
                     if (!Res_INTERNALID(bagi->map.name.ident)) {
                         //printf("Trying attr #%08x\n", bagi->map.name.ident);
@@ -3184,7 +3186,7 @@
             }
             unlockBag(bag);
             if (!failed) {
-				//printf("Final flag value: 0x%lx\n", outValue->data);
+                //printf("Final flag value: 0x%lx\n", outValue->data);
                 return true;
             }
         }
@@ -3192,7 +3194,7 @@
 
         if (fromAccessor) {
             if (accessor->getAttributeFlags(attrID, s, len, outValue)) {
-				//printf("Final flag value: 0x%lx\n", outValue->data);
+                //printf("Final flag value: 0x%lx\n", outValue->data);
                 return true;
             }
         }
diff --git a/libs/utils/String16.cpp b/libs/utils/String16.cpp
index 1f81cad..ae0ae1e 100644
--- a/libs/utils/String16.cpp
+++ b/libs/utils/String16.cpp
@@ -388,7 +388,7 @@
         ->editResize((len+1)*sizeof(char16_t));
     if (buf) {
         char16_t* str = (char16_t*)buf->data();
-        memcpy(str, other, len*sizeof(char16_t));
+        memmove(str, other, len*sizeof(char16_t));
         str[len] = 0;
         mString = str;
         return NO_ERROR;
diff --git a/libs/utils/Threads.cpp b/libs/utils/Threads.cpp
index 5f407a9..9287c0b 100644
--- a/libs/utils/Threads.cpp
+++ b/libs/utils/Threads.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+// #define LOG_NDEBUG 0
 #define LOG_TAG "libutils.threads"
 
 #include <utils/threads.h>
@@ -838,148 +839,6 @@
 #error "condition variables not supported on this platform"
 #endif
 
-
-/*
- * ===========================================================================
- *      ReadWriteLock class
- * ===========================================================================
- */
-
-#if 0
-#pragma mark -
-#pragma mark ReadWriteLock
-#endif
-
-/*
- * Add a reader.  Readers are nice.  They share.
- */
-void ReadWriteLock::lockForRead()
-{
-    mLock.lock();
-    while (mNumWriters > 0) {
-        LOG(LOG_DEBUG, "thread", "+++ lockForRead: waiting\n");
-        mReadWaiter.wait(mLock);
-    }
-    assert(mNumWriters == 0);
-    mNumReaders++;
-#if defined(PRINT_RENDER_TIMES)
-    if (mNumReaders == 1)
-        mDebugTimer.start();
-#endif
-    mLock.unlock();
-}
-
-/*
- * Try to add a reader.  If it doesn't work right away, return "false".
- */
-bool ReadWriteLock::tryLockForRead()
-{
-    mLock.lock();
-    if (mNumWriters > 0) {
-        mLock.unlock();
-        return false;
-    }
-    assert(mNumWriters == 0);
-    mNumReaders++;
-#if defined(PRINT_RENDER_TIMES)
-    if (mNumReaders == 1)
-        mDebugTimer.start();
-#endif
-    mLock.unlock();
-    return true;
-}
-
-/*
- * Remove a reader.
- */
-void ReadWriteLock::unlockForRead()
-{
-    mLock.lock();
-    if (mNumReaders == 0) {
-        mLock.unlock();
-        LOG(LOG_WARN, "thread",
-            "WARNING: unlockForRead requested, but not locked\n");
-        return;
-    }
-    assert(mNumReaders > 0);
-    assert(mNumWriters == 0);
-    mNumReaders--;
-    if (mNumReaders == 0) {           // last reader?
-#if defined(PRINT_RENDER_TIMES)
-        mDebugTimer.stop();
-        printf(" rdlk held %.3f msec\n",
-            (double) mDebugTimer.durationUsecs() / 1000.0);
-#endif
-        //printf("+++ signaling writers (if any)\n");
-        mWriteWaiter.signal();      // wake one writer (if any)
-    }
-    mLock.unlock();
-}
-
-/*
- * Add a writer.  This requires exclusive access to the object.
- */
-void ReadWriteLock::lockForWrite()
-{
-    mLock.lock();
-    while (mNumReaders > 0 || mNumWriters > 0) {
-        LOG(LOG_DEBUG, "thread", "+++ lockForWrite: waiting\n");
-        mWriteWaiter.wait(mLock);
-    }
-    assert(mNumReaders == 0);
-    assert(mNumWriters == 0);
-    mNumWriters++;
-#if defined(PRINT_RENDER_TIMES)
-    mDebugTimer.start();
-#endif
-    mLock.unlock();
-}
-
-/*
- * Try to add a writer.  If it doesn't work right away, return "false".
- */
-bool ReadWriteLock::tryLockForWrite()
-{
-    mLock.lock();
-    if (mNumReaders > 0 || mNumWriters > 0) {
-        mLock.unlock();
-        return false;
-    }
-    assert(mNumReaders == 0);
-    assert(mNumWriters == 0);
-    mNumWriters++;
-#if defined(PRINT_RENDER_TIMES)
-    mDebugTimer.start();
-#endif
-    mLock.unlock();
-    return true;
-}
-
-/*
- * Remove a writer.
- */
-void ReadWriteLock::unlockForWrite()
-{
-    mLock.lock();
-    if (mNumWriters == 0) {
-        mLock.unlock();
-        LOG(LOG_WARN, "thread",
-            "WARNING: unlockForWrite requested, but not locked\n");
-        return;
-    }
-    assert(mNumWriters == 1);
-    mNumWriters--;
-#if defined(PRINT_RENDER_TIMES)
-    mDebugTimer.stop();
-    //printf(" wrlk held %.3f msec\n",
-    //    (double) mDebugTimer.durationUsecs() / 1000.0);
-#endif
-    mWriteWaiter.signal();         // should other writers get first dibs?
-    //printf("+++ signaling readers (if any)\n");
-    mReadWaiter.broadcast();        // wake all readers (if any)
-    mLock.unlock();
-}
-
 // ----------------------------------------------------------------------------
 
 #if 0
@@ -1027,6 +886,8 @@
     // hold a strong reference on ourself
     mHoldSelf = this;
 
+    mRunning = true;
+
     bool res;
     if (mCanCallJava) {
         res = createThreadEtc(_threadLoop,
@@ -1040,14 +901,16 @@
         mStatus = UNKNOWN_ERROR;   // something happened!
         mRunning = false;
         mThread = thread_id_t(-1);
+        mHoldSelf.clear();  // "this" may have gone away after this.
+
+        return UNKNOWN_ERROR;
     }
     
-    if (mStatus < 0) {
-        // something happened, don't leak
-        mHoldSelf.clear();
-    }
-    
-    return mStatus;
+    // Do not refer to mStatus here: The thread is already running (may, in fact
+    // already have exited with a valid mStatus result). The NO_ERROR indication
+    // here merely indicates successfully starting the thread and does not
+    // imply successful termination/execution.
+    return NO_ERROR;
 }
 
 int Thread::_threadLoop(void* user)
@@ -1057,20 +920,32 @@
     wp<Thread> weak(strong);
     self->mHoldSelf.clear();
 
-    // we're about to run...
-    self->mStatus = self->readyToRun();
-    if (self->mStatus!=NO_ERROR || self->mExitPending) {
-        // pretend the thread never started...
-        self->mExitPending = false;
-        self->mRunning = false;
-        return 0;
-    }
-    
-    // thread is running now
-    self->mRunning = true;
+    bool first = true;
 
     do {
-        bool result = self->threadLoop();
+        bool result;
+        if (first) {
+            first = false;
+            self->mStatus = self->readyToRun();
+            result = (self->mStatus == NO_ERROR);
+
+            if (result && !self->mExitPending) {
+                // Binder threads (and maybe others) rely on threadLoop
+                // running at least once after a successful ::readyToRun()
+                // (unless, of course, the thread has already been asked to exit
+                // at that point).
+                // This is because threads are essentially used like this:
+                //   (new ThreadSubclass())->run();
+                // The caller therefore does not retain a strong reference to
+                // the thread and the thread would simply disappear after the
+                // successful ::readyToRun() call instead of entering the
+                // threadLoop at least once.
+                result = self->threadLoop();
+            }
+        } else {
+            result = self->threadLoop();
+        }
+
         if (result == false || self->mExitPending) {
             self->mExitPending = true;
             self->mLock.lock();
@@ -1097,24 +972,23 @@
 
 status_t Thread::requestExitAndWait()
 {
-    if (mStatus == OK) {
+    if (mThread == getThreadId()) {
+        LOGW(
+        "Thread (this=%p): don't call waitForExit() from this "
+        "Thread object's thread. It's a guaranteed deadlock!",
+        this);
 
-        if (mThread == getThreadId()) {
-            LOGW(
-            "Thread (this=%p): don't call waitForExit() from this "
-            "Thread object's thread. It's a guaranteed deadlock!",
-            this);
-            return WOULD_BLOCK;
-        }
-        
-        requestExit();
-
-        Mutex::Autolock _l(mLock);
-        while (mRunning == true) {
-            mThreadExitedCondition.wait(mLock);
-        }
-        mExitPending = false;
+        return WOULD_BLOCK;
     }
+    
+    requestExit();
+
+    Mutex::Autolock _l(mLock);
+    while (mRunning == true) {
+        mThreadExitedCondition.wait(mLock);
+    }
+    mExitPending = false;
+
     return mStatus;
 }
 
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 997cd44..316fa7a 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -153,31 +153,23 @@
      */
     private final Object mPlayStateLock = new Object();
     /**
-     * The listener the AudioTrack notifies previously set marker is reached.
-     *  @see #setMarkerReachedListener(OnMarkerReachedListener)
+     * The listener the AudioTrack notifies when the playback position reaches a marker
+     * or for periodic updates during the progression of the playback head.
+     *  @see #setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener)
      */
-    private OnMarkerReachedListener mMarkerListener = null;
+    private OnPlaybackPositionUpdateListener mPositionListener = null;
     /**
-     * Lock to protect marker listener updates against event notifications
+     * Lock to protect event listener updates against event notifications
      */
-    private final Object mMarkerListenerLock = new Object();
-    /**
-     * The listener the AudioTrack notifies periodically during playback.
-     *  @see #setPeriodicNotificationListener(OnPeriodicNotificationListener)
-     */
-    private OnPeriodicNotificationListener mPeriodicListener = null;
-    /**
-     * Lock to protect periodic listener updates against event notifications
-     */
-    private final Object mPeriodicListenerLock = new Object();
+    private final Object mPositionListenerLock = new Object();
     /**
      * Size of the native audio buffer.
      */
     private int mNativeBufferSizeInBytes = 0;
     /**
-     * Handler for events coming from the native code
+     * Handler for marker events coming from the native code
      */
-    private NativeEventHandler mNativeEventHandler = null;
+    private NativeEventHandlerDelegate mEventHandlerDelegate = null;
     /**
      * The audio data sampling rate in Hz.
      */
@@ -373,22 +365,6 @@
     }
 
 
-    // Convenience method for the creation of the native event handler
-    // It is called only when a non-null event listener is set.
-    // precondition:
-    //    mNativeEventHandler is null
-    private void createNativeEventHandler() {
-        Looper looper;
-        if ((looper = Looper.myLooper()) != null) {
-            mNativeEventHandler = new NativeEventHandler(this, looper);
-        } else if ((looper = Looper.getMainLooper()) != null) {
-            mNativeEventHandler = new NativeEventHandler(this, looper);
-        } else {
-            mNativeEventHandler = null;
-        }
-    }
-
-
     /**
      * Releases the native AudioTrack resources.
      */
@@ -592,32 +568,27 @@
     // Initialization / configuration
     //--------------------
     /**
-     * Sets the listener the AudioTrack notifies when a previously set marker is reached.
+     * Sets the listener the AudioTrack notifies when a previously set marker is reached or
+     * for each periodic playback head position update.
      * @param listener
      */
-    public void setMarkerReachedListener(OnMarkerReachedListener listener) {
-        synchronized (mMarkerListenerLock) {
-            mMarkerListener = listener;
+    public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener) {
+        setPlaybackPositionUpdateListener(listener, null);
+    }
+    
+
+    public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener, 
+                                                    Handler handler) {
+        synchronized (mPositionListenerLock) {
+            mPositionListener = listener;
         }
-        if ((listener != null) && (mNativeEventHandler == null)) {
-            createNativeEventHandler();
+        if (listener != null) {
+            mEventHandlerDelegate = new NativeEventHandlerDelegate(this, handler);
         }
+        
     }
 
 
-    /**
-     * Sets the listener the AudioTrack notifies periodically during playback.
-     * @param listener
-     */
-    public void setPeriodicNotificationListener(OnPeriodicNotificationListener listener) {
-        synchronized (mPeriodicListenerLock) {
-            mPeriodicListener = listener;
-        }
-        if ((listener != null) && (mNativeEventHandler == null)) {
-            createNativeEventHandler();
-        }
-    }
-
 
      /**
      * Sets the specified left/right output volume values on the AudioTrack. Values are clamped
@@ -895,23 +866,16 @@
     // Interface definitions
     //--------------------
     /**
-     * Interface definition for a callback to be invoked when an AudioTrack has
-     * reached a notification marker set by setNotificationMarkerPosition().
+     * Interface definition for a callback to be invoked when the playback head position of
+     * an AudioTrack has reached a notification marker or has increased by a certain period.
      */
-    public interface OnMarkerReachedListener  {
+    public interface OnPlaybackPositionUpdateListener  {
         /**
          * Called on the listener to notify it that the previously set marker has been reached
          * by the playback head.
          */
         void onMarkerReached(AudioTrack track);
-    }
-
-
-    /**
-     * Interface definition for a callback to be invoked for each periodic AudioTrack
-     * update during playback. The update interval is set by setPositionNotificationPeriod().
-     */
-    public interface OnPeriodicNotificationListener  {
+        
         /**
          * Called on the listener to periodically notify it that the playback head has reached
          * a multiple of the notification period.
@@ -924,42 +888,63 @@
     // Inner classes
     //--------------------
     /**
-     * Helper class to handle the forwarding of native events to the appropriate listeners
-     */
-    private class NativeEventHandler extends Handler
-    {
-        private AudioTrack mAudioTrack;
-
-        public NativeEventHandler(AudioTrack mp, Looper looper) {
-            super(looper);
-            mAudioTrack = mp;
+     * Helper class to handle the forwarding of native events to the appropriate listener
+     * (potentially) handled in a different thread
+     */  
+    private class NativeEventHandlerDelegate {
+        private final AudioTrack mAudioTrack;
+        private final Handler mHandler;
+        
+        NativeEventHandlerDelegate(AudioTrack track, Handler handler) {
+            mAudioTrack = track;
+            // find the looper for our new event handler
+            Looper looper;
+            if (handler != null) {
+                looper = handler.getLooper();
+            } else {
+                // no given handler, look for main looper
+                if ((looper = Looper.myLooper()) == null) {
+                    looper = Looper.getMainLooper();
+                }
+            }
+            // construct the event handler with this looper
+            if (looper != null) {
+                // implement the event handler delegate
+                mHandler = new Handler(looper) {
+                    @Override
+                    public void handleMessage(Message msg) {
+                        if (mAudioTrack == null) {
+                            return;
+                        }
+                        OnPlaybackPositionUpdateListener listener = null;
+                        synchronized (mPositionListenerLock) {
+                            listener = mAudioTrack.mPositionListener;
+                        }
+                        switch(msg.what) {
+                        case NATIVE_EVENT_MARKER:
+                            if (listener != null) {
+                                listener.onMarkerReached(mAudioTrack);
+                            }
+                            break;
+                        case NATIVE_EVENT_NEW_POS:
+                            if (listener != null) {
+                                listener.onPeriodicNotification(mAudioTrack);
+                            }
+                            break;
+                        default:
+                            Log.e(TAG, "[ android.media.AudioTrack.NativeEventHandler ] " +
+                                    "Unknown event type: " + msg.what);
+                            break;
+                        }
+                    }
+                };
+            } else {
+                mHandler = null;
+            } 
         }
-
-        @Override
-        public void handleMessage(Message msg) {
-            if (mAudioTrack == null) {
-                return;
-            }
-            switch(msg.what) {
-            case NATIVE_EVENT_MARKER:
-                synchronized (mMarkerListenerLock) {
-                    if (mAudioTrack.mMarkerListener != null) {
-                        mAudioTrack.mMarkerListener.onMarkerReached(mAudioTrack);
-                    }
-                }
-                break;
-            case NATIVE_EVENT_NEW_POS:
-                synchronized (mPeriodicListenerLock) {
-                    if (mAudioTrack.mPeriodicListener != null) {
-                        mAudioTrack.mPeriodicListener.onPeriodicNotification(mAudioTrack);
-                    }
-                }
-                break;
-            default:
-                Log.e(TAG, "[ android.media.AudioTrack.NativeEventHandler ] " +
-                        "Unknown event type: " + msg.what);
-                break;
-            }
+        
+        Handler getHandler() {
+            return mHandler;
         }
     }
 
@@ -976,9 +961,10 @@
             return;
         }
 
-        if (track.mNativeEventHandler != null) {
-            Message m = track.mNativeEventHandler.obtainMessage(what, arg1, arg2, obj);
-            track.mNativeEventHandler.sendMessage(m);
+        if (track.mEventHandlerDelegate != null) {
+            Message m = 
+                track.mEventHandlerDelegate.getHandler().obtainMessage(what, arg1, arg2, obj);
+            track.mEventHandlerDelegate.getHandler().sendMessage(m);
         }
 
     }
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index 5562254..707db02 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -29,6 +29,7 @@
 #include "jni.h"
 #include "JNIHelp.h"
 #include "android_runtime/AndroidRuntime.h"
+#include "utils/Errors.h"  // for status_t
 
 
 // ----------------------------------------------------------------------------
@@ -171,6 +172,7 @@
         jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
         return;
     }
+    LOGV("setDataSource: path %s", pathStr);
     status_t opStatus = mp->setDataSource(pathStr);
 
     // Make sure that local ref is released before a potential exception
@@ -192,6 +194,7 @@
         return;
     }
     int fd = getParcelFileDescriptorFD(env, fileDescriptor);
+    LOGV("setDataSourceFD: fd %d", fd);
     process_media_player_call( env, thiz, mp->setDataSource(fd, offset, length), "java/io/IOException", "setDataSourceFD failed." );
 }
 
@@ -207,8 +210,8 @@
     jobject surface = env->GetObjectField(thiz, fields.surface);
     if (surface != NULL) {
         const sp<Surface>& native_surface = get_surface(env, surface);
-        //LOGI("prepare: surface=%p (id=%d)", 
-        //        native_surface.get(), native_surface->ID());
+        LOGV("prepare: surface=%p (id=%d)", 
+             native_surface.get(), native_surface->ID());
         mp->setVideoSurface(native_surface);
     }
     process_media_player_call( env, thiz, mp->prepare(), "java/io/IOException", "Prepare failed." );
@@ -225,8 +228,8 @@
     jobject surface = env->GetObjectField(thiz, fields.surface);
     if (surface != NULL) {
         const sp<Surface>& native_surface = get_surface(env, surface);
-        LOGI("prepareAsync: surface=%p (id=%d)", 
-                native_surface.get(), native_surface->ID());
+        LOGV("prepareAsync: surface=%p (id=%d)", 
+             native_surface.get(), native_surface->ID());
         mp->setVideoSurface(native_surface);
     }
     process_media_player_call( env, thiz, mp->prepareAsync(), "java/io/IOException", "Prepare Async failed." );
@@ -235,6 +238,7 @@
 static void
 android_media_MediaPlayer_start(JNIEnv *env, jobject thiz)
 {
+    LOGV("start");
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -246,6 +250,7 @@
 static void
 android_media_MediaPlayer_stop(JNIEnv *env, jobject thiz)
 {
+    LOGV("stop");
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -257,6 +262,7 @@
 static void
 android_media_MediaPlayer_pause(JNIEnv *env, jobject thiz)
 {
+    LOGV("pause");
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -273,7 +279,10 @@
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
         return false;
     }
-    return mp->isPlaying();
+    const jboolean is_playing = mp->isPlaying();
+
+    LOGV("isPlaying: %d", is_playing);
+    return is_playing;
 }
 
 static void
@@ -284,6 +293,7 @@
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
         return;
     }
+    LOGV("seekTo: %d(msec)", msec);
     process_media_player_call( env, thiz, mp->seekTo(msec), NULL, NULL );
 }
 
@@ -296,9 +306,12 @@
         return 0;
     }
     int w;
-    if (0 == mp->getVideoWidth(&w))
-        return w;
-    return 0;
+    if (0 != mp->getVideoWidth(&w)) {
+        LOGE("getVideoWidth failed");
+        w = 0;
+    }
+    LOGV("getVideoWidth: %d", w);
+    return w;
 }
 
 static int
@@ -310,9 +323,12 @@
         return 0;
     }
     int h;
-    if (0 == mp->getVideoHeight(&h))
-        return h;
-    return 0;
+    if (0 != mp->getVideoHeight(&h)) {
+        LOGE("getVideoHeight failed");
+        h = 0;
+    }
+    LOGV("getVideoHeight: %d", h);
+    return h;
 }
 
 
@@ -326,6 +342,7 @@
     }
     int msec;
     process_media_player_call( env, thiz, mp->getCurrentPosition(&msec), NULL, NULL );
+    LOGV("getCurrentPosition: %d (msec)", msec);
     return msec;
 }
 
@@ -339,12 +356,14 @@
     }
     int msec;
     process_media_player_call( env, thiz, mp->getDuration(&msec), NULL, NULL );
+    LOGV("getDuration: %d (msec)", msec);
     return msec;
 }
 
 static void
 android_media_MediaPlayer_reset(JNIEnv *env, jobject thiz)
 {
+    LOGV("reset");
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -356,6 +375,7 @@
 static void
 android_media_MediaPlayer_setAudioStreamType(JNIEnv *env, jobject thiz, int streamtype)
 {
+    LOGV("setAudioStreamType: %d", streamtype);
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -367,6 +387,7 @@
 static void
 android_media_MediaPlayer_setLooping(JNIEnv *env, jobject thiz, jboolean looping)
 {
+    LOGV("setLooping: %d", looping);
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -378,6 +399,7 @@
 static jboolean
 android_media_MediaPlayer_isLooping(JNIEnv *env, jobject thiz)
 {
+    LOGV("isLooping");
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -389,6 +411,7 @@
 static void
 android_media_MediaPlayer_setVolume(JNIEnv *env, jobject thiz, float leftVolume, float rightVolume)
 {
+    LOGV("setVolume: left %f  right %f", leftVolume, rightVolume);
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL ) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -570,4 +593,3 @@
 }
 
 // KTHXBYE
-
diff --git a/media/jni/android_media_MediaRecorder.cpp b/media/jni/android_media_MediaRecorder.cpp
index 44f875c..5f6f754 100644
--- a/media/jni/android_media_MediaRecorder.cpp
+++ b/media/jni/android_media_MediaRecorder.cpp
@@ -313,6 +313,7 @@
     sp<MediaRecorder> mr = setMediaRecorder(env, thiz, 0);
     if (mr != NULL) {
         mr->setListener(NULL);
+        mr->release();
     }
 }
 
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index e79f336..d26b0c5 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -808,7 +808,14 @@
         writtenSize = audioBuffer.size;
 
         // Sanity check on returned size
-        if (ssize_t(writtenSize) <= 0) break;
+        if (ssize_t(writtenSize) <= 0) {
+            // The callback is done filling buffers
+            // Keep this thread going to handle timed events and
+            // still try to get more data in intervals of WAIT_PERIOD_MS
+            // but don't just loop and block the CPU, so wait
+            usleep(WAIT_PERIOD_MS*1000);
+            break;
+        }
         if (writtenSize > reqSize) writtenSize = reqSize;
 
         if (mFormat == AudioSystem::PCM_8_BIT) {
diff --git a/media/libmedia/mediarecorder.cpp b/media/libmedia/mediarecorder.cpp
index 98aac39..5eba0ef 100644
--- a/media/libmedia/mediarecorder.cpp
+++ b/media/libmedia/mediarecorder.cpp
@@ -42,7 +42,7 @@
     if (OK != ret) {
         LOGV("setCamera failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     return ret;
 }
@@ -67,7 +67,7 @@
     if (OK != ret) {
         LOGV("setPreviewSurface failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     return ret;
 }
@@ -88,14 +88,14 @@
     if (OK != ret) {
         LOGV("init failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
 
     ret = mMediaRecorder->setListener(this);
     if (OK != ret) {
         LOGV("setListener failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
 
     mCurrentState = MEDIA_RECORDER_INITIALIZED;
@@ -129,7 +129,7 @@
     if (OK != ret) {
         LOGV("setVideoSource failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mIsVideoSourceSet = true;
     return ret;
@@ -162,7 +162,7 @@
     if (OK != ret) {
         LOGV("setAudioSource failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mIsAudioSourceSet = true;
     return ret;
@@ -188,7 +188,7 @@
     if (OK != ret) {
         LOGE("setOutputFormat failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mCurrentState = MEDIA_RECORDER_DATASOURCE_CONFIGURED;
     return ret;
@@ -218,7 +218,7 @@
     if (OK != ret) {
         LOGV("setVideoEncoder failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mIsVideoEncoderSet = true;
     return ret;
@@ -248,7 +248,7 @@
     if (OK != ret) {
         LOGV("setAudioEncoder failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mIsAudioEncoderSet = true;
     return ret;
@@ -274,7 +274,7 @@
     if (OK != ret) {
         LOGV("setOutputFile failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mIsOutputFileSet = true;
     return ret;
@@ -300,7 +300,7 @@
     if (OK != ret) {
         LOGV("setOutputFile failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mIsOutputFileSet = true;
     return ret;
@@ -326,7 +326,7 @@
     if (OK != ret) {
         LOGE("setVideoSize failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     return ret;
 }
@@ -351,7 +351,7 @@
     if (OK != ret) {
         LOGE("setVideoFrameRate failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     return ret;
 }
@@ -389,7 +389,7 @@
     if (OK != ret) {
         LOGE("prepare failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mCurrentState = MEDIA_RECORDER_PREPARED;
     return ret;
@@ -411,7 +411,7 @@
     if (OK != ret) {
         LOGE("getMaxAmplitude failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     return ret;
 }
@@ -432,7 +432,7 @@
     if (OK != ret) {
         LOGE("start failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mCurrentState = MEDIA_RECORDER_RECORDING;
     return ret;
@@ -454,7 +454,7 @@
     if (OK != ret) {
         LOGE("stop failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     }
     mCurrentState = MEDIA_RECORDER_IDLE;
     return ret;
@@ -522,7 +522,7 @@
     if (OK != ret) {
         LOGE("doReset failed: %d", ret);
         mCurrentState = MEDIA_RECORDER_ERROR;
-        return UNKNOWN_ERROR;
+        return ret;
     } else {
         mCurrentState = MEDIA_RECORDER_INITIALIZED;
     }
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java
index 73688cc..3c449c9 100755
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java
@@ -49,7 +49,7 @@
         suite.addTestSuite(MediaMetadataTest.class);
         suite.addTestSuite(CameraTest.class);
         suite.addTestSuite(MediaRecorderTest.class);
-        //suite.addTestSuite(MediaAudioTrackTest.class);
+        suite.addTestSuite(MediaAudioTrackTest.class);
         return suite;
     }
 
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java
index 59803f7d..c30db38 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CameraTest.java
@@ -100,6 +100,12 @@
      */
     private void terminateMessageLooper() {
         mLooper.quit();
+        //TODO yslau : take out the sleep until bug#1693519 fix
+        try {
+            Thread.sleep(1000);
+        } catch (Exception e){
+            Log.v(TAG, e.toString());
+        }
         mCamera.release();
     }
     
diff --git a/packages/SettingsProvider/etc/favorites.xml b/packages/SettingsProvider/etc/favorites.xml
index 0ecf8a6..ae74b8e 100644
--- a/packages/SettingsProvider/etc/favorites.xml
+++ b/packages/SettingsProvider/etc/favorites.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
+<!-- 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.
@@ -19,4 +19,5 @@
     <favorite package="com.android.contacts" class="com.android.contacts.DialtactsContactsEntryActivity" screen="1" x="1" y="3" />
     <favorite package="com.android.browser" class="com.android.browser.BrowserActivity" screen="1" x="2" y="3" />
     <favorite package="com.google.android.apps.maps" class="com.google.android.maps.MapsActivity" screen="1" x="3" y="3" />
+    <favorite package="com.android.vending" class="com.android.vending.AssetBrowserActivity" screen="1" x="0" y="2" />
 </favorites>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index f8b5700..2f32ab7 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -63,7 +63,7 @@
 
     private static final String TAG = "SettingsProvider";
     private static final String DATABASE_NAME = "settings.db";
-    private static final int DATABASE_VERSION = 33;
+    private static final int DATABASE_VERSION = 34;
     
     private Context mContext;
 
@@ -370,6 +370,18 @@
             }
             upgradeVersion = 33;
         }
+        
+        if (upgradeVersion == 33) {
+            // Set the default zoom controls to: tap-twice to bring up +/-
+            db.beginTransaction();
+            try {
+                db.execSQL("INSERT INTO system(name,value) values('zoom','2');");
+                db.setTransactionSuccessful();
+            } finally {
+                db.endTransaction();
+            }
+            upgradeVersion = 34;
+        }
 
         if (upgradeVersion != currentVersion) {
             Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 4b45828..a254081 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -54,6 +54,7 @@
 import android.os.Message;
 import android.os.Parcel;
 import android.os.RemoteException;
+import android.os.ResultReceiver;
 import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.provider.Settings;
@@ -619,7 +620,7 @@
         }
         if (mShowRequested) {
             if (DEBUG) Log.v(TAG, "Attach new input asks to show input");
-            showCurrentInputLocked(getAppShowFlags());
+            showCurrentInputLocked(getAppShowFlags(), null);
         }
         return needResult
                 ? new InputBindResult(session.session, mCurId, mCurSeq)
@@ -908,7 +909,8 @@
         }
     }
     
-    public void showSoftInput(IInputMethodClient client, int flags) {
+    public boolean showSoftInput(IInputMethodClient client, int flags,
+            ResultReceiver resultReceiver) {
         long ident = Binder.clearCallingIdentity();
         try {
             synchronized (mMethodMap) {
@@ -920,21 +922,22 @@
                         // be made before input is started in it.
                         if (!mIWindowManager.inputMethodClientHasFocus(client)) {
                             Log.w(TAG, "Ignoring showSoftInput of: " + client);
-                            return;
+                            return false;
                         }
                     } catch (RemoteException e) {
+                        return false;
                     }
                 }
     
                 if (DEBUG) Log.v(TAG, "Client requesting input be shown");
-                showCurrentInputLocked(flags);
+                return showCurrentInputLocked(flags, resultReceiver);
             }
         } finally {
             Binder.restoreCallingIdentity(ident);
         }
     }
     
-    void showCurrentInputLocked(int flags) {
+    boolean showCurrentInputLocked(int flags, ResultReceiver resultReceiver) {
         mShowRequested = true;
         if ((flags&InputMethodManager.SHOW_IMPLICIT) == 0) {
             mShowExplicitlyRequested = true;
@@ -943,10 +946,13 @@
             mShowExplicitlyRequested = true;
             mShowForced = true;
         }
+        boolean res = false;
         if (mCurMethod != null) {
-            executeOrSendMessage(mCurMethod, mCaller.obtainMessageIO(
-                    MSG_SHOW_SOFT_INPUT, getImeShowFlags(), mCurMethod));
+            executeOrSendMessage(mCurMethod, mCaller.obtainMessageIOO(
+                    MSG_SHOW_SOFT_INPUT, getImeShowFlags(), mCurMethod,
+                    resultReceiver));
             mInputShown = true;
+            res = true;
         } else if (mHaveConnection && SystemClock.uptimeMillis()
                 < (mLastBindTime+TIME_TO_RECONNECT)) {
             // The client has asked to have the input method shown, but
@@ -958,9 +964,12 @@
             mContext.unbindService(this);
             mContext.bindService(mCurIntent, this, Context.BIND_AUTO_CREATE);
         }
+        
+        return res;
     }
     
-    public void hideSoftInput(IInputMethodClient client, int flags) {
+    public boolean hideSoftInput(IInputMethodClient client, int flags,
+            ResultReceiver resultReceiver) {
         long ident = Binder.clearCallingIdentity();
         try {
             synchronized (mMethodMap) {
@@ -972,40 +981,46 @@
                         // be made before input is started in it.
                         if (!mIWindowManager.inputMethodClientHasFocus(client)) {
                             Log.w(TAG, "Ignoring hideSoftInput of: " + client);
-                            return;
+                            return false;
                         }
                     } catch (RemoteException e) {
+                        return false;
                     }
                 }
     
                 if (DEBUG) Log.v(TAG, "Client requesting input be hidden");
-                hideCurrentInputLocked(flags);
+                return hideCurrentInputLocked(flags, resultReceiver);
             }
         } finally {
             Binder.restoreCallingIdentity(ident);
         }
     }
     
-    void hideCurrentInputLocked(int flags) {
+    boolean hideCurrentInputLocked(int flags, ResultReceiver resultReceiver) {
         if ((flags&InputMethodManager.HIDE_IMPLICIT_ONLY) != 0
                 && (mShowExplicitlyRequested || mShowForced)) {
             if (DEBUG) Log.v(TAG,
                     "Not hiding: explicit show not cancelled by non-explicit hide");
-            return;
+            return false;
         }
         if (mShowForced && (flags&InputMethodManager.HIDE_NOT_ALWAYS) != 0) {
             if (DEBUG) Log.v(TAG,
                     "Not hiding: forced show not cancelled by not-always hide");
-            return;
+            return false;
         }
+        boolean res;
         if (mInputShown && mCurMethod != null) {
-            executeOrSendMessage(mCurMethod, mCaller.obtainMessageO(
-                    MSG_HIDE_SOFT_INPUT, mCurMethod));
+            executeOrSendMessage(mCurMethod, mCaller.obtainMessageOO(
+                    MSG_HIDE_SOFT_INPUT, mCurMethod, resultReceiver));
+            res = true;
+        } else {
+            res = false;
         }
         mInputShown = false;
         mShowRequested = false;
         mShowExplicitlyRequested = false;
         mShowForced = false;
+        return res;
     }
     
     public void windowGainedFocus(IInputMethodClient client,
@@ -1045,7 +1060,7 @@
                                 // be behind any soft input window, so hide the
                                 // soft input window if it is shown.
                                 if (DEBUG) Log.v(TAG, "Unspecified window will hide input");
-                                hideCurrentInputLocked(InputMethodManager.HIDE_NOT_ALWAYS);
+                                hideCurrentInputLocked(InputMethodManager.HIDE_NOT_ALWAYS, null);
                             }
                         } else if (isTextEditor && (softInputMode &
                                 WindowManager.LayoutParams.SOFT_INPUT_MASK_ADJUST)
@@ -1055,7 +1070,7 @@
                             // There is a focus view, and we are navigating forward
                             // into the window, so show the input window for the user.
                             if (DEBUG) Log.v(TAG, "Unspecified window will show input");
-                            showCurrentInputLocked(InputMethodManager.SHOW_IMPLICIT);
+                            showCurrentInputLocked(InputMethodManager.SHOW_IMPLICIT, null);
                         }
                         break;
                     case WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED:
@@ -1065,23 +1080,23 @@
                         if ((softInputMode &
                                 WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) != 0) {
                             if (DEBUG) Log.v(TAG, "Window asks to hide input going forward");
-                            hideCurrentInputLocked(0);
+                            hideCurrentInputLocked(0, null);
                         }
                         break;
                     case WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN:
                         if (DEBUG) Log.v(TAG, "Window asks to hide input");
-                        hideCurrentInputLocked(0);
+                        hideCurrentInputLocked(0, null);
                         break;
                     case WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE:
                         if ((softInputMode &
                                 WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) != 0) {
                             if (DEBUG) Log.v(TAG, "Window asks to show input going forward");
-                            showCurrentInputLocked(InputMethodManager.SHOW_IMPLICIT);
+                            showCurrentInputLocked(InputMethodManager.SHOW_IMPLICIT, null);
                         }
                         break;
                     case WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE:
                         if (DEBUG) Log.v(TAG, "Window asks to always show input");
-                        showCurrentInputLocked(InputMethodManager.SHOW_IMPLICIT);
+                        showCurrentInputLocked(InputMethodManager.SHOW_IMPLICIT, null);
                         break;
                 }
             }
@@ -1131,10 +1146,24 @@
                 Log.w(TAG, "Ignoring hideInputMethod of token: " + token);
                 return;
             }
-
             long ident = Binder.clearCallingIdentity();
             try {
-                hideCurrentInputLocked(flags);
+                hideCurrentInputLocked(flags, null);
+            } finally {
+                Binder.restoreCallingIdentity(ident);
+            }
+        }
+    }
+    
+    public void showMySoftInput(IBinder token, int flags) {
+        synchronized (mMethodMap) {
+            if (token == null || mCurToken != token) {
+                Log.w(TAG, "Ignoring hideInputMethod of token: " + token);
+                return;
+            }
+            long ident = Binder.clearCallingIdentity();
+            try {
+                showCurrentInputLocked(flags, null);
             } finally {
                 Binder.restoreCallingIdentity(ident);
             }
@@ -1185,14 +1214,18 @@
                 }
                 return true;
             case MSG_SHOW_SOFT_INPUT:
+                args = (HandlerCaller.SomeArgs)msg.obj;
                 try {
-                    ((IInputMethod)msg.obj).showSoftInput(msg.arg1);
+                    ((IInputMethod)args.arg1).showSoftInput(msg.arg1,
+                            (ResultReceiver)args.arg2);
                 } catch (RemoteException e) {
                 }
                 return true;
             case MSG_HIDE_SOFT_INPUT:
+                args = (HandlerCaller.SomeArgs)msg.obj;
                 try {
-                    ((IInputMethod)msg.obj).hideSoftInput();
+                    ((IInputMethod)args.arg1).hideSoftInput(0,
+                            (ResultReceiver)args.arg2);
                 } catch (RemoteException e) {
                 }
                 return true;
@@ -1212,7 +1245,6 @@
                 } catch (RemoteException e) {
                 }
                 return true;
-                
             // ---------------------------------------------------------
                 
             case MSG_START_INPUT:
@@ -1486,7 +1518,7 @@
             }
         }
     }
-    
+
     // ----------------------------------------------------------------------
     
     @Override
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index 9d69114..e48e047 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -221,6 +221,9 @@
     // Wifi Manager
     private WifiManager mWifiManager;
 
+    private int mNetworkState = LocationProvider.TEMPORARILY_UNAVAILABLE;
+    private boolean mWifiEnabled = false;
+
     /**
      * A wrapper class holding either an ILocationListener or a PendingIntent to receive
      * location updates.
@@ -597,16 +600,6 @@
 
         // Create a wifi lock for future use
         mWifiLock = getWifiWakelockLocked();
-
-        // There might be an existing wifi scan available
-        if (mWifiManager != null) {
-            List<ScanResult> wifiScanResults = mWifiManager.getScanResults();
-            if (wifiScanResults != null && wifiScanResults.size() != 0) {
-                if (mNetworkLocationInterface != null) {
-                    mNetworkLocationInterface.updateWifiScanResults(wifiScanResults);
-                }
-            }
-        }
     }
 
     public void setInstallCallback(InstallCallback callback) {
@@ -625,6 +618,31 @@
             mNetworkLocationProvider = (LocationProviderImpl)provider;
             LocationProviderImpl.addProvider(mNetworkLocationProvider);
             updateProvidersLocked();
+            
+            // notify NetworkLocationProvider of any events it might have missed
+            synchronized (mLocationListeners) {
+                mNetworkLocationProvider.updateNetworkState(mNetworkState);
+                mNetworkLocationInterface.updateWifiEnabledState(mWifiEnabled);
+                mNetworkLocationInterface.updateCellLockStatus(mCellWakeLockAcquired);
+
+                if (mLastCellState != null) {
+                    if (mCollector != null) {
+                        mCollector.updateCellState(mLastCellState);
+                    }
+                    mNetworkLocationProvider.updateCellState(mLastCellState);
+                }
+
+                // There might be an existing wifi scan available
+                if (mWifiManager != null) {
+                    List<ScanResult> wifiScanResults = mWifiManager.getScanResults();
+                    if (wifiScanResults != null && wifiScanResults.size() != 0) {
+                        mNetworkLocationInterface.updateWifiScanResults(wifiScanResults);
+                        if (mCollector != null) {
+                            mCollector.updateWifiScanResults(wifiScanResults);
+                        }
+                    }
+                }
+            }
         }
     }
 
@@ -1992,12 +2010,12 @@
                 }
 
             } else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
-                int networkState = LocationProvider.TEMPORARILY_UNAVAILABLE;
-
                 boolean noConnectivity =
                     intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
                 if (!noConnectivity) {
-                    networkState = LocationProvider.AVAILABLE;
+                    mNetworkState = LocationProvider.AVAILABLE;
+                } else {
+                    mNetworkState = LocationProvider.TEMPORARILY_UNAVAILABLE;
                 }
 
                 // Notify location providers of current network state
@@ -2005,7 +2023,7 @@
                     List<LocationProviderImpl> providers = LocationProviderImpl.getProviders();
                     for (LocationProviderImpl provider : providers) {
                         if (provider.requiresNetwork()) {
-                            provider.updateNetworkState(networkState);
+                            provider.updateNetworkState(mNetworkState);
                         }
                     }
                 }
@@ -2014,11 +2032,10 @@
                 int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
                     WifiManager.WIFI_STATE_UNKNOWN);
 
-                boolean enabled;
                 if (state == WifiManager.WIFI_STATE_ENABLED) {
-                    enabled = true;
+                    mWifiEnabled = true;
                 } else if (state == WifiManager.WIFI_STATE_DISABLED) {
-                    enabled = false;
+                    mWifiEnabled = false;
                 } else {
                     return;
                 }
@@ -2026,7 +2043,7 @@
                 // Notify network provider of current wifi enabled state
                 synchronized (mLocationListeners) {
                     if (mNetworkLocationInterface != null) {
-                        mNetworkLocationInterface.updateWifiEnabledState(enabled);
+                        mNetworkLocationInterface.updateWifiEnabledState(mWifiEnabled);
                     }
                 }
 
diff --git a/services/java/com/android/server/SensorService.java b/services/java/com/android/server/SensorService.java
index 29b45ab..b2530383f 100644
--- a/services/java/com/android/server/SensorService.java
+++ b/services/java/com/android/server/SensorService.java
@@ -45,7 +45,7 @@
     private static final int SENSOR_DISABLE = -1;
     
     /**
-     * Battery statistics to be updated when sensors are enabled and diabled.
+     * Battery statistics to be updated when sensors are enabled and disabled.
      */
     final IBatteryStats mBatteryStats = BatteryStatsService.getService();
 
@@ -119,7 +119,10 @@
         }
         Binder.restoreCallingIdentity(identity);
 
-        if (binder == null) throw new NullPointerException("listener is null in enableSensor");
+        if (binder == null) {
+            Log.w(TAG, "listener is null (sensor=" + name + ", id=" + sensor + ")");
+            return false;
+        }
 
         synchronized(mListeners) {
             if (enable!=SENSOR_DISABLE && !_sensors_control_activate(sensor, true)) {
@@ -145,7 +148,11 @@
             }
             
             if (l == null) {
-                throw new NullPointerException("no Listener object in enableSensor");
+                // by construction, this means we're disabling a listener we
+                // don't know about...
+                Log.w(TAG, "listener with binder " + binder + 
+                        ", doesn't exist (sensor=" + name + ", id=" + sensor + ")");
+                return false;
             }
             
             if (minDelay >= 0) {
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 21e5ee1..cb16c98 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -2076,6 +2076,7 @@
             int curGroup = 0;
             int lastOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
             boolean haveGroup = false;
+            boolean lastFullscreen = false;
             while (pos >= 0) {
                 AppWindowToken wtoken = mAppTokens.get(pos);
                 pos--;
@@ -2090,16 +2091,19 @@
                 } else if (curGroup != wtoken.groupId) {
                     // If we have hit a new application group, and the bottom
                     // of the previous group didn't explicitly say to use
-                    // the orientation behind it, then we'll stick with the
+                    // the orientation behind it, and the last app was
+                    // full screen, then we'll stick with the
                     // user's orientation.
-                    if (lastOrientation != ActivityInfo.SCREEN_ORIENTATION_BEHIND) {
+                    if (lastOrientation != ActivityInfo.SCREEN_ORIENTATION_BEHIND
+                            && lastFullscreen) {
                         return lastOrientation;
                     }
                 }
                 int or = wtoken.requestedOrientation;
                 // If this application is fullscreen, then just take whatever
                 // orientation it has and ignores whatever is under it.
-                if (wtoken.appFullscreen) {
+                lastFullscreen = wtoken.appFullscreen;
+                if (lastFullscreen) {
                     return or;
                 }
                 // If this application has requested an explicit orientation,
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 141569e..2ede783 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -263,6 +263,11 @@
     final int HIDDEN_APP_MAX_ADJ;
     static int HIDDEN_APP_MIN_ADJ;
 
+    // This is a process holding the home application -- we want to try
+    // avoiding killing it, even if it would normally be in the background,
+    // because the user interacts with it so much.
+    final int HOME_APP_ADJ;
+
     // This is a process holding a secondary server -- killing it will not
     // have much of an impact as far as the user is concerned. Value set in
     // system/rootdir/init.rc on startup.
@@ -290,6 +295,7 @@
     // Corresponding memory levels for above adjustments.
     final int EMPTY_APP_MEM;
     final int HIDDEN_APP_MEM;
+    final int HOME_APP_MEM;
     final int SECONDARY_SERVER_MEM;
     final int VISIBLE_APP_MEM;
     final int FOREGROUND_APP_MEM;
@@ -487,6 +493,12 @@
             = new ArrayList<ProcessRecord>();
 
     /**
+     * This is the process holding what we currently consider to be
+     * the "home" activity.
+     */
+    private ProcessRecord mHomeProcess;
+    
+    /**
      * List of running activities, sorted by recent usage.
      * The first entry in the list is the least recently used.
      * It contains HistoryRecord objects.
@@ -871,6 +883,11 @@
                         Log.e(TAG, "App already has anr dialog: " + proc);
                         return;
                     }
+                    
+                    broadcastIntentLocked(null, null, new Intent("android.intent.action.ANR"),
+                            null, null, 0, null, null, null,
+                            false, false, MY_PID, Process.SYSTEM_UID);
+
                     Dialog d = new AppNotRespondingDialog(ActivityManagerService.this,
                             mContext, proc, (HistoryRecord)data.get("activity"));
                     d.show();
@@ -1267,6 +1284,8 @@
             Integer.valueOf(SystemProperties.get("ro.VISIBLE_APP_ADJ"));
         SECONDARY_SERVER_ADJ =
             Integer.valueOf(SystemProperties.get("ro.SECONDARY_SERVER_ADJ"));
+        HOME_APP_ADJ =
+            Integer.valueOf(SystemProperties.get("ro.HOME_APP_ADJ"));
         HIDDEN_APP_MIN_ADJ =
             Integer.valueOf(SystemProperties.get("ro.HIDDEN_APP_MIN_ADJ"));
         CONTENT_PROVIDER_ADJ =
@@ -1280,6 +1299,8 @@
             Integer.valueOf(SystemProperties.get("ro.VISIBLE_APP_MEM"))*PAGE_SIZE;
         SECONDARY_SERVER_MEM =
             Integer.valueOf(SystemProperties.get("ro.SECONDARY_SERVER_MEM"))*PAGE_SIZE;
+        HOME_APP_MEM =
+            Integer.valueOf(SystemProperties.get("ro.HOME_APP_MEM"))*PAGE_SIZE;
         HIDDEN_APP_MEM =
             Integer.valueOf(SystemProperties.get("ro.HIDDEN_APP_MEM"))*PAGE_SIZE;
         EMPTY_APP_MEM =
@@ -1548,6 +1569,9 @@
                         System.identityHashCode(r),
                         r.task.taskId, r.shortComponentName);
             }
+            if (r.isHomeActivity) {
+                mHomeProcess = app;
+            }
             app.thread.scheduleLaunchActivity(new Intent(r.intent), r,
                     r.info, r.icicle, results, newIntents, !andResume,
                     isNextTransitionForward());
@@ -2188,7 +2212,7 @@
                 if (app == null || app.instrumentationClass == null) {
                     intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
                     startActivityLocked(null, intent, null, null, 0, aInfo,
-                            null, null, 0, 0, 0, false);
+                            null, null, 0, 0, 0, false, false);
                 }
             }
             return true;
@@ -2669,7 +2693,8 @@
             Uri[] grantedUriPermissions,
             int grantedMode, ActivityInfo aInfo, IBinder resultTo,
             String resultWho, int requestCode,
-            int callingPid, int callingUid, boolean onlyIfNeeded) {
+            int callingPid, int callingUid, boolean onlyIfNeeded,
+            boolean componentSpecified) {
         Log.i(TAG, "Starting activity: " + intent);
 
         HistoryRecord sourceRecord = null;
@@ -2784,7 +2809,7 @@
 
         HistoryRecord r = new HistoryRecord(this, callerApp, callingUid,
                 intent, resolvedType, aInfo, mConfiguration,
-                resultRecord, resultWho, requestCode);
+                resultRecord, resultWho, requestCode, componentSpecified);
         r.startTime = SystemClock.uptimeMillis();
 
         HistoryRecord notTop = (launchFlags&Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP)
@@ -3118,6 +3143,8 @@
             throw new IllegalArgumentException("File descriptors passed in Intent");
         }
 
+        final boolean componentSpecified = intent.getComponent() != null;
+        
         // Don't modify the client's object!
         intent = new Intent(intent);
 
@@ -3157,7 +3184,7 @@
             int res = startActivityLocked(caller, intent, resolvedType,
                     grantedUriPermissions, grantedMode, aInfo,
                     resultTo, resultWho, requestCode, -1, -1,
-                    onlyIfNeeded);
+                    onlyIfNeeded, componentSpecified);
             Binder.restoreCallingIdentity(origId);
             return res;
         }
@@ -3247,7 +3274,7 @@
             // those are not yet exposed to user code, so there is no need.
             int res = startActivityLocked(r.app.thread, intent,
                     r.resolvedType, null, 0, aInfo, resultTo, resultWho,
-                    requestCode, -1, r.launchedFromUid, false);
+                    requestCode, -1, r.launchedFromUid, false, false);
             Binder.restoreCallingIdentity(origId);
 
             r.finishing = wasFinishing;
@@ -3261,6 +3288,8 @@
     final int startActivityInPackage(int uid,
             Intent intent, String resolvedType, IBinder resultTo,
             String resultWho, int requestCode, boolean onlyIfNeeded) {
+        final boolean componentSpecified = intent.getComponent() != null;
+        
         // Don't modify the client's object!
         intent = new Intent(intent);
 
@@ -3291,7 +3320,7 @@
         synchronized(this) {
             return startActivityLocked(null, intent, resolvedType,
                     null, 0, aInfo, resultTo, resultWho, requestCode, -1, uid,
-                    onlyIfNeeded);
+                    onlyIfNeeded, componentSpecified);
         }
     }
 
@@ -5678,9 +5707,9 @@
 
     public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) {
         outInfo.availMem = Process.getFreeMemory();
-        outInfo.threshold = SECONDARY_SERVER_MEM;
+        outInfo.threshold = HOME_APP_MEM;
         outInfo.lowMemory = outInfo.availMem <
-                (SECONDARY_SERVER_MEM + ((HIDDEN_APP_MEM-SECONDARY_SERVER_MEM)/2));
+                (HOME_APP_MEM + ((HIDDEN_APP_MEM-HOME_APP_MEM)/2));
     }
     
     // =========================================================
@@ -7798,7 +7827,10 @@
                         currApp.importance = ActivityManager.RunningAppProcessInfo.IMPORTANCE_EMPTY;
                     } else if (adj >= HIDDEN_APP_MIN_ADJ) {
                         currApp.importance = ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND;
-                        currApp.lru = adj - HIDDEN_APP_MIN_ADJ;
+                        currApp.lru = adj - HIDDEN_APP_MIN_ADJ + 1;
+                    } else if (adj >= HOME_APP_ADJ) {
+                        currApp.importance = ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND;
+                        currApp.lru = 0;
                     } else if (adj >= SECONDARY_SERVER_ADJ) {
                         currApp.importance = ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE;
                     } else if (adj >= VISIBLE_APP_ADJ) {
@@ -7997,6 +8029,7 @@
 
             pw.println(" ");
             pw.println("  Total persistent processes: " + numPers);
+            pw.println("  mHomeProcess: " + mHomeProcess);
             pw.println("  mConfiguration: " + mConfiguration);
             pw.println("  mStartRunning=" + mStartRunning
                     + " mSystemReady=" + mSystemReady
@@ -8680,6 +8713,10 @@
         }
         mProcessesOnHold.remove(app);
 
+        if (app == mHomeProcess) {
+            mHomeProcess = null;
+        }
+        
         if (restart) {
             // We have components that still need to be running in the
             // process, so re-launch it.
@@ -11185,9 +11222,8 @@
 
         app.isForeground = false;
 
-        // Right now there are three interesting states: it is
-        // either the foreground app, background with activities,
-        // or background without activities.
+        // Determine the importance of the process, starting with most
+        // important to least, and assign an appropriate OOM adjustment.
         int adj;
         int N;
         if (app == TOP_APP || app.instrumentationClass != null
@@ -11207,6 +11243,10 @@
         } else if (app.foregroundServices || app.forcingToForeground != null) {
             // The user is aware of this app, so make it visible.
             adj = VISIBLE_APP_ADJ;
+        } else if (app == mHomeProcess) {
+            // This process is hosting what we currently consider to be the
+            // home app, so we don't want to let it go into the background.
+            adj = HOME_APP_ADJ;
         } else if ((N=app.activities.size()) != 0) {
             // This app is in the background with paused activities.
             adj = hiddenAdj;
@@ -11222,7 +11262,7 @@
             adj = EMPTY_APP_ADJ;
         }
 
-        // By default, we use the computed adjusted.  It may be changed if
+        // By default, we use the computed adjustment.  It may be changed if
         // there are applications dependent on our services or providers, but
         // this gives us a baseline and makes sure we don't get into an
         // infinite recursion.
diff --git a/services/java/com/android/server/am/HistoryRecord.java b/services/java/com/android/server/am/HistoryRecord.java
index b407208..0f62471 100644
--- a/services/java/com/android/server/am/HistoryRecord.java
+++ b/services/java/com/android/server/am/HistoryRecord.java
@@ -55,6 +55,8 @@
     final String taskAffinity; // as per ActivityInfo.taskAffinity
     final boolean stateNotNeeded; // As per ActivityInfo.flags
     final boolean fullscreen;     // covers the full screen?
+    final boolean componentSpecified;  // did caller specifiy an explicit component?
+    final boolean isHomeActivity; // do we consider this to be a home activity?
     final String baseDir;   // where activity source (resources etc) located
     final String resDir;   // where public activity source (public resources etc) located
     final String dataDir;   // where activity data should go
@@ -102,8 +104,8 @@
         pw.println(prefix + this);
         pw.println(prefix + "packageName=" + packageName
               + " processName=" + processName);
-        pw.println(prefix + "app=" + app);
-        pw.println(prefix + "launchedFromUid=" + launchedFromUid);
+        pw.println(prefix + "launchedFromUid=" + launchedFromUid
+                + " app=" + app);
         pw.println(prefix + intent);
         pw.println(prefix + "frontOfTask=" + frontOfTask + " task=" + task);
         pw.println(prefix + "taskAffinity=" + taskAffinity);
@@ -112,6 +114,9 @@
         pw.println(prefix + "labelRes=0x" + Integer.toHexString(labelRes)
                 + " icon=0x" + Integer.toHexString(icon)
                 + " theme=0x" + Integer.toHexString(theme));
+        pw.println(prefix + "stateNotNeeded=" + stateNotNeeded
+                + " componentSpecified=" + componentSpecified
+                + " isHomeActivity=" + isHomeActivity);
         pw.println(prefix + "configuration=" + configuration);
         pw.println(prefix + "resultTo=" + resultTo
               + " resultWho=" + resultWho + " resultCode=" + requestCode);
@@ -140,13 +145,15 @@
     HistoryRecord(ActivityManagerService _service, ProcessRecord _caller,
             int _launchedFromUid, Intent _intent, String _resolvedType,
             ActivityInfo aInfo, Configuration _configuration,
-            HistoryRecord _resultTo, String _resultWho, int _reqCode) {
+            HistoryRecord _resultTo, String _resultWho, int _reqCode,
+            boolean _componentSpecified) {
         service = _service;
         info = aInfo;
         launchedFromUid = _launchedFromUid;
         intent = _intent;
         shortComponentName = _intent.getComponent().flattenToShortString();
         resolvedType = _resolvedType;
+        componentSpecified = _componentSpecified;
         configuration = _configuration;
         resultTo = _resultTo;
         resultWho = _resultWho;
@@ -216,6 +223,29 @@
                     && !ent.array.getBoolean(
                     com.android.internal.R.styleable.Window_windowIsTranslucent, false);
             
+            if (!_componentSpecified || _launchedFromUid == Process.myUid()
+                    || _launchedFromUid == 0) {
+                // If we know the system has determined the component, then
+                // we can consider this to be a home activity...
+                if (Intent.ACTION_MAIN.equals(_intent.getAction()) &&
+                        _intent.hasCategory(Intent.CATEGORY_HOME) &&
+                        _intent.getCategories().size() == 1 &&
+                        _intent.getData() == null &&
+                        _intent.getType() == null &&
+                        (intent.getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) != 0 &&
+                        !"android".equals(realActivity.getClassName())) {
+                    // This sure looks like a home activity!
+                    // Note the last check is so we don't count the resolver
+                    // activity as being home...  really, we don't care about
+                    // doing anything special with something that comes from
+                    // the core framework package.
+                    isHomeActivity = true;
+                } else {
+                    isHomeActivity = false;
+                }
+            } else {
+                isHomeActivity = false;
+            }
         } else {
             realActivity = null;
             taskAffinity = null;
@@ -226,6 +256,7 @@
             processName = null;
             packageName = null;
             fullscreen = true;
+            isHomeActivity = false;
         }
     }
 
diff --git a/telephony/java/com/android/internal/telephony/Connection.java b/telephony/java/com/android/internal/telephony/Connection.java
index d53d4ab..d833810 100644
--- a/telephony/java/com/android/internal/telephony/Connection.java
+++ b/telephony/java/com/android/internal/telephony/Connection.java
@@ -37,7 +37,10 @@
         OUT_OF_SERVICE,     /* out of service */
         SIM_ERROR,          /* No SIM, SIM locked, or other SIM error */
         CALL_BARRED,        /* call was blocked by call barrring */
-        FDN_BLOCKED         /* call was blocked by fixed dial number */
+        FDN_BLOCKED,        /* call was blocked by fixed dial number */
+        CS_RESTRICTED,      /* call was blocked by restricted all voice access */
+        CS_RESTRICTED_NORMAL,/* call was blocked by restricted normal voice access */
+        CS_RESTRICTED_EMERGENCY/* call was blocked by restricted emergency voice access */
     }
 
     Object userData;
diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java
index 9a36bc1..adc8bc1 100644
--- a/telephony/java/com/android/internal/telephony/Phone.java
+++ b/telephony/java/com/android/internal/telephony/Phone.java
@@ -138,8 +138,10 @@
     static final String REASON_PDP_RESET = "pdpReset";
     static final String REASON_VOICE_CALL_ENDED = "2GVoiceCallEnded";
     static final String REASON_VOICE_CALL_STARTED = "2GVoiceCallStarted";
-
-    // Used for band mode selction methods
+    static final String REASON_PS_RESTRICT_ENABLED = "psRestrictEnabled";
+    static final String REASON_PS_RESTRICT_DISABLED = "psRestrictDisabled";
+    
+    // Used for band mode selection methods
     static final int BM_UNSPECIFIED = 0; // selected by baseband automatically
     static final int BM_EURO_BAND   = 1; // GSM-900 / DCS-1800 / WCDMA-IMT-2000
     static final int BM_US_BAND     = 2; // GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900
diff --git a/telephony/java/com/android/internal/telephony/gsm/BaseCommands.java b/telephony/java/com/android/internal/telephony/gsm/BaseCommands.java
index 58a5bba..8e14b43 100644
--- a/telephony/java/com/android/internal/telephony/gsm/BaseCommands.java
+++ b/telephony/java/com/android/internal/telephony/gsm/BaseCommands.java
@@ -67,6 +67,8 @@
     protected Registrant mSimRefreshRegistrant;
     /** Registrant for handling RING notifications */
     protected Registrant mRingRegistrant;
+    /** Registrant for handling RESTRICTED STATE changed notification */
+    protected Registrant mRestrictedStateRegistrant;
 
     public BaseCommands(Context context) {
         mContext = context;  // May be null (if so we won't log statistics)
@@ -279,6 +281,12 @@
         mRingRegistrant = new Registrant (h, what, obj);
     }
     
+    public void
+    setOnRestrictedStateChanged(Handler h, int what, Object obj)
+    {
+        mRestrictedStateRegistrant = new Registrant (h, what, obj);
+    }
+    
     //***** Protected Methods
     /**
      * Store new RadioState and send notification based on the changes
diff --git a/telephony/java/com/android/internal/telephony/gsm/CommandsInterface.java b/telephony/java/com/android/internal/telephony/gsm/CommandsInterface.java
index c7b08d2..7915798 100644
--- a/telephony/java/com/android/internal/telephony/gsm/CommandsInterface.java
+++ b/telephony/java/com/android/internal/telephony/gsm/CommandsInterface.java
@@ -283,6 +283,17 @@
     void setOnCallRing(Handler h, int what, Object obj);
     
     /**
+     * Sets the handler for RESTRICTED_STATE changed notification, 
+     * eg, for Domain Specific Access Control
+     * unlike the register* methods, there's only one signal strength handler
+     * 
+     * AsyncResult.result is an int[1]     
+     * response.obj.result[0] is a bitmask of RIL_RESTRICTED_STATE_* values 
+     */
+
+    void setOnRestrictedStateChanged(Handler h, int what, Object obj);
+    
+    /**
      * Sets the handler for Supplementary Service Notifications.
      * Unlike the register* methods, there's only one notification handler
      *
diff --git a/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java
index 4769cd1..e664bc7 100644
--- a/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java
@@ -172,11 +172,14 @@
 
     private boolean[] dataEnabled = new boolean[APN_NUM_TYPES];
 
-    // wifi connection status will be updated by sticky intent
+    /** wifi connection status will be updated by sticky intent */
     private boolean mIsWifiConnected = false;
 
     /** Intent sent when the reconnect alarm fires. */
     private PendingIntent mReconnectIntent = null;
+    
+    /** Is packet service restricted by network */
+    private boolean mIsPsRestricted = false;
 
     //***** Constants
 
@@ -249,6 +252,8 @@
     static final int EVENT_START_NETSTAT_POLL = 27;
     static final int EVENT_START_RECOVERY = 28;
     static final int EVENT_APN_CHANGED = 29;
+    static final int EVENT_PS_RESTRICT_ENABLED = 30;
+    static final int EVENT_PS_RESTRICT_DISABLED = 31;
 
     BroadcastReceiver mIntentReceiver = new BroadcastReceiver ()
     {
@@ -307,6 +312,8 @@
         phone.mSST.registerForGprsDetached(this, EVENT_GPRS_DETACHED, null);
         phone.mSST.registerForRoamingOn(this, EVENT_ROAMING_ON, null);
         phone.mSST.registerForRoamingOff(this, EVENT_ROAMING_OFF, null);
+        phone.mSST.registerForPsRestrictedEnabled(this, EVENT_PS_RESTRICT_ENABLED, null);
+        phone.mSST.registerForPsRestrictedDisabled(this, EVENT_PS_RESTRICT_DISABLED, null);
 
         this.netstat = INetStatService.Stub.asInterface(ServiceManager.getService("netstat"));
 
@@ -474,6 +481,7 @@
      *  2. registered to gprs service
      *  3. user doesn't explicitly disable data service
      *  4. wifi is not on
+     *  5. packet service is not restricted
      *
      * @return false while no data connection if all above requirements are met.
      */
@@ -483,7 +491,8 @@
         if (phone.mSIMRecords.getRecordsLoaded() &&
             phone.mSST.getCurrentGprsState() == ServiceState.STATE_IN_SERVICE &&
             (!roaming || getDataOnRoamingEnabled()) &&
-            !mIsWifiConnected ) {
+            !mIsWifiConnected && 
+            !mIsPsRestricted ) {
             return (state == State.CONNECTED);
         }
         return true;
@@ -650,6 +659,8 @@
     {
         if (DBG) log("***trySetupData due to " + (reason == null ? "(unspecified)" : reason));
 
+        Log.d(LOG_TAG, "[DSAC DEB] " + "trySetupData with mIsPsRestricted=" + mIsPsRestricted);
+        
         if (phone.getSimulatedRadioControl() != null) {
             // Assume data is connected on the simulator
             // FIXME  this can be improved
@@ -668,7 +679,8 @@
                 && phone.mSIMRecords.getRecordsLoaded()
                 && ( phone.mSST.isConcurrentVoiceAndData() ||
                      phone.getState() == Phone.State.IDLE )
-                && isDataAllowed()) {
+                && isDataAllowed()
+                && !mIsPsRestricted ) {
 
             if (state == State.IDLE) {
                 waitingApns = buildWaitingApns();
@@ -695,7 +707,8 @@
                     " phoneState=" + phone.getState() +
                     " dataEnabled=" + getAnyDataEnabled() +
                     " roaming=" + roaming +
-                    " dataOnRoamingEnable=" + getDataOnRoamingEnabled());
+                    " dataOnRoamingEnable=" + getDataOnRoamingEnabled() +
+                    " ps restricted=" + mIsPsRestricted);
             return false;
         }
     }
@@ -1279,7 +1292,8 @@
         boolean retry = true;
         
         if ( Phone.REASON_RADIO_TURNED_OFF.equals(reason) ||
-             Phone.REASON_DATA_DISABLED.equals(reason) ) { 
+             Phone.REASON_DATA_DISABLED.equals(reason)    ||
+             Phone.REASON_PS_RESTRICT_ENABLED.equals(reason)) { 
             retry = false;
         }
         return retry;
@@ -1571,6 +1585,37 @@
             case EVENT_APN_CHANGED:
                 onApnChanged();
                 break;
+            
+            case EVENT_PS_RESTRICT_ENABLED:
+                /**
+                 * We don't need to explicitly to tear down the PDP context
+                 * when PS restricted is enabled. The base band will deactive
+                 * PDP context and notify us with PDP_CONTEXT_CHANGED.
+                 * But we should stop the network polling and prevent reset PDP.
+                 */
+                Log.d(LOG_TAG, "[DSAC DEB] " + "EVENT_PS_RESTRICT_ENABLED " + mIsPsRestricted); 
+                stopNetStatPoll();
+                mIsPsRestricted = true; 
+                break;
+                
+            case EVENT_PS_RESTRICT_DISABLED:
+                /**
+                 * When PS restrict is removed, we need setup PDP connection if
+                 * PDP connection is down.
+                 */
+                Log.d(LOG_TAG, "[DSAC DEB] " + "EVENT_PS_RESTRICT_DISABLED " + mIsPsRestricted);
+                mIsPsRestricted  = false;
+                if (state == State.CONNECTED) {
+                    startNetStatPoll();
+                } else {
+                    if (state == State.FAILED) {
+                        cleanUpConnection(false, Phone.REASON_PS_RESTRICT_ENABLED);
+                        nextReconnectDelay = RECONNECT_DELAY_INITIAL_MILLIS;
+                    }
+                    trySetupData(Phone.REASON_PS_RESTRICT_ENABLED);
+                }
+                break;
+             
         }
     }
 
diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMConnection.java b/telephony/java/com/android/internal/telephony/gsm/GSMConnection.java
index a503766..70e9f62 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GSMConnection.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GSMConnection.java
@@ -390,6 +390,16 @@
                     return DisconnectCause.OUT_OF_SERVICE;
                 } else if (phone.getSimCard().getState() != GsmSimCard.State.READY) {
                     return DisconnectCause.SIM_ERROR;
+                } else if (causeCode == CallFailCause.ERROR_UNSPECIFIED) {
+                    if (phone.mSST.rs.isCsRestricted()) {
+                        return DisconnectCause.CS_RESTRICTED; 
+                    } else if (phone.mSST.rs.isCsEmergencyRestricted()) {
+                        return DisconnectCause.CS_RESTRICTED_EMERGENCY;
+                    } else if (phone.mSST.rs.isCsNormalRestricted()) {
+                        return DisconnectCause.CS_RESTRICTED_NORMAL;
+                    } else {
+                        return DisconnectCause.NORMAL;
+                    }
                 } else {
                     return DisconnectCause.NORMAL;
                 }
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSimCard.java b/telephony/java/com/android/internal/telephony/gsm/GsmSimCard.java
index 0859806..a4cded9 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmSimCard.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmSimCard.java
@@ -258,7 +258,7 @@
     }
 
     public String getServiceProviderName () {
-        return phone.mSIMRecords.getServiceProvideName();
+        return phone.mSIMRecords.getServiceProviderName();
     }
 
     //***** Handler implementation
diff --git a/telephony/java/com/android/internal/telephony/gsm/RIL.java b/telephony/java/com/android/internal/telephony/gsm/RIL.java
index 45000ba..7622560 100644
--- a/telephony/java/com/android/internal/telephony/gsm/RIL.java
+++ b/telephony/java/com/android/internal/telephony/gsm/RIL.java
@@ -1970,6 +1970,7 @@
             case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret =  responseVoid(p); break;
             case RIL_UNSOL_SIM_REFRESH: ret =  responseInts(p); break;
             case RIL_UNSOL_CALL_RING: ret =  responseVoid(p); break;
+            case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break;
             default: 
                 throw new RuntimeException("Unrecognized unsol response: " + response); 
             //break; (implied)
@@ -2160,6 +2161,13 @@
                     mRingRegistrant.notifyRegistrant();
                 }
                 break;
+                
+            case RIL_UNSOL_RESTRICTED_STATE_CHANGED:
+                if (RILJ_LOGD) unsljLogvRet(response, ret);
+                if (mRestrictedStateRegistrant != null) {
+                    mRestrictedStateRegistrant.notifyRegistrant(
+                                        new AsyncResult (null, ret, null));
+                }
         }
     }
 
@@ -2543,6 +2551,7 @@
             case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL";
             case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH";
             case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING";
+            case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "RIL_UNSOL_RESTRICTED_STATE_CHANGED";
             default: return "<unknown reponse>";
         }
     }
diff --git a/telephony/java/com/android/internal/telephony/gsm/RILConstants.java b/telephony/java/com/android/internal/telephony/gsm/RILConstants.java
index 0a8e192..4463b20 100644
--- a/telephony/java/com/android/internal/telephony/gsm/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/gsm/RILConstants.java
@@ -51,6 +51,32 @@
     int RIL_SIM_PIN = 3;
     int RIL_SIM_PUK = 4;
     int RIL_SIM_NETWORK_PERSONALIZATION = 5;
+    
+    /** 
+     * No restriction at all including voice/SMS/USSD/SS/AV64 
+     * and packet data.
+     */   
+    int RIL_RESTRICTED_STATE_NONE = 0x00;    
+    /** 
+     * Block emergency call due to restriction. 
+     * But allow all normal voice/SMS/USSD/SS/AV64. 
+     */
+    int RIL_RESTRICTED_STATE_CS_EMERGENCY = 0x01;
+    /** 
+     * Block all normal voice/SMS/USSD/SS/AV64 due to restriction. 
+     * Only Emergency call allowed. 
+     */
+    int RIL_RESTRICTED_STATE_CS_NORMAL = 0x02;
+    /** 
+     * Block all voice/SMS/USSD/SS/AV64 
+     * including emergency call due to restriction.
+     */
+    int RIL_RESTRICTED_STATE_CS_ALL = 0x04;
+    /** 
+     * Block packet data access due to restriction. 
+     */  
+    int RIL_RESTRICTED_STATE_PS_ALL = 0x10;
+    
     int RIL_REQUEST_GET_SIM_STATUS = 1;
     int RIL_REQUEST_ENTER_SIM_PIN = 2;
     int RIL_REQUEST_ENTER_SIM_PUK = 3;
@@ -147,4 +173,5 @@
     int RIL_UNSOL_SIM_SMS_STORAGE_FULL = 1016;
     int RIL_UNSOL_SIM_REFRESH = 1017;
     int RIL_UNSOL_CALL_RING = 1018;
+    int RIL_UNSOL_RESTRICTED_STATE_CHANGED = 1023;
 }
diff --git a/telephony/java/com/android/internal/telephony/gsm/RestrictedState.java b/telephony/java/com/android/internal/telephony/gsm/RestrictedState.java
new file mode 100644
index 0000000..d17f134
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/gsm/RestrictedState.java
@@ -0,0 +1,122 @@
+/*
+ * 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.internal.telephony.gsm;
+
+import android.telephony.ServiceState;
+
+public class RestrictedState {
+    
+    /**
+     * Set true to block packet data access due to restriction
+     */
+    private boolean mPsRestricted;
+    /**
+     * Set true to block all normal voice/SMS/USSD/SS/AV64 due to restriction
+     */
+    private boolean mCsNormalRestricted;
+    /**
+     * Set true to block emergency call due to restriction
+     */
+    private boolean mCsEmergencyRestricted;
+    
+    public RestrictedState() {
+        setPsRestricted(false);
+        setCsNormalRestricted(false);
+        setCsEmergencyRestricted(false);
+    }
+
+    /**
+     * @param csEmergencyRestricted the csEmergencyRestricted to set
+     */
+    public void setCsEmergencyRestricted(boolean csEmergencyRestricted) {
+        mCsEmergencyRestricted = csEmergencyRestricted;
+    }
+
+    /**
+     * @return the csEmergencyRestricted
+     */
+    public boolean isCsEmergencyRestricted() {
+        return mCsEmergencyRestricted;
+    }
+
+    /**
+     * @param csNormalRestricted the csNormalRestricted to set
+     */
+    public void setCsNormalRestricted(boolean csNormalRestricted) {
+        mCsNormalRestricted = csNormalRestricted;
+    }
+
+    /**
+     * @return the csNormalRestricted
+     */
+    public boolean isCsNormalRestricted() {
+        return mCsNormalRestricted;
+    }
+
+    /**
+     * @param psRestricted the psRestricted to set
+     */
+    public void setPsRestricted(boolean psRestricted) {
+        mPsRestricted = psRestricted;
+    }
+
+    /**
+     * @return the psRestricted
+     */
+    public boolean isPsRestricted() {
+        return mPsRestricted;
+    }
+    
+    public boolean isCsRestricted() {
+        return mCsNormalRestricted && mCsEmergencyRestricted;
+    }
+    
+    @Override
+    public boolean equals (Object o) {
+        RestrictedState s;
+
+        try {
+            s = (RestrictedState) o;
+        } catch (ClassCastException ex) {
+            return false;
+        }
+
+        if (o == null) {
+            return false;
+        }
+
+        return mPsRestricted == s.mPsRestricted
+        && mCsNormalRestricted == s.mCsNormalRestricted
+        && mCsEmergencyRestricted == s.mCsEmergencyRestricted;
+    }
+
+    @Override
+    public String toString() {
+        String csString = "none";
+        
+        if (mCsEmergencyRestricted && mCsNormalRestricted) {
+            csString = "all";
+        } else if (mCsEmergencyRestricted && !mCsNormalRestricted) {
+            csString = "emergency";
+        } else if (!mCsEmergencyRestricted && mCsNormalRestricted) {
+            csString = "normal call";
+        }
+        
+        return  "Restricted State CS: " + csString + " PS:" + mPsRestricted;
+    }
+
+}
diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
index 22bd6e2..a62f6cf 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
@@ -56,6 +56,7 @@
     AdnRecordCache adnCache;
 
     VoiceMailConstants mVmConfig;
+    SpnOverride mSpnOverride;
     
     //***** Cached SIM State; cleared on channel close
 
@@ -167,6 +168,7 @@
         adnCache = new AdnRecordCache(phone);
 
         mVmConfig = new VoiceMailConstants();
+        mSpnOverride = new SpnOverride();
 
         recordsRequested = false;  // No load request is made till SIM ready
 
@@ -202,7 +204,6 @@
         spnDisplayCondition = -1;
         efMWIS = null;
         efCPHS_MWI = null; 
-        spn = null;
         spdiNetworks = null;
         pnnHomeName = null;
 
@@ -284,7 +285,7 @@
      * Return Service Provider Name stored in SIM
      * @return null if SIM is not yet ready
      */
-    public String getServiceProvideName()
+    String getServiceProviderName()
     {
         return spn;
     }
@@ -1257,10 +1258,11 @@
     {
         Log.d(LOG_TAG, "SIMRecords: record load complete");
 
+        String operator = getSIMOperatorNumeric();
+
         // Some fields require more than one SIM record to set
 
-        phone.setSystemProperty(PROPERTY_SIM_OPERATOR_NUMERIC, 
-                                getSIMOperatorNumeric());
+        phone.setSystemProperty(PROPERTY_SIM_OPERATOR_NUMERIC, operator);
 
         if (imsi != null) {
             phone.setSystemProperty(PROPERTY_SIM_OPERATOR_ISO_COUNTRY,
@@ -1271,7 +1273,8 @@
             Log.e("SIM", "[SIMRecords] onAllRecordsLoaded: imsi is NULL!");
         }
 
-        setVoiceMailByCountry(getSIMOperatorNumeric());
+        setVoiceMailByCountry(operator);
+        setSpnFromConfig(operator);
 
         recordsLoadedRegistrants.notifyRegistrants(
             new AsyncResult(null, null, null));
@@ -1279,6 +1282,12 @@
                 SimCard.INTENT_VALUE_SIM_LOADED, null);
     }
 
+    private void setSpnFromConfig(String carrier) {
+        if (mSpnOverride.containsCarrier(carrier)) {
+            spn = mSpnOverride.getSpn(carrier);
+        }
+    }
+
     private void setVoiceMailByCountry (String spn) {
         if (mVmConfig.containsCarrier(spn)) {
             isVoiceMailFixed = true;
diff --git a/telephony/java/com/android/internal/telephony/gsm/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/SMSDispatcher.java
index 6eea1d4..877b734 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SMSDispatcher.java
@@ -471,35 +471,50 @@
         SmsHeader header = sms.getUserDataHeader();
         if (header != null) {
             for (SmsHeader.Element element : header.getElements()) {
-                switch (element.getID()) {
-                case SmsHeader.CONCATENATED_8_BIT_REFERENCE: {
-                    byte[] data = element.getData();
-
-                    referenceNumber = data[0] & 0xff;
-                    count = data[1] & 0xff;
-                    sequence = data[2] & 0xff;
-
-                    break;
-                }
-
-                case SmsHeader.CONCATENATED_16_BIT_REFERENCE: {
-                    byte[] data = element.getData();
-
-                    referenceNumber = (data[0] & 0xff) * 256 + (data[1] & 0xff);
-                    count = data[2] & 0xff;
-                    sequence = data[3] & 0xff;
-
-                    break;
-                }
-
-                case SmsHeader.APPLICATION_PORT_ADDRESSING_16_BIT: {
-                    byte[] data = element.getData();
-
-                    destPort = (data[0] & 0xff) << 8;
-                    destPort |= (data[1] & 0xff);
-
-                    break;
-                }
+                try {
+                    switch (element.getID()) {
+                        case SmsHeader.CONCATENATED_8_BIT_REFERENCE: {
+                            byte[] data = element.getData();
+                            
+                            referenceNumber = data[0] & 0xff;
+                            count = data[1] & 0xff;
+                            sequence = data[2] & 0xff;
+                            
+                            // Per TS 23.040, 9.2.3.24.1: If the count is zero, sequence
+                            // is zero, or sequence > count, ignore the entire element
+                            if (count == 0 || sequence == 0 || sequence > count) {
+                                referenceNumber = -1;
+                            }
+                            break;
+                        }
+                        
+                        case SmsHeader.CONCATENATED_16_BIT_REFERENCE: {
+                            byte[] data = element.getData();
+                            
+                            referenceNumber = (data[0] & 0xff) * 256 + (data[1] & 0xff);
+                            count = data[2] & 0xff;
+                            sequence = data[3] & 0xff;
+                            
+                            // Per TS 23.040, 9.2.3.24.8: If the count is zero, sequence
+                            // is zero, or sequence > count, ignore the entire element
+                            if (count == 0 || sequence == 0 || sequence > count) {
+                                referenceNumber = -1;
+                            }
+                            break;
+                        }
+                        
+                        case SmsHeader.APPLICATION_PORT_ADDRESSING_16_BIT: {
+                            byte[] data = element.getData();
+                            
+                            destPort = (data[0] & 0xff) << 8;
+                            destPort |= (data[1] & 0xff);
+                            
+                            break;
+                        }
+                    }
+                } catch (ArrayIndexOutOfBoundsException e) {
+                    Log.e(TAG, "Bad element in header", e);
+                    return;  // TODO: NACK the message or something, don't just discard.
                 }
             }
         }
diff --git a/telephony/java/com/android/internal/telephony/gsm/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/ServiceStateTracker.java
index 995173b..7152f76 100644
--- a/telephony/java/com/android/internal/telephony/gsm/ServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/ServiceStateTracker.java
@@ -23,11 +23,15 @@
 import static com.android.internal.telephony.TelephonyProperties.PROPERTY_OPERATOR_NUMERIC;
 import static com.android.internal.telephony.TelephonyProperties.PROPERTY_SIM_OPERATOR_ALPHA;
 import static com.android.internal.telephony.TelephonyProperties.PROPERTY_SIM_OPERATOR_NUMERIC;
+
 import com.android.internal.telephony.TelephonyIntents;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.gsm.DataConnectionTracker.State;
 
 import android.app.AlarmManager;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
@@ -87,6 +91,7 @@
     GsmCellLocation cellLoc;
     GsmCellLocation newCellLoc;
     int mPreferredNetworkType;
+    RestrictedState rs;
 
     int rssi = 99;     // signal strength 0-31, 99=unknown
                        // That's "received signal strength indication" fyi
@@ -119,6 +124,9 @@
     private RegistrantList gprsDetachedRegistrants = new RegistrantList();
     private RegistrantList roamingOnRegistrants = new RegistrantList();
     private RegistrantList roamingOffRegistrants = new RegistrantList();
+    private RegistrantList psRestrictEnabledRegistrants = new RegistrantList();
+    private RegistrantList psRestrictDisabledRegistrants = new RegistrantList();
+    
 
     // Sometimes we get the NITZ time before we know what country we are in.
     // Keep the time zone information from the NITZ string so we can fix
@@ -141,6 +149,11 @@
     private boolean mStartedGprsRegCheck = false;
     // Already sent the event-log for no gprs register
     private boolean mReportedGprsNoReg = false;
+    
+    /**
+     * The Notification object given to the NotificationManager.
+     */
+    private Notification mNotification;
 
     // Wake lock used while setting time of day.
     private PowerManager.WakeLock mWakeLock;
@@ -162,6 +175,17 @@
     // waiting period before recheck gprs and voice registration
     static final int DEFAULT_GPRS_CHECK_PERIOD_MILLIS = 60 * 1000;
 
+    // notification type
+    static final int PS_ENABLED = 1001;             // Access Control blocks data service
+    static final int PS_DISABLED = 1002;            // Access Control enables data service
+    static final int CS_ENABLED = 1003;             // Access Control blocks all voice/sms service
+    static final int CS_DISABLED = 1004;            // Access Control enables all voice/sms service
+    static final int CS_NORMAL_ENABLED = 1005;      // Access Control blocks normal voice/sms service
+    static final int CS_NORMAL_DISABLED = 1006;     // Access Control enables normal voice/sms service
+    static final int CS_EMERGENCY_ENABLED = 1007;   // Access Control blocks emergency call service
+    static final int CS_EMERGENCY_DISABLED  = 1008; // Access Control enables emergency call service       
+    
+    
     //***** Events
     static final int EVENT_RADIO_STATE_CHANGED       = 1;
     static final int EVENT_NETWORK_STATE_CHANGED        = 2;
@@ -182,6 +206,7 @@
     static final int EVENT_SET_PREFERRED_NETWORK_TYPE = 20;
     static final int EVENT_RESET_PREFERRED_NETWORK_TYPE = 21;
     static final int EVENT_CHECK_REPORT_GPRS = 22;
+    static final int EVENT_RESTRICTED_STATE_CHANGED = 23;
 
   //***** Time Zones
 
@@ -221,8 +246,7 @@
             revertToNitz();
         }
     };
-
-
+    
     //***** Constructors
 
     ServiceStateTracker(GSMPhone phone)
@@ -233,6 +257,7 @@
         newSS = new ServiceState();
         cellLoc = new GsmCellLocation();
         newCellLoc = new GsmCellLocation();
+        rs = new RestrictedState();
 
         PowerManager powerManager =
                 (PowerManager)phone.getContext().getSystemService(Context.POWER_SERVICE);
@@ -244,7 +269,7 @@
         cm.registerForNetworkStateChanged(this, EVENT_NETWORK_STATE_CHANGED, null);
         cm.setOnNITZTime(this, EVENT_NITZ_TIME, null);
         cm.setOnSignalStrengthUpdate(this, EVENT_SIGNAL_STRENGTH_UPDATE, null);
-
+        cm.setOnRestrictedStateChanged(this, EVENT_RESTRICTED_STATE_CHANGED, null);       
         cm.registerForSIMReady(this, EVENT_SIM_READY, null);
 
         // system setting property AIRPLANE_MODE_ON is set in Settings.
@@ -267,8 +292,7 @@
      * @param what what code of message when delivered
      * @param obj placed in Message.obj
      */
-    /*protected*/ void
-    registerForGprsAttached(Handler h, int what, Object obj) {
+    /*protected*/ void registerForGprsAttached(Handler h, int what, Object obj) {
         Registrant r = new Registrant(h, what, obj);
         gprsAttachedRegistrants.add(r);
 
@@ -291,8 +315,7 @@
      * @param what what code of message when delivered
      * @param obj placed in Message.obj
      */
-    /*protected*/  void
-    registerForGprsDetached(Handler h, int what, Object obj) {
+    /*protected*/ void registerForGprsDetached(Handler h, int what, Object obj) {
         Registrant r = new Registrant(h, what, obj);
         gprsDetachedRegistrants.add(r);
 
@@ -349,6 +372,38 @@
                 obtainMessage(EVENT_GET_PREFERRED_NETWORK_TYPE, onComplete));
     }
 
+    /**
+     * Registration point for transition into packet service restricted zone.
+     * @param h handler to notify
+     * @param what what code of message when delivered
+     * @param obj placed in Message.obj
+     */
+    void registerForPsRestrictedEnabled(Handler h, int what, Object obj) {
+        Log.d(LOG_TAG, "[DSAC DEB] " + "registerForPsRestrictedEnabled "); 
+        Registrant r = new Registrant(h, what, obj);
+        psRestrictEnabledRegistrants.add(r);
+
+        if (rs.isPsRestricted()) {
+            r.notifyRegistrant();
+        }
+    }
+    
+    /**
+     * Registration point for transition out of packet service restricted zone.
+     * @param h handler to notify
+     * @param what what code of message when delivered
+     * @param obj placed in Message.obj
+     */
+    void registerForPsRestrictedDisabled(Handler h, int what, Object obj) {
+        Log.d(LOG_TAG, "[DSAC DEB] " + "registerForPsRestrictedDisabled "); 
+        Registrant r = new Registrant(h, what, obj);
+        psRestrictDisabledRegistrants.add(r);
+
+        if (rs.isPsRestricted()) {
+            r.notifyRegistrant();
+        }
+    }
+    
     //***** Called from GSMPhone
 
     public void
@@ -561,6 +616,17 @@
                 }
                 mStartedGprsRegCheck = false;
                 break;
+                
+            case EVENT_RESTRICTED_STATE_CHANGED:
+                // This is a notification from
+                // CommandsInterface.setOnRestrictedStateChanged
+
+                Log.d(LOG_TAG, "[DSAC DEB] " + "EVENT_RESTRICTED_STATE_CHANGED");
+                
+                ar = (AsyncResult) msg.obj;
+
+                onRestrictedStateChanged(ar);
+                break;
 
         }
     }
@@ -569,7 +635,7 @@
 
     private void updateSpnDisplay() {
         int rule = phone.mSIMRecords.getDisplayRule(ss.getOperatorNumeric());
-        String spn = phone.mSIMRecords.getServiceProvideName();
+        String spn = phone.mSIMRecords.getServiceProviderName();
         String plmn = ss.getOperatorAlphaLong();
 
         if (rule != curSpnRule
@@ -1111,6 +1177,63 @@
             phone.notifySignalStrength();
         }
     }
+    
+    /**
+     * Set restricted state based on the OnRestrictedStateChanged notification
+     * If any voice or packet restricted state changes, trigger a UI
+     * notification and notify registrants.
+     * @param ar an int value of RIL_RESTRICTED_STATE_*
+     */
+    private void onRestrictedStateChanged(AsyncResult ar)
+    {
+        Log.d(LOG_TAG, "[DSAC DEB] " + "onRestrictedStateChanged");
+        RestrictedState newRs = new RestrictedState();
+ 
+        Log.d(LOG_TAG, "[DSAC DEB] " + "current rs at enter "+ rs);
+        
+        if (ar.exception == null) {
+            int[] ints = (int[])ar.result;
+            int state = ints[0];
+            
+            newRs.setCsEmergencyRestricted(
+                    ((state & RILConstants.RIL_RESTRICTED_STATE_CS_EMERGENCY) != 0) ||
+                    ((state & RILConstants.RIL_RESTRICTED_STATE_CS_ALL) != 0) );
+            newRs.setCsNormalRestricted(
+                    ((state & RILConstants.RIL_RESTRICTED_STATE_CS_NORMAL) != 0) ||
+                    ((state & RILConstants.RIL_RESTRICTED_STATE_CS_ALL) != 0) );
+            newRs.setPsRestricted(
+                    (state & RILConstants.RIL_RESTRICTED_STATE_PS_ALL)!= 0);
+            
+            Log.d(LOG_TAG, "[DSAC DEB] " + "new rs "+ newRs);         
+            
+            if (!rs.isPsRestricted() && newRs.isPsRestricted()) {
+                psRestrictEnabledRegistrants.notifyRegistrants();
+                setNotification(PS_ENABLED, false);
+            } else if (rs.isPsRestricted() && !newRs.isPsRestricted()) {
+                psRestrictDisabledRegistrants.notifyRegistrants();
+                setNotification(PS_DISABLED, false);
+            }
+            
+            if (!rs.isCsRestricted() && newRs.isCsRestricted()) {
+                setNotification(CS_ENABLED, false);
+            } else if (rs.isCsRestricted() && !newRs.isCsRestricted()) {
+                setNotification(CS_DISABLED, false);
+            } else {
+                if (!rs.isCsEmergencyRestricted() && newRs.isCsEmergencyRestricted()) {
+                    setNotification(CS_EMERGENCY_ENABLED, false); 
+                } else if (rs.isCsEmergencyRestricted() && !newRs.isCsEmergencyRestricted()) {
+                    setNotification(CS_EMERGENCY_DISABLED, false); 
+                }
+                if (!rs.isCsNormalRestricted() && newRs.isCsNormalRestricted()) {
+                    setNotification(CS_NORMAL_ENABLED, false); 
+                } else if (rs.isCsEmergencyRestricted() && !newRs.isCsEmergencyRestricted()) {
+                    setNotification(CS_NORMAL_DISABLED, false); 
+                }
+            }
+            rs = newRs;
+        }
+        Log.d(LOG_TAG, "[DSAC DEB] " + "current rs at return "+ rs);
+    }
 
     /** code is registration state 0-5 from TS 27.007 7.2 */
     private int
@@ -1465,4 +1588,72 @@
                     + (SystemClock.elapsedRealtime() - mSavedAtTime));
         }
     }
+    
+    /**
+     * Post a notification to NotificationManager for restricted state
+     * 
+     * @param notifyType is one state of PS/CS_*_ENABLE/DISABLE
+     * @param isCancel true to cancel the previous posted notification 
+     *                 (current is not implemented yet)
+     */
+    private void setNotification(int notifyType, boolean isCancel) {
+
+        Log.d(LOG_TAG, "[DSAC DEB] " + "create notification " + notifyType);
+        mNotification = new Notification();
+        mNotification.when = System.currentTimeMillis();
+        mNotification.flags = Notification.FLAG_AUTO_CANCEL;
+        mNotification.icon = com.android.internal.R.drawable.icon_highlight_square;
+        Intent intent = new Intent();
+        mNotification.contentIntent = PendingIntent
+        .getActivity(phone.getContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
+
+        // TODO 
+        // should use getResources().getText(com.android.internal.R.)
+        CharSequence title = "Restricted State Changed";
+        CharSequence details = "";
+        switch (notifyType) {
+        case PS_ENABLED:
+            details = "Access Control blocks data service.";
+            break;
+        case PS_DISABLED:
+            details = "Access Control enables data service.";
+            break;
+        case CS_ENABLED:
+            details = "Access Control blocks all voice/sms service.";
+            break;   
+        case CS_DISABLED:
+            details = "Access Control enables all voice/sms service.";
+            break;  
+        case CS_NORMAL_ENABLED:
+            details = "Access Control blocks normal voice/sms service.";
+            break;   
+        case CS_NORMAL_DISABLED:
+            details = "Access Control enables normal voice/sms service.";
+            break; 
+        case CS_EMERGENCY_ENABLED:
+            details = "Access Control blocks emergency call service.";
+            break;   
+        case CS_EMERGENCY_DISABLED:
+            details = "Access Control enables emergency call service.";
+            break;  
+        }
+        
+        Log.d(LOG_TAG, "[DSAC DEB] " + "put notification " + title + " / " +details);
+        mNotification.tickerText = title;
+        mNotification.setLatestEventInfo(phone.getContext(), title, details, 
+                mNotification.contentIntent);
+        
+        NotificationManager notificationManager = (NotificationManager) 
+            phone.getContext().getSystemService(Context.NOTIFICATION_SERVICE);
+
+        if (isCancel) {
+            // TODO
+            //if we go the notification route, probably want to only put up a single
+            //notification if both CS+PS is restricted, instead of one for each.nnnnn
+            //Anyway, need UX team input on UI.
+            //notificationManager.cancel(notifyType);
+        }
+        notificationManager.notify(notifyType, mNotification);
+    }
+
 }
diff --git a/telephony/java/com/android/internal/telephony/gsm/SpnOverride.java b/telephony/java/com/android/internal/telephony/gsm/SpnOverride.java
new file mode 100644
index 0000000..9ea30101
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/gsm/SpnOverride.java
@@ -0,0 +1,78 @@
+package com.android.internal.telephony.gsm;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import android.os.Environment;
+import android.util.Log;
+import android.util.Xml;
+
+import com.android.internal.util.XmlUtils;
+
+public class SpnOverride {
+    private HashMap<String, String> CarrierSpnMap;
+
+
+    static final String LOG_TAG = "GSM";
+    static final String PARTNER_SPN_OVERRIDE_PATH ="etc/spn-conf.xml";
+
+    SpnOverride () {
+        CarrierSpnMap = new HashMap<String, String>();
+        loadSpnOverrides();
+    }
+
+    boolean containsCarrier(String carrier) {
+        return CarrierSpnMap.containsKey(carrier);
+    }
+
+    String getSpn(String carrier) {
+        return CarrierSpnMap.get(carrier);
+    }
+
+    private void loadSpnOverrides() {
+        FileReader spnReader;
+
+        final File spnFile = new File(Environment.getRootDirectory(),
+                PARTNER_SPN_OVERRIDE_PATH);
+
+        try {
+            spnReader = new FileReader(spnFile);
+        } catch (FileNotFoundException e) {
+            Log.w(LOG_TAG, "Can't open " +
+                    Environment.getRootDirectory() + "/" + PARTNER_SPN_OVERRIDE_PATH);
+            return;
+        }
+
+        try {
+            XmlPullParser parser = Xml.newPullParser();
+            parser.setInput(spnReader);
+
+            XmlUtils.beginDocument(parser, "spnOverrides");
+
+            while (true) {
+                XmlUtils.nextElement(parser);
+
+                String name = parser.getName();
+                if (!"spnOverride".equals(name)) {
+                    break;
+                }
+
+                String numeric = parser.getAttributeValue(null, "numeric");
+                String data    = parser.getAttributeValue(null, "spn");
+
+                CarrierSpnMap.put(numeric, data);
+            }
+        } catch (XmlPullParserException e) {
+            Log.w(LOG_TAG, "Exception in spn-conf parser " + e);
+        } catch (IOException e) {
+            Log.w(LOG_TAG, "Exception in spn-conf parser " + e);
+        }
+    }
+
+}
diff --git a/tests/CoreTests/android/webkit/UrlInterceptRegistryTest.java b/tests/CoreTests/android/webkit/UrlInterceptRegistryTest.java
new file mode 100644
index 0000000..7504449
--- /dev/null
+++ b/tests/CoreTests/android/webkit/UrlInterceptRegistryTest.java
@@ -0,0 +1,88 @@
+/*
+ * 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 android.webkit;
+
+import android.test.AndroidTestCase;
+import android.util.Log;
+import android.webkit.CacheManager.CacheResult;
+import android.webkit.PluginData;
+import android.webkit.UrlInterceptHandler;
+
+import java.util.LinkedList;
+import java.util.Map;
+
+public class UrlInterceptRegistryTest extends AndroidTestCase {
+
+    /**
+     * To run these tests: $ mmm
+     * frameworks/base/tests/CoreTests/android && adb remount && adb
+     * sync $ adb shell am instrument -w  -e class \
+     * android.webkit.UrlInterceptRegistryTest \
+     * android.core/android.test.InstrumentationTestRunner
+     */
+
+    private static class MockUrlInterceptHandler implements UrlInterceptHandler {
+        private PluginData mData;
+        private String mUrl;
+
+        public MockUrlInterceptHandler(PluginData data, String url) {
+            mData = data;
+            mUrl = url;
+        }
+
+        public CacheResult service(String url, Map<String, String> headers) {
+            return null;
+        }
+
+        public PluginData getPluginData(String url,
+                                        Map<String,
+                                        String> headers) {
+            if (mUrl.equals(url)) {
+                return mData;
+            }
+
+            return null;
+        }
+    }
+
+    public void testGetPluginData() {
+        PluginData data = new PluginData(null, 0 , null, 200);
+        String url = new String("url1");
+        MockUrlInterceptHandler handler1 =
+                new MockUrlInterceptHandler(data, url);
+
+        data = new PluginData(null, 0 , null, 404);
+        url = new String("url2");
+        MockUrlInterceptHandler handler2 =
+                new MockUrlInterceptHandler(data, url);
+
+        assertTrue(UrlInterceptRegistry.registerHandler(handler1));
+        assertTrue(UrlInterceptRegistry.registerHandler(handler2));
+
+        data = UrlInterceptRegistry.getPluginData("url1", null);
+        assertTrue(data != null);
+        assertTrue(data.getStatusCode() == 200);
+
+        data = UrlInterceptRegistry.getPluginData("url2", null);
+        assertTrue(data != null);
+        assertTrue(data.getStatusCode() == 404);
+
+        assertTrue(UrlInterceptRegistry.unregisterHandler(handler1));
+        assertTrue(UrlInterceptRegistry.unregisterHandler(handler2));
+
+    }
+}
diff --git a/tests/DumpRenderTree/results/layout_tests_crashed.txt b/tests/DumpRenderTree/results/layout_tests_crashed.txt
index 1859f07..5a38ed8 100644
--- a/tests/DumpRenderTree/results/layout_tests_crashed.txt
+++ b/tests/DumpRenderTree/results/layout_tests_crashed.txt
@@ -1,2 +1 @@
-/sdcard/android/layout_tests/fast/js/regexp-charclass-crash.html
-/sdcard/android/layout_tests/fast/canvas/gradient-add-second-start-end-stop.html
+/sdcard/android/layout_tests/fast/js/regexp-charclass-crash.html
\ No newline at end of file
diff --git a/tests/DumpRenderTree/results/layout_tests_failed.txt b/tests/DumpRenderTree/results/layout_tests_failed.txt
index 5a20b52..3cec40d 100644
--- a/tests/DumpRenderTree/results/layout_tests_failed.txt
+++ b/tests/DumpRenderTree/results/layout_tests_failed.txt
@@ -1,283 +1,280 @@
-/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/image-map-bug16782.html :  different length
 /sdcard/android/layout_tests/fast/replaced/table-percent-height.html :  different length
 /sdcard/android/layout_tests/fast/replaced/image-map.html :  different length
-/sdcard/android/layout_tests/fast/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/dynamic/paused-event-dispatch.html :   @offset: 117
+/sdcard/android/layout_tests/fast/text/plain-text-line-breaks.html :  different length
+/sdcard/android/layout_tests/fast/text/zero-width-characters.html :  different length
+/sdcard/android/layout_tests/fast/text/reset-drag-on-mouse-down.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/encoding/invalid-xml.html :  different length
+/sdcard/android/layout_tests/fast/encoding/char-decoding-mac.html :  different length
+/sdcard/android/layout_tests/fast/encoding/frame-default-enc.html :   @offset: 0
+/sdcard/android/layout_tests/fast/encoding/mailto-always-utf-8.html :  different length
+/sdcard/android/layout_tests/fast/encoding/char-decoding.html :  different length
+/sdcard/android/layout_tests/fast/encoding/url-host-name-non-ascii.html :  different length
+/sdcard/android/layout_tests/fast/encoding/idn-security.html :  different length
+/sdcard/android/layout_tests/fast/encoding/percent-escaping.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/encoding/xml-utf-8-default.xml :  different length
+/sdcard/android/layout_tests/fast/encoding/char-encoding-mac.html :  different length
+/sdcard/android/layout_tests/fast/encoding/charset-koi8-u.html :   @offset: 147
+/sdcard/android/layout_tests/fast/encoding/preload-encoding.html :  different length
+/sdcard/android/layout_tests/fast/workers/worker-location.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/workers/worker-constructor.html :  different length
+/sdcard/android/layout_tests/fast/workers/worker-terminate.html :  different length
+/sdcard/android/layout_tests/fast/workers/worker-gc.html :  different length
+/sdcard/android/layout_tests/fast/workers/worker-navigator.html :  different length
+/sdcard/android/layout_tests/fast/workers/worker-replace-global-constructor.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/workers/worker-replace-self.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/workers/worker-event-listener.html : TIMEDOUT
 /sdcard/android/layout_tests/fast/overflow/scroll-vertical-not-horizontal.html :  different length
-/sdcard/android/layout_tests/fast/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/offsetX-offsetY.html :  different length
+/sdcard/android/layout_tests/fast/events/scroll-event-does-not-bubble.html :  different length
 /sdcard/android/layout_tests/fast/events/mouseover-mouseout.html :  different length
-/sdcard/android/layout_tests/fast/events/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/option-tab.html :  different length
+/sdcard/android/layout_tests/fast/events/popup-blocking-click-in-iframe.html :  different length
+/sdcard/android/layout_tests/fast/events/onchange-passwordfield.html :  different length
 /sdcard/android/layout_tests/fast/events/drag-in-frames.html :  different length
-/sdcard/android/layout_tests/fast/events/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/frame-tab-focus.html :  different length
 /sdcard/android/layout_tests/fast/events/autoscroll-in-textfield.html :  different length
 /sdcard/android/layout_tests/fast/events/arrow-navigation.html :  different length
-/sdcard/android/layout_tests/fast/events/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/fire-scroll-event.html :  different length
+/sdcard/android/layout_tests/fast/events/mouseclick-target-and-positioning.html :  different length
+/sdcard/android/layout_tests/fast/events/keydown-keypress-focus-change.html :   @offset: 172
+/sdcard/android/layout_tests/fast/events/input-image-scrolled-x-y.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/dblclick-addEventListener.html :  different length
+/sdcard/android/layout_tests/fast/events/frame-programmatic-focus.html :  different length
+/sdcard/android/layout_tests/fast/events/related-target.html :  different length
+/sdcard/android/layout_tests/fast/events/content-changed-during-drop.html :  different length
+/sdcard/android/layout_tests/fast/events/onload-fires-twice.html :  different length
+/sdcard/android/layout_tests/fast/events/autoscroll-with-non-scrollable-parent.html :  different length
+/sdcard/android/layout_tests/fast/events/window-events-capture.html :  different length
+/sdcard/android/layout_tests/fast/events/onchange-click-hang.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/onload-webkit-before-webcore.html :   @offset: 105
+/sdcard/android/layout_tests/fast/events/window-events-bubble2.html :  different length
+/sdcard/android/layout_tests/fast/events/js-keyboard-event-creation.html :  different length
+/sdcard/android/layout_tests/fast/events/event-view-toString.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/onchange-select-popup.html :  different length
 /sdcard/android/layout_tests/fast/events/access-key-self-destruct.html :  different length
-/sdcard/android/layout_tests/fast/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/events/scrollbar-double-click.html :  different length
+/sdcard/android/layout_tests/fast/events/onunload-clears-onbeforeunload.html :  different length
+/sdcard/android/layout_tests/fast/events/tabindex-focus-chain.html :   @offset: 0
+/sdcard/android/layout_tests/fast/events/capture-on-target.html :  different length
+/sdcard/android/layout_tests/fast/events/window-events-bubble.html :  different length
+/sdcard/android/layout_tests/fast/events/mouseup-from-button2.html :  different length
+/sdcard/android/layout_tests/fast/events/frame-click-focus.html :  different length
+/sdcard/android/layout_tests/fast/events/mouseout-on-window.html :  different length
+/sdcard/android/layout_tests/fast/events/keypress-insert-tab.html :   @offset: 85
+/sdcard/android/layout_tests/fast/events/mouseout-dead-subframe.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/events/iframe-object-onload.html :  different length
+/sdcard/android/layout_tests/fast/events/onunload-not-on-body.html :  different length
+/sdcard/android/layout_tests/fast/events/mousemove-after-drag-over-scrollbar.html :  different length
+/sdcard/android/layout_tests/fast/events/contextmenu-scrolled-page-with-frame.html :  different length
+/sdcard/android/layout_tests/fast/events/key-events-in-input-button.html :  different length
+/sdcard/android/layout_tests/fast/events/arrow-keys-on-body.html :  different length
+/sdcard/android/layout_tests/fast/events/ondragenter.html :  different length
+/sdcard/android/layout_tests/fast/events/scroll-to-anchor-in-overflow-hidden.html :  different length
+/sdcard/android/layout_tests/fast/events/autoscroll-nonscrollable-iframe-in-scrollable-div.html :  different length
+/sdcard/android/layout_tests/fast/events/keypress-focus-change.html :  different length
+/sdcard/android/layout_tests/fast/events/key-events-in-input-text.html :  different length
+/sdcard/android/layout_tests/fast/events/drag-outside-window.html :   @offset: 20
+/sdcard/android/layout_tests/fast/events/selectstart-during-autoscroll.html :  different length
+/sdcard/android/layout_tests/fast/events/click-count.html :  different length
+/sdcard/android/layout_tests/fast/events/onchange-searchfield.html :  different length
+/sdcard/android/layout_tests/fast/events/special-key-events-in-input-text.html :  different length
+/sdcard/android/layout_tests/fast/events/keydown-keypress-preventDefault.html :   @offset: 228
+/sdcard/android/layout_tests/fast/events/mouse-click-events.html :  different length
+/sdcard/android/layout_tests/fast/events/onsearch-enter.html :  different length
+/sdcard/android/layout_tests/fast/events/mouseover-mouseout2.html :  different length
+/sdcard/android/layout_tests/fast/events/open-window-from-another-frame.html :  different length
+/sdcard/android/layout_tests/fast/events/init-events.html :  different length
+/sdcard/android/layout_tests/fast/events/onchange-textfield.html :  different length
+/sdcard/android/layout_tests/fast/events/onclick-list-marker.html :  different length
+/sdcard/android/layout_tests/fast/events/anchor-image-scrolled-x-y.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/html/tab-order.html :   @offset: 246
+/sdcard/android/layout_tests/fast/js/exception-sequencing-binops.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/recursion-limit-equal.html :  different length
+/sdcard/android/layout_tests/fast/js/exception-sequencing-binops2.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/math-transforms.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/try-catch-crash.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/navigator-mimeTypes-length.html :  different length
+/sdcard/android/layout_tests/fast/js/global-constructors.html :  different length
+/sdcard/android/layout_tests/fast/js/uncaught-exception-line-number.html :  different length
+/sdcard/android/layout_tests/fast/js/exceptions-thrown-in-callbacks.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/toString-and-valueOf-override.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/exception-sequencing.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/js/exception-codegen-crash.html :  different length
 /sdcard/android/layout_tests/fast/dom/HTMLDocument/activeElement.html :  different length
-/sdcard/android/layout_tests/fast/dom/getElementsByClassName/011.xml :  different length
-/sdcard/android/layout_tests/fast/dom/getElementsByClassName/010.xml :  different length
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/hasFocus.html :  different length
+/sdcard/android/layout_tests/fast/dom/HTMLSelectElement/listbox-select-reset.html :  different length
 /sdcard/android/layout_tests/fast/dom/Element/offsetLeft-offsetTop-body-quirk.html :  different length
 /sdcard/android/layout_tests/fast/dom/DOMException/XPathException.html :  different length
-/sdcard/android/layout_tests/fast/dom/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/getElementsByClassName/010.xml :  different length
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/011.xml :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-resize-and-move-arguments.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-function-name-getter-precedence.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-xy-properties.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/console-functions.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-screen-properties.html :   @offset: 65
+/sdcard/android/layout_tests/fast/dom/Window/window-properties.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/Window/window-onFocus.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/new-window-opener.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/Window/window-open-pending-url.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/setting-properties-on-closed-window.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/Window/dom-access-from-closure-window.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-resize.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-custom-prototype.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/dom-access-from-closure-iframe.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/Plug-ins.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/get-set-properties.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-scroll-arguments.html :  different length
+/sdcard/android/layout_tests/fast/dom/Window/window-early-properties.html :  different length
+/sdcard/android/layout_tests/fast/dom/StyleSheet/ownerNode-lifetime-2.html :  different length
+/sdcard/android/layout_tests/fast/dom/dom-constructors.html :  different length
 /sdcard/android/layout_tests/fast/dom/assign-to-window-status.html :  different length
+/sdcard/android/layout_tests/fast/dom/gc-8.html :  different length
+/sdcard/android/layout_tests/fast/dom/object-embed-plugin-scripting.html :  different length
+/sdcard/android/layout_tests/fast/dom/gc-9.html :  different length
+/sdcard/android/layout_tests/fast/dom/NamedNodeMap-setNamedItem-crash.html :  different length
+/sdcard/android/layout_tests/fast/dom/wrapper-classes.html :  different length
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex.html :  different length
+/sdcard/android/layout_tests/fast/dom/document-width-height-force-layout.html :   @offset: 142
+/sdcard/android/layout_tests/fast/dom/client-width-height.html :   @offset: 119
+/sdcard/android/layout_tests/fast/dom/clone-node-form-elements-with-attr.html :  different length
+/sdcard/android/layout_tests/fast/dom/dom-add-optionelement.html :  different length
+/sdcard/android/layout_tests/fast/dom/location-assign.html :  different length
+/sdcard/android/layout_tests/fast/dom/javascript-backslash.html :  different length
+/sdcard/android/layout_tests/fast/dom/global-constructors.html :  different length
+/sdcard/android/layout_tests/fast/dom/client-width-height-quirks.html :   @offset: 115
+/sdcard/android/layout_tests/fast/dom/javascript-url-crash-function.html :  different length
+/sdcard/android/layout_tests/fast/dom/location-hash.html :  different length
+/sdcard/android/layout_tests/fast/dom/constructors-cached.html :  different length
+/sdcard/android/layout_tests/fast/dom/documenturi-can-hold-arbitrary-string.html :  different length
+/sdcard/android/layout_tests/fast/dom/documenturi-not-affected-by-base-tag.html :  different length
+/sdcard/android/layout_tests/fast/dom/open-and-close-by-DOM.html :  different length
+/sdcard/android/layout_tests/fast/dom/document_write_params.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/tabindex-clamp.html :  different length
+/sdcard/android/layout_tests/fast/dom/constructors-cached-navigate.html :  different length
+/sdcard/android/layout_tests/fast/dom/frame-loading-via-document-write.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/dom/ImageDocument-image-deletion.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-text-plain.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/advanced-get.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-text-plain-latin-1.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-multipart-form-data.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii-always-utf-8.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/post-append-query.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items-x-www-form-urlencoded.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-overwrite-query.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-x-www-form-urlencoded.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-multiple-items-text-plain.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/post-multiple-items-text-plain.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/get-non-ascii.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/post-text-plain-with-accept-charset.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/post-text-plain.html :  different length
+/sdcard/android/layout_tests/fast/forms/mailto/advanced-put.html :  different length
+/sdcard/android/layout_tests/fast/forms/listbox-typeahead-scroll.html :  different length
+/sdcard/android/layout_tests/fast/forms/select-empty-list.html :  different length
+/sdcard/android/layout_tests/fast/forms/select-accesskey.html :  different length
+/sdcard/android/layout_tests/fast/forms/focus2.html :  different length
+/sdcard/android/layout_tests/fast/forms/password-doubleclick-selection.html :  different length
+/sdcard/android/layout_tests/fast/forms/textfield-inside-anchor.html :  different length
+/sdcard/android/layout_tests/fast/forms/input-maxlength.html :  different length
+/sdcard/android/layout_tests/fast/forms/input-text-option-delete.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/selection-functions.html :   @offset: 306
+/sdcard/android/layout_tests/fast/forms/textfield-to-password-on-focus.html :  different length
+/sdcard/android/layout_tests/fast/forms/focus-selection-textarea.html :  different length
+/sdcard/android/layout_tests/fast/forms/enter-clicks-buttons.html :  different length
+/sdcard/android/layout_tests/fast/forms/menulist-no-renderer-onmousedown.html :  different length
+/sdcard/android/layout_tests/fast/forms/select-display-none-style-resolve.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/radio_checked_name.html :   @offset: 303
+/sdcard/android/layout_tests/fast/forms/select-double-onchange.html :  different length
+/sdcard/android/layout_tests/fast/forms/button-enter-click.html :  different length
+/sdcard/android/layout_tests/fast/forms/11423.html :  different length
+/sdcard/android/layout_tests/fast/forms/search-click-in-placeholder.html :   @offset: 1
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-003.html :   @offset: 51
+/sdcard/android/layout_tests/fast/forms/search-hidden-cancel-button.html :  different length
+/sdcard/android/layout_tests/fast/forms/willvalidate-004.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-paste-newline.html :  different length
+/sdcard/android/layout_tests/fast/forms/drag-into-textarea.html :  different length
+/sdcard/android/layout_tests/fast/forms/onselect-textfield.html :  different length
+/sdcard/android/layout_tests/fast/forms/input-implicit-length-limit.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/form-and-frame-interaction-retains-values.html :  different length
+/sdcard/android/layout_tests/fast/forms/input-appearance-focus.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/slider-transformed.html :  different length
+/sdcard/android/layout_tests/fast/forms/listbox-select-all.html :  different length
+/sdcard/android/layout_tests/fast/forms/textfield-onchange-deletion.html :  different length
+/sdcard/android/layout_tests/fast/forms/focus-control-to-page.html :  different length
+/sdcard/android/layout_tests/fast/forms/select-type-ahead-non-latin.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-no-scroll-on-blur.html :   @offset: 79
+/sdcard/android/layout_tests/fast/forms/focus-selection-input.html :  different length
+/sdcard/android/layout_tests/fast/forms/listbox-onchange.html :  different length
+/sdcard/android/layout_tests/fast/forms/button-spacebar-click.html :  different length
+/sdcard/android/layout_tests/fast/forms/search-event-delay.html :  different length
+/sdcard/android/layout_tests/fast/forms/search-cancel-button-mouseup.html :  different length
+/sdcard/android/layout_tests/fast/forms/select-enter-key.html :  different length
+/sdcard/android/layout_tests/fast/forms/drag-out-of-textarea.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-hard-linewrap.html :  different length
+/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-keyboard.html :  different length
+/sdcard/android/layout_tests/fast/forms/dragging-to-disabled-file-input.html :  different length
+/sdcard/android/layout_tests/fast/forms/input-radio-checked-tab.html :   @offset: 115
+/sdcard/android/layout_tests/fast/forms/plaintext-mode-1.html :  different length
+/sdcard/android/layout_tests/fast/forms/option-in-optgroup-removal.html :  different length
+/sdcard/android/layout_tests/fast/forms/search-display-none-cancel-button.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/forms/check-box-enter-key.html :  different length
+/sdcard/android/layout_tests/fast/forms/input-select-on-click.html :  different length
+/sdcard/android/layout_tests/fast/forms/button-state-restore.html :  different length
+/sdcard/android/layout_tests/fast/forms/access-key.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-scrolled-endline-caret.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-type-spaces.html :  different length
+/sdcard/android/layout_tests/fast/forms/slider-mouse-events.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-selection-preservation.html :  different length
+/sdcard/android/layout_tests/fast/forms/slider-onchange-event.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-appearance-wrap.html :  different length
+/sdcard/android/layout_tests/fast/forms/onselect-textarea.html :  different length
+/sdcard/android/layout_tests/fast/forms/textarea-initial-caret-position.html :  different length
+/sdcard/android/layout_tests/fast/forms/listbox-selection.html :  different length
 /sdcard/android/layout_tests/fast/css/variables/color-hex-test.html :  different length
-/sdcard/android/layout_tests/fast/css/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/hover-affects-child.html :  different length
+/sdcard/android/layout_tests/fast/css/html-attr-case-sensitivity.html : TIMEDOUT
 /sdcard/android/layout_tests/fast/css/computed-style.html :  different length
+/sdcard/android/layout_tests/fast/css/getComputedStyle-transform.html :  different length
 /sdcard/android/layout_tests/fast/css/computed-style-without-renderer.html :  different length
-/sdcard/android/layout_tests/fast/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/parser/entity-comment-in-iframe.html :   @offset: 0
+/sdcard/android/layout_tests/fast/parser/external-entities.xml :  different length
+/sdcard/android/layout_tests/fast/parser/script-tag-with-trailing-slash.html :  different length
+/sdcard/android/layout_tests/fast/parser/comment-in-iframe.html :   @offset: 0
+/sdcard/android/layout_tests/fast/parser/xml-declaration-missing-ending-mark.html :  different length
+/sdcard/android/layout_tests/fast/parser/entity-end-script-tag.html :  different length
+/sdcard/android/layout_tests/fast/parser/tabindex-parsing.html :  different length
+/sdcard/android/layout_tests/fast/history/subframe-is-visited.html :  different length
+/sdcard/android/layout_tests/fast/history/window-open.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/history/go-back-to-changed-name.html :  different length
+/sdcard/android/layout_tests/fast/loader/cancel-load-during-port-block-timer.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/loader/local-iFrame-source-from-local.html :  different length
+/sdcard/android/layout_tests/fast/loader/null-request-after-willSendRequest.html :  different length
+/sdcard/android/layout_tests/fast/loader/stop-provisional-loads.html :  different length
+/sdcard/android/layout_tests/fast/loader/xmlhttprequest-missing-file-exception.html :  different length
+/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash-2.html :  different length
+/sdcard/android/layout_tests/fast/loader/plain-text-document.html :  different length
+/sdcard/android/layout_tests/fast/loader/onunload-form-submit-crash.html :  different length
+/sdcard/android/layout_tests/fast/loader/local-image-from-local.html :  different length
+/sdcard/android/layout_tests/fast/loader/local-CSS-from-local.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/loader/local-JavaScript-from-local.html :  different length
+/sdcard/android/layout_tests/fast/loader/data-url-encoding-svg.html :  different length
+/sdcard/android/layout_tests/fast/loader/opaque-base-url.html :   @offset: 129
 /sdcard/android/layout_tests/fast/canvas/canvas-alphaImageData-behavior.html :  different length
+/sdcard/android/layout_tests/fast/canvas/pointInPath.html :  different length
+/sdcard/android/layout_tests/fast/canvas/toDataURL-supportedTypes.html :  different length
+/sdcard/android/layout_tests/fast/canvas/canvas-getImageData.html :  different length
+/sdcard/android/layout_tests/fast/canvas/canvas-longlived-context.html : TIMEDOUT
+/sdcard/android/layout_tests/fast/canvas/canvas-save-restore-with-path.html :  different length
+/sdcard/android/layout_tests/fast/canvas/set-colors.html :  different length
+/sdcard/android/layout_tests/fast/frames/viewsource-empty-attribute-value.html :  different length
+/sdcard/android/layout_tests/fast/frames/frame-deep-nested-resize.html :  different length
+/sdcard/android/layout_tests/fast/frames/iframe-window-focus.html :  different length
+/sdcard/android/layout_tests/fast/frames/frameElement-widthheight.html :  different length
+/sdcard/android/layout_tests/fast/frames/removal-before-attach-crash.html :  different length
+/sdcard/android/layout_tests/fast/frames/frame-js-url-clientWidth.html :  different length
diff --git a/tests/DumpRenderTree/results/layout_tests_nontext.txt b/tests/DumpRenderTree/results/layout_tests_nontext.txt
index 0355cb72..c9e166c 100644
--- a/tests/DumpRenderTree/results/layout_tests_nontext.txt
+++ b/tests/DumpRenderTree/results/layout_tests_nontext.txt
@@ -1,1658 +1,1753 @@
-/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/mq-relative-constraints-09.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-03.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-02.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-04.html
+/sdcard/android/layout_tests/fast/media/mq-min-pixel-ratio.html
+/sdcard/android/layout_tests/fast/media/implicit-media-all.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-01.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-03.html
+/sdcard/android/layout_tests/fast/media/viewport-media-query.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-05.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-01.html
+/sdcard/android/layout_tests/fast/media/mq-transition.html
+/sdcard/android/layout_tests/fast/media/mq-transform-04.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-05.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-except-02.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-02.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-03.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-06.html
+/sdcard/android/layout_tests/fast/media/mq-valueless.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-03.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-01.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-03.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-04.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-05.html
+/sdcard/android/layout_tests/fast/media/mq-animation.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-02.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-04.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/mq-invalid-syntax-02.html
+/sdcard/android/layout_tests/fast/media/mq-transform-01.html
+/sdcard/android/layout_tests/fast/media/monochrome.html
+/sdcard/android/layout_tests/fast/media/mq-pixel-ratio.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-except-03.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-03.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-04.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-07.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-04.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-01.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-02.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-04.html
+/sdcard/android/layout_tests/fast/media/mq-max-pixel-ratio.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-01.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/media/mq-simple-neg-query-05.html
+/sdcard/android/layout_tests/fast/media/media-type-syntax-02.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-03.html
+/sdcard/android/layout_tests/fast/media/mq-transform-02.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-01.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-04.html
+/sdcard/android/layout_tests/fast/media/mq-grid-01.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-01.html
+/sdcard/android/layout_tests/fast/media/mq-min-constraint.html
+/sdcard/android/layout_tests/fast/media/mq-relative-constraints-08.html
+/sdcard/android/layout_tests/fast/media/mq-compound-query-05.html
+/sdcard/android/layout_tests/fast/media/mq-width-absolute-02.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-media-feature-01.html
+/sdcard/android/layout_tests/fast/media/mq-simple-query-03.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-forward-syntax.html
+/sdcard/android/layout_tests/fast/media/mq-simple-neg-query-02.html
+/sdcard/android/layout_tests/fast/media/media-descriptor-syntax-04.html
+/sdcard/android/layout_tests/fast/media/mq-transform-03.html
+/sdcard/android/layout_tests/fast/media/mq-invalid-syntax-04.html
+/sdcard/android/layout_tests/fast/media/mq-js-media-except-01.html
+/sdcard/android/layout_tests/fast/media/mq-js-stylesheet-media-02.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-radio.html
+/sdcard/android/layout_tests/fast/replaced/object-align-hspace-vspace.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-menulist.html
+/sdcard/android/layout_tests/fast/replaced/selection-rect.html
+/sdcard/android/layout_tests/fast/replaced/image-sizing.html
+/sdcard/android/layout_tests/fast/replaced/minheight-pxs.html
+/sdcard/android/layout_tests/fast/replaced/maxheight-pxs.html
+/sdcard/android/layout_tests/fast/replaced/inline-box-wrapper-handover.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-searchfield.html
+/sdcard/android/layout_tests/fast/replaced/selection-rect-transform.html
+/sdcard/android/layout_tests/fast/replaced/pdf-as-image.html
+/sdcard/android/layout_tests/fast/replaced/replaced-breaking-mixture.html
+/sdcard/android/layout_tests/fast/replaced/minwidth-pxs.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-textarea.html
+/sdcard/android/layout_tests/fast/replaced/maxwidth-pxs.html
+/sdcard/android/layout_tests/fast/replaced/max-width-percent.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-percentage-height.html
+/sdcard/android/layout_tests/fast/replaced/002.html
+/sdcard/android/layout_tests/fast/replaced/004.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-checkbox.html
+/sdcard/android/layout_tests/fast/replaced/applet-disabled-positioned.html
+/sdcard/android/layout_tests/fast/replaced/006.html
+/sdcard/android/layout_tests/fast/replaced/008.html
+/sdcard/android/layout_tests/fast/replaced/percent-height-in-anonymous-block-widget.html
+/sdcard/android/layout_tests/fast/replaced/minheight-percent.html
+/sdcard/android/layout_tests/fast/replaced/maxheight-percent.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-with-auto-width-and-left-and-right.html
+/sdcard/android/layout_tests/fast/replaced/minwidth-percent.html
+/sdcard/android/layout_tests/fast/replaced/maxwidth-percent.html
+/sdcard/android/layout_tests/fast/replaced/applet-rendering-java-disabled.html
+/sdcard/android/layout_tests/fast/replaced/selection-rect-in-table-cell.html
+/sdcard/android/layout_tests/fast/replaced/percent-height-in-anonymous-block.html
+/sdcard/android/layout_tests/fast/replaced/three-selects-break.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-button.html
+/sdcard/android/layout_tests/fast/replaced/image-tag.html
+/sdcard/android/layout_tests/fast/replaced/image-onload.html
+/sdcard/android/layout_tests/fast/replaced/image-resize-width.html
+/sdcard/android/layout_tests/fast/replaced/absolute-image-sizing.html
+/sdcard/android/layout_tests/fast/replaced/replaced-breaking.html
+/sdcard/android/layout_tests/fast/replaced/001.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-image.html
+/sdcard/android/layout_tests/fast/replaced/image-solid-color-with-alpha.html
+/sdcard/android/layout_tests/fast/replaced/003.html
+/sdcard/android/layout_tests/fast/replaced/replaced-child-of-absolute-with-auto-height.html
+/sdcard/android/layout_tests/fast/replaced/005.html
+/sdcard/android/layout_tests/fast/replaced/007.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-with-auto-height-and-top-and-bottom.html
+/sdcard/android/layout_tests/fast/replaced/width100percent-textfield.html
+/sdcard/android/layout_tests/fast/replaced/absolute-position-percentage-width.html
+/sdcard/android/layout_tests/fast/dynamic/positioned-movement-with-positioned-children.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-table-cell-height.html
+/sdcard/android/layout_tests/fast/dynamic/move-node-with-selection.html
+/sdcard/android/layout_tests/fast/dynamic/create-renderer-for-whitespace-only-text.html
+/sdcard/android/layout_tests/fast/dynamic/outerHTML-doc.html
+/sdcard/android/layout_tests/fast/dynamic/floating-to-positioned-2.html
+/sdcard/android/layout_tests/fast/dynamic/012.html
+/sdcard/android/layout_tests/fast/dynamic/004.html
+/sdcard/android/layout_tests/fast/dynamic/008.html
+/sdcard/android/layout_tests/fast/dynamic/float-no-longer-overhanging.html
+/sdcard/android/layout_tests/fast/dynamic/float-withdrawal-2.html
+/sdcard/android/layout_tests/fast/dynamic/float-in-trailing-whitespace-after-last-line-break.html
+/sdcard/android/layout_tests/fast/dynamic/selection-highlight-adjust.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-no-common-root-static-y.html
+/sdcard/android/layout_tests/fast/dynamic/genContentDestroyChildren.html
+/sdcard/android/layout_tests/fast/dynamic/001.html
+/sdcard/android/layout_tests/fast/dynamic/link-href-change.html
+/sdcard/android/layout_tests/fast/dynamic/013.html
+/sdcard/android/layout_tests/fast/dynamic/005.html
+/sdcard/android/layout_tests/fast/dynamic/009.html
+/sdcard/android/layout_tests/fast/dynamic/float-withdrawal.html
+/sdcard/android/layout_tests/fast/dynamic/anonymous-block-layer-lost.html
+/sdcard/android/layout_tests/fast/dynamic/layer-hit-test-crash.html
+/sdcard/android/layout_tests/fast/dynamic/view-overflow.html
+/sdcard/android/layout_tests/fast/dynamic/010.html
+/sdcard/android/layout_tests/fast/dynamic/002.html
+/sdcard/android/layout_tests/fast/dynamic/014.html
+/sdcard/android/layout_tests/fast/dynamic/006.html
+/sdcard/android/layout_tests/fast/dynamic/flash-replacement-test.html
+/sdcard/android/layout_tests/fast/dynamic/insert-before-table-part-in-continuation.html
+/sdcard/android/layout_tests/fast/dynamic/staticY.html
+/sdcard/android/layout_tests/fast/dynamic/anonymous-block-orphaned-lines.html
+/sdcard/android/layout_tests/fast/dynamic/noninlinebadness.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-parent-static-y.html
+/sdcard/android/layout_tests/fast/dynamic/outerHTML-img.html
+/sdcard/android/layout_tests/fast/dynamic/staticY-marking-parents-regression.html
+/sdcard/android/layout_tests/fast/dynamic/floating-to-positioned.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-boundary-percent-height.html
+/sdcard/android/layout_tests/fast/dynamic/011.html
+/sdcard/android/layout_tests/fast/dynamic/containing-block-change.html
+/sdcard/android/layout_tests/fast/dynamic/015.html
+/sdcard/android/layout_tests/fast/dynamic/007.html
+/sdcard/android/layout_tests/fast/text/firstline/001.html
+/sdcard/android/layout_tests/fast/text/firstline/002.html
+/sdcard/android/layout_tests/fast/text/firstline/003.html
+/sdcard/android/layout_tests/fast/text/international/wrap-CJK-001.html
+/sdcard/android/layout_tests/fast/text/international/bidi-listbox-atsui.html
+/sdcard/android/layout_tests/fast/text/international/hindi-spacing.html
+/sdcard/android/layout_tests/fast/text/international/thai-line-breaks.html
+/sdcard/android/layout_tests/fast/text/international/bidi-neutral-run.html
+/sdcard/android/layout_tests/fast/text/international/bidi-L2-run-reordering.html
+/sdcard/android/layout_tests/fast/text/international/bidi-override.html
+/sdcard/android/layout_tests/fast/text/international/bidi-innertext.html
+/sdcard/android/layout_tests/fast/text/international/bidi-european-terminators.html
+/sdcard/android/layout_tests/fast/text/international/bidi-listbox.html
+/sdcard/android/layout_tests/fast/text/international/bidi-LDB-2-formatting-characters.html
+/sdcard/android/layout_tests/fast/text/international/bidi-AN-after-L.html
+/sdcard/android/layout_tests/fast/text/international/bidi-LDB-2-CSS.html
+/sdcard/android/layout_tests/fast/text/international/bidi-control-chars-treated-as-ZWS.html
+/sdcard/android/layout_tests/fast/text/international/rtl-caret.html
+/sdcard/android/layout_tests/fast/text/international/bidi-neutral-directionality-paragraph-start.html
+/sdcard/android/layout_tests/fast/text/international/bidi-AN-after-empty-run.html
+/sdcard/android/layout_tests/fast/text/international/001.html
+/sdcard/android/layout_tests/fast/text/international/002.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/003.html
+/sdcard/android/layout_tests/fast/text/international/rtl-white-space-pre-wrap.html
+/sdcard/android/layout_tests/fast/text/international/bidi-layout-across-linebreak.html
+/sdcard/android/layout_tests/fast/text/international/bidi-CS-after-AN.html
+/sdcard/android/layout_tests/fast/text/international/bidi-menulist.html
+/sdcard/android/layout_tests/fast/text/international/bidi-LDB-2-HTML.html
+/sdcard/android/layout_tests/fast/text/international/complex-character-based-fallback.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-overflow-selection.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-newline-box-test.html
+/sdcard/android/layout_tests/fast/text/whitespace/span-in-word-space-causes-overflow.html
+/sdcard/android/layout_tests/fast/text/whitespace/nowrap-clear-float.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-line-test.html
+/sdcard/android/layout_tests/fast/text/whitespace/010.html
+/sdcard/android/layout_tests/fast/text/whitespace/020.html
+/sdcard/android/layout_tests/fast/text/whitespace/002.html
+/sdcard/android/layout_tests/fast/text/whitespace/030.html
+/sdcard/android/layout_tests/fast/text/whitespace/012.html
+/sdcard/android/layout_tests/fast/text/whitespace/022.html
+/sdcard/android/layout_tests/fast/text/whitespace/004.html
+/sdcard/android/layout_tests/fast/text/whitespace/014.html
+/sdcard/android/layout_tests/fast/text/whitespace/024.html
+/sdcard/android/layout_tests/fast/text/whitespace/006.html
+/sdcard/android/layout_tests/fast/text/whitespace/016.html
+/sdcard/android/layout_tests/fast/text/whitespace/008.html
+/sdcard/android/layout_tests/fast/text/whitespace/026.html
+/sdcard/android/layout_tests/fast/text/whitespace/018.html
+/sdcard/android/layout_tests/fast/text/whitespace/028.html
+/sdcard/android/layout_tests/fast/text/whitespace/normal-after-nowrap-breaking.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-break-word.html
+/sdcard/android/layout_tests/fast/text/whitespace/nbsp-mode-and-linewraps.html
+/sdcard/android/layout_tests/fast/text/whitespace/001.html
+/sdcard/android/layout_tests/fast/text/whitespace/011.html
+/sdcard/android/layout_tests/fast/text/whitespace/tab-character-basics.html
+/sdcard/android/layout_tests/fast/text/whitespace/003.html
+/sdcard/android/layout_tests/fast/text/whitespace/021.html
+/sdcard/android/layout_tests/fast/text/whitespace/013.html
+/sdcard/android/layout_tests/fast/text/whitespace/005.html
+/sdcard/android/layout_tests/fast/text/whitespace/023.html
+/sdcard/android/layout_tests/fast/text/whitespace/015.html
+/sdcard/android/layout_tests/fast/text/whitespace/025.html
+/sdcard/android/layout_tests/fast/text/whitespace/007.html
+/sdcard/android/layout_tests/fast/text/whitespace/017.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-spaces-after-newline.html
+/sdcard/android/layout_tests/fast/text/whitespace/027.html
+/sdcard/android/layout_tests/fast/text/whitespace/009.html
+/sdcard/android/layout_tests/fast/text/whitespace/019.html
+/sdcard/android/layout_tests/fast/text/whitespace/pre-wrap-last-char.html
+/sdcard/android/layout_tests/fast/text/whitespace/029.html
+/sdcard/android/layout_tests/fast/text/basic/001.html
+/sdcard/android/layout_tests/fast/text/basic/002.html
+/sdcard/android/layout_tests/fast/text/basic/011.html
+/sdcard/android/layout_tests/fast/text/basic/generic-family-changes.html
+/sdcard/android/layout_tests/fast/text/basic/003.html
+/sdcard/android/layout_tests/fast/text/basic/012.html
+/sdcard/android/layout_tests/fast/text/basic/004.html
+/sdcard/android/layout_tests/fast/text/basic/013.html
+/sdcard/android/layout_tests/fast/text/basic/005.html
+/sdcard/android/layout_tests/fast/text/basic/014.html
+/sdcard/android/layout_tests/fast/text/basic/006.html
+/sdcard/android/layout_tests/fast/text/basic/015.html
+/sdcard/android/layout_tests/fast/text/basic/007.html
+/sdcard/android/layout_tests/fast/text/basic/008.html
+/sdcard/android/layout_tests/fast/text/basic/009.html
+/sdcard/android/layout_tests/fast/text/basic/generic-family-reset.html
+/sdcard/android/layout_tests/fast/text/in-rendered-text-rtl.html
+/sdcard/android/layout_tests/fast/text/selection-painted-separately.html
+/sdcard/android/layout_tests/fast/text/bidi-embedding-pop-and-push-same.html
+/sdcard/android/layout_tests/fast/text/wbr-in-pre-crash.html
+/sdcard/android/layout_tests/fast/text/atsui-spacing-features.html
+/sdcard/android/layout_tests/fast/text/textIteratorNilRenderer.html
+/sdcard/android/layout_tests/fast/text/drawBidiText.html
+/sdcard/android/layout_tests/fast/text/selection-hard-linebreak.html
+/sdcard/android/layout_tests/fast/text/word-break.html
+/sdcard/android/layout_tests/fast/text/font-initial.html
+/sdcard/android/layout_tests/fast/text/break-word.html
+/sdcard/android/layout_tests/fast/text/stroking.html
+/sdcard/android/layout_tests/fast/text/midword-break-hang.html
+/sdcard/android/layout_tests/fast/text/atsui-partial-selection.html
+/sdcard/android/layout_tests/fast/text/embed-at-end-of-pre-wrap-line.html
+/sdcard/android/layout_tests/fast/text/atsui-multiple-renderers.html
+/sdcard/android/layout_tests/fast/text/apply-start-width-after-skipped-text.html
+/sdcard/android/layout_tests/fast/text/capitalize-preserve-nbsp.html
+/sdcard/android/layout_tests/fast/text/updateNewFont.html
+/sdcard/android/layout_tests/fast/text/atsui-rtl-override-selection.html
+/sdcard/android/layout_tests/fast/text/align-center-rtl-spill.html
+/sdcard/android/layout_tests/fast/text/wbr.html
+/sdcard/android/layout_tests/fast/text/cg-vs-atsui.html
+/sdcard/android/layout_tests/fast/text/monospace-width-cache.html
+/sdcard/android/layout_tests/fast/text/soft-hyphen-2.html
+/sdcard/android/layout_tests/fast/text/justified-selection.html
+/sdcard/android/layout_tests/fast/text/atsui-pointtooffset-calls-cg.html
+/sdcard/android/layout_tests/fast/text/atsui-kerning-and-ligatures.html
+/sdcard/android/layout_tests/fast/text/wbr-pre.html
+/sdcard/android/layout_tests/fast/text/capitalize-boundaries.html
+/sdcard/android/layout_tests/fast/text/trailing-white-space.html
+/sdcard/android/layout_tests/fast/text/capitalize-empty-generated-string.html
+/sdcard/android/layout_tests/fast/text/stripNullFromText.html
+/sdcard/android/layout_tests/fast/text/letter-spacing-negative-opacity.html
+/sdcard/android/layout_tests/fast/text/atsui-small-caps-punctuation-size.html
+/sdcard/android/layout_tests/fast/text/word-break-soft-hyphen.html
+/sdcard/android/layout_tests/fast/text/fixed-pitch-control-characters.html
+/sdcard/android/layout_tests/fast/text/cg-fallback-bolding.html
+/sdcard/android/layout_tests/fast/text/line-breaks-after-white-space.html
+/sdcard/android/layout_tests/fast/text/soft-hyphen-3.html
+/sdcard/android/layout_tests/fast/text/wide-zero-width-space.html
+/sdcard/android/layout_tests/fast/text/should-use-atsui.html
+/sdcard/android/layout_tests/fast/text/justified-selection-at-edge.html
+/sdcard/android/layout_tests/fast/text/trailing-white-space-2.html
+/sdcard/android/layout_tests/fast/text/word-break-run-rounding.html
+/sdcard/android/layout_tests/fast/text/softHyphen.html
+/sdcard/android/layout_tests/fast/text/delete-hard-break-character.html
+/sdcard/android/layout_tests/fast/text/line-breaks.html
+/sdcard/android/layout_tests/fast/text/wbr-styled.html
+/sdcard/android/layout_tests/fast/text/large-text-composed-char.html
+/sdcard/android/layout_tests/fast/text/shadow-no-blur.html
+/sdcard/android/layout_tests/fast/text/reset-emptyRun.html
+/sdcard/android/layout_tests/fast/text/word-space.html
+/sdcard/android/layout_tests/fast/text/midword-break-after-breakable-char.html
+/sdcard/android/layout_tests/fast/text/stroking-decorations.html
+/sdcard/android/layout_tests/fast/encoding/utf-16-little-endian.html
+/sdcard/android/layout_tests/fast/encoding/denormalised-voiced-japanese-chars.html
+/sdcard/android/layout_tests/fast/encoding/utf-16-no-bom.xml
+/sdcard/android/layout_tests/fast/encoding/utf-16-big-endian.html
+/sdcard/android/layout_tests/fast/encoding/xmacroman-encoding-test.html
+/sdcard/android/layout_tests/fast/encoding/invalid-UTF-8.html
+/sdcard/android/layout_tests/fast/multicol/negativeColumnWidth.html
+/sdcard/android/layout_tests/fast/multicol/column-rules.html
+/sdcard/android/layout_tests/fast/multicol/zeroColumnCount.html
+/sdcard/android/layout_tests/fast/multicol/columns-shorthand-parsing.html
+/sdcard/android/layout_tests/fast/multicol/float-multicol.html
+/sdcard/android/layout_tests/fast/doctypes/001.html
+/sdcard/android/layout_tests/fast/doctypes/002.html
+/sdcard/android/layout_tests/fast/doctypes/003.html
+/sdcard/android/layout_tests/fast/doctypes/004.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-row-group-to-inline.html
+/sdcard/android/layout_tests/fast/css-generated-content/spellingToolTip-assert.html
+/sdcard/android/layout_tests/fast/css-generated-content/no-openclose-quote.html
+/sdcard/android/layout_tests/fast/css-generated-content/before-with-first-letter.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-row-group-with-before.html
+/sdcard/android/layout_tests/fast/css-generated-content/010.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-with-before.html
+/sdcard/android/layout_tests/fast/css-generated-content/002.html
+/sdcard/android/layout_tests/fast/css-generated-content/012.html
+/sdcard/android/layout_tests/fast/css-generated-content/004.html
+/sdcard/android/layout_tests/fast/css-generated-content/014.html
+/sdcard/android/layout_tests/fast/css-generated-content/016.html
+/sdcard/android/layout_tests/fast/css-generated-content/008.html
+/sdcard/android/layout_tests/fast/css-generated-content/after-order.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-cell-before-content.html
+/sdcard/android/layout_tests/fast/css-generated-content/visibleContentHiddenParent.html
+/sdcard/android/layout_tests/fast/css-generated-content/inline-display-types.html
+/sdcard/android/layout_tests/fast/css-generated-content/positioned-background-hit-test-crash.html
+/sdcard/android/layout_tests/fast/css-generated-content/001.html
+/sdcard/android/layout_tests/fast/css-generated-content/011.html
+/sdcard/android/layout_tests/fast/css-generated-content/003.html
+/sdcard/android/layout_tests/fast/css-generated-content/013.html
+/sdcard/android/layout_tests/fast/css-generated-content/005.html
+/sdcard/android/layout_tests/fast/css-generated-content/hover-style-change.html
+/sdcard/android/layout_tests/fast/css-generated-content/absolute-position-inside-inline.html
+/sdcard/android/layout_tests/fast/css-generated-content/015.html
+/sdcard/android/layout_tests/fast/css-generated-content/table-row-with-before.html
+/sdcard/android/layout_tests/fast/css-generated-content/007.html
+/sdcard/android/layout_tests/fast/css-generated-content/009.html
+/sdcard/android/layout_tests/fast/css-generated-content/wbr-with-before-content.html
+/sdcard/android/layout_tests/fast/workers/stress-js-execution.html : has expected results
+/sdcard/android/layout_tests/fast/lists/decimal-leading-zero.html
 /sdcard/android/layout_tests/fast/lists/ol-display-types.html
+/sdcard/android/layout_tests/fast/lists/li-style-alpha-huge-value-crash.html
+/sdcard/android/layout_tests/fast/lists/ol-start-dynamic.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/scrolled-marker-paint.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/dynamic-marker-crash.html
+/sdcard/android/layout_tests/fast/lists/list-item-line-height.html
+/sdcard/android/layout_tests/fast/lists/004.html
+/sdcard/android/layout_tests/fast/lists/drag-into-marker.html
+/sdcard/android/layout_tests/fast/lists/list-style-none-crash.html
+/sdcard/android/layout_tests/fast/lists/alpha-list-wrap.html
+/sdcard/android/layout_tests/fast/lists/006.html
+/sdcard/android/layout_tests/fast/lists/008.html
+/sdcard/android/layout_tests/fast/lists/inlineBoxWrapperNullCheck.html
+/sdcard/android/layout_tests/fast/lists/w3-list-styles.html
+/sdcard/android/layout_tests/fast/lists/item-not-in-list-line-wrapping.html
+/sdcard/android/layout_tests/fast/lists/olstart.html
+/sdcard/android/layout_tests/fast/lists/big-list-marker.html
+/sdcard/android/layout_tests/fast/lists/markers-in-selection.html
+/sdcard/android/layout_tests/fast/lists/list-style-type-dynamic-change.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/lists/ordered-list-with-no-ol-tag.html
+/sdcard/android/layout_tests/fast/lists/003.html
+/sdcard/android/layout_tests/fast/lists/005.html
+/sdcard/android/layout_tests/fast/lists/li-br.html
+/sdcard/android/layout_tests/fast/lists/007.html
+/sdcard/android/layout_tests/fast/lists/009.html
+/sdcard/android/layout_tests/fast/transforms/transform-overflow.html
+/sdcard/android/layout_tests/fast/transforms/transforms-with-opacity.html
+/sdcard/android/layout_tests/fast/transforms/transformed-caret.html
+/sdcard/android/layout_tests/fast/transforms/matrix-01.html
+/sdcard/android/layout_tests/fast/transforms/transform-positioned-ancestor.html
+/sdcard/android/layout_tests/fast/transforms/matrix-02.html
+/sdcard/android/layout_tests/fast/transforms/skew-with-unitless-zero.html
+/sdcard/android/layout_tests/fast/transforms/overflow-with-transform.html
+/sdcard/android/layout_tests/fast/transforms/transformed-document-element.html
+/sdcard/android/layout_tests/fast/transforms/shadows.html
+/sdcard/android/layout_tests/fast/transforms/transformed-focused-text-input.html
+/sdcard/android/layout_tests/fast/transforms/diamond.html
+/sdcard/android/layout_tests/fast/transforms/identity-matrix.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/innerHTML/002.html
+/sdcard/android/layout_tests/fast/innerHTML/003.html
+/sdcard/android/layout_tests/fast/innerHTML/006.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDouble01.html
+/sdcard/android/layout_tests/fast/borders/block-mask-overlay-image.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid03.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDouble03.html
+/sdcard/android/layout_tests/fast/borders/border-color-inherit.html
+/sdcard/android/layout_tests/fast/borders/svg-as-border-image-2.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusInvalidColor.html
+/sdcard/android/layout_tests/fast/borders/border-image-scale-transform.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDotted02.html
+/sdcard/android/layout_tests/fast/borders/border-fit.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusArcs01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDashed01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDashed03.html
+/sdcard/android/layout_tests/fast/borders/fieldsetBorderRadius.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusAllStylesAllCorners.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusGroove01.html
+/sdcard/android/layout_tests/fast/borders/border-image-omit-right-slice.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDouble02.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid02.html
+/sdcard/android/layout_tests/fast/borders/outline-offset-min-assert.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusSolid04.html
+/sdcard/android/layout_tests/fast/borders/border-radius-huge-assert.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusInset01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDotted01.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusOutset01.html
+/sdcard/android/layout_tests/fast/borders/svg-as-border-image.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDotted03.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusDashed02.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusRidge01.html
+/sdcard/android/layout_tests/fast/borders/border-image-rotate-transform.html
+/sdcard/android/layout_tests/fast/borders/inline-mask-overlay-image.html
+/sdcard/android/layout_tests/fast/borders/borderRadiusGroove02.html
+/sdcard/android/layout_tests/fast/borders/border-image-01.html
+/sdcard/android/layout_tests/fast/selectors/175a.html
+/sdcard/android/layout_tests/fast/selectors/155c.html
+/sdcard/android/layout_tests/fast/selectors/059.html
+/sdcard/android/layout_tests/fast/selectors/066b.html
+/sdcard/android/layout_tests/fast/selectors/168.html
+/sdcard/android/layout_tests/fast/selectors/177a.html
+/sdcard/android/layout_tests/fast/selectors/087b.html
+/sdcard/android/layout_tests/fast/selectors/020.html
+/sdcard/android/layout_tests/fast/selectors/012.html
+/sdcard/android/layout_tests/fast/selectors/040.html
+/sdcard/android/layout_tests/fast/selectors/004.html
+/sdcard/android/layout_tests/fast/selectors/032.html
+/sdcard/android/layout_tests/fast/selectors/060.html
+/sdcard/android/layout_tests/fast/selectors/016.html
+/sdcard/android/layout_tests/fast/selectors/044.html
+/sdcard/android/layout_tests/fast/selectors/008.html
+/sdcard/android/layout_tests/fast/selectors/072.html
+/sdcard/android/layout_tests/fast/selectors/lang-inheritance.html : has expected results
+/sdcard/android/layout_tests/fast/selectors/064.html
+/sdcard/android/layout_tests/fast/selectors/056.html
+/sdcard/android/layout_tests/fast/selectors/018b.html
+/sdcard/android/layout_tests/fast/selectors/090b.html
+/sdcard/android/layout_tests/fast/selectors/045c.html
+/sdcard/android/layout_tests/fast/selectors/170d.html
+/sdcard/android/layout_tests/fast/selectors/157.html
+/sdcard/android/layout_tests/fast/selectors/039b.html
+/sdcard/android/layout_tests/fast/selectors/156b.html
+/sdcard/android/layout_tests/fast/selectors/175b.html
+/sdcard/android/layout_tests/fast/selectors/155d.html
+/sdcard/android/layout_tests/fast/selectors/167a.html
+/sdcard/android/layout_tests/fast/selectors/169.html
+/sdcard/android/layout_tests/fast/selectors/077b.html
+/sdcard/android/layout_tests/fast/selectors/177b.html
+/sdcard/android/layout_tests/fast/selectors/169a.html
+/sdcard/android/layout_tests/fast/selectors/lang-vs-xml-lang.html : has expected results
+/sdcard/android/layout_tests/fast/selectors/lang-inheritance2.html : has expected results
+/sdcard/android/layout_tests/fast/selectors/001.html
+/sdcard/android/layout_tests/fast/selectors/021.html
+/sdcard/android/layout_tests/fast/selectors/unqualified-hover-quirks.html
+/sdcard/android/layout_tests/fast/selectors/013.html
+/sdcard/android/layout_tests/fast/selectors/041.html
+/sdcard/android/layout_tests/fast/selectors/021b.html
+/sdcard/android/layout_tests/fast/selectors/005.html
+/sdcard/android/layout_tests/fast/selectors/061.html
+/sdcard/android/layout_tests/fast/selectors/170.html
+/sdcard/android/layout_tests/fast/selectors/017.html
+/sdcard/android/layout_tests/fast/selectors/170a.html
+/sdcard/android/layout_tests/fast/selectors/009.html
+/sdcard/android/layout_tests/fast/selectors/045.html
+/sdcard/android/layout_tests/fast/selectors/154.html
+/sdcard/android/layout_tests/fast/selectors/044b.html
+/sdcard/android/layout_tests/fast/selectors/065.html
+/sdcard/android/layout_tests/fast/selectors/155a.html
+/sdcard/android/layout_tests/fast/selectors/166.html
+/sdcard/android/layout_tests/fast/selectors/158.html
+/sdcard/android/layout_tests/fast/selectors/077.html
+/sdcard/android/layout_tests/fast/selectors/175c.html
+/sdcard/android/layout_tests/fast/selectors/089.html
+/sdcard/android/layout_tests/fast/selectors/088b.html
+/sdcard/android/layout_tests/fast/selectors/nondeterministic-combinators.html
+/sdcard/android/layout_tests/fast/selectors/unqualified-hover-strict.html
+/sdcard/android/layout_tests/fast/selectors/010.html
+/sdcard/android/layout_tests/fast/selectors/002.html
+/sdcard/android/layout_tests/fast/selectors/014.html
+/sdcard/android/layout_tests/fast/selectors/042.html
+/sdcard/android/layout_tests/fast/selectors/006.html
+/sdcard/android/layout_tests/fast/selectors/034.html
+/sdcard/android/layout_tests/fast/selectors/062.html
+/sdcard/android/layout_tests/fast/selectors/007a.html
+/sdcard/android/layout_tests/fast/selectors/054.html
+/sdcard/android/layout_tests/fast/selectors/018.html
+/sdcard/android/layout_tests/fast/selectors/046.html
+/sdcard/android/layout_tests/fast/selectors/170b.html
+/sdcard/android/layout_tests/fast/selectors/072b.html
+/sdcard/android/layout_tests/fast/selectors/044c.html
+/sdcard/android/layout_tests/fast/selectors/038.html
+/sdcard/android/layout_tests/fast/selectors/155.html
+/sdcard/android/layout_tests/fast/selectors/066.html
+/sdcard/android/layout_tests/fast/selectors/058.html
+/sdcard/android/layout_tests/fast/selectors/155b.html
+/sdcard/android/layout_tests/fast/selectors/166a.html
+/sdcard/android/layout_tests/fast/selectors/167.html
+/sdcard/android/layout_tests/fast/selectors/159.html
+/sdcard/android/layout_tests/fast/selectors/168a.html
+/sdcard/android/layout_tests/fast/selectors/078b.html
+/sdcard/android/layout_tests/fast/selectors/011.html
+/sdcard/android/layout_tests/fast/selectors/003.html
+/sdcard/android/layout_tests/fast/selectors/015.html
+/sdcard/android/layout_tests/fast/selectors/043.html
+/sdcard/android/layout_tests/fast/selectors/160.html
+/sdcard/android/layout_tests/fast/selectors/063.html
+/sdcard/android/layout_tests/fast/selectors/043b.html
+/sdcard/android/layout_tests/fast/selectors/007b.html
+/sdcard/android/layout_tests/fast/selectors/027.html
+/sdcard/android/layout_tests/fast/selectors/019.html
+/sdcard/android/layout_tests/fast/selectors/083.html
+/sdcard/android/layout_tests/fast/selectors/045b.html
+/sdcard/android/layout_tests/fast/selectors/170c.html
+/sdcard/android/layout_tests/fast/selectors/044d.html
+/sdcard/android/layout_tests/fast/selectors/039.html
+/sdcard/android/layout_tests/fast/overflow/overflow-focus-ring.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/unreachable-overflow-rtl-bug.html
+/sdcard/android/layout_tests/fast/overflow/overflow-auto-position-absolute.html
+/sdcard/android/layout_tests/fast/overflow/scrollRevealButton.html
+/sdcard/android/layout_tests/fast/overflow/overflow-rtl-inline-scrollbar.html
+/sdcard/android/layout_tests/fast/overflow/002.html
+/sdcard/android/layout_tests/fast/overflow/overflow-rtl.html
+/sdcard/android/layout_tests/fast/overflow/004.html
+/sdcard/android/layout_tests/fast/overflow/006.html
+/sdcard/android/layout_tests/fast/overflow/scrollbar-position-update.html
+/sdcard/android/layout_tests/fast/overflow/008.html
+/sdcard/android/layout_tests/fast/overflow/scroll-nested-positioned-layer-in-overflow.html
+/sdcard/android/layout_tests/fast/overflow/image-selection-highlight.html
+/sdcard/android/layout_tests/fast/overflow/childFocusRingClip.html
+/sdcard/android/layout_tests/fast/overflow/dynamic-hidden.html
+/sdcard/android/layout_tests/fast/overflow/position-relative.html
+/sdcard/android/layout_tests/fast/overflow/clip-rects-fixed-ancestor.html
+/sdcard/android/layout_tests/fast/overflow/overflow_hidden.html
+/sdcard/android/layout_tests/fast/overflow/infiniteRecursionGuard.html
+/sdcard/android/layout_tests/fast/overflow/float-in-relpositioned.html
+/sdcard/android/layout_tests/fast/overflow/table-overflow-float.html
+/sdcard/android/layout_tests/fast/overflow/unreachable-content-test.html
+/sdcard/android/layout_tests/fast/overflow/003.xml
+/sdcard/android/layout_tests/fast/overflow/overflow-auto-table.html
+/sdcard/android/layout_tests/fast/overflow/infiniteRecursion.html
+/sdcard/android/layout_tests/fast/overflow/001.html
+/sdcard/android/layout_tests/fast/overflow/hit-test-overflow-controls.html
+/sdcard/android/layout_tests/fast/overflow/005.html
+/sdcard/android/layout_tests/fast/overflow/007.html
+/sdcard/android/layout_tests/fast/overflow/hidden-scrollbar-resize.html
+/sdcard/android/layout_tests/fast/events/autoscroll.html
+/sdcard/android/layout_tests/fast/events/5056619.html
+/sdcard/android/layout_tests/fast/events/attempt-scroll-with-no-scrollbars.html : has expected results
 /sdcard/android/layout_tests/fast/events/updateLayoutForHitTest.html
-/sdcard/android/layout_tests/fast/events/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/context-onmousedown-event.html : has expected results
+/sdcard/android/layout_tests/fast/events/onsubmit-bubbling.html : has expected results
+/sdcard/android/layout_tests/fast/events/onloadFrameCrash.html
+/sdcard/android/layout_tests/fast/events/event-listener-on-link.html
 /sdcard/android/layout_tests/fast/events/keydown-1.html
+/sdcard/android/layout_tests/fast/events/onload-re-entry.html
+/sdcard/android/layout_tests/fast/events/standalone-image-drag-to-editable.html
+/sdcard/android/layout_tests/fast/events/pointer-events.html : has expected results
+/sdcard/android/layout_tests/fast/events/pointer-events-2.html : has expected results
+/sdcard/android/layout_tests/fast/events/nested-window-event.html : has expected results
 /sdcard/android/layout_tests/fast/events/focusingUnloadedFrame.html
 /sdcard/android/layout_tests/fast/events/event-sender-mouse-moved.html
-/sdcard/android/layout_tests/fast/events/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/events/mouseout-dead-node.html
+/sdcard/android/layout_tests/fast/events/reveal-link-when-focused.html
+/sdcard/android/layout_tests/fast/html/keygen.html
+/sdcard/android/layout_tests/fast/html/link-rel-stylesheet.html
+/sdcard/android/layout_tests/fast/html/listing.html
+/sdcard/android/layout_tests/fast/html/marquee-scroll.html
+/sdcard/android/layout_tests/fast/images/svg-as-tiled-background.html
+/sdcard/android/layout_tests/fast/images/svg-as-background.html
+/sdcard/android/layout_tests/fast/images/svg-as-image.html
+/sdcard/android/layout_tests/fast/images/pdf-as-image-landscape.html
+/sdcard/android/layout_tests/fast/images/pdf-as-tiled-background.html
+/sdcard/android/layout_tests/fast/images/object-image.html
+/sdcard/android/layout_tests/fast/images/pdf-as-background.html
+/sdcard/android/layout_tests/fast/images/svg-as-relative-image.html
+/sdcard/android/layout_tests/fast/images/imagemap-case.html
+/sdcard/android/layout_tests/fast/images/pdf-as-image.html
+/sdcard/android/layout_tests/fast/images/image-map-anchor-children.html
+/sdcard/android/layout_tests/fast/images/embed-image.html
+/sdcard/android/layout_tests/fast/images/animated-svg-as-image.html
+/sdcard/android/layout_tests/fast/images/image-in-map.html
+/sdcard/android/layout_tests/fast/images/animated-gif-with-offsets.html
+/sdcard/android/layout_tests/fast/images/favicon-as-image.html
+/sdcard/android/layout_tests/fast/images/svg-width-100p-as-background.html
+/sdcard/android/layout_tests/fast/inline-block/14498-positionForCoordinates.html
+/sdcard/android/layout_tests/fast/inline-block/001.html
+/sdcard/android/layout_tests/fast/inline-block/002.html
+/sdcard/android/layout_tests/fast/inline-block/003.html
+/sdcard/android/layout_tests/fast/inline-block/004.html
+/sdcard/android/layout_tests/fast/inline-block/005.html
+/sdcard/android/layout_tests/fast/inline-block/contenteditable-baseline.html
+/sdcard/android/layout_tests/fast/inline-block/006.html
+/sdcard/android/layout_tests/fast/inline-block/inline-block-vertical-align.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/inspector/matchedrules.html
+/sdcard/android/layout_tests/fast/inspector/style.html
+/sdcard/android/layout_tests/fast/flexbox/001.html
+/sdcard/android/layout_tests/fast/flexbox/010.html
+/sdcard/android/layout_tests/fast/flexbox/020.html
+/sdcard/android/layout_tests/fast/flexbox/002.html
+/sdcard/android/layout_tests/fast/flexbox/011.html
+/sdcard/android/layout_tests/fast/flexbox/021.html
+/sdcard/android/layout_tests/fast/flexbox/003.html
+/sdcard/android/layout_tests/fast/flexbox/012.html
+/sdcard/android/layout_tests/fast/flexbox/022.html
+/sdcard/android/layout_tests/fast/flexbox/004.html
+/sdcard/android/layout_tests/fast/flexbox/013.html
+/sdcard/android/layout_tests/fast/flexbox/023.html
+/sdcard/android/layout_tests/fast/flexbox/005.html
+/sdcard/android/layout_tests/fast/flexbox/014.html
+/sdcard/android/layout_tests/fast/flexbox/015.html
+/sdcard/android/layout_tests/fast/flexbox/006.html
+/sdcard/android/layout_tests/fast/flexbox/024.html
+/sdcard/android/layout_tests/fast/flexbox/016.html
+/sdcard/android/layout_tests/fast/flexbox/007.html
+/sdcard/android/layout_tests/fast/flexbox/025.html
+/sdcard/android/layout_tests/fast/flexbox/008.html
+/sdcard/android/layout_tests/fast/flexbox/017.html
+/sdcard/android/layout_tests/fast/flexbox/026.html
+/sdcard/android/layout_tests/fast/flexbox/009.html
+/sdcard/android/layout_tests/fast/flexbox/018.html
+/sdcard/android/layout_tests/fast/flexbox/019.html
+/sdcard/android/layout_tests/fast/flexbox/flex-hang.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-style-end-tag-1.html
+/sdcard/android/layout_tests/fast/tokenizer/002.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-title-end-tag-2.html
+/sdcard/android/layout_tests/fast/tokenizer/script-after-frameset.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-style-end-tag-2.html
+/sdcard/android/layout_tests/fast/tokenizer/external-script-document-write.html
+/sdcard/android/layout_tests/fast/tokenizer/script_extra_close.html
+/sdcard/android/layout_tests/fast/tokenizer/001.html
+/sdcard/android/layout_tests/fast/tokenizer/003.html
+/sdcard/android/layout_tests/fast/tokenizer/missing-title-end-tag-1.html
+/sdcard/android/layout_tests/fast/tokenizer/external-script-document-write_2.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/js/exception-linenums-in-html-3.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-image/002.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/003.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/004.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/005.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/006.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/007.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/008.html
+/sdcard/android/layout_tests/fast/body-propagation/background-image/009.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/001.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/002.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/003.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/004.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/005.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/006.html
+/sdcard/android/layout_tests/fast/body-propagation/overflow/007.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/body-propagation/background-color/002.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/003.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/004.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/005.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/006.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/007.html
+/sdcard/android/layout_tests/fast/body-propagation/background-color/008.html
+/sdcard/android/layout_tests/fast/inline/continuation-outlines-with-layers.html
+/sdcard/android/layout_tests/fast/inline/inline-padding-disables-text-quirk.html
+/sdcard/android/layout_tests/fast/inline/emptyInlinesWithinLists.html
+/sdcard/android/layout_tests/fast/inline/drawStyledEmptyInlines.html
+/sdcard/android/layout_tests/fast/inline/drawStyledEmptyInlinesWithWS.html
+/sdcard/android/layout_tests/fast/inline/positionedLifetime.html
+/sdcard/android/layout_tests/fast/inline/dirtyLinesForInline.html
+/sdcard/android/layout_tests/fast/inline/001.html
+/sdcard/android/layout_tests/fast/inline/002.html
+/sdcard/android/layout_tests/fast/inline/inline-text-quirk-bpm.html
+/sdcard/android/layout_tests/fast/inline/inline-borders-with-bidi-override.html
+/sdcard/android/layout_tests/fast/inline/styledEmptyInlinesWithBRs.html
+/sdcard/android/layout_tests/fast/inline/continuation-outlines.html
+/sdcard/android/layout_tests/fast/inline/outline-continuations.html
+/sdcard/android/layout_tests/fast/inline/br-text-decoration.html
+/sdcard/android/layout_tests/fast/inline/percentage-margins.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/colSpan.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/createCaption.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/frameless-location-bugzilla10837.html
+/sdcard/android/layout_tests/fast/dom/Document/early-document-access.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Element/null-offset-parent.html
+/sdcard/android/layout_tests/fast/dom/Element/class-attribute-whitespace.html
+/sdcard/android/layout_tests/fast/dom/HTMLLinkElement/pending-stylesheet-count.html
+/sdcard/android/layout_tests/fast/dom/HTMLStyleElement/insert-parser-generated.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/input-image-alt-text.html
+/sdcard/android/layout_tests/fast/dom/Window/timeout-released-on-close.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/open-existing-pop-up-blocking.html
+/sdcard/android/layout_tests/fast/dom/Window/global-opener-function.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/closure-access-after-navigation-window.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/remove-timeout-crash.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/window-special-properties.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/timeout-callback-scope.html : has expected results
+/sdcard/android/layout_tests/fast/dom/Window/window-property-shadowing-name.html : has expected results
+/sdcard/android/layout_tests/fast/dom/HTMLObjectElement/vspace-hspace-as-number.html
+/sdcard/android/layout_tests/fast/dom/HTMLElement/bdo.html
+/sdcard/android/layout_tests/fast/dom/Range/surroundContents-1.html
+/sdcard/android/layout_tests/fast/dom/Range/create-contextual-fragment.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead1.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead2.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead3.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead4.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/textInHead5.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/head-link-style-href-check.html
+/sdcard/android/layout_tests/fast/dom/HTMLTextAreaElement/reset-textarea.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-alt-text.html
+/sdcard/android/layout_tests/fast/dom/dom-parse-serialize.html
+/sdcard/android/layout_tests/fast/dom/focus-contenteditable.html
+/sdcard/android/layout_tests/fast/dom/jsDevicePixelRatio.html
+/sdcard/android/layout_tests/fast/dom/isindex-001.html
+/sdcard/android/layout_tests/fast/dom/css-cached-import-rule.html
+/sdcard/android/layout_tests/fast/dom/dom-parse-serialize-display.html
+/sdcard/android/layout_tests/fast/dom/css-rule-functions.html
+/sdcard/android/layout_tests/fast/dom/createDocumentType.html
+/sdcard/android/layout_tests/fast/dom/clientWidthAfterDocumentIsRemoved.html
+/sdcard/android/layout_tests/fast/dom/css-inline-style-important.html
+/sdcard/android/layout_tests/fast/dom/replaceChild.html
+/sdcard/android/layout_tests/fast/dom/anchor-text.html
+/sdcard/android/layout_tests/fast/dom/importNodeHTML.html
+/sdcard/android/layout_tests/fast/dom/gc-10.html
+/sdcard/android/layout_tests/fast/dom/inner-text.html
+/sdcard/android/layout_tests/fast/dom/isindex-002.html
+/sdcard/android/layout_tests/fast/dom/outerText.html
+/sdcard/android/layout_tests/fast/dom/setAttributeNS.html : has expected results
+/sdcard/android/layout_tests/fast/dom/anchor-toString.html : has expected results
+/sdcard/android/layout_tests/fast/dom/documenturi-affects-relative-paths.html : has expected results
+/sdcard/android/layout_tests/fast/dom/setAttribute-using-initial-input-value.html : has expected results
+/sdcard/android/layout_tests/fast/dom/blur-contenteditable.html
+/sdcard/android/layout_tests/fast/dom/setPrimitiveValue.html
+/sdcard/android/layout_tests/fast/dom/delete-contents.html
+/sdcard/android/layout_tests/fast/dom/children-nodes.html
+/sdcard/android/layout_tests/fast/dom/css-mediarule-deleteRule-update.html
+/sdcard/android/layout_tests/fast/dom/attr_dead_doc.html
+/sdcard/android/layout_tests/fast/dom/clone-contents-0-end-offset.html
+/sdcard/android/layout_tests/fast/dom/comment-not-documentElement.html
+/sdcard/android/layout_tests/fast/dom/clone-node-dynamic-style.html
+/sdcard/android/layout_tests/fast/dom/css-mediarule-insertRule-update.html
+/sdcard/android/layout_tests/fast/dom/set-frame-src-while-running-script-in-frame.html : has expected results
+/sdcard/android/layout_tests/fast/dom/stripNullFromTextNodes.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-put-crash.html : has expected results
+/sdcard/android/layout_tests/fast/dom/document-scripts.html : has expected results
+/sdcard/android/layout_tests/fast/invalid/test-case-tr-th-td-should-not-close-dl-list.html : has expected results
+/sdcard/android/layout_tests/fast/invalid/table-inside-stray-table-content.html
+/sdcard/android/layout_tests/fast/invalid/010.html
+/sdcard/android/layout_tests/fast/invalid/002.html
+/sdcard/android/layout_tests/fast/invalid/012.html
+/sdcard/android/layout_tests/fast/invalid/004.html
+/sdcard/android/layout_tests/fast/invalid/014.html
+/sdcard/android/layout_tests/fast/invalid/006.html
+/sdcard/android/layout_tests/fast/invalid/016.html
+/sdcard/android/layout_tests/fast/invalid/008.html
+/sdcard/android/layout_tests/fast/invalid/018.html
+/sdcard/android/layout_tests/fast/invalid/junk-data.xml
+/sdcard/android/layout_tests/fast/invalid/missing-dl-end-tag.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/missing-font-end-tag.html
+/sdcard/android/layout_tests/fast/invalid/missing-dt-end-tag.html
+/sdcard/android/layout_tests/fast/invalid/020.xml
+/sdcard/android/layout_tests/fast/invalid/001.html
+/sdcard/android/layout_tests/fast/invalid/nestedh3s.html
+/sdcard/android/layout_tests/fast/invalid/011.html
+/sdcard/android/layout_tests/fast/invalid/003.html
+/sdcard/android/layout_tests/fast/invalid/021.html
+/sdcard/android/layout_tests/fast/invalid/013.html
+/sdcard/android/layout_tests/fast/invalid/005.html
+/sdcard/android/layout_tests/fast/invalid/015.html
+/sdcard/android/layout_tests/fast/invalid/007.html
+/sdcard/android/layout_tests/fast/invalid/residual-style.html
+/sdcard/android/layout_tests/fast/invalid/017.html
+/sdcard/android/layout_tests/fast/invalid/009.html
+/sdcard/android/layout_tests/fast/invalid/missing-address-end-tag.html
+/sdcard/android/layout_tests/fast/invalid/019.html
+/sdcard/android/layout_tests/fast/forms/input-width.html
+/sdcard/android/layout_tests/fast/forms/select-item-background-clip.html
+/sdcard/android/layout_tests/fast/forms/radio-nested-labels.html
+/sdcard/android/layout_tests/fast/forms/thumbslider-crash.html
+/sdcard/android/layout_tests/fast/forms/input-first-letter.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-preventDefault.html
+/sdcard/android/layout_tests/fast/forms/plaintext-mode-2.html
+/sdcard/android/layout_tests/fast/forms/input-double-click-selection-gap-bug.html
+/sdcard/android/layout_tests/fast/forms/preserveFormDuringResidualStyle.html
+/sdcard/android/layout_tests/fast/forms/select-change-popup-to-listbox.html
+/sdcard/android/layout_tests/fast/forms/input-text-maxlength.html
+/sdcard/android/layout_tests/fast/forms/blankbuttons.html
+/sdcard/android/layout_tests/fast/forms/password-placeholder-text-security.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label05.html
+/sdcard/android/layout_tests/fast/forms/visual-hebrew-text-field.html
+/sdcard/android/layout_tests/fast/forms/textarea-trailing-newline.html : has expected results
+/sdcard/android/layout_tests/fast/forms/legend-access-key.html : has expected results
+/sdcard/android/layout_tests/fast/forms/textfield-overflow.html
+/sdcard/android/layout_tests/fast/forms/005.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label02.html
+/sdcard/android/layout_tests/fast/forms/file-input-disabled.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-visibility.html
+/sdcard/android/layout_tests/fast/forms/select-disabled-appearance.html
+/sdcard/android/layout_tests/fast/forms/input-type-change2.html
+/sdcard/android/layout_tests/fast/forms/select-block-background.html
+/sdcard/android/layout_tests/fast/forms/file-input-direction.html
+/sdcard/android/layout_tests/fast/forms/select-visual-hebrew.html
+/sdcard/android/layout_tests/fast/forms/select-change-listbox-size.html
+/sdcard/android/layout_tests/fast/forms/002.html
+/sdcard/android/layout_tests/fast/forms/textarea-align.html
+/sdcard/android/layout_tests/fast/forms/control-restrict-line-height.html
+/sdcard/android/layout_tests/fast/forms/textAreaLineHeight.html
+/sdcard/android/layout_tests/fast/forms/button-generated-content.html
+/sdcard/android/layout_tests/fast/forms/option-text-clip.html
+/sdcard/android/layout_tests/fast/forms/textfield-drag-into-disabled.html
+/sdcard/android/layout_tests/fast/forms/input-text-paste-maxlength.html
+/sdcard/android/layout_tests/fast/forms/tabs-with-modifiers.html : has expected results
+/sdcard/android/layout_tests/fast/forms/saved-state-adoptNode-crash.html : has expected results
+/sdcard/android/layout_tests/fast/forms/input-readonly-autoscroll.html
+/sdcard/android/layout_tests/fast/forms/thumbslider-no-parent-slider.html
+/sdcard/android/layout_tests/fast/forms/textfield-outline.html
+/sdcard/android/layout_tests/fast/forms/button-text-transform.html
+/sdcard/android/layout_tests/fast/forms/radio-check-click-and-drag.html : has expected results
+/sdcard/android/layout_tests/fast/forms/textarea-scroll-height.html
+/sdcard/android/layout_tests/fast/forms/button-table-styles.html
+/sdcard/android/layout_tests/fast/forms/textarea-setinnerhtml.html
+/sdcard/android/layout_tests/fast/forms/input-align.html
+/sdcard/android/layout_tests/fast/forms/box-shadow-override.html
+/sdcard/android/layout_tests/fast/forms/button-cannot-be-nested.html
+/sdcard/android/layout_tests/fast/forms/input-type-change.html
+/sdcard/android/layout_tests/fast/forms/checkbox-radio-onchange.html
+/sdcard/android/layout_tests/fast/forms/input-spaces.html
+/sdcard/android/layout_tests/fast/forms/dragging-to-file-input.html : has expected results
+/sdcard/android/layout_tests/fast/forms/menulist-option-wrap.html
+/sdcard/android/layout_tests/fast/forms/float-before-fieldset.html
+/sdcard/android/layout_tests/fast/forms/radio_checked.html
+/sdcard/android/layout_tests/fast/forms/minWidthPercent.html
+/sdcard/android/layout_tests/fast/forms/form-post-urlencoded.html : has expected results
+/sdcard/android/layout_tests/fast/forms/input-value.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label06.html
+/sdcard/android/layout_tests/fast/forms/placeholder-pseudo-style.html
+/sdcard/android/layout_tests/fast/forms/menulist-width-change.html
+/sdcard/android/layout_tests/fast/forms/option-strip-whitespace.html
+/sdcard/android/layout_tests/fast/forms/input-text-drag-down.html
+/sdcard/android/layout_tests/fast/forms/select-selected.html
+/sdcard/android/layout_tests/fast/forms/006.html
+/sdcard/android/layout_tests/fast/forms/control-clip-overflow.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-default-bkcolor.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label03.html
+/sdcard/android/layout_tests/fast/forms/003.html
+/sdcard/android/layout_tests/fast/forms/button-default-title.html
+/sdcard/android/layout_tests/fast/forms/hidden-listbox.html
+/sdcard/android/layout_tests/fast/forms/input-no-renderer.html
+/sdcard/android/layout_tests/fast/forms/input-text-click-outside.html
+/sdcard/android/layout_tests/fast/forms/input-baseline.html
+/sdcard/android/layout_tests/fast/forms/targeted-frame-submission.html
+/sdcard/android/layout_tests/fast/forms/input-table.html
+/sdcard/android/layout_tests/fast/forms/select-change-listbox-to-popup.html
+/sdcard/android/layout_tests/fast/forms/select-align.html
+/sdcard/android/layout_tests/fast/forms/radio_checked_dynamic.html
+/sdcard/android/layout_tests/fast/forms/select-writing-direction-natural.html
+/sdcard/android/layout_tests/fast/forms/hidden-input-file.html
+/sdcard/android/layout_tests/fast/forms/menulist-deselect-update.html
+/sdcard/android/layout_tests/fast/forms/button-sizes.html
+/sdcard/android/layout_tests/fast/forms/slider-thumb-stylability.html
+/sdcard/android/layout_tests/fast/forms/input-readonly-dimmed.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-width.html
+/sdcard/android/layout_tests/fast/forms/listbox-scrollbar-incremental-load.html
+/sdcard/android/layout_tests/fast/forms/password-placeholder.html
+/sdcard/android/layout_tests/fast/forms/select-list-box-with-height.html
+/sdcard/android/layout_tests/fast/forms/button-align.html
+/sdcard/android/layout_tests/fast/forms/textarea-rows-cols.html
+/sdcard/android/layout_tests/fast/forms/listbox-deselect-scroll.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-readonly.html
+/sdcard/android/layout_tests/fast/forms/select-initial-position.html
+/sdcard/android/layout_tests/fast/forms/menulist-no-overflow.html
+/sdcard/android/layout_tests/fast/forms/formmove2.html
+/sdcard/android/layout_tests/fast/forms/placeholder-set-attribute.html
+/sdcard/android/layout_tests/fast/forms/radio-attr-order.html
+/sdcard/android/layout_tests/fast/forms/input-disabled-color.html
+/sdcard/android/layout_tests/fast/forms/fieldset-align.html
+/sdcard/android/layout_tests/fast/forms/select-baseline.html
+/sdcard/android/layout_tests/fast/forms/input-text-word-wrap.html
+/sdcard/android/layout_tests/fast/forms/stuff-on-my-optgroup.html
+/sdcard/android/layout_tests/fast/forms/listbox-selection-2.html
+/sdcard/android/layout_tests/fast/forms/input-readonly-empty.html
+/sdcard/android/layout_tests/fast/forms/input-align-image.html
+/sdcard/android/layout_tests/fast/forms/input-selection-hidden.html : has expected results
+/sdcard/android/layout_tests/fast/forms/option-index.html
+/sdcard/android/layout_tests/fast/forms/indeterminate.html
+/sdcard/android/layout_tests/fast/forms/negativeLineHeight.html
+/sdcard/android/layout_tests/fast/forms/007.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label04.html
+/sdcard/android/layout_tests/fast/forms/select-style.html
+/sdcard/android/layout_tests/fast/forms/select-size.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-disabled.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-height.html
+/sdcard/android/layout_tests/fast/forms/004.html
+/sdcard/android/layout_tests/fast/forms/menulist-separator-painting.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_label01.html
+/sdcard/android/layout_tests/fast/forms/fieldset-with-float.html
+/sdcard/android/layout_tests/fast/forms/search-placeholder-value-changed.html
+/sdcard/android/layout_tests/fast/forms/input-field-text-truncated.html
+/sdcard/android/layout_tests/fast/forms/floating-textfield-relayout.html
+/sdcard/android/layout_tests/fast/forms/add-remove-form-elements-stress-test.html : has expected results
+/sdcard/android/layout_tests/fast/forms/button-inner-block-reuse.html
+/sdcard/android/layout_tests/fast/forms/input-type-text-min-width.html
+/sdcard/android/layout_tests/fast/forms/onchange-enter-submit.html : has expected results
+/sdcard/android/layout_tests/fast/forms/slider-thumb-shared-style.html
+/sdcard/android/layout_tests/fast/forms/option-script.html
+/sdcard/android/layout_tests/fast/forms/input-paste-undo.html
+/sdcard/android/layout_tests/fast/forms/input-text-click-inside.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-selection.html
+/sdcard/android/layout_tests/fast/forms/button-white-space.html
+/sdcard/android/layout_tests/fast/forms/menulist-narrow-width.html
+/sdcard/android/layout_tests/fast/forms/slider-padding.html
+/sdcard/android/layout_tests/fast/forms/menulist-restrict-line-height.html
+/sdcard/android/layout_tests/fast/forms/textarea-width.html
+/sdcard/android/layout_tests/fast/forms/input-text-double-click.html
+/sdcard/android/layout_tests/fast/forms/button-submit.html
+/sdcard/android/layout_tests/fast/forms/disabled-select-change-index.html
+/sdcard/android/layout_tests/fast/forms/formmove3.html
+/sdcard/android/layout_tests/fast/forms/listbox-width-change.html
+/sdcard/android/layout_tests/fast/forms/input-text-self-emptying-click.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-bkcolor.html
+/sdcard/android/layout_tests/fast/forms/button-positioned.html
+/sdcard/android/layout_tests/fast/forms/search-transformed.html
+/sdcard/android/layout_tests/fast/forms/image-border.html
+/sdcard/android/layout_tests/fast/forms/encoding-test.html
+/sdcard/android/layout_tests/fast/forms/input-type-change-in-onfocus-mouse.html : has expected results
+/sdcard/android/layout_tests/fast/compact/001.html
+/sdcard/android/layout_tests/fast/compact/002.html
+/sdcard/android/layout_tests/fast/compact/003.html
+/sdcard/android/layout_tests/fast/clip/nestedTransparencyClip.html
+/sdcard/android/layout_tests/fast/clip/outline-overflowClip.html
+/sdcard/android/layout_tests/fast/clip/001.html
+/sdcard/android/layout_tests/fast/clip/010.html
+/sdcard/android/layout_tests/fast/clip/002.html
+/sdcard/android/layout_tests/fast/clip/011.html
+/sdcard/android/layout_tests/fast/clip/003.html
+/sdcard/android/layout_tests/fast/clip/012.html
+/sdcard/android/layout_tests/fast/clip/004.html
+/sdcard/android/layout_tests/fast/clip/013.html
+/sdcard/android/layout_tests/fast/clip/005.html
+/sdcard/android/layout_tests/fast/clip/014.html
+/sdcard/android/layout_tests/fast/clip/006.html
+/sdcard/android/layout_tests/fast/clip/015.html
+/sdcard/android/layout_tests/fast/clip/007.html
+/sdcard/android/layout_tests/fast/clip/016.html
+/sdcard/android/layout_tests/fast/clip/008.html
+/sdcard/android/layout_tests/fast/clip/017.html
+/sdcard/android/layout_tests/fast/clip/009.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/001.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/002.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/003.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/004.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/equal-precedence-resolution.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/rtl-border-collapsing.html
+/sdcard/android/layout_tests/fast/table/border-collapsing/border-collapsing-head-foot.html
+/sdcard/android/layout_tests/fast/table/fixed-nested.html
+/sdcard/android/layout_tests/fast/table/frame-and-rules.html
+/sdcard/android/layout_tests/fast/table/empty-table-percent-height.html
+/sdcard/android/layout_tests/fast/table/100-percent-cell-width.html
+/sdcard/android/layout_tests/fast/table/stale-grid-crash.html
+/sdcard/android/layout_tests/fast/table/div-as-col-span.html
+/sdcard/android/layout_tests/fast/table/nobr.html
+/sdcard/android/layout_tests/fast/table/012.html
+/sdcard/android/layout_tests/fast/table/040.html
+/sdcard/android/layout_tests/fast/table/growCellForImageQuirk.html
+/sdcard/android/layout_tests/fast/table/024.html
+/sdcard/android/layout_tests/fast/table/cell-pref-width-invalidation.html
+/sdcard/android/layout_tests/fast/table/008.html
+/sdcard/android/layout_tests/fast/table/036.html
+/sdcard/android/layout_tests/fast/table/nested-percent-height-table.html
+/sdcard/android/layout_tests/fast/table/rules-attr-dynchange1.html
+/sdcard/android/layout_tests/fast/table/wide-column.html
+/sdcard/android/layout_tests/fast/table/fixed-with-auto-with-colspan.html
+/sdcard/android/layout_tests/fast/table/percent-heights.html
+/sdcard/android/layout_tests/fast/table/021.html
+/sdcard/android/layout_tests/fast/table/colspanMinWidth.html
+/sdcard/android/layout_tests/fast/table/005.html
+/sdcard/android/layout_tests/fast/table/033.html
+/sdcard/android/layout_tests/fast/table/017.html
+/sdcard/android/layout_tests/fast/table/floatingTablePaintBackground.html
+/sdcard/android/layout_tests/fast/table/029.html
+/sdcard/android/layout_tests/fast/table/cell-absolute-child.html
+/sdcard/android/layout_tests/fast/table/click-near-anonymous-table.html
+/sdcard/android/layout_tests/fast/table/auto-with-percent-height.html
+/sdcard/android/layout_tests/fast/table/insert-before-anonymous-ancestors.html
+/sdcard/android/layout_tests/fast/table/append-cells2.html
+/sdcard/android/layout_tests/fast/table/unused-percent-heights.html
+/sdcard/android/layout_tests/fast/table/max-width-integer-overflow.html
+/sdcard/android/layout_tests/fast/table/vertical-align-baseline-readjust.html
+/sdcard/android/layout_tests/fast/table/empty-row-crash.html
+/sdcard/android/layout_tests/fast/table/002.html
+/sdcard/android/layout_tests/fast/table/030.html
+/sdcard/android/layout_tests/fast/table/cell-width-auto.html
+/sdcard/android/layout_tests/fast/table/014.html
+/sdcard/android/layout_tests/fast/table/037.xml
+/sdcard/android/layout_tests/fast/table/large-width.html
+/sdcard/android/layout_tests/fast/table/026.html
+/sdcard/android/layout_tests/fast/table/unbreakable-images-quirk.html
+/sdcard/android/layout_tests/fast/table/038.html
+/sdcard/android/layout_tests/fast/table/dynamic-cellpadding.html
+/sdcard/android/layout_tests/fast/table/generated-caption.html
+/sdcard/android/layout_tests/fast/table/empty-cells.html
+/sdcard/android/layout_tests/fast/table/add-before-anonymous-child.html
+/sdcard/android/layout_tests/fast/table/011.html
+/sdcard/android/layout_tests/fast/table/table-display-types-strict.html
+/sdcard/android/layout_tests/fast/table/023.html
+/sdcard/android/layout_tests/fast/table/007.html
+/sdcard/android/layout_tests/fast/table/cellindex.html
+/sdcard/android/layout_tests/fast/table/035.html
+/sdcard/android/layout_tests/fast/table/colgroup-spanning-groups-rules.html
+/sdcard/android/layout_tests/fast/table/insert-row-before-form.html
+/sdcard/android/layout_tests/fast/table/rowspan-paint-order.html
+/sdcard/android/layout_tests/fast/table/rtl-cell-display-none-assert.html
+/sdcard/android/layout_tests/fast/table/insert-cell-before-form.html
+/sdcard/android/layout_tests/fast/table/replaced-percent-height.html
+/sdcard/android/layout_tests/fast/table/text-field-baseline.html
+/sdcard/android/layout_tests/fast/table/table-display-types.html
+/sdcard/android/layout_tests/fast/table/table-hspace-align-center.html
+/sdcard/android/layout_tests/fast/table/caption-relayout.html
+/sdcard/android/layout_tests/fast/table/020.html
+/sdcard/android/layout_tests/fast/table/fixed-table-non-cell-in-row.html
+/sdcard/android/layout_tests/fast/table/004.html
+/sdcard/android/layout_tests/fast/table/032.html
+/sdcard/android/layout_tests/fast/table/row-height-recalc.html
+/sdcard/android/layout_tests/fast/table/016.html
+/sdcard/android/layout_tests/fast/table/absolute-table-at-bottom.html
+/sdcard/android/layout_tests/fast/table/028.html
+/sdcard/android/layout_tests/fast/table/spanOverlapRepaint.html
+/sdcard/android/layout_tests/fast/table/invisible-cell-background.html
+/sdcard/android/layout_tests/fast/table/vertical-align-baseline.html
+/sdcard/android/layout_tests/fast/table/wide-colspan.html
+/sdcard/android/layout_tests/fast/table/rowindex.html
+/sdcard/android/layout_tests/fast/table/001.html
+/sdcard/android/layout_tests/fast/table/remove-td-display-none.html
+/sdcard/android/layout_tests/fast/table/013.html
+/sdcard/android/layout_tests/fast/table/041.html
+/sdcard/android/layout_tests/fast/table/colgroup-preceded-by-caption.html
+/sdcard/android/layout_tests/fast/table/025.html
+/sdcard/android/layout_tests/fast/table/giantCellspacing.html
+/sdcard/android/layout_tests/fast/table/009.html
+/sdcard/android/layout_tests/fast/table/edge-offsets.html
+/sdcard/android/layout_tests/fast/table/giantRowspan.html
+/sdcard/android/layout_tests/fast/table/010.html
+/sdcard/android/layout_tests/fast/table/inline-form-assert.html
+/sdcard/android/layout_tests/fast/table/overflowHidden.html
+/sdcard/android/layout_tests/fast/table/rules-attr-dynchange2.html
+/sdcard/android/layout_tests/fast/table/height-percent-test.html
+/sdcard/android/layout_tests/fast/table/multiple-percent-height-rows.html
+/sdcard/android/layout_tests/fast/table/giantRowspan2.html
+/sdcard/android/layout_tests/fast/table/tableInsideCaption.html
+/sdcard/android/layout_tests/fast/table/022.html
+/sdcard/android/layout_tests/fast/table/006.html
+/sdcard/android/layout_tests/fast/table/034.html
+/sdcard/android/layout_tests/fast/table/append-cells.html
+/sdcard/android/layout_tests/fast/table/018.html
+/sdcard/android/layout_tests/fast/table/percent-widths-stretch.html
+/sdcard/android/layout_tests/fast/table/prepend-in-anonymous-table.html
+/sdcard/android/layout_tests/fast/table/floating-th.html
+/sdcard/android/layout_tests/fast/table/empty-section-crash.html
+/sdcard/android/layout_tests/fast/table/form-with-table-style.html
+/sdcard/android/layout_tests/fast/table/003.html
+/sdcard/android/layout_tests/fast/table/031.html
+/sdcard/android/layout_tests/fast/table/015.html
+/sdcard/android/layout_tests/fast/table/027.html
+/sdcard/android/layout_tests/fast/table/039.html
+/sdcard/android/layout_tests/fast/css/counters/invalidate-cached-counter-node.html
+/sdcard/android/layout_tests/fast/css/counters/counter-text-security.html
+/sdcard/android/layout_tests/fast/css/counters/counter-text-transform.html
+/sdcard/android/layout_tests/fast/css/variables/multiple-term-test.html
+/sdcard/android/layout_tests/fast/css/variables/colors-test.html
+/sdcard/android/layout_tests/fast/css/variables/font-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/invalid-variable-test.html
+/sdcard/android/layout_tests/fast/css/variables/misplaced-import-test.html
+/sdcard/android/layout_tests/fast/css/variables/import-test.html
+/sdcard/android/layout_tests/fast/css/variables/inline-style-test.html
+/sdcard/android/layout_tests/fast/css/variables/declaration-block-test.html
+/sdcard/android/layout_tests/fast/css/variables/margin-test.html
+/sdcard/android/layout_tests/fast/css/variables/set-variable-test.html
+/sdcard/android/layout_tests/fast/css/variables/override-test.html
+/sdcard/android/layout_tests/fast/css/variables/remove-variable-test.html
+/sdcard/android/layout_tests/fast/css/variables/variable-iteration-test.html
+/sdcard/android/layout_tests/fast/css/variables/image-test.html
+/sdcard/android/layout_tests/fast/css/variables/block-cycle-test.html
+/sdcard/android/layout_tests/fast/css/variables/shorthand-test.html
+/sdcard/android/layout_tests/fast/css/variables/print-test.html
+/sdcard/android/layout_tests/fast/css/namespaces/001.xml
+/sdcard/android/layout_tests/fast/css/namespaces/002.xml
+/sdcard/android/layout_tests/fast/css/namespaces/003.xml
+/sdcard/android/layout_tests/fast/css/namespaces/004.xml
+/sdcard/android/layout_tests/fast/css/namespaces/005.xml
+/sdcard/android/layout_tests/fast/css/namespaces/006.xml
+/sdcard/android/layout_tests/fast/css/namespaces/007.xml
+/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-letter-float-after-float.html
+/sdcard/android/layout_tests/fast/css/invalidation-errors-2.html
+/sdcard/android/layout_tests/fast/css/line-height-negative.html
+/sdcard/android/layout_tests/fast/css/only-child-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/008.html
+/sdcard/android/layout_tests/fast/css/first-of-type-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/ZeroOpacityLayers2.html
+/sdcard/android/layout_tests/fast/css/target-fragment-match.html
+/sdcard/android/layout_tests/fast/css/marginComputedStyle.html
+/sdcard/android/layout_tests/fast/css/live-cssrules.html
+/sdcard/android/layout_tests/fast/css/zoom-font-size.html
+/sdcard/android/layout_tests/fast/css/005.html
+/sdcard/android/layout_tests/fast/css/first-letter-hover.html
+/sdcard/android/layout_tests/fast/css/color-quirk.html
+/sdcard/android/layout_tests/fast/css/resize-corner-tracking-transformed.html
+/sdcard/android/layout_tests/fast/css/selector-set-attribute.html
+/sdcard/android/layout_tests/fast/css/attribute-selector-empty-value.html
+/sdcard/android/layout_tests/fast/css/line-height-overflow.html
+/sdcard/android/layout_tests/fast/css/002.html
+/sdcard/android/layout_tests/fast/css/empty-generated-content.html
+/sdcard/android/layout_tests/fast/css/background-image-with-baseurl.html
+/sdcard/android/layout_tests/fast/css/border-radius-outline-offset.html
+/sdcard/android/layout_tests/fast/css/hsla-color.html
+/sdcard/android/layout_tests/fast/css/first-letter-skip-out-of-flow.html
+/sdcard/android/layout_tests/fast/css/font-face-multiple-remote-sources.html
+/sdcard/android/layout_tests/fast/css/hover-subselector.html
+/sdcard/android/layout_tests/fast/css/text-align.html : has expected results
+/sdcard/android/layout_tests/fast/css/margin-bottom-form-element-strict.html
+/sdcard/android/layout_tests/fast/css/shadow-multiple.html
+/sdcard/android/layout_tests/fast/css/import_with_baseurl.html
+/sdcard/android/layout_tests/fast/css/list-outline.html
+/sdcard/android/layout_tests/fast/css/apple-prefix.html
+/sdcard/android/layout_tests/fast/css/line-height.html
+/sdcard/android/layout_tests/fast/css/first-letter-visibility.html
+/sdcard/android/layout_tests/fast/css/acid2.html
+/sdcard/android/layout_tests/fast/css/font_property_normal.html
+/sdcard/android/layout_tests/fast/css/css-imports.html
+/sdcard/android/layout_tests/fast/css/last-of-type-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/last-child-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/visibility-hit-test.html
+/sdcard/android/layout_tests/fast/css/absolute-poition-in-rtl-parent.html
+/sdcard/android/layout_tests/fast/css/content-dynamic.html
+/sdcard/android/layout_tests/fast/css/acid2-pixel.html
+/sdcard/android/layout_tests/fast/css/transition-color-unspecified.html
+/sdcard/android/layout_tests/fast/css/table-text-align-strict.html
+/sdcard/android/layout_tests/fast/css/transform-default-parameter.html
+/sdcard/android/layout_tests/fast/css/contentImage.html
+/sdcard/android/layout_tests/fast/css/value-list-out-of-bounds-crash.html
+/sdcard/android/layout_tests/fast/css/color-strict.html
+/sdcard/android/layout_tests/fast/css/ignore-text-zoom.html
+/sdcard/android/layout_tests/fast/css/max-height-none.html
+/sdcard/android/layout_tests/fast/css/invalidation-errors-3.html
+/sdcard/android/layout_tests/fast/css/empty-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/begin-end-contain-selector-empty-value.html
+/sdcard/android/layout_tests/fast/css/find-next-layer.html
+/sdcard/android/layout_tests/fast/css/contentDiv.html
+/sdcard/android/layout_tests/fast/css/invalid-pseudo-classes.html
+/sdcard/android/layout_tests/fast/css/disabled-author-styles.html
+/sdcard/android/layout_tests/fast/css/text-security.html
+/sdcard/android/layout_tests/fast/css/font-weight-1.html
+/sdcard/android/layout_tests/fast/css/margin-bottom-form-element-quirk.html
+/sdcard/android/layout_tests/fast/css/font-shorthand-weight-only.html
+/sdcard/android/layout_tests/fast/css/006.html
+/sdcard/android/layout_tests/fast/css/fieldset-display-row.html
+/sdcard/android/layout_tests/fast/css/border-height.html
+/sdcard/android/layout_tests/fast/css/css2-system-fonts.html
+/sdcard/android/layout_tests/fast/css/imageTileOpacity.html
+/sdcard/android/layout_tests/fast/css/font-face-remote.html
+/sdcard/android/layout_tests/fast/css/003.html
+/sdcard/android/layout_tests/fast/css/error-in-last-decl.html
+/sdcard/android/layout_tests/fast/css/zoom-property-parsing.html
+/sdcard/android/layout_tests/fast/css/style-outside-head.html
+/sdcard/android/layout_tests/fast/css/first-letter-capitalized.html
+/sdcard/android/layout_tests/fast/css/word-space-extra.html
+/sdcard/android/layout_tests/fast/css/first-letter-float.html
+/sdcard/android/layout_tests/fast/css/simple-selector-chain-parsing.html
+/sdcard/android/layout_tests/fast/css/xml-stylesheet-pi-not-in-prolog.xml
+/sdcard/android/layout_tests/fast/css/continuationCrash.html
+/sdcard/android/layout_tests/fast/css/vertical-align-lengths.html
+/sdcard/android/layout_tests/fast/css/first-child-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/getFloatValueForUnit.html
+/sdcard/android/layout_tests/fast/css/first-letter-detach.html
+/sdcard/android/layout_tests/fast/css/line-height-font-order.html
+/sdcard/android/layout_tests/fast/css/font-face-unicode-range.html
+/sdcard/android/layout_tests/fast/css/layerZOrderCrash.html
+/sdcard/android/layout_tests/fast/css/007.html
+/sdcard/android/layout_tests/fast/css/import-rule-regression-11590.html
+/sdcard/android/layout_tests/fast/css/last-child-style-sharing.html
+/sdcard/android/layout_tests/fast/css/css3-modsel-22.html
+/sdcard/android/layout_tests/fast/css/ex-after-font-variant.html
+/sdcard/android/layout_tests/fast/css/quirk-orphaned-units.html
+/sdcard/android/layout_tests/fast/css/outline-auto-location.html
+/sdcard/android/layout_tests/fast/css/margin-top-bottom-dynamic.html
+/sdcard/android/layout_tests/fast/css/font-face-descriptor-multiple-values.html
+/sdcard/android/layout_tests/fast/css/empty-body-test.html
+/sdcard/android/layout_tests/fast/css/link-outside-head.html
+/sdcard/android/layout_tests/fast/css/font-size-negative.html
+/sdcard/android/layout_tests/fast/css/position-negative-top-margin.html
+/sdcard/android/layout_tests/fast/css/invalid-percentage-property.html : has expected results
+/sdcard/android/layout_tests/fast/css/ZeroOpacityLayers.html
+/sdcard/android/layout_tests/fast/css/only-of-type-pseudo-class.html
+/sdcard/android/layout_tests/fast/css/004.html
+/sdcard/android/layout_tests/fast/css/rtl-ordering.html
+/sdcard/android/layout_tests/fast/css/affected-by-hover-after-style-change.html
+/sdcard/android/layout_tests/fast/css/resize-corner-tracking.html
+/sdcard/android/layout_tests/fast/css/background-shorthand-invalid-url.html
+/sdcard/android/layout_tests/fast/css/invalidation-errors.html
+/sdcard/android/layout_tests/fast/css/MarqueeLayoutTest.html
+/sdcard/android/layout_tests/fast/css/textCapitalizeEdgeCases.html
+/sdcard/android/layout_tests/fast/css/001.html
+/sdcard/android/layout_tests/fast/css/hsl-color.html
+/sdcard/android/layout_tests/fast/css/first-letter-recalculation.html
+/sdcard/android/layout_tests/fast/css/inline-properties-important.html
+/sdcard/android/layout_tests/fast/css/dynamic-sibling-selector.html
+/sdcard/android/layout_tests/fast/css/table-text-align-quirk.html
+/sdcard/android/layout_tests/fast/css/outline-auto-empty-rects.html
+/sdcard/android/layout_tests/fast/css/font-face-multiple-faces.html
+/sdcard/android/layout_tests/fast/css/rgb-float.html
+/sdcard/android/layout_tests/fast/css/pendingStylesheetFontSize.html
+/sdcard/android/layout_tests/fast/css/contentDivWithChildren.html
+/sdcard/android/layout_tests/fast/css/universal-hover-quirk.html
+/sdcard/android/layout_tests/fast/css/css3-nth-child.html
+/sdcard/android/layout_tests/fast/css/style-parsed-outside-head.html
+/sdcard/android/layout_tests/fast/css/percentage-non-integer.html
+/sdcard/android/layout_tests/fast/css/negative-nth-child.html
+/sdcard/android/layout_tests/fast/box-sizing/panels-one.html
+/sdcard/android/layout_tests/fast/box-sizing/percentage-height.html
+/sdcard/android/layout_tests/fast/box-sizing/box-sizing.html
+/sdcard/android/layout_tests/fast/box-sizing/panels-two.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/white-space-pre-wraps.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/quirk-percent-height-grandchild.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/block/basic/010.html
+/sdcard/android/layout_tests/fast/block/basic/quirk-height.html
+/sdcard/android/layout_tests/fast/block/basic/020.html
+/sdcard/android/layout_tests/fast/block/basic/002.html
+/sdcard/android/layout_tests/fast/block/basic/011.html
+/sdcard/android/layout_tests/fast/block/basic/text-indent-rtl.html
+/sdcard/android/layout_tests/fast/block/basic/021.html
+/sdcard/android/layout_tests/fast/block/basic/003.html
+/sdcard/android/layout_tests/fast/block/basic/012.html
+/sdcard/android/layout_tests/fast/block/basic/013.html
+/sdcard/android/layout_tests/fast/block/basic/004.html
+/sdcard/android/layout_tests/fast/block/basic/014.html
+/sdcard/android/layout_tests/fast/block/basic/005.html
+/sdcard/android/layout_tests/fast/block/basic/015.html
+/sdcard/android/layout_tests/fast/block/basic/006.html
+/sdcard/android/layout_tests/fast/block/basic/016.html
+/sdcard/android/layout_tests/fast/block/basic/007.html
+/sdcard/android/layout_tests/fast/block/basic/008.html
+/sdcard/android/layout_tests/fast/block/basic/009.html
+/sdcard/android/layout_tests/fast/block/basic/018.html
+/sdcard/android/layout_tests/fast/block/basic/019.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/001.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/002.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/003.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/004.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/005.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/006.html
+/sdcard/android/layout_tests/fast/block/positioning/auto/007.html
+/sdcard/android/layout_tests/fast/block/positioning/059.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/relative-overflow-replaced-float.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-positioned-overconstrained.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-2.html
+/sdcard/android/layout_tests/fast/block/positioning/020.html
+/sdcard/android/layout_tests/fast/block/positioning/012.html
+/sdcard/android/layout_tests/fast/block/positioning/004.html
+/sdcard/android/layout_tests/fast/block/positioning/040.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-position-direction-strict.html
+/sdcard/android/layout_tests/fast/block/positioning/032.html
+/sdcard/android/layout_tests/fast/block/positioning/024.html
+/sdcard/android/layout_tests/fast/block/positioning/060.html
+/sdcard/android/layout_tests/fast/block/positioning/052.html
+/sdcard/android/layout_tests/fast/block/positioning/016.html
+/sdcard/android/layout_tests/fast/block/positioning/044.html
+/sdcard/android/layout_tests/fast/block/positioning/008.html
+/sdcard/android/layout_tests/fast/block/positioning/036.html
+/sdcard/android/layout_tests/fast/block/positioning/028.html
+/sdcard/android/layout_tests/fast/block/positioning/056.html
+/sdcard/android/layout_tests/fast/block/positioning/048.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-position-direction-quirk.html
+/sdcard/android/layout_tests/fast/block/positioning/replaced-inside-fixed-top-bottom.html
+/sdcard/android/layout_tests/fast/block/positioning/pref-width-change.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.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.html
+/sdcard/android/layout_tests/fast/block/positioning/001.html
+/sdcard/android/layout_tests/fast/block/positioning/021.html
+/sdcard/android/layout_tests/fast/block/positioning/013.html
+/sdcard/android/layout_tests/fast/block/positioning/relative-overflow-block.html
+/sdcard/android/layout_tests/fast/block/positioning/005.html
+/sdcard/android/layout_tests/fast/block/positioning/041.html
+/sdcard/android/layout_tests/fast/block/positioning/033.html
+/sdcard/android/layout_tests/fast/block/positioning/025.html
+/sdcard/android/layout_tests/fast/block/positioning/061.html
+/sdcard/android/layout_tests/fast/block/positioning/017.html
+/sdcard/android/layout_tests/fast/block/positioning/053.html
+/sdcard/android/layout_tests/fast/block/positioning/009.html
+/sdcard/android/layout_tests/fast/block/positioning/045.html
+/sdcard/android/layout_tests/fast/block/positioning/037.html
+/sdcard/android/layout_tests/fast/block/positioning/029.html
+/sdcard/android/layout_tests/fast/block/positioning/057.html
+/sdcard/android/layout_tests/fast/block/positioning/049.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-with-html-border-quirks.html
+/sdcard/android/layout_tests/fast/block/positioning/leftmargin-topmargin.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-length-of-neg-666666.html
+/sdcard/android/layout_tests/fast/block/positioning/complex-percentage-height.html
+/sdcard/android/layout_tests/fast/block/positioning/auto-height-with-top-and-bottom.html
+/sdcard/android/layout_tests/fast/block/positioning/010.html
+/sdcard/android/layout_tests/fast/block/positioning/002.html
+/sdcard/android/layout_tests/fast/block/positioning/030.html
+/sdcard/android/layout_tests/fast/block/positioning/relayout-on-position-change.html
+/sdcard/android/layout_tests/fast/block/positioning/022.html
+/sdcard/android/layout_tests/fast/block/positioning/padding-percent.html
+/sdcard/android/layout_tests/fast/block/positioning/014.html
+/sdcard/android/layout_tests/fast/block/positioning/050.html
+/sdcard/android/layout_tests/fast/block/positioning/006.html
+/sdcard/android/layout_tests/fast/block/positioning/042.html
+/sdcard/android/layout_tests/fast/block/positioning/034.html
+/sdcard/android/layout_tests/fast/block/positioning/offsetLeft-offsetTop-borders.html
+/sdcard/android/layout_tests/fast/block/positioning/062.html
+/sdcard/android/layout_tests/fast/block/positioning/026.html
+/sdcard/android/layout_tests/fast/block/positioning/054.html
+/sdcard/android/layout_tests/fast/block/positioning/018.html
+/sdcard/android/layout_tests/fast/block/positioning/046.html
+/sdcard/android/layout_tests/fast/block/positioning/abs-inside-inline-rel.html
+/sdcard/android/layout_tests/fast/block/positioning/038.html
+/sdcard/android/layout_tests/fast/block/positioning/absolute-with-html-border-strict.html
+/sdcard/android/layout_tests/fast/block/positioning/058.html
+/sdcard/android/layout_tests/fast/block/positioning/negative-right-pos.html
+/sdcard/android/layout_tests/fast/block/positioning/relative-overconstrained.html
+/sdcard/android/layout_tests/fast/block/positioning/child-of-absolute-with-auto-height.html
+/sdcard/android/layout_tests/fast/block/positioning/relative-overflow-replaced.html
+/sdcard/android/layout_tests/fast/block/positioning/height-change.html
+/sdcard/android/layout_tests/fast/block/positioning/window-height-change.html
+/sdcard/android/layout_tests/fast/block/positioning/011.html
+/sdcard/android/layout_tests/fast/block/positioning/003.html
+/sdcard/android/layout_tests/fast/block/positioning/move-with-auto-width.html
+/sdcard/android/layout_tests/fast/block/positioning/031.html
+/sdcard/android/layout_tests/fast/block/positioning/023.html
+/sdcard/android/layout_tests/fast/block/positioning/051.html
+/sdcard/android/layout_tests/fast/block/positioning/015.html
+/sdcard/android/layout_tests/fast/block/positioning/043.html
+/sdcard/android/layout_tests/fast/block/positioning/007.html
+/sdcard/android/layout_tests/fast/block/positioning/035.html
+/sdcard/android/layout_tests/fast/block/positioning/027.html
+/sdcard/android/layout_tests/fast/block/positioning/055.html
+/sdcard/android/layout_tests/fast/block/positioning/019.html
+/sdcard/android/layout_tests/fast/block/positioning/047.html
+/sdcard/android/layout_tests/fast/block/positioning/039.html
+/sdcard/android/layout_tests/fast/block/positioning/inline-block-relposition.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/br-with-clear-2.html
+/sdcard/android/layout_tests/fast/block/float/020.html
+/sdcard/android/layout_tests/fast/block/float/012.html
+/sdcard/android/layout_tests/fast/block/float/004.html
+/sdcard/android/layout_tests/fast/block/float/032.html
+/sdcard/android/layout_tests/fast/block/float/024.html
+/sdcard/android/layout_tests/fast/block/float/016.html
+/sdcard/android/layout_tests/fast/block/float/008.html
+/sdcard/android/layout_tests/fast/block/float/028.html
+/sdcard/android/layout_tests/fast/block/float/shrink-to-fit-width.html
+/sdcard/android/layout_tests/fast/block/float/clamped-right-float.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/nowrap-clear-min-width.html
+/sdcard/android/layout_tests/fast/block/float/overhanging-after-height-decrease-offsets.html
+/sdcard/android/layout_tests/fast/block/float/001.html
+/sdcard/android/layout_tests/fast/block/float/021.html
+/sdcard/android/layout_tests/fast/block/float/013.html
+/sdcard/android/layout_tests/fast/block/float/nopaint-after-layer-destruction2.html
+/sdcard/android/layout_tests/fast/block/float/005.html
+/sdcard/android/layout_tests/fast/block/float/033.html
+/sdcard/android/layout_tests/fast/block/float/025.html
+/sdcard/android/layout_tests/fast/block/float/017.html
+/sdcard/android/layout_tests/fast/block/float/009.html
+/sdcard/android/layout_tests/fast/block/float/float-in-float-hit-testing.html
+/sdcard/android/layout_tests/fast/block/float/029.html
+/sdcard/android/layout_tests/fast/block/float/4145535Crash.html
+/sdcard/android/layout_tests/fast/block/float/editable-text-overlapping-float.html
+/sdcard/android/layout_tests/fast/block/float/nestedAnonymousBlocks.html
+/sdcard/android/layout_tests/fast/block/float/intruding-painted-twice.html
+/sdcard/android/layout_tests/fast/block/float/010.html
+/sdcard/android/layout_tests/fast/block/float/002.html
+/sdcard/android/layout_tests/fast/block/float/dynamic-unfloat-pref-width.html
+/sdcard/android/layout_tests/fast/block/float/marquee-shrink-to-avoid-floats.html
+/sdcard/android/layout_tests/fast/block/float/030.html
+/sdcard/android/layout_tests/fast/block/float/022.html
+/sdcard/android/layout_tests/fast/block/float/014.html
+/sdcard/android/layout_tests/fast/block/float/006.html
+/sdcard/android/layout_tests/fast/block/float/034.html
+/sdcard/android/layout_tests/fast/block/float/relative-painted-twice.html
+/sdcard/android/layout_tests/fast/block/float/026.html
+/sdcard/android/layout_tests/fast/block/float/018.html
+/sdcard/android/layout_tests/fast/block/float/width-update-after-clear.html
+/sdcard/android/layout_tests/fast/block/float/nopaint-after-layer-destruction.html
+/sdcard/android/layout_tests/fast/block/float/float-in-float-painting.html
+/sdcard/android/layout_tests/fast/block/float/overhanging-after-height-decrease.html
+/sdcard/android/layout_tests/fast/block/float/float-avoidance.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/br-with-clear.html
+/sdcard/android/layout_tests/fast/block/float/011.html
+/sdcard/android/layout_tests/fast/block/float/negative-margin-clear.html
+/sdcard/android/layout_tests/fast/block/float/003.html
+/sdcard/android/layout_tests/fast/block/float/031.html
+/sdcard/android/layout_tests/fast/block/float/023.html
+/sdcard/android/layout_tests/fast/block/float/015.html
+/sdcard/android/layout_tests/fast/block/float/007.html
+/sdcard/android/layout_tests/fast/block/float/035.html
+/sdcard/android/layout_tests/fast/block/float/027.html
+/sdcard/android/layout_tests/fast/block/float/019.html
+/sdcard/android/layout_tests/fast/block/float/nestedAnonymousBlocks2.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/059.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/empty-clear-blocks.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/010.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/negative-margins.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/002.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/020.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/101.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/030.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/012.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/040.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/022.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/004.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/103.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/032.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/006.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/042.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/016.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/034.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/062.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/044.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/026.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/018.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/028.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/056.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/038.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/058.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/100.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/001.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/011.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/102.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/021.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/003.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/031.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/005.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/041.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/104.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/033.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/015.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/025.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/043.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/035.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/017.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/027.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/045.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/063.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/037.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/019.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/055.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/029.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/039.html
+/sdcard/android/layout_tests/fast/block/margin-collapse/057.html
+/sdcard/android/layout_tests/fast/runin/001.html
+/sdcard/android/layout_tests/fast/runin/002.html
+/sdcard/android/layout_tests/fast/parser/title-error-test.html
+/sdcard/android/layout_tests/fast/parser/comments.html
+/sdcard/android/layout_tests/fast/parser/fonts.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/entity-comment-in-style.html
+/sdcard/android/layout_tests/fast/parser/xhtml-alternate-entities.xml
+/sdcard/android/layout_tests/fast/parser/nofoo-tags-inside-paragraph.html
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-textarea.html
+/sdcard/android/layout_tests/fast/parser/bad-xml-slash.html
+/sdcard/android/layout_tests/fast/parser/001.html
+/sdcard/android/layout_tests/fast/parser/open-comment-in-textarea.html
+/sdcard/android/layout_tests/fast/parser/tabs-in-scripts.html
+/sdcard/android/layout_tests/fast/parser/external-entities-in-xslt.xml : has expected results
+/sdcard/android/layout_tests/fast/parser/parseCommentsInTitles.html
+/sdcard/android/layout_tests/fast/parser/remove-block-in-residual-style.html
+/sdcard/android/layout_tests/fast/parser/open-comment-in-style.html
+/sdcard/android/layout_tests/fast/parser/document-write-option.html
+/sdcard/android/layout_tests/fast/parser/style-script-head-test.html
+/sdcard/android/layout_tests/fast/parser/comment-in-textarea.html
+/sdcard/android/layout_tests/fast/layers/zindex-ridonkulous.html
+/sdcard/android/layout_tests/fast/layers/positioned-inside-root-with-margins.html
+/sdcard/android/layout_tests/fast/layers/layer-visibility-sublayer.html
+/sdcard/android/layout_tests/fast/layers/opacity-outline.html
+/sdcard/android/layout_tests/fast/layers/add-layer-with-nested-stacking.html
+/sdcard/android/layout_tests/fast/layers/layer-content-visibility-change.html
+/sdcard/android/layout_tests/fast/layers/zindex-inherit.html
+/sdcard/android/layout_tests/fast/layers/layer-visibility.html
+/sdcard/android/layout_tests/fast/layers/remove-layer-with-nested-stacking.html
+/sdcard/android/layout_tests/fast/layers/opacity-transforms.html
+/sdcard/android/layout_tests/fast/layers/overflow-scroll-auto-switch.html
+/sdcard/android/layout_tests/fast/layers/scroll-rect-to-visible.html
+/sdcard/android/layout_tests/fast/layers/opacity-stacking.html
+/sdcard/android/layout_tests/fast/history/clicked-link-is-visited.html
+/sdcard/android/layout_tests/fast/history/history_reload.html : has expected results
+/sdcard/android/layout_tests/fast/backgrounds/repeat/mask-negative-offset-repeat.html
 /sdcard/android/layout_tests/fast/backgrounds/repeat/negative-offset-repeat.html
 /sdcard/android/layout_tests/fast/backgrounds/repeat/negative-offset-repeat-transformed.html
-/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/repeat/noRepeatCorrectClip.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize02.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize11.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize03.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize12.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize04.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize13.html
+/sdcard/android/layout_tests/fast/backgrounds/size/zero.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize05.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize14.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize06.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize15.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize07.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize16.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize17.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize08.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize09.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize18.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize19.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize10.html
+/sdcard/android/layout_tests/fast/backgrounds/size/backgroundSize01.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/background-origin-root-element.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-3.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-4.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-5.html
+/sdcard/android/layout_tests/fast/backgrounds/background-position-1.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-6.html
+/sdcard/android/layout_tests/fast/backgrounds/opacity-on-document-element.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-mask.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/animated-svg-as-background.html
 /sdcard/android/layout_tests/fast/backgrounds/001.html
+/sdcard/android/layout_tests/fast/backgrounds/animated-gif-as-background.html
+/sdcard/android/layout_tests/fast/backgrounds/background-position-rounding.html
+/sdcard/android/layout_tests/fast/backgrounds/bgCompositeCopy.html
+/sdcard/android/layout_tests/fast/backgrounds/background-inherit-color-bug.html
+/sdcard/android/layout_tests/fast/backgrounds/animated-svg-as-mask.html
+/sdcard/android/layout_tests/fast/backgrounds/svg-as-background-1.html
+/sdcard/android/layout_tests/fast/repaint/reflection-redraw.html
+/sdcard/android/layout_tests/fast/repaint/layer-full-repaint.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/layer-outline-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/layer-hide-when-needs-layout.html
+/sdcard/android/layout_tests/fast/repaint/layer-outline.html
+/sdcard/android/layout_tests/fast/repaint/list-marker-2.html
+/sdcard/android/layout_tests/fast/repaint/table-section-overflow.html
+/sdcard/android/layout_tests/fast/repaint/body-background-image.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-strict-vertical.html
+/sdcard/android/layout_tests/fast/repaint/inline-outline-repaint.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-4.html
+/sdcard/android/layout_tests/fast/repaint/change-transform.html
+/sdcard/android/layout_tests/fast/repaint/fixed.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-8.html
+/sdcard/android/layout_tests/fast/repaint/erase-overflow.html
+/sdcard/android/layout_tests/fast/repaint/outline-child-repaint.html
+/sdcard/android/layout_tests/fast/repaint/float-overflow.html
+/sdcard/android/layout_tests/fast/repaint/containing-block-position-change.html
+/sdcard/android/layout_tests/fast/repaint/text-selection-rect-in-overflow.html
+/sdcard/android/layout_tests/fast/repaint/flexible-box-overflow-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/table-cell-move.html
+/sdcard/android/layout_tests/fast/repaint/transform-absolute-child.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-10.html
+/sdcard/android/layout_tests/fast/repaint/float-move-during-layout.html
+/sdcard/android/layout_tests/fast/repaint/overflow-clip-subtree-layout.html
+/sdcard/android/layout_tests/fast/repaint/invisible-objects.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-strict-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/focus-layers.html
+/sdcard/android/layout_tests/fast/repaint/inline-color-change.html
+/sdcard/android/layout_tests/fast/repaint/table-col-background.html
+/sdcard/android/layout_tests/fast/repaint/selection-after-remove.html
+/sdcard/android/layout_tests/fast/repaint/dynamic-table-vertical-alignment-change.html
+/sdcard/android/layout_tests/fast/repaint/flexible-box-overflow.html
+/sdcard/android/layout_tests/fast/repaint/table-two-pass-layout-overpaint.html
+/sdcard/android/layout_tests/fast/repaint/overflow-into-content.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-vertical.html
+/sdcard/android/layout_tests/fast/repaint/border-repaint-glitch.html
+/sdcard/android/layout_tests/fast/repaint/continuation-after-outline.html
+/sdcard/android/layout_tests/fast/repaint/intermediate-layout-position.html
+/sdcard/android/layout_tests/fast/repaint/table-section-repaint.html
+/sdcard/android/layout_tests/fast/repaint/clipped-relative.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-1.html
+/sdcard/android/layout_tests/fast/repaint/backgroundSizeRepaint.html
+/sdcard/android/layout_tests/fast/repaint/box-shadow-dynamic.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-5.html
+/sdcard/android/layout_tests/fast/repaint/text-shadow-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/caret-outside-block.html
+/sdcard/android/layout_tests/fast/repaint/renderer-destruction-by-invalidateSelection-crash.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-9.html
+/sdcard/android/layout_tests/fast/repaint/transform-repaint-descendants.html
+/sdcard/android/layout_tests/fast/repaint/layout-state-relative.html
+/sdcard/android/layout_tests/fast/repaint/shadow-multiple-horizontal.html
+/sdcard/android/layout_tests/fast/repaint/border-fit-lines.html
+/sdcard/android/layout_tests/fast/repaint/repaint-resized-overflow.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-3509.html
+/sdcard/android/layout_tests/fast/repaint/inline-block-overflow.html
+/sdcard/android/layout_tests/fast/repaint/button-spurious-layout-hint.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-6278.html
+/sdcard/android/layout_tests/fast/repaint/box-shadow-v.html
+/sdcard/android/layout_tests/fast/repaint/delete-into-nested-block.html
+/sdcard/android/layout_tests/fast/repaint/float-overflow-right.html
+/sdcard/android/layout_tests/fast/repaint/table-cell-collapsed-border.html
+/sdcard/android/layout_tests/fast/repaint/selection-after-delete.html
+/sdcard/android/layout_tests/fast/repaint/lines-with-layout-delta.html
+/sdcard/android/layout_tests/fast/repaint/layout-state-only-positioned.html
+/sdcard/android/layout_tests/fast/repaint/table-extra-bottom-grow.html
+/sdcard/android/layout_tests/fast/repaint/transform-relative-position.html
+/sdcard/android/layout_tests/fast/repaint/selection-gap-overflow-scroll.html
+/sdcard/android/layout_tests/fast/repaint/subtree-root-skipped.html
+/sdcard/android/layout_tests/fast/repaint/line-overflow.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-2.html
+/sdcard/android/layout_tests/fast/repaint/table-row.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-6.html
+/sdcard/android/layout_tests/fast/repaint/table-outer-border.html
+/sdcard/android/layout_tests/fast/repaint/overflow-scroll-delete.html
+/sdcard/android/layout_tests/fast/repaint/layer-visibility.html
+/sdcard/android/layout_tests/fast/repaint/border-radius-repaint.html
+/sdcard/android/layout_tests/fast/repaint/table-collapsed-border.html
+/sdcard/android/layout_tests/fast/repaint/transform-translate.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-7235.html
+/sdcard/android/layout_tests/fast/repaint/4776765.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-6473.html
+/sdcard/android/layout_tests/fast/repaint/intermediate-layout-position-clip.html
+/sdcard/android/layout_tests/fast/repaint/focus-ring.html
+/sdcard/android/layout_tests/fast/repaint/table-cell-vertical-overflow.html
+/sdcard/android/layout_tests/fast/repaint/create-layer-repaint.html
+/sdcard/android/layout_tests/fast/repaint/subtree-root-clip-2.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-6388.html
+/sdcard/android/layout_tests/fast/repaint/overflow-outline-repaint.html
+/sdcard/android/layout_tests/fast/repaint/content-into-overflow.html
+/sdcard/android/layout_tests/fast/repaint/static-to-positioned.html
+/sdcard/android/layout_tests/fast/repaint/bugzilla-5699.html
+/sdcard/android/layout_tests/fast/repaint/transform-absolute-in-positioned-container.html
+/sdcard/android/layout_tests/fast/repaint/outline-repaint-glitch.html
+/sdcard/android/layout_tests/fast/repaint/overflow-delete-line.html
+/sdcard/android/layout_tests/fast/repaint/transform-disable-layoutstate.html
+/sdcard/android/layout_tests/fast/repaint/list-marker.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-3.html
+/sdcard/android/layout_tests/fast/repaint/line-flow-with-floats-7.html
+/sdcard/android/layout_tests/fast/repaint/outline-inset.html
+/sdcard/android/layout_tests/fast/repaint/box-shadow-h.html
+/sdcard/android/layout_tests/fast/repaint/4774354.html
+/sdcard/android/layout_tests/fast/repaint/clip-with-layout-delta.html
+/sdcard/android/layout_tests/fast/repaint/control-clip.html
+/sdcard/android/layout_tests/fast/repaint/selected-replaced.html
+/sdcard/android/layout_tests/fast/repaint/text-selection-rect-in-overflow-2.html
+/sdcard/android/layout_tests/fast/repaint/make-children-non-inline.html
+/sdcard/android/layout_tests/fast/repaint/text-shadow.html
+/sdcard/android/layout_tests/fast/repaint/outline-shrinking.html
+/sdcard/android/layout_tests/fast/repaint/layer-child-outline.html
+/sdcard/android/layout_tests/fast/loader/start-load-in-unload.html
+/sdcard/android/layout_tests/fast/loader/text-document-wrapping.html
+/sdcard/android/layout_tests/fast/canvas/fillrect-gradient-zero-stops.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transforms-during-path.html
+/sdcard/android/layout_tests/fast/canvas/drawImage.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-7.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-non-invertible.html : has expected results
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-4.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-infinity.html : has expected results
+/sdcard/android/layout_tests/fast/canvas/canvas-text-baseline.html
+/sdcard/android/layout_tests/fast/canvas/canvas-as-image-incremental-repaint.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-1.html
+/sdcard/android/layout_tests/fast/canvas/canvas-size-change-after-layout.html
+/sdcard/android/layout_tests/fast/canvas/canvas-resize-reset.html
+/sdcard/android/layout_tests/fast/canvas/canvas-bg.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-skewed.html : has expected results
+/sdcard/android/layout_tests/fast/canvas/zero-size-fill-rect.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-6.html
+/sdcard/android/layout_tests/fast/canvas/patternfill-repeat.html
+/sdcard/android/layout_tests/fast/canvas/image-object-in-canvas.html
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-3.html
+/sdcard/android/layout_tests/fast/canvas/canvas-composite.html
+/sdcard/android/layout_tests/fast/canvas/gradient-add-second-start-end-stop.html
+/sdcard/android/layout_tests/fast/canvas/quadraticCurveTo.xml
+/sdcard/android/layout_tests/fast/canvas/fill-stroke-clip-reset-path.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-nan.html : has expected results
+/sdcard/android/layout_tests/fast/canvas/canvas-text-alignment.html
+/sdcard/android/layout_tests/fast/canvas/canvas-incremental-repaint.html
+/sdcard/android/layout_tests/fast/canvas/canvasDrawingIntoSelf.html
+/sdcard/android/layout_tests/fast/canvas/canvas-as-image.html
+/sdcard/android/layout_tests/fast/canvas/canvas-before-css.html
+/sdcard/android/layout_tests/fast/canvas/canvas-incremental-repaint-2.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-identity.html : has expected results
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-5.html
+/sdcard/android/layout_tests/fast/canvas/fillrect_gradient.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transform-multiply.html : has expected results
+/sdcard/android/layout_tests/fast/canvas/shadow-offset-2.html
+/sdcard/android/layout_tests/fast/frames/contentWindow_Frame.html
+/sdcard/android/layout_tests/fast/frames/onlyCommentInIFrame.html
+/sdcard/android/layout_tests/fast/frames/frame-src-attribute.html
+/sdcard/android/layout_tests/fast/frames/frameElement-frame.html
+/sdcard/android/layout_tests/fast/frames/empty-cols-attribute.html
+/sdcard/android/layout_tests/fast/frames/iframe-scrolling-attribute.html
+/sdcard/android/layout_tests/fast/frames/inline-object-inside-frameset.html
+/sdcard/android/layout_tests/fast/frames/valid.html
+/sdcard/android/layout_tests/fast/frames/no-frame-borders.html
+/sdcard/android/layout_tests/fast/frames/empty-frame-src.html
+/sdcard/android/layout_tests/fast/frames/calculate-round.html
+/sdcard/android/layout_tests/fast/frames/frame-navigation.html
+/sdcard/android/layout_tests/fast/frames/001.html
+/sdcard/android/layout_tests/fast/frames/invalid.html
+/sdcard/android/layout_tests/fast/frames/frameset-style-recalc.html
+/sdcard/android/layout_tests/fast/frames/viewsource-attribute.html
+/sdcard/android/layout_tests/fast/frames/002.html
+/sdcard/android/layout_tests/fast/frames/calculate-relative.html
+/sdcard/android/layout_tests/fast/frames/calculate-order.html
+/sdcard/android/layout_tests/fast/frames/calculate-percentage.html
+/sdcard/android/layout_tests/fast/frames/iframe-text-contents.html
+/sdcard/android/layout_tests/fast/frames/frame-scrolling-attribute.html
+/sdcard/android/layout_tests/fast/frames/contentWindow_iFrame.html
+/sdcard/android/layout_tests/fast/frames/frame-length-fractional.html : has expected results
+/sdcard/android/layout_tests/fast/frames/calculate-fixed.html
+/sdcard/android/layout_tests/fast/frames/frame-element-name.html
+/sdcard/android/layout_tests/fast/frames/frame-set-whitespace-attributes.html
+/sdcard/android/layout_tests/fast/frames/iframe-with-frameborder.html
+/sdcard/android/layout_tests/fast/frames/frameElement-iframe.html
+/sdcard/android/layout_tests/fast/frames/iframe-name-and-id.html : has expected results
+/sdcard/android/layout_tests/fast/reflections/inline-crash.html
+/sdcard/android/layout_tests/fast/reflections/reflection-nesting.html
+/sdcard/android/layout_tests/fast/reflections/reflection-overflow-hidden.html
+/sdcard/android/layout_tests/fast/reflections/table-cell.html
+/sdcard/android/layout_tests/fast/reflections/reflection-direction.html
diff --git a/tests/DumpRenderTree/results/layout_tests_passed.txt b/tests/DumpRenderTree/results/layout_tests_passed.txt
index 03e920e..fbceabd 100644
--- a/tests/DumpRenderTree/results/layout_tests_passed.txt
+++ b/tests/DumpRenderTree/results/layout_tests_passed.txt
@@ -1,990 +1,1046 @@
-/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/replaced/object-param-no-name.html
+/sdcard/android/layout_tests/fast/dynamic/subtree-common-root.html
+/sdcard/android/layout_tests/fast/dynamic/hovered-detach.html
+/sdcard/android/layout_tests/fast/dynamic/insertAdjacentHTML.html
+/sdcard/android/layout_tests/fast/dynamic/style-access-late-stylesheet-load.html
+/sdcard/android/layout_tests/fast/dynamic/insertAdjacentText.html
+/sdcard/android/layout_tests/fast/dynamic/insertAdjacentHTML-allowed-parents.html
+/sdcard/android/layout_tests/fast/dynamic/checkbox-selection-crash.html
+/sdcard/android/layout_tests/fast/dynamic/outerHTML-no-element.html
+/sdcard/android/layout_tests/fast/dynamic/5872671.html
+/sdcard/android/layout_tests/fast/dynamic/ancestor-to-absolute.html
+/sdcard/android/layout_tests/fast/dynamic/float-remove-above-line.html
+/sdcard/android/layout_tests/fast/dynamic/recursive-layout.html
+/sdcard/android/layout_tests/fast/dynamic/inline-to-block-crash.html
+/sdcard/android/layout_tests/fast/text/find-backwards.html
 /sdcard/android/layout_tests/fast/text/large-text-composed-char-dos.html
 /sdcard/android/layout_tests/fast/text/find-case-folding.html
-/sdcard/android/layout_tests/fast/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/text/line-breaks-after-ideographic-comma-or-full-stop.html
+/sdcard/android/layout_tests/fast/encoding/gbk/chinese.html
+/sdcard/android/layout_tests/fast/encoding/gbk/x-euc-cn.html
+/sdcard/android/layout_tests/fast/encoding/gbk/gb_2312-80.html
+/sdcard/android/layout_tests/fast/encoding/gbk/cn-gb.html
+/sdcard/android/layout_tests/fast/encoding/gbk/csgb2312.html
+/sdcard/android/layout_tests/fast/encoding/gbk/iso-ir-58.html
+/sdcard/android/layout_tests/fast/encoding/gbk/csgb231280.html
+/sdcard/android/layout_tests/fast/encoding/gbk/gb2312.html
+/sdcard/android/layout_tests/fast/encoding/gbk/gbk.html
+/sdcard/android/layout_tests/fast/encoding/gbk/x-gbk.html
+/sdcard/android/layout_tests/fast/encoding/gbk/EUC-CN.html
+/sdcard/android/layout_tests/fast/encoding/gbk/close-gbk-converter.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/hebrew/8859-8-i.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/charset-invalid.html
-/sdcard/android/layout_tests/fast/encoding/charset-cp1251.html
+/sdcard/android/layout_tests/fast/encoding/hanarei-blog32-fc2-com.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-tags-in-attributes.html
+/sdcard/android/layout_tests/fast/encoding/decoder-allow-null-chars.html
+/sdcard/android/layout_tests/fast/encoding/charset-utf16.html
+/sdcard/android/layout_tests/fast/encoding/css-charset-dom.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml-4.html
+/sdcard/android/layout_tests/fast/encoding/char-encoding.html
+/sdcard/android/layout_tests/fast/encoding/css-link-charset.html
+/sdcard/android/layout_tests/fast/encoding/latin1-winlatin.html
+/sdcard/android/layout_tests/fast/encoding/no-charset-on-dynamic-script-load.html
+/sdcard/android/layout_tests/fast/encoding/high-bit-latin1.html
+/sdcard/android/layout_tests/fast/encoding/utf-32-little-endian-bom.html
+/sdcard/android/layout_tests/fast/encoding/bandai-co-jp-releases.html
+/sdcard/android/layout_tests/fast/encoding/utf-32-big-endian-bom.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/namespace-tolerance.html
+/sdcard/android/layout_tests/fast/encoding/css-charset-evil.html
+/sdcard/android/layout_tests/fast/encoding/css-charset.html
+/sdcard/android/layout_tests/fast/encoding/misplaced-xml-declaration.html
+/sdcard/android/layout_tests/fast/encoding/charset-xuser-defined.html
+/sdcard/android/layout_tests/fast/encoding/xml-charset-utf16.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml-2.html
+/sdcard/android/layout_tests/fast/encoding/floraexpress-ru.html
+/sdcard/android/layout_tests/fast/encoding/charset-cp1251.html
+/sdcard/android/layout_tests/fast/encoding/utf-32-little-endian-nobom.xml
+/sdcard/android/layout_tests/fast/encoding/charset-unicode.html
+/sdcard/android/layout_tests/fast/encoding/meta-charset.html
+/sdcard/android/layout_tests/fast/encoding/utf-32-big-endian-nobom.xml
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml-3.html
+/sdcard/android/layout_tests/fast/encoding/pseudo-xml.html
+/sdcard/android/layout_tests/fast/encoding/tag-in-title.html
+/sdcard/android/layout_tests/fast/encoding/yahoo-mail.html
 /sdcard/android/layout_tests/fast/encoding/ahram-org-eg.html
-/sdcard/android/layout_tests/fast/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/encoding/noscript-in-head.html
+/sdcard/android/layout_tests/fast/encoding/script-in-head.html
+/sdcard/android/layout_tests/fast/encoding/css-cached-bom.html
+/sdcard/android/layout_tests/fast/encoding/mispositioned-meta.html
+/sdcard/android/layout_tests/fast/multicol/gap-non-negative.html
+/sdcard/android/layout_tests/fast/multicol/content-height-zero-crash.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-at-end.html
+/sdcard/android/layout_tests/fast/doctypes/005-case-preserving.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-in-element.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-after-comment.html
+/sdcard/android/layout_tests/fast/doctypes/doctype-parsing.html
+/sdcard/android/layout_tests/fast/doctypes/html-doctype.html
+/sdcard/android/layout_tests/fast/cookies/local-file-can-set-cookies.html
+/sdcard/android/layout_tests/fast/css-generated-content/empty-content-with-float-crash.html
+/sdcard/android/layout_tests/fast/css-generated-content/reset-content-to-initial.html
+/sdcard/android/layout_tests/fast/transforms/container-transform-crash.html
+/sdcard/android/layout_tests/fast/leaks/001.html
+/sdcard/android/layout_tests/fast/leaks/002.html
+/sdcard/android/layout_tests/fast/innerHTML/innerHTML-custom-tag.html
+/sdcard/android/layout_tests/fast/innerHTML/additional-inline-style.html
+/sdcard/android/layout_tests/fast/innerHTML/005.html
+/sdcard/android/layout_tests/fast/innerHTML/javascript-url.html
+/sdcard/android/layout_tests/fast/innerHTML/innerHTML-case.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/events/dispatch-to-handle-event.html
+/sdcard/android/layout_tests/fast/events/onload-after-document-close-with-subresource.html
+/sdcard/android/layout_tests/fast/events/dispatchEvent-crash.html
+/sdcard/android/layout_tests/fast/events/programmatic-check-no-change-event.html
+/sdcard/android/layout_tests/fast/events/onunload-body-property.html
+/sdcard/android/layout_tests/fast/events/init-event-after-dispatch.html
+/sdcard/android/layout_tests/fast/events/delayed-style-mutation-event-crash.html
+/sdcard/android/layout_tests/fast/events/anchor-empty-focus.html
+/sdcard/android/layout_tests/fast/events/no-blur-on-page-leave.html
+/sdcard/android/layout_tests/fast/events/onload-name-collision.html
+/sdcard/android/layout_tests/fast/events/div-focus.html
+/sdcard/android/layout_tests/fast/events/overflow-events.html
+/sdcard/android/layout_tests/fast/events/create-document-crash-on-attach-event.html
+/sdcard/android/layout_tests/fast/events/no-blur-on-enter-button.html
+/sdcard/android/layout_tests/fast/events/keypress-removed-node.html
+/sdcard/android/layout_tests/fast/events/shadow-boundary-crossing.html
+/sdcard/android/layout_tests/fast/events/submit-reset-nested-bubble.html
+/sdcard/android/layout_tests/fast/events/nested-event-remove-node-crash.html
+/sdcard/android/layout_tests/fast/events/mousedown_in_scrollbar.html
+/sdcard/android/layout_tests/fast/events/window-load-capture.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/caller-access-from-event-listener.html
+/sdcard/android/layout_tests/fast/events/stopPropagation-submit.html
+/sdcard/android/layout_tests/fast/events/remove-event-listener.html
+/sdcard/android/layout_tests/fast/events/mouseup-outside-button.html
+/sdcard/android/layout_tests/fast/events/no-window-load.html
+/sdcard/android/layout_tests/fast/events/event-listener-html-non-html-confusion.html
+/sdcard/android/layout_tests/fast/events/onerror-bubbling.html
+/sdcard/android/layout_tests/fast/events/keydown-remove-frame.html
+/sdcard/android/layout_tests/fast/events/event-targets.html
+/sdcard/android/layout_tests/fast/events/space-scroll-event.html
+/sdcard/android/layout_tests/fast/events/onload-after-document-close-no-subresource.html
+/sdcard/android/layout_tests/fast/events/stopPropagation-checkbox.html
+/sdcard/android/layout_tests/fast/events/tab-crash-with-image-map.html
+/sdcard/android/layout_tests/fast/events/simulated-key-state.html
+/sdcard/android/layout_tests/fast/events/init-event-null-view.html
+/sdcard/android/layout_tests/fast/events/resize-subframe.html
+/sdcard/android/layout_tests/fast/events/onunload-window-property.html
+/sdcard/android/layout_tests/fast/html/empty-fragment-id-goto-top.html
+/sdcard/android/layout_tests/fast/html/script-allowed-types-languages.html
+/sdcard/android/layout_tests/fast/html/xhtml-serialize.html
+/sdcard/android/layout_tests/fast/html/body-offset-properties.html
+/sdcard/android/layout_tests/fast/images/animated-background-image-crash.html
+/sdcard/android/layout_tests/fast/images/border.html
+/sdcard/android/layout_tests/fast/images/load-img-with-empty-src.html
+/sdcard/android/layout_tests/fast/images/image-empty-data.html
+/sdcard/android/layout_tests/fast/images/text-content-crash-2.html
+/sdcard/android/layout_tests/fast/images/text-content-crash.html
+/sdcard/android/layout_tests/fast/inspector/cssURLQuotes.html
+/sdcard/android/layout_tests/fast/flexbox/inline-children-crash.html
+/sdcard/android/layout_tests/fast/tokenizer/nested-cached-scripts.html
+/sdcard/android/layout_tests/fast/tokenizer/image-empty-crash.html
+/sdcard/android/layout_tests/fast/tokenizer/lessthan-terminates-tags-and-attrs.html
+/sdcard/android/layout_tests/fast/tokenizer/ignore-tags-in-iframe.html
+/sdcard/android/layout_tests/fast/tokenizer/write-partial-entity.html
+/sdcard/android/layout_tests/fast/tokenizer/external-script-document-open.html
+/sdcard/android/layout_tests/fast/tokenizer/004.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/doctype-search-reset.html
+/sdcard/android/layout_tests/fast/tokenizer/nested-multiple-scripts.html
+/sdcard/android/layout_tests/fast/tokenizer/nested-cached-scripts-and-stylesheet.html
+/sdcard/android/layout_tests/fast/tokenizer/ampersand-in-special-tag.html
+/sdcard/android/layout_tests/fast/tokenizer/write-unclosed-script.html
+/sdcard/android/layout_tests/fast/tokenizer/badscript.html
+/sdcard/android/layout_tests/fast/regex/quantified-assertions.html
+/sdcard/android/layout_tests/fast/regex/non-pattern-characters.html
+/sdcard/android/layout_tests/fast/regex/slow.html
+/sdcard/android/layout_tests/fast/regex/malformed-escapes.html
+/sdcard/android/layout_tests/fast/regex/early-acid3-86.html
+/sdcard/android/layout_tests/fast/regex/test1.html
+/sdcard/android/layout_tests/fast/regex/alternative-length-miscalculation.html
+/sdcard/android/layout_tests/fast/regex/test4.html
+/sdcard/android/layout_tests/fast/regex/non-capturing-backtracking.html
+/sdcard/android/layout_tests/fast/js/pic/cached-single-entry-transition.html
+/sdcard/android/layout_tests/fast/js/pic/cached-prototype-setter.html
+/sdcard/android/layout_tests/fast/js/pic/get-empty-string.html
+/sdcard/android/layout_tests/fast/js/pic/get-set-proxy-object.html
+/sdcard/android/layout_tests/fast/js/pic/rehash-poisons-structure.html
+/sdcard/android/layout_tests/fast/js/pic/cached-array-length-access.html
+/sdcard/android/layout_tests/fast/js/pic/cached-prototype-then-immediate.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/delete-global-object.html
+/sdcard/android/layout_tests/fast/js/pic/cached-deleted-properties.html
+/sdcard/android/layout_tests/fast/js/pic/dictionary-prototype.html
+/sdcard/android/layout_tests/fast/js/bitwise-and-on-undefined.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-eval-inside-closure.html
+/sdcard/android/layout_tests/fast/js/string_replace.html
+/sdcard/android/layout_tests/fast/js/ignored-result-ref-crash.html
+/sdcard/android/layout_tests/fast/js/function-toString-object-literals.html
+/sdcard/android/layout_tests/fast/js/numeric-conversion.html
+/sdcard/android/layout_tests/fast/js/select-options-remove.html
+/sdcard/android/layout_tests/fast/js/array-tostring-ignore-separator.html
+/sdcard/android/layout_tests/fast/js/number-toExponential.html
+/sdcard/android/layout_tests/fast/js/direct-entry-to-function-code.html
+/sdcard/android/layout_tests/fast/js/vardecl-preserve-vardecl.html
+/sdcard/android/layout_tests/fast/js/unexpected-constant-crash.html
+/sdcard/android/layout_tests/fast/js/var-shadows-arg-gc-crash.html
+/sdcard/android/layout_tests/fast/js/arguments-bad-index.html
+/sdcard/android/layout_tests/fast/js/resize-array-assign.html
+/sdcard/android/layout_tests/fast/js/number-toString.html
+/sdcard/android/layout_tests/fast/js/this-non-object-proto.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-new.html
+/sdcard/android/layout_tests/fast/js/cyclic-proto.html
+/sdcard/android/layout_tests/fast/js/vardecl-preserve-arguments.html
+/sdcard/android/layout_tests/fast/js/regexp-compile-crash.html
+/sdcard/android/layout_tests/fast/js/var-declarations-shadowing.html
+/sdcard/android/layout_tests/fast/js/ignored-result-null-comparison-crash.html
+/sdcard/android/layout_tests/fast/js/array-sort-reentrance.html
+/sdcard/android/layout_tests/fast/js/toString-for-var-decl.html
+/sdcard/android/layout_tests/fast/js/string-slice-abnormal-values.html
+/sdcard/android/layout_tests/fast/js/exception-linenums-in-html-1.html
+/sdcard/android/layout_tests/fast/js/do-while-without-semicolon.html
+/sdcard/android/layout_tests/fast/js/object-prototype-toLocaleString.html
+/sdcard/android/layout_tests/fast/js/function-redefinition.html
+/sdcard/android/layout_tests/fast/js/function-name.html
+/sdcard/android/layout_tests/fast/js/logical-or-jless.html
+/sdcard/android/layout_tests/fast/js/regexp-non-character.html
+/sdcard/android/layout_tests/fast/js/assign.html
+/sdcard/android/layout_tests/fast/js/for-in-avoid-duplicates.html
+/sdcard/android/layout_tests/fast/js/sort-stability.html
+/sdcard/android/layout_tests/fast/js/duplicate-param-gc-crash.html
+/sdcard/android/layout_tests/fast/js/regexp-stack-overflow.html
+/sdcard/android/layout_tests/fast/js/function-argument-evaluation-before-exception.html
+/sdcard/android/layout_tests/fast/js/number-toprecision.html
+/sdcard/android/layout_tests/fast/js/string-property-iteration.html
+/sdcard/android/layout_tests/fast/js/do-while-semicolon.html
+/sdcard/android/layout_tests/fast/js/regexp-divequal.html
+/sdcard/android/layout_tests/fast/js/named-function-expression.html
+/sdcard/android/layout_tests/fast/js/array-iterate-backwards.html
+/sdcard/android/layout_tests/fast/js/constructor-attributes.html
+/sdcard/android/layout_tests/fast/js/array-some.html
+/sdcard/android/layout_tests/fast/js/missing-title-end-tag-js.html
+/sdcard/android/layout_tests/fast/js/object-extra-comma.html
+/sdcard/android/layout_tests/fast/js/number-tofixed.html
+/sdcard/android/layout_tests/fast/js/function-declarations-in-switch-statement.html
+/sdcard/android/layout_tests/fast/js/regexp-extended-characters-crash.html
+/sdcard/android/layout_tests/fast/js/typeof-codegen-crash.html
+/sdcard/android/layout_tests/fast/js/array-indexof.html
+/sdcard/android/layout_tests/fast/js/mod-crash.html
+/sdcard/android/layout_tests/fast/js/eval-keyword-vs-function.html
+/sdcard/android/layout_tests/fast/js/debugger.html
+/sdcard/android/layout_tests/fast/js/rehash-assign.html
+/sdcard/android/layout_tests/fast/js/object-prototype-constructor.html
+/sdcard/android/layout_tests/fast/js/string-replace-exception-crash.html
+/sdcard/android/layout_tests/fast/js/date-big-setmonth.html
+/sdcard/android/layout_tests/fast/js/exception-linenums-in-html-2.html
+/sdcard/android/layout_tests/fast/js/select-options-add.html
+/sdcard/android/layout_tests/fast/js/toString-dontEnum.html
+/sdcard/android/layout_tests/fast/js/toString-elision-trailing-comma.html
+/sdcard/android/layout_tests/fast/js/regexp-negative-special-characters.html
+/sdcard/android/layout_tests/fast/js/getter-setter-gc.html
+/sdcard/android/layout_tests/fast/js/string-substr.html
+/sdcard/android/layout_tests/fast/js/for-in-var-scope.html
+/sdcard/android/layout_tests/fast/js/exec-state-marking.html
+/sdcard/android/layout_tests/fast/js/string-sort.html
+/sdcard/android/layout_tests/fast/js/primitive-method-this.html
+/sdcard/android/layout_tests/fast/js/delete-getters-setters.html
+/sdcard/android/layout_tests/fast/js/const-without-initializer.html
+/sdcard/android/layout_tests/fast/js/sparse-array.html
+/sdcard/android/layout_tests/fast/js/same-origin-subframe-about-blank.html
+/sdcard/android/layout_tests/fast/js/nested-function-scope.html
+/sdcard/android/layout_tests/fast/js/reparsing-semicolon-insertion.html
+/sdcard/android/layout_tests/fast/js/regexp-non-capturing-groups.html
+/sdcard/android/layout_tests/fast/js/has-own-property.html
+/sdcard/android/layout_tests/fast/js/window-location-href-file-urls.html
+/sdcard/android/layout_tests/fast/js/convert-nan-to-bool.html
+/sdcard/android/layout_tests/fast/js/regexp-extended-characters-more.html
+/sdcard/android/layout_tests/fast/js/arguments.html
+/sdcard/android/layout_tests/fast/js/prefix-syntax.html
+/sdcard/android/layout_tests/fast/js/exception-with-handler-inside-eval-with-dynamic-scope.html
+/sdcard/android/layout_tests/fast/js/for-in-exeception.html
+/sdcard/android/layout_tests/fast/js/array-lastIndexOf.html
+/sdcard/android/layout_tests/fast/js/modify-non-references.html
+/sdcard/android/layout_tests/fast/js/regexp-find-first-asserted.html
+/sdcard/android/layout_tests/fast/js/sort-randomly.html
+/sdcard/android/layout_tests/fast/js/array-indexing.html
+/sdcard/android/layout_tests/fast/js/regexp-caching.html
+/sdcard/android/layout_tests/fast/js/typeof-syntax.html
+/sdcard/android/layout_tests/fast/js/regexp-character-match-out-of-order.html
+/sdcard/android/layout_tests/fast/js/function-call-register-allocation.html
+/sdcard/android/layout_tests/fast/js/constant-folding.html
+/sdcard/android/layout_tests/fast/js/activation-object-function-lifetime.html
+/sdcard/android/layout_tests/fast/js/array-filter.html
+/sdcard/android/layout_tests/fast/js/implicit-global-to-global-reentry.html
+/sdcard/android/layout_tests/fast/js/array-foreach.html
+/sdcard/android/layout_tests/fast/js/regexp-many-brackets.html
+/sdcard/android/layout_tests/fast/js/activation-proto.html
+/sdcard/android/layout_tests/fast/js/toString-overrides.html
+/sdcard/android/layout_tests/fast/js/regexp-unicode-overflow.html
+/sdcard/android/layout_tests/fast/js/postfix-syntax.html
+/sdcard/android/layout_tests/fast/js/global-recursion-on-full-stack.html
+/sdcard/android/layout_tests/fast/js/number-cell-reuse.html
+/sdcard/android/layout_tests/fast/js/closure-inside-extra-arg-call.html
+/sdcard/android/layout_tests/fast/js/removing-Cf-characters.html
+/sdcard/android/layout_tests/fast/js/pretty-print.html
+/sdcard/android/layout_tests/fast/js/const.html
+/sdcard/android/layout_tests/fast/js/isPrototypeOf.html
+/sdcard/android/layout_tests/fast/js/math.html
+/sdcard/android/layout_tests/fast/js/string-from-char-code.html
+/sdcard/android/layout_tests/fast/js/eval-overriding.html
+/sdcard/android/layout_tests/fast/js/regexp-char-insensitive.html
+/sdcard/android/layout_tests/fast/js/array-float-delete.html
+/sdcard/android/layout_tests/fast/js/array-index-immediate-types.html
+/sdcard/android/layout_tests/fast/js/integer-extremes.html
+/sdcard/android/layout_tests/fast/js/regexp-non-bmp.html
+/sdcard/android/layout_tests/fast/js/delete-then-put.html
+/sdcard/android/layout_tests/fast/js/string-replace-2.html
+/sdcard/android/layout_tests/fast/js/cached-eval-gc.html
+/sdcard/android/layout_tests/fast/js/property-getters-and-setters.html
+/sdcard/android/layout_tests/fast/js/array-reset-large-index.html
+/sdcard/android/layout_tests/fast/js/date-proto-generic-invocation.html
+/sdcard/android/layout_tests/fast/js/lastModified.html
+/sdcard/android/layout_tests/fast/js/encode-URI-test.html
+/sdcard/android/layout_tests/fast/js/codegen-loops-logical-nodes.html
+/sdcard/android/layout_tests/fast/js/string-capitalization.html
+/sdcard/android/layout_tests/fast/js/caller-property.html
+/sdcard/android/layout_tests/fast/js/date-DST-time-cusps.html
+/sdcard/android/layout_tests/fast/js/regexp-unicode-handling.html
+/sdcard/android/layout_tests/fast/js/unmatching-argument-count.html
+/sdcard/android/layout_tests/fast/js/delete-multiple-global-blocks.html
+/sdcard/android/layout_tests/fast/js/text-field-resize.html
+/sdcard/android/layout_tests/fast/js/duplicate-param-crash.html
+/sdcard/android/layout_tests/fast/js/switch-behaviour.html
+/sdcard/android/layout_tests/fast/js/delete-syntax.html
+/sdcard/android/layout_tests/fast/js/date-DST-pre-1970.html
+/sdcard/android/layout_tests/fast/js/array-splice.html
+/sdcard/android/layout_tests/fast/js/statement-list-register-crash.html
+/sdcard/android/layout_tests/fast/js/date-set-to-nan.html
+/sdcard/android/layout_tests/fast/js/code-serialize-paren.html
+/sdcard/android/layout_tests/fast/js/parse-backslash-before-newline.html
+/sdcard/android/layout_tests/fast/js/delete-function-parameter.html
+/sdcard/android/layout_tests/fast/js/exception-expression-offset.html
+/sdcard/android/layout_tests/fast/js/invalid-syntax-for-function.html
+/sdcard/android/layout_tests/fast/js/cyclic-prototypes.html
+/sdcard/android/layout_tests/fast/js/equality.html
+/sdcard/android/layout_tests/fast/js/order-of-operations.html
+/sdcard/android/layout_tests/fast/js/regexp-no-extensions.html
+/sdcard/android/layout_tests/fast/js/stack-unwinding.html
+/sdcard/android/layout_tests/fast/js/reserved-words.html
+/sdcard/android/layout_tests/fast/js/toString-try-else.html
+/sdcard/android/layout_tests/fast/js/function-dot-arguments-and-caller.html
+/sdcard/android/layout_tests/fast/js/do-while-expression-value.html
+/sdcard/android/layout_tests/fast/js/bom-in-file-retains-correct-offset.html
+/sdcard/android/layout_tests/fast/js/string-split-ignore-case.html
+/sdcard/android/layout_tests/fast/js/date-constructor.html
+/sdcard/android/layout_tests/fast/js/date-big-setdate.html
+/sdcard/android/layout_tests/fast/js/array-every.html
+/sdcard/android/layout_tests/fast/js/function-toString-parentheses.html
+/sdcard/android/layout_tests/fast/js/array-functions-non-arrays.html
+/sdcard/android/layout_tests/fast/js/while-expression-value.html
+/sdcard/android/layout_tests/fast/js/string-replace-3.html
+/sdcard/android/layout_tests/fast/js/avl-crash.html
+/sdcard/android/layout_tests/fast/js/vardecl-blocks-init.html
+/sdcard/android/layout_tests/fast/js/null-char-in-string.html
+/sdcard/android/layout_tests/fast/js/codegen-temporaries-multiple-global-blocks.html
+/sdcard/android/layout_tests/fast/js/char-at.html
+/sdcard/android/layout_tests/fast/js/propertyIsEnumerable.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-equal.html
+/sdcard/android/layout_tests/fast/js/constructor.html
+/sdcard/android/layout_tests/fast/js/regexp-overflow.html
+/sdcard/android/layout_tests/fast/js/var-declarations.html
+/sdcard/android/layout_tests/fast/js/continue-break-multiple-labels.html
+/sdcard/android/layout_tests/fast/js/toString-exception.html
+/sdcard/android/layout_tests/fast/js/regexp-test-null-string.html
+/sdcard/android/layout_tests/fast/js/date-parse-comments-test.html
+/sdcard/android/layout_tests/fast/js/select-options-remove-gc.html
+/sdcard/android/layout_tests/fast/js/array-tostring-and-join.html
+/sdcard/android/layout_tests/fast/js/implicit-call-with-global-reentry.html
+/sdcard/android/layout_tests/fast/js/function-names.html
+/sdcard/android/layout_tests/fast/js/primitive-property-access-edge-cases.html
+/sdcard/android/layout_tests/fast/js/date-preserve-milliseconds.html
+/sdcard/android/layout_tests/fast/js/sort-large-array.html
+/sdcard/android/layout_tests/fast/js/for-in-to-text.html
+/sdcard/android/layout_tests/fast/js/global-var-limit.html
+/sdcard/android/layout_tests/fast/js/static-scope-object.html
+/sdcard/android/layout_tests/fast/js/var-shadows-arg-crash.html
+/sdcard/android/layout_tests/fast/js/function-apply.html
+/sdcard/android/layout_tests/fast/js/function-prototype.html
+/sdcard/android/layout_tests/fast/js/tostring-exception-in-property-access.html
+/sdcard/android/layout_tests/fast/js/function-declaration-statement.html
+/sdcard/android/layout_tests/fast/js/date-negative-setmonth.html
+/sdcard/android/layout_tests/fast/js/reentrant-call-unwind.html
+/sdcard/android/layout_tests/fast/js/regexp-lastindex.html
+/sdcard/android/layout_tests/fast/js/finally-codegen-failure.html
+/sdcard/android/layout_tests/fast/js/read-modify-eval.html
+/sdcard/android/layout_tests/fast/js/exception-thrown-from-function-with-lazy-activation.html
+/sdcard/android/layout_tests/fast/js/cyclic-ref-toString.html
+/sdcard/android/layout_tests/fast/js/date-big-constructor.html
+/sdcard/android/layout_tests/fast/js/gmail-re-re.html
+/sdcard/android/layout_tests/fast/js/deep-recursion-test.html
+/sdcard/android/layout_tests/fast/js/lexical-lookup-in-function-constructor.html
+/sdcard/android/layout_tests/fast/js/regexp-range-out-of-order.html
+/sdcard/android/layout_tests/fast/js/throw-from-array-sort.html
+/sdcard/android/layout_tests/fast/js/slash-lineterminator-parse.html
+/sdcard/android/layout_tests/fast/js/dot-node-base-exception.html
+/sdcard/android/layout_tests/fast/js/codegen-peephole-locals.html
+/sdcard/android/layout_tests/fast/js/constant-count.html
+/sdcard/android/layout_tests/fast/js/regexp-compile.html
+/sdcard/android/layout_tests/fast/js/declaration-in-block.html
+/sdcard/android/layout_tests/fast/js/eval-var-decl.html
+/sdcard/android/layout_tests/fast/js/eval-cross-window.html
+/sdcard/android/layout_tests/fast/js/function-decompilation-operators.html
+/sdcard/android/layout_tests/fast/js/sort-non-numbers.html
+/sdcard/android/layout_tests/fast/js/function-declarations.html
+/sdcard/android/layout_tests/fast/js/non-object-proto.html
+/sdcard/android/layout_tests/fast/js/regexp-extended-characters-match.html
+/sdcard/android/layout_tests/fast/js/toString-number-dot-expr.html
+/sdcard/android/layout_tests/fast/js/date-parse-test.html
+/sdcard/android/layout_tests/fast/js/exception-try-finally-scope-error.html
+/sdcard/android/layout_tests/fast/js/function-dot-arguments.html
+/sdcard/android/layout_tests/fast/js/toString-prefix-postfix-preserve-parens.html
+/sdcard/android/layout_tests/fast/js/regexp-ranges-and-escaped-hyphens.html
+/sdcard/android/layout_tests/fast/js/exception-linenums.html
+/sdcard/android/layout_tests/fast/js/array-holes.html
+/sdcard/android/layout_tests/fast/js/construct-global-object.html
+/sdcard/android/layout_tests/fast/js/codegen-temporaries.html
+/sdcard/android/layout_tests/fast/js/array-join-bug-11524.html
+/sdcard/android/layout_tests/fast/js/with-scope-gc.html
+/sdcard/android/layout_tests/fast/js/array-map.html
+/sdcard/android/layout_tests/fast/js/string-index-overflow.html
+/sdcard/android/layout_tests/fast/js/eval-cache-crash.html
+/sdcard/android/layout_tests/fast/js/typeof-constant-string.html
+/sdcard/android/layout_tests/fast/js/comparefn-sort-stability.html
+/sdcard/android/layout_tests/fast/js/navigator-plugins-crash.html
+/sdcard/android/layout_tests/fast/js/vardecl-preserve-parameters.html
+/sdcard/android/layout_tests/fast/inline/clean-after-removing-temp-boxes.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/early-acid3-65-excerpt.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/early-acid3-66-excerpt.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/cellpadding-attribute.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableElement/insert-row.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/HTMLDocument/write-multiple-calls.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-special-properties.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/url-getset.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/writeln-call.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-plugins.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/title-get.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/object-by-name-unknown-child-element.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/write-call.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/object-by-name-or-id.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/document-open-return-value.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/writeln-multiple-calls.html
+/sdcard/android/layout_tests/fast/dom/HTMLDocument/title-set.html
+/sdcard/android/layout_tests/fast/dom/HTMLLabelElement/form/test1.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/Document/replace-child.html
+/sdcard/android/layout_tests/fast/dom/Document/title-property-creates-title-element.html
+/sdcard/android/layout_tests/fast/dom/Document/createElementNS-namespace-err.html
+/sdcard/android/layout_tests/fast/dom/Document/title-property-set-multiple-times.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/replaceChild-null-oldChild.html
+/sdcard/android/layout_tests/fast/dom/Document/createAttributeNS-namespace-err.html
+/sdcard/android/layout_tests/fast/dom/Document/open-with-pending-load.html
+/sdcard/android/layout_tests/fast/dom/Document/doc-open-while-parsing.html
+/sdcard/android/layout_tests/fast/dom/HTMLMetaElement/meta-attributes.html
+/sdcard/android/layout_tests/fast/dom/Element/getAttribute-check-case-sensitivity.html
+/sdcard/android/layout_tests/fast/dom/Element/attr-param-typechecking.html
+/sdcard/android/layout_tests/fast/dom/Element/attribute-uppercase.html
+/sdcard/android/layout_tests/fast/dom/Element/element-traversal.html
+/sdcard/android/layout_tests/fast/dom/Element/onclick-case.html
+/sdcard/android/layout_tests/fast/dom/Element/contains-method.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/dimension-properties-unrendered.html
+/sdcard/android/layout_tests/fast/dom/Element/offsetTop-table-cell.html
+/sdcard/android/layout_tests/fast/dom/DOMException/EventException.html
+/sdcard/android/layout_tests/fast/dom/DOMException/prototype-object.html
+/sdcard/android/layout_tests/fast/dom/DOMException/RangeException.html
+/sdcard/android/layout_tests/fast/dom/HTMLButtonElement/value/getset.html
 /sdcard/android/layout_tests/fast/dom/HTMLScriptElement/script-reexecution.html
+/sdcard/android/layout_tests/fast/dom/HTMLScriptElement/script-set-src.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/collection-setter-getter.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/NodeList/5725058-crash-scenario-1.html
+/sdcard/android/layout_tests/fast/dom/NodeList/5725058-crash-scenario-2.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/invalidate-node-lists-when-parsing.html
+/sdcard/android/layout_tests/fast/dom/NodeList/item-by-id-with-no-document.html
+/sdcard/android/layout_tests/fast/dom/NodeList/nodelist-item-with-name.html
+/sdcard/android/layout_tests/fast/dom/DOMImplementation/createDocumentType-err.html
+/sdcard/android/layout_tests/fast/dom/CSSStyleDeclaration/transition-property-names.html
+/sdcard/android/layout_tests/fast/dom/CSSStyleDeclaration/css-properties-case-sensitive.html
+/sdcard/android/layout_tests/fast/dom/CSSStyleDeclaration/empty-string-property.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/SelectorAPI/viewless-document.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseID-almost-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/elementRoot.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseID-strict.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/dumpNodeList.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseTag.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/detached-element.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/caseID.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/bug-17313.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/id-fastpath-almost-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/id-fastpath-strict.html
+/sdcard/android/layout_tests/fast/dom/SelectorAPI/dumpNodeList-almost-strict.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableSectionElement/rows.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/001.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/002.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/003.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/array/004.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/002.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/012.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/004.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/014.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/006.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/008.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/dumpNodeList.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/001.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/003.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/013.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/005.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/015.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/007.html
+/sdcard/android/layout_tests/fast/dom/getElementsByClassName/009.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/checked-pseudo-selector.html
 /sdcard/android/layout_tests/fast/dom/HTMLInputElement/input-text-reset.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/size-as-number.html
+/sdcard/android/layout_tests/fast/dom/HTMLInputElement/duplicate-element-names.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/HTMLInputElement/size-attribute.html
+/sdcard/android/layout_tests/fast/dom/TreeWalker/TreeWalker-currentNode.html
+/sdcard/android/layout_tests/fast/dom/HTMLDivElement/align/getset.html
+/sdcard/android/layout_tests/fast/dom/Text/replaceWholeText.html
+/sdcard/android/layout_tests/fast/dom/HTMLFormElement/htmlformelement-indexed-getter.html
+/sdcard/android/layout_tests/fast/dom/HTMLFormElement/elements-not-in-document.html
+/sdcard/android/layout_tests/fast/dom/Window/window-closed-crash.html
+/sdcard/android/layout_tests/fast/dom/Window/setTimeout-no-arguments.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-self.html
+/sdcard/android/layout_tests/fast/dom/Window/getMatchedCSSRules-null-crash.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-self-from-other-frame.html
+/sdcard/android/layout_tests/fast/dom/Window/window-custom-prototype-crash.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/attr-constructor.html
+/sdcard/android/layout_tests/fast/dom/Window/window-remove-event-listener.html
+/sdcard/android/layout_tests/fast/dom/Window/window-function-frame-getter-precedence.html
+/sdcard/android/layout_tests/fast/dom/Window/atob-btoa.html
+/sdcard/android/layout_tests/fast/dom/Window/clear-timeout.html
+/sdcard/android/layout_tests/fast/dom/Window/window-property-clearing.html
+/sdcard/android/layout_tests/fast/dom/Window/element-constructors-on-window.html
+/sdcard/android/layout_tests/fast/dom/Window/orphaned-frame-access.html
+/sdcard/android/layout_tests/fast/dom/Window/redirect-with-timer.html
+/sdcard/android/layout_tests/fast/dom/Window/window-resize-and-move-sub-frame.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-parent.html
+/sdcard/android/layout_tests/fast/dom/Window/console-trace.html
+/sdcard/android/layout_tests/fast/dom/Window/alert-undefined.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-top.html
+/sdcard/android/layout_tests/fast/dom/Window/window-appendages-cleared.html
+/sdcard/android/layout_tests/fast/dom/Window/window-open-parent-no-parent.html
+/sdcard/android/layout_tests/fast/dom/Window/closure-access-after-navigation-iframe.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableRowElement/cells.html
+/sdcard/android/layout_tests/fast/dom/HTMLTableRowElement/insertCell.html
+/sdcard/android/layout_tests/fast/dom/HTMLFontElement/size-attribute.html
+/sdcard/android/layout_tests/fast/dom/HTMLObjectElement/form/test1.html
+/sdcard/android/layout_tests/fast/dom/HTMLObjectElement/object-as-frame.html
+/sdcard/android/layout_tests/fast/dom/HTMLElement/set-inner-outer-optimization.html
+/sdcard/android/layout_tests/fast/dom/Range/compareBoundaryPoints-1.html
+/sdcard/android/layout_tests/fast/dom/Range/range-compareNode.html
+/sdcard/android/layout_tests/fast/dom/Range/range-comparePoint.html
+/sdcard/android/layout_tests/fast/dom/Range/acid3-surround-contents.html
+/sdcard/android/layout_tests/fast/dom/Range/mutation.html
+/sdcard/android/layout_tests/fast/dom/Range/13000.html
+/sdcard/android/layout_tests/fast/dom/Range/range-processing-instructions.html
+/sdcard/android/layout_tests/fast/dom/Range/range-insertNode-separate-endContainer.html
+/sdcard/android/layout_tests/fast/dom/Range/range-intersectsNode.html
+/sdcard/android/layout_tests/fast/dom/Range/range-isPointInRange.html
+/sdcard/android/layout_tests/fast/dom/Range/range-clone-empty.html
+/sdcard/android/layout_tests/fast/dom/Range/compareBoundaryPoints-2.html
+/sdcard/android/layout_tests/fast/dom/Range/range-modifycontents.html
+/sdcard/android/layout_tests/fast/dom/Range/range-insertNode-splittext.html
+/sdcard/android/layout_tests/fast/dom/Range/surroundContents-check-boundary-points.html
+/sdcard/android/layout_tests/fast/dom/Range/range-exceptions.html
+/sdcard/android/layout_tests/fast/dom/HTMLHeadElement/head-check.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/HTMLImageElement/image-lowsrc-getset.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-src-absolute-url.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-loading-gc.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-longdesc-absolute-url.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/constructor-mutation-event-dispatch.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-without-renderer-width.html
+/sdcard/android/layout_tests/fast/dom/HTMLImageElement/image-natural-width-height.html
+/sdcard/android/layout_tests/fast/dom/StyleSheet/ownerNode-lifetime.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/node-item.html
+/sdcard/android/layout_tests/fast/dom/clone-node-style.html
+/sdcard/android/layout_tests/fast/dom/script-element-without-frame-crash.html
+/sdcard/android/layout_tests/fast/dom/script-element-gc.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/prototypes.html
+/sdcard/android/layout_tests/fast/dom/clone-node-form-elements.html
+/sdcard/android/layout_tests/fast/dom/import-attribute-node.html
+/sdcard/android/layout_tests/fast/dom/getter-on-window-object2.html
+/sdcard/android/layout_tests/fast/dom/objc-big-method-name.html
+/sdcard/android/layout_tests/fast/dom/importNode-prefix.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/image-object.html
+/sdcard/android/layout_tests/fast/dom/gc-5.html
+/sdcard/android/layout_tests/fast/dom/node-filter-gc.html
+/sdcard/android/layout_tests/fast/dom/noscript-canvas-in-created-html-document.html
+/sdcard/android/layout_tests/fast/dom/DOMParser-assign-variable.html
+/sdcard/android/layout_tests/fast/dom/timer-clear-interval-in-handler.html
+/sdcard/android/layout_tests/fast/dom/implementation-createHTMLDocument.html
+/sdcard/android/layout_tests/fast/dom/iframe-document.html
+/sdcard/android/layout_tests/fast/dom/document-all-input.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-href-put-crash.html
+/sdcard/android/layout_tests/fast/dom/getelementsbytagnamens-mixed-namespaces.html
+/sdcard/android/layout_tests/fast/dom/object-plugin-hides-properties.html
+/sdcard/android/layout_tests/fast/dom/gc-2.html
+/sdcard/android/layout_tests/fast/dom/computed-style-set-property.html
+/sdcard/android/layout_tests/fast/dom/inner-text-001.html
+/sdcard/android/layout_tests/fast/dom/css-selectorText.html
+/sdcard/android/layout_tests/fast/dom/replace-first-child.html
+/sdcard/android/layout_tests/fast/dom/importNode-null.html
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex-multiple.html
+/sdcard/android/layout_tests/fast/dom/xmlhttprequest-invalid-values.html
+/sdcard/android/layout_tests/fast/dom/space-to-text.html
+/sdcard/android/layout_tests/fast/dom/css-set-property-exception.html
+/sdcard/android/layout_tests/fast/dom/java-applet-calls.html
+/sdcard/android/layout_tests/fast/dom/plugin-attributes-enumeration.html
+/sdcard/android/layout_tests/fast/dom/html-attribute-types.html
+/sdcard/android/layout_tests/fast/dom/resource-locations-in-created-html-document.html
+/sdcard/android/layout_tests/fast/dom/comment-document-fragment.html
+/sdcard/android/layout_tests/fast/dom/createAttribute-exception.html
+/sdcard/android/layout_tests/fast/dom/noscript-style.html
+/sdcard/android/layout_tests/fast/dom/serialize-cdata.html
+/sdcard/android/layout_tests/fast/dom/createDocument.html
+/sdcard/android/layout_tests/fast/dom/getelementbyname-invalidation.html
+/sdcard/android/layout_tests/fast/dom/capturing-event-listeners.html
+/sdcard/android/layout_tests/fast/dom/title-text-property.html
+/sdcard/android/layout_tests/fast/dom/incompatible-operations.html
+/sdcard/android/layout_tests/fast/dom/xmlhttprequest-html-response-encoding.html
+/sdcard/android/layout_tests/fast/dom/inner-text-rtl.html
+/sdcard/android/layout_tests/fast/dom/createDocument-empty.html
+/sdcard/android/layout_tests/fast/dom/documenturi-assigned-junk-implies-baseuri-null.html
+/sdcard/android/layout_tests/fast/dom/option-properties.html
+/sdcard/android/layout_tests/fast/dom/background-shorthand-csstext.html
+/sdcard/android/layout_tests/fast/dom/Range-insertNode-crash.html
+/sdcard/android/layout_tests/fast/dom/early-frame-url.html
+/sdcard/android/layout_tests/fast/dom/everything-to-string.html
+/sdcard/android/layout_tests/fast/dom/attribute-empty-value-no-children.html
+/sdcard/android/layout_tests/fast/dom/length-attribute-mapping.html
+/sdcard/android/layout_tests/fast/dom/documenturi-loses-to-base-tag.html
+/sdcard/android/layout_tests/fast/dom/createDocumentType2.html
+/sdcard/android/layout_tests/fast/dom/gc-6.html
+/sdcard/android/layout_tests/fast/dom/attribute-case-sensitivity.html
+/sdcard/android/layout_tests/fast/dom/compatMode-Compat.html
+/sdcard/android/layout_tests/fast/dom/namespaces-1.html
+/sdcard/android/layout_tests/fast/dom/getter-on-window-object.html
+/sdcard/android/layout_tests/fast/dom/constructors-overriding.html
+/sdcard/android/layout_tests/fast/dom/defaultView.html
+/sdcard/android/layout_tests/fast/dom/collection-null-like-arguments.html
+/sdcard/android/layout_tests/fast/dom/gc-3.html
+/sdcard/android/layout_tests/fast/dom/compatMode-Strict.html
+/sdcard/android/layout_tests/fast/dom/attribute-downcast-right.html
+/sdcard/android/layout_tests/fast/dom/document-all-select.html
+/sdcard/android/layout_tests/fast/dom/anchor-backslash.html
+/sdcard/android/layout_tests/fast/dom/css-mediarule-functions.html
+/sdcard/android/layout_tests/fast/dom/gc-acid3.html
+/sdcard/android/layout_tests/fast/dom/duplicate-ids-document-order.html
+/sdcard/android/layout_tests/fast/dom/exception-no-frame-inline-script-crash.html
+/sdcard/android/layout_tests/fast/dom/XMLSerializer-doctype2.html
+/sdcard/android/layout_tests/fast/dom/dir-no-body.html
+/sdcard/android/layout_tests/fast/dom/null-document-window-open-crash.html
+/sdcard/android/layout_tests/fast/dom/css-RGBValue.html
+/sdcard/android/layout_tests/fast/dom/innerHTML-nbsp.html
+/sdcard/android/layout_tests/fast/dom/documentElement-null.html
+/sdcard/android/layout_tests/fast/dom/class-all-whitespace.html
+/sdcard/android/layout_tests/fast/dom/wrapper-identity.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-assign-crash.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/simultaneouslyRegsiteredTimerFireOrder.html
+/sdcard/android/layout_tests/fast/dom/generic-form-element-assert.html
+/sdcard/android/layout_tests/fast/dom/css-shortHands.html
+/sdcard/android/layout_tests/fast/dom/dom-instanceof.html
 /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/dom/element-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/css-dom-read-2.html
+/sdcard/android/layout_tests/fast/dom/navigator-cookieEnabled-no-crash.html
+/sdcard/android/layout_tests/fast/dom/import-document-fragment.html
+/sdcard/android/layout_tests/fast/dom/setter-type-enforcement.html
+/sdcard/android/layout_tests/fast/dom/XMLSerializer.html
+/sdcard/android/layout_tests/fast/dom/navigator-vendorSub.html
+/sdcard/android/layout_tests/fast/dom/gc-7.html
+/sdcard/android/layout_tests/fast/dom/outerText-no-element.html
+/sdcard/android/layout_tests/fast/dom/replace-child-siblings.html
+/sdcard/android/layout_tests/fast/dom/constants.html
+/sdcard/android/layout_tests/fast/dom/inner-text-with-no-renderer.html
+/sdcard/android/layout_tests/fast/dom/onerror-img.html
+/sdcard/android/layout_tests/fast/dom/document-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/css-element-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/gc-11.html
+/sdcard/android/layout_tests/fast/dom/mutation-event-remove-inserted-node.html
+/sdcard/android/layout_tests/fast/dom/null-chardata-crash.html
+/sdcard/android/layout_tests/fast/dom/compatMode-AlmostStrict.html
+/sdcard/android/layout_tests/fast/dom/createElement-with-column.html
+/sdcard/android/layout_tests/fast/dom/exception-no-frame-timeout-crash.html
+/sdcard/android/layout_tests/fast/dom/title-text-property-2.html
+/sdcard/android/layout_tests/fast/dom/no-elements.html
+/sdcard/android/layout_tests/fast/dom/non-numeric-values-numeric-parameters.html
+/sdcard/android/layout_tests/fast/dom/gc-4.html
+/sdcard/android/layout_tests/fast/dom/inner-width-height.html
+/sdcard/android/layout_tests/fast/dom/XMLSerializer-doctype.html
+/sdcard/android/layout_tests/fast/dom/createElementNS.html
+/sdcard/android/layout_tests/fast/dom/undetectable-document-all.html
+/sdcard/android/layout_tests/fast/dom/prototype-chain.html
+/sdcard/android/layout_tests/fast/dom/gc-1.html
+/sdcard/android/layout_tests/fast/dom/select-selectedIndex-bug-12942.html
+/sdcard/android/layout_tests/fast/dom/frame-contentWindow-crash.html
+/sdcard/android/layout_tests/fast/dom/namednodemap-namelookup.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-replace-crash.html
+/sdcard/android/layout_tests/fast/dom/htmlcollection-detectability.html
+/sdcard/android/layout_tests/fast/dom/documenturi-assigned-junk-implies-relative-urls-do-not-resolve.html
+/sdcard/android/layout_tests/fast/dom/collection-namedItem-via-item.html
+/sdcard/android/layout_tests/fast/dom/set-inner-text-newlines.html
+/sdcard/android/layout_tests/fast/dom/document-dir-property.html
+/sdcard/android/layout_tests/fast/dom/undetectable-style-filter.html
+/sdcard/android/layout_tests/fast/dom/domListEnumeration.html
+/sdcard/android/layout_tests/fast/dom/destroy-selected-radio-button-crash.html
+/sdcard/android/layout_tests/fast/dom/script-add.html
+/sdcard/android/layout_tests/fast/dom/iframe-contentWindow-crash.html
+/sdcard/android/layout_tests/fast/dom/comment-dom-node.html
+/sdcard/android/layout_tests/fast/dom/features.html
+/sdcard/android/layout_tests/fast/dom/canvasContext2d-element-attribute-js-null.html
+/sdcard/android/layout_tests/fast/dom/remove-style-element.html
+/sdcard/android/layout_tests/fast/dom/attribute-namespaces-get-set.html
+/sdcard/android/layout_tests/fast/dom/innerHTML-escaping-attribute.html
+/sdcard/android/layout_tests/fast/dom/null-document-xmlhttprequest-open.html
+/sdcard/android/layout_tests/fast/invalid/nestedh3s-rapidweaver.html
+/sdcard/android/layout_tests/fast/forms/element-by-name.html
+/sdcard/android/layout_tests/fast/forms/HTMLOptionElement_selected.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-003.html
+/sdcard/android/layout_tests/fast/forms/radio-button-no-change-event.html
+/sdcard/android/layout_tests/fast/forms/menulist-selection-reset.html
+/sdcard/android/layout_tests/fast/forms/textfield-focus-out.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-000.html
+/sdcard/android/layout_tests/fast/forms/form-data-encoding-normalization-overrun.html
+/sdcard/android/layout_tests/fast/forms/select-reset.html
+/sdcard/android/layout_tests/fast/forms/input-named-action-overrides-action-attribute.html
+/sdcard/android/layout_tests/fast/forms/empty-get.html
+/sdcard/android/layout_tests/fast/forms/display-none-in-onchange-keyboard.html
+/sdcard/android/layout_tests/fast/forms/range-default-value.html
+/sdcard/android/layout_tests/fast/forms/paste-into-textarea.html
+/sdcard/android/layout_tests/fast/forms/4628409.html
+/sdcard/android/layout_tests/fast/forms/radio-no-theme-padding.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-006.html
+/sdcard/android/layout_tests/fast/forms/activate-and-disabled-elements.html
+/sdcard/android/layout_tests/fast/forms/form-get-multipart2.html
+/sdcard/android/layout_tests/fast/forms/select-replace-option.html
+/sdcard/android/layout_tests/fast/forms/textarea-setvalue-submit.html
+/sdcard/android/layout_tests/fast/forms/cursor-position.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-007.html
+/sdcard/android/layout_tests/fast/forms/input-changing-value.html
+/sdcard/android/layout_tests/fast/forms/double-focus.html
+/sdcard/android/layout_tests/fast/forms/form-data-encoding-2.html
+/sdcard/android/layout_tests/fast/forms/focus.html
+/sdcard/android/layout_tests/fast/forms/button-in-forms-collection.html
+/sdcard/android/layout_tests/fast/forms/input-delete.html
+/sdcard/android/layout_tests/fast/forms/placeholder-non-textfield.html
+/sdcard/android/layout_tests/fast/forms/element-order.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-001.html
+/sdcard/android/layout_tests/fast/forms/option-constructor-selected.html
+/sdcard/android/layout_tests/fast/forms/8250.html
+/sdcard/android/layout_tests/fast/forms/input-zero-height-focus.html
+/sdcard/android/layout_tests/fast/forms/var-name-conflict-in-form-event-handler.html
+/sdcard/android/layout_tests/fast/forms/range-reset.html
+/sdcard/android/layout_tests/fast/forms/textarea-linewrap-dynamic.html
+/sdcard/android/layout_tests/fast/forms/select-remove-option.html
+/sdcard/android/layout_tests/fast/forms/onselect-selectall.html
+/sdcard/android/layout_tests/fast/forms/select-width-font-change.html
+/sdcard/android/layout_tests/fast/forms/text-field-setvalue-crash.html
+/sdcard/android/layout_tests/fast/forms/paste-multiline-text-input.html
+/sdcard/android/layout_tests/fast/forms/form-get-multipart.html
+/sdcard/android/layout_tests/fast/forms/tab-in-input.html
+/sdcard/android/layout_tests/fast/forms/button-click-DOM.html
+/sdcard/android/layout_tests/fast/forms/domstring-replace-crash.html
+/sdcard/android/layout_tests/fast/forms/submit-nil-value-field-assert.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-007.html
+/sdcard/android/layout_tests/fast/forms/form-get-multipart3.html
+/sdcard/android/layout_tests/fast/forms/select-out-of-bounds-index.html
+/sdcard/android/layout_tests/fast/forms/select-type-ahead-list-box-no-selection.html
+/sdcard/android/layout_tests/fast/forms/selected-index-assert.html
+/sdcard/android/layout_tests/fast/forms/remove-radio-button-assert.html
+/sdcard/android/layout_tests/fast/forms/textarea-crlf.html
+/sdcard/android/layout_tests/fast/forms/form-collection-lookup.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-004.html
+/sdcard/android/layout_tests/fast/forms/select-list-box-mouse-focus.html
+/sdcard/android/layout_tests/fast/forms/text-set-value-crash.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-008.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-001.html
+/sdcard/android/layout_tests/fast/forms/select-namedItem.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-005.html
+/sdcard/android/layout_tests/fast/forms/select-index-setter.html
+/sdcard/android/layout_tests/fast/forms/option-change-single-selected.html
+/sdcard/android/layout_tests/fast/forms/listbox-scroll-after-options-removed.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-002.html
+/sdcard/android/layout_tests/fast/forms/form-data-encoding.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-elementFromPoint.html
+/sdcard/android/layout_tests/fast/forms/select-set-inner.html
+/sdcard/android/layout_tests/fast/forms/missing-action.html
+/sdcard/android/layout_tests/fast/forms/textarea-scrollbar-height.html
+/sdcard/android/layout_tests/fast/forms/textarea-default-value-leading-newline.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-008.html
+/sdcard/android/layout_tests/fast/forms/listbox-typeahead-empty.html
+/sdcard/android/layout_tests/fast/forms/submit-to-url-fragment.html
+/sdcard/android/layout_tests/fast/forms/textarea-setvalue-without-renderer.html
+/sdcard/android/layout_tests/fast/forms/hidden-input-not-enabled.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-005.html
+/sdcard/android/layout_tests/fast/forms/input-appearance-maxlength.html
+/sdcard/android/layout_tests/fast/forms/submit-with-base.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-009.html
+/sdcard/android/layout_tests/fast/forms/input-setvalue-selection.html
+/sdcard/android/layout_tests/fast/forms/autofocus-opera-002.html
+/sdcard/android/layout_tests/fast/forms/old-names.html
+/sdcard/android/layout_tests/fast/forms/willvalidate-006.html
+/sdcard/android/layout_tests/fast/forms/focus-style-pending.html
+/sdcard/android/layout_tests/fast/forms/textarea-hard-linewrap-empty.html
+/sdcard/android/layout_tests/fast/forms/document-write.html
+/sdcard/android/layout_tests/fast/forms/slow-click.html
+/sdcard/android/layout_tests/fast/forms/autofocus-attribute.html
+/sdcard/android/layout_tests/fast/table/incomplete-table-in-fragment-hang.html
+/sdcard/android/layout_tests/fast/table/section-in-table-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/large-rowspan-crash.html
+/sdcard/android/layout_tests/fast/table/colgroup-relative.html
+/sdcard/android/layout_tests/fast/table/border-changes.html
+/sdcard/android/layout_tests/fast/table/cell-in-row-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/incomplete-table-in-fragment-2.html
+/sdcard/android/layout_tests/fast/table/rowindex-comment-nodes.html
+/sdcard/android/layout_tests/fast/table/td-display-nowrap.html
+/sdcard/android/layout_tests/fast/table/row-in-tbody-before-misnested-text-crash-css.html
+/sdcard/android/layout_tests/fast/table/empty-auto-column-zero-divide.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/destroy-cell-with-selection-crash.html
+/sdcard/android/layout_tests/fast/table/form-in-row-before-misnested-text-crash-css.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/counters/counter-function-input.html
+/sdcard/android/layout_tests/fast/css/counters/counter-number-input.html
+/sdcard/android/layout_tests/fast/css/variables/invalid-identifier.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/transform-function-lowercase-assert.html
+/sdcard/android/layout_tests/fast/css/word-break-user-modify-allowed-values.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/outline-invert-assertion.html
+/sdcard/android/layout_tests/fast/css/insertRule-font-face.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-004.html
+/sdcard/android/layout_tests/fast/css/transform-inline-style-remove.html
+/sdcard/android/layout_tests/fast/css/padding-no-renderer.html
+/sdcard/android/layout_tests/fast/css/transition_shorthand_parsing.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/dashboard-regions-attr-crash.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-001.html
+/sdcard/android/layout_tests/fast/css/font-property-priority.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/device-aspect-ratio.html
+/sdcard/android/layout_tests/fast/css/pseudostyle-anonymous-text.html
+/sdcard/android/layout_tests/fast/css/css-properties-case-insensitive.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-border-image.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-border-spacing.html
+/sdcard/android/layout_tests/fast/css/font-face-descriptor-multiple-values-parsing.html
+/sdcard/android/layout_tests/fast/css/hexColor-isDigit-assert.html
+/sdcard/android/layout_tests/fast/css/transform-inline-style.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/outline-hidden-illegal-value.html
+/sdcard/android/layout_tests/fast/css/emptyStyleTag.html
+/sdcard/android/layout_tests/fast/css/stale-style-selector-crash-1.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-background-size.html
+/sdcard/android/layout_tests/fast/css/display-none-inline-style-change-crash.html
+/sdcard/android/layout_tests/fast/css/getPropertyValue-clip.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/getComputedStyle-border-box.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-005.html
+/sdcard/android/layout_tests/fast/css/insertRule-media.html
+/sdcard/android/layout_tests/fast/css/font-face-multiple-families.html
+/sdcard/android/layout_tests/fast/css/getPropertyValue-border.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-002.html
+/sdcard/android/layout_tests/fast/css/invalid-rule-value.html
+/sdcard/android/layout_tests/fast/css/max-device-aspect-ratio.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/css/orphaned_units_crash.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-relayout.html
+/sdcard/android/layout_tests/fast/css/invalid-cursor-property-crash.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-borderRadius.html
+/sdcard/android/layout_tests/fast/css/sheet-title.html
+/sdcard/android/layout_tests/fast/css/background-position-serialize.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-background-position.html
+/sdcard/android/layout_tests/fast/css/stale-style-selector-crash-2.html
+/sdcard/android/layout_tests/fast/css/webkit-marquee-speed-unit-in-quirksmode.html
+/sdcard/android/layout_tests/fast/css/CSSPrimitiveValue-exceptions.html
+/sdcard/android/layout_tests/fast/css/empty-script.html
+/sdcard/android/layout_tests/fast/css/mask-missing-image-crash.html
+/sdcard/android/layout_tests/fast/css/parse-timing-function-crash.html
+/sdcard/android/layout_tests/fast/css/background-position-inherit.html
+/sdcard/android/layout_tests/fast/css/readonly-pseudoclass-opera-003.html
+/sdcard/android/layout_tests/fast/css/overflow-property.html
+/sdcard/android/layout_tests/fast/css/remove-shorthand.html
+/sdcard/android/layout_tests/fast/css/getComputedStyle-zIndex-auto.html
+/sdcard/android/layout_tests/fast/css/min-device-aspect-ratio.html
+/sdcard/android/layout_tests/fast/css/case-transform.html
+/sdcard/android/layout_tests/fast/css/nested-rule-parent-sheet.html
+/sdcard/android/layout_tests/fast/css/font-family-initial.html
+/sdcard/android/layout_tests/fast/css/computed-style-display-none.html
+/sdcard/android/layout_tests/fast/css/small-caps-crash.html
+/sdcard/android/layout_tests/fast/css/max-height-and-max-width.html
+/sdcard/android/layout_tests/fast/css/legacy-opacity-styles.html
+/sdcard/android/layout_tests/fast/css/transition-timing-function.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/entity-end-iframe-tag.html
+/sdcard/android/layout_tests/fast/parser/nsup-entity.html
+/sdcard/android/layout_tests/fast/parser/parse-wbr.html
+/sdcard/android/layout_tests/fast/parser/residual-style-close-across-n-blocks.html
+/sdcard/android/layout_tests/fast/parser/open-comment-in-script-tricky.html
+/sdcard/android/layout_tests/fast/parser/tag-with-exclamation-point.html
+/sdcard/android/layout_tests/fast/parser/p-in-scope-strict.html
+/sdcard/android/layout_tests/fast/parser/hex-entities-length.html
+/sdcard/android/layout_tests/fast/parser/entity-end-style-tag.html
+/sdcard/android/layout_tests/fast/parser/entity-end-xmp-tag.html
+/sdcard/android/layout_tests/fast/parser/html-whitespace.html
+/sdcard/android/layout_tests/fast/parser/head-comment.html
+/sdcard/android/layout_tests/fast/parser/test-unicode-characters-in-attribute-name.html
+/sdcard/android/layout_tests/fast/parser/entity-end-textarea-tag.html
+/sdcard/android/layout_tests/fast/parser/script-after-frameset-assert.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/residual-style-close-across-removed-block.html
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-title.html
+/sdcard/android/layout_tests/fast/parser/assertion-empty-attribute.html
+/sdcard/android/layout_tests/fast/parser/entity-end-title-tag.html
+/sdcard/android/layout_tests/fast/parser/comment-in-script-tricky.html
+/sdcard/android/layout_tests/fast/parser/pre-first-line-break.html
+/sdcard/android/layout_tests/fast/parser/rewrite-form.html
+/sdcard/android/layout_tests/fast/parser/number-sign-in-map-name.html
+/sdcard/android/layout_tests/fast/parser/entity-comment-in-script-tricky.html
+/sdcard/android/layout_tests/fast/parser/input-textarea-inside-select-element.html
+/sdcard/android/layout_tests/fast/parser/entities-in-html.html
+/sdcard/android/layout_tests/fast/parser/remove-parser-current-node.html
+/sdcard/android/layout_tests/fast/parser/area-in-div.html
+/sdcard/android/layout_tests/fast/parser/rewrite-map.html
+/sdcard/android/layout_tests/fast/parser/entity-surrogate-pairs.html
+/sdcard/android/layout_tests/fast/parser/strict-img-in-map.html
+/sdcard/android/layout_tests/fast/parser/p-in-scope.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/layers/resize-layer-deletion-crash.html
+/sdcard/android/layout_tests/fast/loader/early-load-cancel.html
+/sdcard/android/layout_tests/fast/loader/iframe-recursive-synchronous-load.html
+/sdcard/android/layout_tests/fast/loader/xmlhttprequest-bad-mimetype.html
+/sdcard/android/layout_tests/fast/loader/local-css-allowed-in-strict-mode.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/unloadable-script.html
+/sdcard/android/layout_tests/fast/loader/url-parse-1.html
+/sdcard/android/layout_tests/fast/loader/redirect-with-open-subframe-2.html
+/sdcard/android/layout_tests/fast/loader/simultaneous-reloads-assert.html
+/sdcard/android/layout_tests/fast/loader/invalid-charset-on-script-crashes-loader.html
+/sdcard/android/layout_tests/fast/loader/javascript-url-encoding.html
+/sdcard/android/layout_tests/fast/loader/charset-parse.html
+/sdcard/android/layout_tests/fast/loader/meta-refresh-vs-open.html
+/sdcard/android/layout_tests/fast/loader/url-data-replace-backslash.html
+/sdcard/android/layout_tests/fast/loader/redirect-with-open-subframe.html
+/sdcard/android/layout_tests/fast/loader/empty-ref-versus-no-ref.html
+/sdcard/android/layout_tests/fast/loader/window-clearing.html
+/sdcard/android/layout_tests/fast/loader/javascript-url-encoding-2.html
+/sdcard/android/layout_tests/fast/loader/external-script-URL-location.html
+/sdcard/android/layout_tests/fast/loader/loadInProgress.html
+/sdcard/android/layout_tests/fast/loader/inherit-charset-to-empty-frame.html
+/sdcard/android/layout_tests/fast/loader/font-face-empty.html
+/sdcard/android/layout_tests/fast/loader/data-url-encoding-html.html
+/sdcard/android/layout_tests/fast/loader/file-URL-with-port-number.html
+/sdcard/android/layout_tests/fast/loader/link-no-URL.html
 /sdcard/android/layout_tests/fast/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/canvas-gradient-without-path.html
+/sdcard/android/layout_tests/fast/canvas/canvas-pattern-behaviour.html
+/sdcard/android/layout_tests/fast/canvas/radialGradient-infinite-values.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/canvas-stroke-empty-fill.html
+/sdcard/android/layout_tests/fast/canvas/access-zero-sized-canvas.html
+/sdcard/android/layout_tests/fast/canvas/script-inside-canvas-fallback.html
+/sdcard/android/layout_tests/fast/canvas/unclosed-canvas-2.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/gradient-with-clip.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
+/sdcard/android/layout_tests/fast/canvas/canvas-ImageData-behaviour.html
+/sdcard/android/layout_tests/fast/canvas/canvas-putImageData.html
+/sdcard/android/layout_tests/fast/canvas/unclosed-canvas-4.html
+/sdcard/android/layout_tests/fast/canvas/canvas-invalid-fillstyle.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/canvas-with-incorrect-args.html
+/sdcard/android/layout_tests/fast/canvas/canvas-path-with-inf-nan-dimensions.html
+/sdcard/android/layout_tests/fast/canvas/canvas-radial-gradient-spreadMethod.html
+/sdcard/android/layout_tests/fast/canvas/canvas-set-properties-with-non-invertible-ctm.html
+/sdcard/android/layout_tests/fast/canvas/canvas-invalid-strokestyle.html
+/sdcard/android/layout_tests/fast/canvas/canvas-strokeRect.html
+/sdcard/android/layout_tests/fast/canvas/canvas-pattern-transform.html
+/sdcard/android/layout_tests/fast/canvas/canvas-transparency-and-composite.html
+/sdcard/android/layout_tests/fast/canvas/unclosed-canvas-3.html
+/sdcard/android/layout_tests/fast/canvas/linearGradient-infinite-values.html
+/sdcard/android/layout_tests/fast/canvas/canvas-setTransform.html
+/sdcard/android/layout_tests/fast/frames/frame-set-same-location.html
+/sdcard/android/layout_tests/fast/frames/set-unloaded-frame-location.html
+/sdcard/android/layout_tests/fast/frames/negative-remaining-length-crash.html
+/sdcard/android/layout_tests/fast/frames/frame-name-reset.html
+/sdcard/android/layout_tests/fast/frames/frame-set-same-src.html
+/sdcard/android/layout_tests/fast/frames/crash-removed-iframe.html
+/sdcard/android/layout_tests/fast/frames/empty-frame-document.html
+/sdcard/android/layout_tests/fast/frames/viewsource-plain-text-tags.html
+/sdcard/android/layout_tests/fast/frames/location-put-after-removal.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/cross-site-this.html
+/sdcard/android/layout_tests/fast/frames/onload-remove-iframe-crash.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-target.html
+/sdcard/android/layout_tests/fast/frames/hover-timer-crash.html
+/sdcard/android/layout_tests/fast/frames/iframe-set-same-src.html
+/sdcard/android/layout_tests/fast/frames/iframe-double-attach.html
+/sdcard/android/layout_tests/fast/frames/iframe-set-same-location.html
+/sdcard/android/layout_tests/fast/frames/iframe-js-url-clientWidth.html
+/sdcard/android/layout_tests/fast/frames/location-change.html
+/sdcard/android/layout_tests/fast/frames/frame-base-url.html
+/sdcard/android/layout_tests/fast/frames/iframe-display-none.html
+/sdcard/android/layout_tests/fast/frames/frame-display-none-focus.html
+/sdcard/android/layout_tests/fast/reflections/teardown-crash.html
+/sdcard/android/layout_tests/fast/reflections/reflection-computed-style.html
diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
index e1a0e7d..264fcdd 100644
--- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
+++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
@@ -21,6 +21,7 @@
 import android.widget.ArrayAdapter;
 import android.view.View;
 import android.widget.ListView;
+import android.content.ContentResolver;
 import android.content.Intent;
 import android.app.Notification;
 import android.app.NotificationManager;
@@ -188,7 +189,8 @@
             {
                 Notification n = new Notification();
                 n.sound = Uri.parse(
-                        "android.resource://com.android.notificationtest/raw/ringer");
+                        ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
+                        getPackageName() + "/raw/ringer");
                 Log.d(TAG, "n.sound=" + n.sound);
 
                 mNM.notify(1, n);
diff --git a/tools/aapt/Images.cpp b/tools/aapt/Images.cpp
index edb12ea..0a4c68b 100644
--- a/tools/aapt/Images.cpp
+++ b/tools/aapt/Images.cpp
@@ -332,8 +332,8 @@
     int H = image->height;
     int i, j;
 
-    int maxSizeXDivs = (W / 2 + 1) * sizeof(int32_t);
-    int maxSizeYDivs = (H / 2 + 1) * sizeof(int32_t);
+    int maxSizeXDivs = W * sizeof(int32_t);
+    int maxSizeYDivs = H * sizeof(int32_t);
     int32_t* xDivs = (int32_t*) malloc(maxSizeXDivs);
     int32_t* yDivs = (int32_t*) malloc(maxSizeYDivs);
     uint8_t  numXDivs = 0;
diff --git a/tools/aidl/aidl.cpp b/tools/aidl/aidl.cpp
index dc61567..e248763 100644
--- a/tools/aidl/aidl.cpp
+++ b/tools/aidl/aidl.cpp
@@ -617,7 +617,7 @@
 
     FILE* f = fopen(filename.c_str(), "rb");
     if (f == NULL) {
-        fprintf(stderr, "aidl: can't open preprocessd file: %s\n",
+        fprintf(stderr, "aidl: can't open preprocessed file: %s\n",
                 filename.c_str());
         return 1;
     }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
index 6abc452d..47a7ec0 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
@@ -56,6 +56,7 @@
 import android.view.WindowManager.LayoutParams;
 import android.widget.FrameLayout;
 
+import java.lang.ref.SoftReference;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.Collection;
@@ -94,14 +95,15 @@
     private final static Map<String, Map<String, Integer>> sRFullMap =
         new HashMap<String, Map<String,Integer>>();
     
-    private final static Map<Object, Map<String, Bitmap>> sProjectBitmapCache =
-        new HashMap<Object, Map<String, Bitmap>>();
-    private final static Map<Object, Map<String, NinePatch>> sProject9PatchCache =
-        new HashMap<Object, Map<String, NinePatch>>();
+    private final static Map<Object, Map<String, SoftReference<Bitmap>>> sProjectBitmapCache =
+        new HashMap<Object, Map<String, SoftReference<Bitmap>>>();
+    private final static Map<Object, Map<String, SoftReference<NinePatch>>> sProject9PatchCache =
+        new HashMap<Object, Map<String, SoftReference<NinePatch>>>();
 
-    private final static Map<String, Bitmap> sFrameworkBitmapCache = new HashMap<String, Bitmap>();
-    private final static Map<String, NinePatch> sFramework9PatchCache =
-        new HashMap<String, NinePatch>();
+    private final static Map<String, SoftReference<Bitmap>> sFrameworkBitmapCache =
+        new HashMap<String, SoftReference<Bitmap>>();
+    private final static Map<String, SoftReference<NinePatch>> sFramework9PatchCache =
+        new HashMap<String, SoftReference<NinePatch>>();
     
     private static Map<String, Map<String, Integer>> sEnumValueMap;
 
@@ -717,15 +719,21 @@
      */
     static Bitmap getCachedBitmap(String value, Object projectKey) {
         if (projectKey != null) {
-            Map<String, Bitmap> map = sProjectBitmapCache.get(projectKey);
+            Map<String, SoftReference<Bitmap>> map = sProjectBitmapCache.get(projectKey);
             if (map != null) {
-                return map.get(value);
+                SoftReference<Bitmap> ref = map.get(value);
+                if (ref != null) {
+                    return ref.get();
+                }
             }
-            
-            return null;
+        } else {
+            SoftReference<Bitmap> ref = sFrameworkBitmapCache.get(value);
+            if (ref != null) {
+                return ref.get();
+            }
         }
-        
-        return sFrameworkBitmapCache.get(value);
+
+        return null;
     }
 
     /**
@@ -736,17 +744,17 @@
      */
     static void setCachedBitmap(String value, Bitmap bmp, Object projectKey) {
         if (projectKey != null) {
-            Map<String, Bitmap> map = sProjectBitmapCache.get(projectKey);
+            Map<String, SoftReference<Bitmap>> map = sProjectBitmapCache.get(projectKey);
 
             if (map == null) {
-                map = new HashMap<String, Bitmap>();
+                map = new HashMap<String, SoftReference<Bitmap>>();
                 sProjectBitmapCache.put(projectKey, map);
             }
             
-            map.put(value, bmp);
+            map.put(value, new SoftReference<Bitmap>(bmp));
+        } else {
+            sFrameworkBitmapCache.put(value, new SoftReference<Bitmap>(bmp));
         }
-        
-        sFrameworkBitmapCache.put(value, bmp);
     }
 
     /**
@@ -758,16 +766,22 @@
      */
     static NinePatch getCached9Patch(String value, Object projectKey) {
         if (projectKey != null) {
-            Map<String, NinePatch> map = sProject9PatchCache.get(projectKey);
+            Map<String, SoftReference<NinePatch>> map = sProject9PatchCache.get(projectKey);
             
             if (map != null) {
-                return map.get(value);
+                SoftReference<NinePatch> ref = map.get(value);
+                if (ref != null) {
+                    return ref.get();
+                }
             }
-            
-            return null;
+        } else {
+            SoftReference<NinePatch> ref = sFramework9PatchCache.get(value);
+            if (ref != null) {
+                return ref.get();
+            }
         }
         
-        return sFramework9PatchCache.get(value);
+        return null;
     }
 
     /**
@@ -778,19 +792,19 @@
      */
     static void setCached9Patch(String value, NinePatch ninePatch, Object projectKey) {
         if (projectKey != null) {
-            Map<String, NinePatch> map = sProject9PatchCache.get(projectKey);
+            Map<String, SoftReference<NinePatch>> map = sProject9PatchCache.get(projectKey);
 
             if (map == null) {
-                map = new HashMap<String, NinePatch>();
+                map = new HashMap<String, SoftReference<NinePatch>>();
                 sProject9PatchCache.put(projectKey, map);
             }
             
-            map.put(value, ninePatch);
+            map.put(value, new SoftReference<NinePatch>(ninePatch));
+        } else {
+            sFramework9PatchCache.put(value, new SoftReference<NinePatch>(ninePatch));
         }
-        
-        sFramework9PatchCache.put(value, ninePatch);
     }
-    
+
     /**
      * Implementation of {@link IWindowSession} so that mSession is not null in
      * the {@link SurfaceView}.