diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp
index f8bb3c8..4ffc8e4 100644
--- a/cmds/stagefright/stagefright.cpp
+++ b/cmds/stagefright/stagefright.cpp
@@ -283,7 +283,7 @@
 
         CHECK(service.get() != NULL);
 
-        sp<IOMX> omx = service->createOMX();
+        sp<IOMX> omx = service->getOMX();
         CHECK(omx.get() != NULL);
 
         const char *kMimeTypes[] = {
@@ -329,11 +329,11 @@
 
         CHECK(service.get() != NULL);
 
-        sp<IOMX> omx = service->createOMX();
+        sp<IOMX> omx = service->getOMX();
         CHECK(omx.get() != NULL);
 
         List<String8> list;
-        omx->list_nodes(&list);
+        omx->listNodes(&list);
 
         for (List<String8>::iterator it = list.begin();
              it != list.end(); ++it) {
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index 67b30a9..d1dd311 100644
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -489,14 +489,15 @@
         // Parrot, Zhongshan General K-mate Electronics, Great Well
         // Electronics, Flaircomm Electronics, Jatty Electronics, Delphi,
         // Clarion, Novero, Denso (Lexus, Toyota), Johnson Controls (Acura),
-        // Continental Automotive, Harman/Becker, Panasonic/Kyushu Ten
+        // Continental Automotive, Harman/Becker, Panasonic/Kyushu Ten,
+        // BMW (Motorola PCS)
         private final ArrayList<String>  mAutoPairingAddressBlacklist =
                 new ArrayList<String>(Arrays.asList(
                         "00:02:C7", "00:16:FE", "00:19:C1", "00:1B:FB", "00:1E:3D", "00:21:4F",
                         "00:23:06", "00:24:33", "00:A0:79", "00:0E:6D", "00:13:E0", "00:21:E8",
                         "00:60:57", "00:0E:9F", "00:12:1C", "00:18:91", "00:18:96", "00:13:04",
                         "00:16:FD", "00:22:A0", "00:0B:4C", "00:60:6F", "00:23:3D", "00:C0:59",
-                        "00:0A:30", "00:1E:AE", "00:1C:D7", "00:80:F0"
+                        "00:0A:30", "00:1E:AE", "00:1C:D7", "00:80:F0", "00:12:8A"
                         ));
 
         // List of names of Bluetooth devices for which auto pairing should be
diff --git a/include/media/IMediaPlayerService.h b/include/media/IMediaPlayerService.h
index 303444c..d5c1594 100644
--- a/include/media/IMediaPlayerService.h
+++ b/include/media/IMediaPlayerService.h
@@ -42,7 +42,7 @@
     virtual sp<IMediaPlayer>    create(pid_t pid, const sp<IMediaPlayerClient>& client, int fd, int64_t offset, int64_t length) = 0;
     virtual sp<IMemory>         decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat) = 0;
     virtual sp<IMemory>         decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat) = 0;
-    virtual sp<IOMX>            createOMX() = 0;
+    virtual sp<IOMX>            getOMX() = 0;
 
     // Take a peek at currently playing audio, for visualization purposes.
     // This returns a buffer of 16 bit mono PCM data, or NULL if no visualization buffer is currently available.
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 10e0197..6f3ba1c 100644
--- a/include/media/IOMX.h
+++ b/include/media/IOMX.h
@@ -42,57 +42,57 @@
     typedef void *buffer_id;
     typedef void *node_id;
 
-    virtual status_t list_nodes(List<String8> *list) = 0;
+    virtual status_t listNodes(List<String8> *list) = 0;
 
-    virtual status_t allocate_node(const char *name, node_id *node) = 0;
-    virtual status_t free_node(node_id node) = 0;
+    virtual status_t allocateNode(
+            const char *name, const sp<IOMXObserver> &observer,
+            node_id *node) = 0;
 
-    virtual status_t send_command(
+    virtual status_t freeNode(node_id node) = 0;
+
+    virtual status_t sendCommand(
             node_id node, OMX_COMMANDTYPE cmd, OMX_S32 param) = 0;
 
-    virtual status_t get_parameter(
+    virtual status_t getParameter(
             node_id node, OMX_INDEXTYPE index,
             void *params, size_t size) = 0;
 
-    virtual status_t set_parameter(
+    virtual status_t setParameter(
             node_id node, OMX_INDEXTYPE index,
             const void *params, size_t size) = 0;
 
-    virtual status_t get_config(
+    virtual status_t getConfig(
             node_id node, OMX_INDEXTYPE index,
             void *params, size_t size) = 0;
 
-    virtual status_t set_config(
+    virtual status_t setConfig(
             node_id node, OMX_INDEXTYPE index,
             const void *params, size_t size) = 0;
 
-    virtual status_t use_buffer(
+    virtual status_t useBuffer(
             node_id node, OMX_U32 port_index, const sp<IMemory> &params,
             buffer_id *buffer) = 0;
 
-    virtual status_t allocate_buffer(
+    virtual status_t allocateBuffer(
             node_id node, OMX_U32 port_index, size_t size,
             buffer_id *buffer) = 0;
 
-    virtual status_t allocate_buffer_with_backup(
+    virtual status_t allocateBufferWithBackup(
             node_id node, OMX_U32 port_index, const sp<IMemory> &params,
             buffer_id *buffer) = 0;
 
-    virtual status_t free_buffer(
+    virtual status_t freeBuffer(
             node_id node, OMX_U32 port_index, buffer_id buffer) = 0;
 
-    virtual status_t observe_node(
-            node_id node, const sp<IOMXObserver> &observer) = 0;
+    virtual status_t fillBuffer(node_id node, buffer_id buffer) = 0;
 
-    virtual void fill_buffer(node_id node, buffer_id buffer) = 0;
-
-    virtual void empty_buffer(
+    virtual status_t emptyBuffer(
             node_id node,
             buffer_id buffer,
             OMX_U32 range_offset, OMX_U32 range_length,
             OMX_U32 flags, OMX_TICKS timestamp) = 0;
 
-    virtual status_t get_extension_index(
+    virtual status_t getExtensionIndex(
             node_id node,
             const char *parameter_name,
             OMX_INDEXTYPE *index) = 0;
@@ -162,7 +162,7 @@
 public:
     DECLARE_META_INTERFACE(OMXObserver);
 
-    virtual void on_message(const omx_message &msg) = 0;
+    virtual void onMessage(const omx_message &msg) = 0;
 };
 
 class IOMXRenderer : public IInterface {
diff --git a/include/media/stagefright/HTTPStream.h b/include/media/stagefright/HTTPStream.h
index 3d0d67a..72e796c 100644
--- a/include/media/stagefright/HTTPStream.h
+++ b/include/media/stagefright/HTTPStream.h
@@ -21,7 +21,7 @@
 #include <sys/types.h>
 
 #include <media/stagefright/MediaErrors.h>
-#include <media/stagefright/string.h>
+#include <media/stagefright/stagefright_string.h>
 #include <utils/KeyedVector.h>
 
 namespace android {
diff --git a/include/media/stagefright/string.h b/include/media/stagefright/stagefright_string.h
similarity index 92%
rename from include/media/stagefright/string.h
rename to include/media/stagefright/stagefright_string.h
index 5dc7116..1ed4c86 100644
--- a/include/media/stagefright/string.h
+++ b/include/media/stagefright/stagefright_string.h
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-#ifndef STRING_H_
+#ifndef STAGEFRIGHT_STRING_H_
 
-#define STRING_H_
+#define STAGEFRIGHT_STRING_H_
 
 #include <utils/String8.h>
 
@@ -51,4 +51,4 @@
 
 }  // namespace android
 
-#endif  // STRING_H_
+#endif  // STAGEFRIGHT_STRING_H_
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp
index 38cec64..16029a6 100644
--- a/libs/rs/rsAllocation.cpp
+++ b/libs/rs/rsAllocation.cpp
@@ -104,6 +104,7 @@
         glGenTextures(1, &mTextureID);
     }
     glBindTexture(GL_TEXTURE_2D, mTextureID);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
 
     Adapter2D adapt(getContext(), this);
     for(uint32_t lod = 0; (lod + lodOffset) < mType->getLODCount(); lod++) {
diff --git a/media/libmedia/IMediaPlayerService.cpp b/media/libmedia/IMediaPlayerService.cpp
index 98f7ef1..cca3e9b 100644
--- a/media/libmedia/IMediaPlayerService.cpp
+++ b/media/libmedia/IMediaPlayerService.cpp
@@ -35,7 +35,7 @@
     DECODE_FD,
     CREATE_MEDIA_RECORDER,
     CREATE_METADATA_RETRIEVER,
-    CREATE_OMX,
+    GET_OMX,
     SNOOP
 };
 
@@ -123,10 +123,10 @@
         return interface_cast<IMemory>(reply.readStrongBinder());
     }
 
-    virtual sp<IOMX> createOMX() {
+    virtual sp<IOMX> getOMX() {
         Parcel data, reply;
         data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor());
-        remote()->transact(CREATE_OMX, data, &reply);
+        remote()->transact(GET_OMX, data, &reply);
         return interface_cast<IOMX>(reply.readStrongBinder());
     }
 };
@@ -207,9 +207,9 @@
             reply->writeStrongBinder(retriever->asBinder());
             return NO_ERROR;
         } break;
-        case CREATE_OMX: {
+        case GET_OMX: {
             CHECK_INTERFACE(IMediaPlayerService, data, reply);
-            sp<IOMX> omx = createOMX();
+            sp<IOMX> omx = getOMX();
             reply->writeStrongBinder(omx->asBinder());
             return NO_ERROR;
         } break;
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp
index 0cec7bb..88a7064 100644
--- a/media/libmedia/IOMX.cpp
+++ b/media/libmedia/IOMX.cpp
@@ -24,7 +24,6 @@
     ALLOC_BUFFER,
     ALLOC_BUFFER_WITH_BACKUP,
     FREE_BUFFER,
-    OBSERVE_NODE,
     FILL_BUFFER,
     EMPTY_BUFFER,
     GET_EXTENSION_INDEX,
@@ -76,7 +75,7 @@
         : BpInterface<IOMX>(impl) {
     }
 
-    virtual status_t list_nodes(List<String8> *list) {
+    virtual status_t listNodes(List<String8> *list) {
         list->clear();
 
         Parcel data, reply;
@@ -93,10 +92,12 @@
         return OK;
     }
 
-    virtual status_t allocate_node(const char *name, node_id *node) {
+    virtual status_t allocateNode(
+            const char *name, const sp<IOMXObserver> &observer, node_id *node) {
         Parcel data, reply;
         data.writeInterfaceToken(IOMX::getInterfaceDescriptor());
         data.writeCString(name);
+        data.writeStrongBinder(observer->asBinder());
         remote()->transact(ALLOCATE_NODE, data, &reply);
 
         status_t err = reply.readInt32();
@@ -109,7 +110,7 @@
         return err;
     }
 
-    virtual status_t free_node(node_id node) {
+    virtual status_t freeNode(node_id node) {
         Parcel data, reply;
         data.writeInterfaceToken(IOMX::getInterfaceDescriptor());
         data.writeIntPtr((intptr_t)node);
@@ -118,7 +119,7 @@
         return reply.readInt32();
     }
 
-    virtual status_t send_command(
+    virtual status_t sendCommand(
             node_id node, OMX_COMMANDTYPE cmd, OMX_S32 param) {
         Parcel data, reply;
         data.writeInterfaceToken(IOMX::getInterfaceDescriptor());
@@ -130,7 +131,7 @@
         return reply.readInt32();
     }
 
-    virtual status_t get_parameter(
+    virtual status_t getParameter(
             node_id node, OMX_INDEXTYPE index,
             void *params, size_t size) {
         Parcel data, reply;
@@ -151,7 +152,7 @@
         return OK;
     }
 
-    virtual status_t set_parameter(
+    virtual status_t setParameter(
             node_id node, OMX_INDEXTYPE index,
             const void *params, size_t size) {
         Parcel data, reply;
@@ -165,7 +166,7 @@
         return reply.readInt32();
     }
 
-    virtual status_t get_config(
+    virtual status_t getConfig(
             node_id node, OMX_INDEXTYPE index,
             void *params, size_t size) {
         Parcel data, reply;
@@ -186,7 +187,7 @@
         return OK;
     }
 
-    virtual status_t set_config(
+    virtual status_t setConfig(
             node_id node, OMX_INDEXTYPE index,
             const void *params, size_t size) {
         Parcel data, reply;
@@ -200,7 +201,7 @@
         return reply.readInt32();
     }
 
-    virtual status_t use_buffer(
+    virtual status_t useBuffer(
             node_id node, OMX_U32 port_index, const sp<IMemory> &params,
             buffer_id *buffer) {
         Parcel data, reply;
@@ -222,7 +223,7 @@
         return err;
     }
 
-    virtual status_t allocate_buffer(
+    virtual status_t allocateBuffer(
             node_id node, OMX_U32 port_index, size_t size,
             buffer_id *buffer) {
         Parcel data, reply;
@@ -244,7 +245,7 @@
         return err;
     }
 
-    virtual status_t allocate_buffer_with_backup(
+    virtual status_t allocateBufferWithBackup(
             node_id node, OMX_U32 port_index, const sp<IMemory> &params,
             buffer_id *buffer) {
         Parcel data, reply;
@@ -266,7 +267,7 @@
         return err;
     }
 
-    virtual status_t free_buffer(
+    virtual status_t freeBuffer(
             node_id node, OMX_U32 port_index, buffer_id buffer) {
         Parcel data, reply;
         data.writeInterfaceToken(IOMX::getInterfaceDescriptor());
@@ -278,26 +279,17 @@
         return reply.readInt32();
     }
 
-    virtual status_t observe_node(
-            node_id node, const sp<IOMXObserver> &observer) {
-        Parcel data, reply;
-        data.writeInterfaceToken(IOMX::getInterfaceDescriptor());
-        data.writeIntPtr((intptr_t)node);
-        data.writeStrongBinder(observer->asBinder());
-        remote()->transact(OBSERVE_NODE, data, &reply);
-
-        return reply.readInt32();
-    }
-
-    virtual void fill_buffer(node_id node, buffer_id buffer) {
+    virtual status_t fillBuffer(node_id node, buffer_id buffer) {
         Parcel data, reply;
         data.writeInterfaceToken(IOMX::getInterfaceDescriptor());
         data.writeIntPtr((intptr_t)node);
         data.writeIntPtr((intptr_t)buffer);
         remote()->transact(FILL_BUFFER, data, &reply, IBinder::FLAG_ONEWAY);
+
+        return reply.readInt32();
     }
 
-    virtual void empty_buffer(
+    virtual status_t emptyBuffer(
             node_id node,
             buffer_id buffer,
             OMX_U32 range_offset, OMX_U32 range_length,
@@ -311,9 +303,11 @@
         data.writeInt32(flags);
         data.writeInt64(timestamp);
         remote()->transact(EMPTY_BUFFER, data, &reply, IBinder::FLAG_ONEWAY);
+
+        return reply.readInt32();
     }
 
-    virtual status_t get_extension_index(
+    virtual status_t getExtensionIndex(
             node_id node,
             const char *parameter_name,
             OMX_INDEXTYPE *index) {
@@ -375,7 +369,7 @@
             CHECK_INTERFACE(IOMX, data, reply);
 
             List<String8> list;
-            list_nodes(&list);
+            listNodes(&list);
 
             reply->writeInt32(list.size());
             for (List<String8>::iterator it = list.begin();
@@ -390,8 +384,14 @@
         {
             CHECK_INTERFACE(IOMX, data, reply);
 
+            const char *name = data.readCString();
+
+            sp<IOMXObserver> observer =
+                interface_cast<IOMXObserver>(data.readStrongBinder());
+
             node_id node;
-            status_t err = allocate_node(data.readCString(), &node);
+
+            status_t err = allocateNode(name, observer, &node);
             reply->writeInt32(err);
             if (err == OK) {
                 reply->writeIntPtr((intptr_t)node);
@@ -406,7 +406,7 @@
 
             node_id node = (void*)data.readIntPtr();
 
-            reply->writeInt32(free_node(node));
+            reply->writeInt32(freeNode(node));
                 
             return NO_ERROR;
         }
@@ -421,7 +421,7 @@
                 static_cast<OMX_COMMANDTYPE>(data.readInt32());
 
             OMX_S32 param = data.readInt32();
-            reply->writeInt32(send_command(node, cmd, param));
+            reply->writeInt32(sendCommand(node, cmd, param));
 
             return NO_ERROR;
         }
@@ -439,7 +439,7 @@
             void *params = malloc(size);
             data.read(params, size);
 
-            status_t err = get_parameter(node, index, params, size);
+            status_t err = getParameter(node, index, params, size);
 
             reply->writeInt32(err);
 
@@ -463,7 +463,7 @@
             size_t size = data.readInt32();
             void *params = const_cast<void *>(data.readInplace(size));
 
-            reply->writeInt32(set_parameter(node, index, params, size));
+            reply->writeInt32(setParameter(node, index, params, size));
 
             return NO_ERROR;
         }
@@ -481,7 +481,7 @@
             void *params = malloc(size);
             data.read(params, size);
 
-            status_t err = get_config(node, index, params, size);
+            status_t err = getConfig(node, index, params, size);
 
             reply->writeInt32(err);
 
@@ -505,7 +505,7 @@
             size_t size = data.readInt32();
             void *params = const_cast<void *>(data.readInplace(size));
 
-            reply->writeInt32(set_config(node, index, params, size));
+            reply->writeInt32(setConfig(node, index, params, size));
 
             return NO_ERROR;
         }
@@ -520,7 +520,7 @@
                 interface_cast<IMemory>(data.readStrongBinder());
 
             buffer_id buffer;
-            status_t err = use_buffer(node, port_index, params, &buffer);
+            status_t err = useBuffer(node, port_index, params, &buffer);
             reply->writeInt32(err);
 
             if (err == OK) {
@@ -539,7 +539,7 @@
             size_t size = data.readInt32();
 
             buffer_id buffer;
-            status_t err = allocate_buffer(node, port_index, size, &buffer);
+            status_t err = allocateBuffer(node, port_index, size, &buffer);
             reply->writeInt32(err);
 
             if (err == OK) {
@@ -559,7 +559,7 @@
                 interface_cast<IMemory>(data.readStrongBinder());
 
             buffer_id buffer;
-            status_t err = allocate_buffer_with_backup(
+            status_t err = allocateBufferWithBackup(
                     node, port_index, params, &buffer);
 
             reply->writeInt32(err);
@@ -578,19 +578,7 @@
             node_id node = (void*)data.readIntPtr();
             OMX_U32 port_index = data.readInt32();
             buffer_id buffer = (void*)data.readIntPtr();
-            reply->writeInt32(free_buffer(node, port_index, buffer));
-
-            return NO_ERROR;
-        }
-
-        case OBSERVE_NODE:
-        {
-            CHECK_INTERFACE(IOMX, data, reply);
-
-            node_id node = (void*)data.readIntPtr();
-            sp<IOMXObserver> observer =
-                interface_cast<IOMXObserver>(data.readStrongBinder());
-            reply->writeInt32(observe_node(node, observer));
+            reply->writeInt32(freeBuffer(node, port_index, buffer));
 
             return NO_ERROR;
         }
@@ -601,7 +589,7 @@
 
             node_id node = (void*)data.readIntPtr();
             buffer_id buffer = (void*)data.readIntPtr();
-            fill_buffer(node, buffer);
+            reply->writeInt32(fillBuffer(node, buffer));
 
             return NO_ERROR;
         }
@@ -617,9 +605,10 @@
             OMX_U32 flags = data.readInt32();
             OMX_TICKS timestamp = data.readInt64();
 
-            empty_buffer(
-                    node, buffer, range_offset, range_length,
-                    flags, timestamp);
+            reply->writeInt32(
+                    emptyBuffer(
+                        node, buffer, range_offset, range_length,
+                        flags, timestamp));
 
             return NO_ERROR;
         }
@@ -632,7 +621,7 @@
             const char *parameter_name = data.readCString();
             
             OMX_INDEXTYPE index;
-            status_t err = get_extension_index(node, parameter_name, &index);
+            status_t err = getExtensionIndex(node, parameter_name, &index);
 
             reply->writeInt32(err);
 
@@ -683,7 +672,7 @@
         : BpInterface<IOMXObserver>(impl) {
     }
 
-    virtual void on_message(const omx_message &msg) {
+    virtual void onMessage(const omx_message &msg) {
         Parcel data, reply;
         data.writeInterfaceToken(IOMXObserver::getInterfaceDescriptor());
         data.write(&msg, sizeof(msg));
@@ -705,7 +694,7 @@
             data.read(&msg, sizeof(msg));
 
             // XXX Could use readInplace maybe?
-            on_message(msg);
+            onMessage(msg);
 
             return NO_ERROR;
         }
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
index f21eb73..fb569da 100644
--- a/media/libmediaplayerservice/Android.mk
+++ b/media/libmediaplayerservice/Android.mk
@@ -50,7 +50,7 @@
 	$(JNI_H_INCLUDE)                                                \
 	$(call include-path-for, graphics corecg)                       \
 	$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include \
-	$(TOP)/frameworks/base/media/libstagefright/omx
+	$(TOP)/frameworks/base/media/libstagefright/include
 
 LOCAL_MODULE:= libmediaplayerservice
 
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 0b75a2b..0a6c365 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -284,8 +284,14 @@
     return c;
 }
 
-sp<IOMX> MediaPlayerService::createOMX() {
-    return new OMX;
+sp<IOMX> MediaPlayerService::getOMX() {
+    Mutex::Autolock autoLock(mLock);
+
+    if (mOMX.get() == NULL) {
+        mOMX = new OMX;
+    }
+
+    return mOMX;
 }
 
 status_t MediaPlayerService::AudioCache::dump(int fd, const Vector<String16>& args) const
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index 43c4915..b00f5b7 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -185,7 +185,7 @@
     virtual sp<IMemory>         decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat);
     virtual sp<IMemory>         decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat);
     virtual sp<IMemory>         snoop();
-    virtual sp<IOMX>            createOMX();
+    virtual sp<IOMX>            getOMX();
 
     virtual status_t            dump(int fd, const Vector<String16>& args);
 
@@ -284,6 +284,7 @@
                 SortedVector< wp<Client> >  mClients;
                 SortedVector< wp<MediaRecorderClient> > mMediaRecorderClients;
                 int32_t                     mNextConnId;
+                sp<IOMX>                    mOMX;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/media/libmediaplayerservice/MetadataRetrieverClient.cpp b/media/libmediaplayerservice/MetadataRetrieverClient.cpp
index 8eabe5d..2cdc351 100644
--- a/media/libmediaplayerservice/MetadataRetrieverClient.cpp
+++ b/media/libmediaplayerservice/MetadataRetrieverClient.cpp
@@ -138,6 +138,12 @@
         return UNKNOWN_ERROR;
     }
     player_type playerType = getPlayerType(url);
+#if !defined(NO_OPENCORE) && defined(BUILD_WITH_FULL_STAGEFRIGHT)
+    if (playerType == STAGEFRIGHT_PLAYER) {
+        // Stagefright doesn't support metadata in this branch yet.
+        playerType = PV_PLAYER;
+    }
+#endif
     LOGV("player type = %d", playerType);
     sp<MediaMetadataRetrieverBase> p = createRetriever(playerType);
     if (p == NULL) return NO_INIT;
@@ -176,6 +182,12 @@
     }
 
     player_type playerType = getPlayerType(fd, offset, length);
+#if !defined(NO_OPENCORE) && defined(BUILD_WITH_FULL_STAGEFRIGHT)
+    if (playerType == STAGEFRIGHT_PLAYER) {
+        // Stagefright doesn't support metadata in this branch yet.
+        playerType = PV_PLAYER;
+    }
+#endif
     LOGV("player type = %d", playerType);
     sp<MediaMetadataRetrieverBase> p = createRetriever(playerType);
     if (p == NULL) {
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index 3c343a3..9f71dae 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -33,7 +33,7 @@
         TimeSource.cpp            \
         TimedEventQueue.cpp       \
         AudioPlayer.cpp           \
-        string.cpp
+        stagefright_string.cpp
 
 endif
 
diff --git a/media/libstagefright/HTTPDataSource.cpp b/media/libstagefright/HTTPDataSource.cpp
index 698223b..4dedebd 100644
--- a/media/libstagefright/HTTPDataSource.cpp
+++ b/media/libstagefright/HTTPDataSource.cpp
@@ -19,7 +19,7 @@
 #include <media/stagefright/HTTPDataSource.h>
 #include <media/stagefright/HTTPStream.h>
 #include <media/stagefright/MediaDebug.h>
-#include <media/stagefright/string.h>
+#include <media/stagefright/stagefright_string.h>
 
 namespace android {
 
diff --git a/media/libstagefright/OMXClient.cpp b/media/libstagefright/OMXClient.cpp
index dba7a2a..9de873e 100644
--- a/media/libstagefright/OMXClient.cpp
+++ b/media/libstagefright/OMXClient.cpp
@@ -35,7 +35,7 @@
 
     CHECK(service.get() != NULL);
 
-    mOMX = service->createOMX();
+    mOMX = service->getOMX();
     CHECK(mOMX.get() != NULL);
 
     return OK;
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index e3f03c4..ebf1e0c 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -85,12 +85,15 @@
 #define CODEC_LOGV(x, ...) LOGV("[%s] "x, mComponentName, ##__VA_ARGS__)
 
 struct OMXCodecObserver : public BnOMXObserver {
-    OMXCodecObserver(const wp<OMXCodec> &target)
-        : mTarget(target) {
+    OMXCodecObserver() {
+    }
+
+    void setCodec(const sp<OMXCodec> &target) {
+        mTarget = target;
     }
 
     // from IOMXObserver
-    virtual void on_message(const omx_message &msg) {
+    virtual void onMessage(const omx_message &msg) {
         sp<OMXCodec> codec = mTarget.promote();
 
         if (codec.get() != NULL) {
@@ -177,6 +180,7 @@
     CHECK(success);
 
     const char *componentName = NULL;
+    sp<OMXCodecObserver> observer = new OMXCodecObserver;
     IOMX::node_id node = 0;
     for (int index = 0;; ++index) {
         if (createEncoder) {
@@ -200,7 +204,7 @@
 
         LOGV("Attempting to allocate OMX node '%s'", componentName);
 
-        status_t err = omx->allocate_node(componentName, &node);
+        status_t err = omx->allocateNode(componentName, observer, &node);
         if (err == OK) {
             LOGI("Successfully allocated OMX node '%s'", componentName);
             break;
@@ -248,6 +252,8 @@
             omx, node, quirks, createEncoder, mime, componentName,
             source);
 
+    observer->setCodec(codec);
+
     uint32_t type;
     const void *data;
     size_t size;
@@ -330,7 +336,9 @@
 
         if (!strcmp(componentName, "OMX.TI.Video.Decoder")
             && (profile != kAVCProfileBaseline || level > 39)) {
-            // This stream exceeds the decoder's capabilities.
+            // This stream exceeds the decoder's capabilities. The decoder
+            // does not handle this gracefully and would clobber the heap
+            // and wreak havoc instead...
 
             LOGE("Profile and/or level exceed the decoder's capabilities.");
             return NULL;
@@ -405,7 +413,7 @@
     InitOMXParams(&def);
     def.nPortIndex = portIndex;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -414,7 +422,7 @@
 
     }
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 }
@@ -432,7 +440,7 @@
     OMX_U32 index = 0;
     for (;;) {
         format.nIndex = index;
-        status_t err = mOMX->get_parameter(
+        status_t err = mOMX->getParameter(
                 mNode, OMX_IndexParamVideoPortFormat,
                 &format, sizeof(format));
 
@@ -477,8 +485,8 @@
         return UNKNOWN_ERROR;
     }
 
-    CODEC_LOGI("found a match.");
-    status_t err = mOMX->set_parameter(
+    CODEC_LOGV("found a match.");
+    status_t err = mOMX->setParameter(
             mNode, OMX_IndexParamVideoPortFormat,
             &format, sizeof(format));
 
@@ -521,7 +529,7 @@
 
     OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
 
     CHECK_EQ(err, OK);
@@ -533,7 +541,7 @@
     video_def->eCompressionFormat = compressionFormat;
     video_def->eColorFormat = OMX_COLOR_FormatUnused;
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -542,7 +550,7 @@
     InitOMXParams(&def);
     def.nPortIndex = kPortIndexInput;
 
-    err = mOMX->get_parameter(
+    err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -556,7 +564,7 @@
     video_def->eCompressionFormat = OMX_VIDEO_CodingUnused;
     video_def->eColorFormat = colorFormat;
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 }
@@ -587,7 +595,7 @@
         format.nPortIndex = kPortIndexOutput;
         format.nIndex = 0;
 
-        status_t err = mOMX->get_parameter(
+        status_t err = mOMX->getParameter(
                 mNode, OMX_IndexParamVideoPortFormat,
                 &format, sizeof(format));
         CHECK_EQ(err, OK);
@@ -600,7 +608,7 @@
                || format.eColorFormat == OMX_COLOR_FormatCbYCrY
                || format.eColorFormat == OMX_QCOM_COLOR_FormatYVU420SemiPlanar);
 
-        err = mOMX->set_parameter(
+        err = mOMX->setParameter(
                 mNode, OMX_IndexParamVideoPortFormat,
                 &format, sizeof(format));
         CHECK_EQ(err, OK);
@@ -613,7 +621,7 @@
 
     OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
 
     CHECK_EQ(err, OK);
@@ -633,7 +641,7 @@
 
     video_def->eColorFormat = OMX_COLOR_FormatUnused;
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -642,7 +650,7 @@
     InitOMXParams(&def);
     def.nPortIndex = kPortIndexOutput;
 
-    err = mOMX->get_parameter(
+    err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
     CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
@@ -655,7 +663,7 @@
     video_def->nFrameWidth = width;
     video_def->nFrameHeight = height;
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 }
@@ -683,9 +691,6 @@
     mPortStatus[kPortIndexInput] = ENABLED;
     mPortStatus[kPortIndexOutput] = ENABLED;
 
-    mObserver = new OMXCodecObserver(this);
-    mOMX->observe_node(mNode, mObserver);
-
     setComponentRole();
 }
 
@@ -743,7 +748,7 @@
 
         roleParams.cRole[OMX_MAX_STRINGNAME_SIZE - 1] = '\0';
 
-        status_t err = omx->set_parameter(
+        status_t err = omx->setParameter(
                 node, OMX_IndexParamStandardComponentRole,
                 &roleParams, sizeof(roleParams));
 
@@ -760,10 +765,7 @@
 OMXCodec::~OMXCodec() {
     CHECK(mState == LOADED || mState == ERROR);
 
-    status_t err = mOMX->observe_node(mNode, NULL);
-    CHECK_EQ(err, OK);
-
-    err = mOMX->free_node(mNode);
+    status_t err = mOMX->freeNode(mNode);
     CHECK_EQ(err, OK);
 
     mNode = NULL;
@@ -785,7 +787,7 @@
 
     status_t err;
     if (!(mQuirks & kRequiresLoadedToIdleAfterAllocation)) {
-        err = mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
+        err = mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle);
         CHECK_EQ(err, OK);
         setState(LOADED_TO_IDLE);
     }
@@ -794,7 +796,7 @@
     CHECK_EQ(err, OK);
 
     if (mQuirks & kRequiresLoadedToIdleAfterAllocation) {
-        err = mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
+        err = mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle);
         CHECK_EQ(err, OK);
 
         setState(LOADED_TO_IDLE);
@@ -831,7 +833,7 @@
     InitOMXParams(&def);
     def.nPortIndex = portIndex;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
 
     if (err != OK) {
@@ -848,14 +850,14 @@
         IOMX::buffer_id buffer;
         if (portIndex == kPortIndexInput
                 && (mQuirks & kRequiresAllocateBufferOnInputPorts)) {
-            err = mOMX->allocate_buffer_with_backup(
+            err = mOMX->allocateBufferWithBackup(
                     mNode, portIndex, mem, &buffer);
         } else if (portIndex == kPortIndexOutput
                 && (mQuirks & kRequiresAllocateBufferOnOutputPorts)) {
-            err = mOMX->allocate_buffer_with_backup(
+            err = mOMX->allocateBufferWithBackup(
                     mNode, portIndex, mem, &buffer);
         } else {
-            err = mOMX->use_buffer(mNode, portIndex, mem, &buffer);
+            err = mOMX->useBuffer(mNode, portIndex, mem, &buffer);
         }
 
         if (err != OK) {
@@ -922,7 +924,7 @@
                 CODEC_LOGV("Port is disabled, freeing buffer %p", buffer);
 
                 status_t err =
-                    mOMX->free_buffer(mNode, kPortIndexInput, buffer);
+                    mOMX->freeBuffer(mNode, kPortIndexInput, buffer);
                 CHECK_EQ(err, OK);
 
                 buffers->removeAt(i);
@@ -968,7 +970,7 @@
                 CODEC_LOGV("Port is disabled, freeing buffer %p", buffer);
 
                 status_t err =
-                    mOMX->free_buffer(mNode, kPortIndexOutput, buffer);
+                    mOMX->freeBuffer(mNode, kPortIndexOutput, buffer);
                 CHECK_EQ(err, OK);
 
                 buffers->removeAt(i);
@@ -1138,7 +1140,7 @@
                     mPortStatus[kPortIndexOutput] = SHUTTING_DOWN;
 
                     status_t err =
-                        mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
+                        mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle);
                     CHECK_EQ(err, OK);
                 }
             } else {
@@ -1178,7 +1180,7 @@
         {
             CODEC_LOGV("Now Idle.");
             if (mState == LOADED_TO_IDLE) {
-                status_t err = mOMX->send_command(
+                status_t err = mOMX->sendCommand(
                         mNode, OMX_CommandStateSet, OMX_StateExecuting);
 
                 CHECK_EQ(err, OK);
@@ -1195,7 +1197,7 @@
                     countBuffersWeOwn(mPortBuffers[kPortIndexOutput]),
                     mPortBuffers[kPortIndexOutput].size());
 
-                status_t err = mOMX->send_command(
+                status_t err = mOMX->sendCommand(
                         mNode, OMX_CommandStateSet, OMX_StateLoaded);
 
                 CHECK_EQ(err, OK);
@@ -1278,7 +1280,7 @@
         CODEC_LOGV("freeing buffer %p on port %ld", info->mBuffer, portIndex);
 
         status_t err =
-            mOMX->free_buffer(mNode, portIndex, info->mBuffer);
+            mOMX->freeBuffer(mNode, portIndex, info->mBuffer);
 
         if (err != OK) {
             stickyErr = err;
@@ -1338,7 +1340,7 @@
     }
 
     status_t err =
-        mOMX->send_command(mNode, OMX_CommandFlush, portIndex);
+        mOMX->sendCommand(mNode, OMX_CommandFlush, portIndex);
     CHECK_EQ(err, OK);
 
     return true;
@@ -1351,7 +1353,7 @@
     mPortStatus[portIndex] = DISABLING;
 
     status_t err =
-        mOMX->send_command(mNode, OMX_CommandPortDisable, portIndex);
+        mOMX->sendCommand(mNode, OMX_CommandPortDisable, portIndex);
     CHECK_EQ(err, OK);
 
     freeBuffersOnPort(portIndex, true);
@@ -1364,7 +1366,7 @@
     mPortStatus[portIndex] = ENABLING;
 
     status_t err =
-        mOMX->send_command(mNode, OMX_CommandPortEnable, portIndex);
+        mOMX->sendCommand(mNode, OMX_CommandPortEnable, portIndex);
     CHECK_EQ(err, OK);
 }
 
@@ -1416,10 +1418,11 @@
             memcpy(info->mMem->pointer(), specific->mData, specific->mSize);
         }
 
-        mOMX->empty_buffer(
+        status_t err = mOMX->emptyBuffer(
                 mNode, info->mBuffer, 0, size,
                 OMX_BUFFERFLAG_ENDOFFRAME | OMX_BUFFERFLAG_CODECCONFIG,
                 0);
+        CHECK_EQ(err, OK);
 
         info->mOwnedByComponent = true;
 
@@ -1472,16 +1475,21 @@
         }
     }
 
-    mOMX->empty_buffer(
-            mNode, info->mBuffer, 0, srcLength,
-            flags, timestamp);
-
-    info->mOwnedByComponent = true;
-
     if (srcBuffer != NULL) {
         srcBuffer->release();
         srcBuffer = NULL;
     }
+
+    err = mOMX->emptyBuffer(
+            mNode, info->mBuffer, 0, srcLength,
+            flags, timestamp);
+
+    if (err != OK) {
+        setState(ERROR);
+        return;
+    }
+
+    info->mOwnedByComponent = true;
 }
 
 void OMXCodec::fillOutputBuffer(BufferInfo *info) {
@@ -1494,7 +1502,8 @@
     }
 
     CODEC_LOGV("Calling fill_buffer on buffer %p", info->mBuffer);
-    mOMX->fill_buffer(mNode, info->mBuffer);
+    status_t err = mOMX->fillBuffer(mNode, info->mBuffer);
+    CHECK_EQ(err, OK);
 
     info->mOwnedByComponent = true;
 }
@@ -1538,7 +1547,7 @@
     InitOMXParams(&pcmParams);
     pcmParams.nPortIndex = portIndex;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamAudioPcm, &pcmParams, sizeof(pcmParams));
 
     CHECK_EQ(err, OK);
@@ -1559,7 +1568,7 @@
         pcmParams.eChannelMapping[1] = OMX_AUDIO_ChannelRF;
     }
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamAudioPcm, &pcmParams, sizeof(pcmParams));
 
     CHECK_EQ(err, OK);
@@ -1572,14 +1581,14 @@
         def.nPortIndex = kPortIndexInput;
 
         status_t err =
-            mOMX->get_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
+            mOMX->getParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
 
         CHECK_EQ(err, OK);
 
         def.eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF;
         def.eAMRBandMode = OMX_AUDIO_AMRBandModeNB0;
 
-        err = mOMX->set_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
+        err = mOMX->setParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
         CHECK_EQ(err, OK);
     }
 
@@ -1603,14 +1612,14 @@
         def.nPortIndex = kPortIndexInput;
 
         status_t err =
-            mOMX->get_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
+            mOMX->getParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
 
         CHECK_EQ(err, OK);
 
         def.eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF;
         def.eAMRBandMode = OMX_AUDIO_AMRBandModeWB0;
 
-        err = mOMX->set_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
+        err = mOMX->setParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
         CHECK_EQ(err, OK);
     }
 
@@ -1635,7 +1644,7 @@
         InitOMXParams(&profile);
         profile.nPortIndex = kPortIndexInput;
 
-        status_t err = mOMX->get_parameter(
+        status_t err = mOMX->getParameter(
                 mNode, OMX_IndexParamAudioAac, &profile, sizeof(profile));
         CHECK_EQ(err, OK);
 
@@ -1643,7 +1652,7 @@
         profile.nSampleRate = sampleRate;
         profile.eAACStreamFormat = OMX_AUDIO_AACStreamFormatMP4ADTS;
 
-        err = mOMX->set_parameter(
+        err = mOMX->setParameter(
                 mNode, OMX_IndexParamAudioAac, &profile, sizeof(profile));
         CHECK_EQ(err, OK);
     }
@@ -1667,7 +1676,7 @@
     InitOMXParams(&def);
     def.nPortIndex = kPortIndexOutput;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -1716,7 +1725,7 @@
 
     def.nBufferCountActual = def.nBufferCountMin;
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 }
@@ -1727,7 +1736,7 @@
     InitOMXParams(&def);
     def.nPortIndex = kPortIndexInput;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -1741,7 +1750,7 @@
     def.nBufferSize = compressedSize;
     def.nBufferCountActual = def.nBufferCountMin;
 
-    err = mOMX->set_parameter(
+    err = mOMX->setParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 }
@@ -1831,7 +1840,7 @@
                 mPortStatus[kPortIndexOutput] = SHUTTING_DOWN;
 
                 status_t err =
-                    mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
+                    mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle);
                 CHECK_EQ(err, OK);
             }
 
@@ -1868,9 +1877,24 @@
         return UNKNOWN_ERROR;
     }
 
+    bool seeking = false;
+    int64_t seekTimeUs;
+    if (options && options->getSeekTo(&seekTimeUs)) {
+        seeking = true;
+    }
+
     if (mInitialBufferSubmit) {
         mInitialBufferSubmit = false;
 
+        if (seeking) {
+            CHECK(seekTimeUs >= 0);
+            mSeekTimeUs = seekTimeUs;
+
+            // There's no reason to trigger the code below, there's
+            // nothing to flush yet.
+            seeking = false;
+        }
+
         drainInputBuffers();
 
         if (mState == EXECUTING) {
@@ -1880,8 +1904,7 @@
         }
     }
 
-    int64_t seekTimeUs;
-    if (options && options->getSeekTo(&seekTimeUs)) {
+    if (seeking) {
         CODEC_LOGV("seeking to %lld us (%.2f secs)", seekTimeUs, seekTimeUs / 1E6);
 
         mSignalledEOS = false;
@@ -2163,7 +2186,7 @@
     InitOMXParams(&def);
     def.nPortIndex = portIndex;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -2229,7 +2252,7 @@
                 InitOMXParams(&params);
                 params.nPortIndex = portIndex;
 
-                err = mOMX->get_parameter(
+                err = mOMX->getParameter(
                         mNode, OMX_IndexParamAudioPcm, &params, sizeof(params));
                 CHECK_EQ(err, OK);
 
@@ -2248,7 +2271,7 @@
                 InitOMXParams(&amr);
                 amr.nPortIndex = portIndex;
 
-                err = mOMX->get_parameter(
+                err = mOMX->getParameter(
                         mNode, OMX_IndexParamAudioAmr, &amr, sizeof(amr));
                 CHECK_EQ(err, OK);
 
@@ -2280,7 +2303,7 @@
     InitOMXParams(&def);
     def.nPortIndex = kPortIndexOutput;
 
-    status_t err = mOMX->get_parameter(
+    status_t err = mOMX->getParameter(
             mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
     CHECK_EQ(err, OK);
 
@@ -2306,7 +2329,7 @@
                 InitOMXParams(&params);
                 params.nPortIndex = kPortIndexOutput;
 
-                err = mOMX->get_parameter(
+                err = mOMX->getParameter(
                         mNode, OMX_IndexParamAudioPcm, &params, sizeof(params));
                 CHECK_EQ(err, OK);
 
@@ -2338,7 +2361,7 @@
                 InitOMXParams(&amr);
                 amr.nPortIndex = kPortIndexOutput;
 
-                err = mOMX->get_parameter(
+                err = mOMX->getParameter(
                         mNode, OMX_IndexParamAudioAmr, &amr, sizeof(amr));
                 CHECK_EQ(err, OK);
 
@@ -2435,8 +2458,9 @@
             return OK;
         }
 
+        sp<OMXCodecObserver> observer = new OMXCodecObserver;
         IOMX::node_id node;
-        status_t err = omx->allocate_node(componentName, &node);
+        status_t err = omx->allocateNode(componentName, observer, &node);
 
         if (err != OK) {
             continue;
@@ -2454,7 +2478,7 @@
         param.nPortIndex = queryDecoders ? 0 : 1;
 
         for (param.nProfileIndex = 0;; ++param.nProfileIndex) {
-            err = omx->get_parameter(
+            err = omx->getParameter(
                     node, OMX_IndexParamVideoProfileLevelQuerySupported,
                     &param, sizeof(param));
 
@@ -2469,7 +2493,7 @@
             caps->mProfileLevels.push(profileLevel);
         }
 
-        CHECK_EQ(omx->free_node(node), OK);
+        CHECK_EQ(omx->freeNode(node), OK);
     }
 }
 
diff --git a/media/libstagefright/ShoutcastSource.cpp b/media/libstagefright/ShoutcastSource.cpp
index 8e8f4fa..346b5aa 100644
--- a/media/libstagefright/ShoutcastSource.cpp
+++ b/media/libstagefright/ShoutcastSource.cpp
@@ -23,7 +23,7 @@
 #include <media/stagefright/MediaDefs.h>
 #include <media/stagefright/MetaData.h>
 #include <media/stagefright/ShoutcastSource.h>
-#include <media/stagefright/string.h>
+#include <media/stagefright/stagefright_string.h>
 
 namespace android {
 
diff --git a/media/libstagefright/omx/OMX.h b/media/libstagefright/include/OMX.h
similarity index 61%
rename from media/libstagefright/omx/OMX.h
rename to media/libstagefright/include/OMX.h
index 6325f79..d0bd61e 100644
--- a/media/libstagefright/omx/OMX.h
+++ b/media/libstagefright/include/OMX.h
@@ -19,66 +19,67 @@
 
 #include <media/IOMX.h>
 #include <utils/threads.h>
+#include <utils/KeyedVector.h>
 
 namespace android {
 
-class NodeMeta;
+class OMXNodeInstance;
 
-class OMX : public BnOMX {
+class OMX : public BnOMX,
+            public IBinder::DeathRecipient {
 public:
     OMX();
 
-    virtual status_t list_nodes(List<String8> *list);
+    virtual status_t listNodes(List<String8> *list);
 
-    virtual status_t allocate_node(const char *name, node_id *node);
-    virtual status_t free_node(node_id node);
+    virtual status_t allocateNode(
+            const char *name, const sp<IOMXObserver> &observer, node_id *node);
 
-    virtual status_t send_command(
+    virtual status_t freeNode(node_id node);
+
+    virtual status_t sendCommand(
             node_id node, OMX_COMMANDTYPE cmd, OMX_S32 param);
 
-    virtual status_t get_parameter(
+    virtual status_t getParameter(
             node_id node, OMX_INDEXTYPE index,
             void *params, size_t size);
 
-    virtual status_t set_parameter(
+    virtual status_t setParameter(
             node_id node, OMX_INDEXTYPE index,
             const void *params, size_t size);
 
-    virtual status_t get_config(
+    virtual status_t getConfig(
             node_id node, OMX_INDEXTYPE index,
             void *params, size_t size);
 
-    virtual status_t set_config(
+    virtual status_t setConfig(
             node_id node, OMX_INDEXTYPE index,
             const void *params, size_t size);
 
-    virtual status_t use_buffer(
+    virtual status_t useBuffer(
             node_id node, OMX_U32 port_index, const sp<IMemory> &params,
             buffer_id *buffer);
 
-    virtual status_t allocate_buffer(
+    virtual status_t allocateBuffer(
             node_id node, OMX_U32 port_index, size_t size,
             buffer_id *buffer);
 
-    virtual status_t allocate_buffer_with_backup(
+    virtual status_t allocateBufferWithBackup(
             node_id node, OMX_U32 port_index, const sp<IMemory> &params,
             buffer_id *buffer);
 
-    virtual status_t free_buffer(
+    virtual status_t freeBuffer(
             node_id node, OMX_U32 port_index, buffer_id buffer);
 
-    virtual status_t observe_node(
-            node_id node, const sp<IOMXObserver> &observer);
+    virtual status_t fillBuffer(node_id node, buffer_id buffer);
 
-    virtual void fill_buffer(node_id node, buffer_id buffer);
-
-    virtual void empty_buffer(
+    virtual status_t emptyBuffer(
             node_id node,
             buffer_id buffer,
             OMX_U32 range_offset, OMX_U32 range_length,
             OMX_U32 flags, OMX_TICKS timestamp);
 
-    virtual status_t get_extension_index(
+    virtual status_t getExtensionIndex(
             node_id node,
             const char *parameter_name,
             OMX_INDEXTYPE *index);
@@ -90,44 +91,38 @@
             size_t encodedWidth, size_t encodedHeight,
             size_t displayWidth, size_t displayHeight);
 
-private:
-    static OMX_CALLBACKTYPE kCallbacks;
+    virtual void binderDied(const wp<IBinder> &the_late_who);
 
+    OMX_ERRORTYPE OnEvent(
+            node_id node,
+            OMX_IN OMX_EVENTTYPE eEvent,
+            OMX_IN OMX_U32 nData1,
+            OMX_IN OMX_U32 nData2,
+            OMX_IN OMX_PTR pEventData);
+
+    OMX_ERRORTYPE OnEmptyBufferDone(
+            node_id node, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer);
+
+    OMX_ERRORTYPE OnFillBufferDone(
+            node_id node, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer);
+
+    void invalidateNodeID(node_id node);
+
+private:
     Mutex mLock;
 
     struct CallbackDispatcher;
     sp<CallbackDispatcher> mDispatcher;
 
-    static OMX_ERRORTYPE OnEvent(
-            OMX_IN OMX_HANDLETYPE hComponent,
-            OMX_IN OMX_PTR pAppData,
-            OMX_IN OMX_EVENTTYPE eEvent,
-            OMX_IN OMX_U32 nData1,
-            OMX_IN OMX_U32 nData2,
-            OMX_IN OMX_PTR pEventData);
+    int32_t mNodeCounter;
 
-    static OMX_ERRORTYPE OnEmptyBufferDone(
-            OMX_IN OMX_HANDLETYPE hComponent,
-            OMX_IN OMX_PTR pAppData,
-            OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
+    KeyedVector<wp<IBinder>, OMXNodeInstance *> mLiveNodes;
+    KeyedVector<node_id, OMXNodeInstance *> mNodeIDToInstance;
 
-    static OMX_ERRORTYPE OnFillBufferDone(
-            OMX_IN OMX_HANDLETYPE hComponent,
-            OMX_IN OMX_PTR pAppData,
-            OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
+    node_id makeNodeID(OMXNodeInstance *instance);
+    OMXNodeInstance *findInstance(node_id node);
 
-    OMX_ERRORTYPE OnEvent(
-            NodeMeta *meta,
-            OMX_IN OMX_EVENTTYPE eEvent,
-            OMX_IN OMX_U32 nData1,
-            OMX_IN OMX_U32 nData2,
-            OMX_IN OMX_PTR pEventData);
-        
-    OMX_ERRORTYPE OnEmptyBufferDone(
-            NodeMeta *meta, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer);
-
-    OMX_ERRORTYPE OnFillBufferDone(
-            NodeMeta *meta, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer);
+    void invalidateNodeID_l(node_id node);
 
     OMX(const OMX &);
     OMX &operator=(const OMX &);
diff --git a/media/libstagefright/include/OMXNodeInstance.h b/media/libstagefright/include/OMXNodeInstance.h
new file mode 100644
index 0000000..09a8816
--- /dev/null
+++ b/media/libstagefright/include/OMXNodeInstance.h
@@ -0,0 +1,125 @@
+/*
+ * 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.
+ */
+
+#ifndef OMX_NODE_INSTANCE_H_
+
+#define OMX_NODE_INSTANCE_H_
+
+#include "OMX.h"
+
+#include <utils/RefBase.h>
+#include <utils/threads.h>
+
+namespace android {
+
+class IOMXObserver;
+
+struct OMXNodeInstance {
+    OMXNodeInstance(
+            OMX *owner, const sp<IOMXObserver> &observer);
+
+    void setHandle(OMX::node_id node_id, OMX_HANDLETYPE handle);
+
+    OMX *owner();
+    sp<IOMXObserver> observer();
+    OMX::node_id nodeID();
+
+    status_t freeNode();
+
+    status_t sendCommand(OMX_COMMANDTYPE cmd, OMX_S32 param);
+    status_t getParameter(OMX_INDEXTYPE index, void *params, size_t size);
+
+    status_t setParameter(
+            OMX_INDEXTYPE index, const void *params, size_t size);
+
+    status_t getConfig(OMX_INDEXTYPE index, void *params, size_t size);
+    status_t setConfig(OMX_INDEXTYPE index, const void *params, size_t size);
+
+    status_t useBuffer(
+            OMX_U32 portIndex, const sp<IMemory> &params,
+            OMX::buffer_id *buffer);
+
+    status_t allocateBuffer(
+            OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer);
+
+    status_t allocateBufferWithBackup(
+            OMX_U32 portIndex, const sp<IMemory> &params,
+            OMX::buffer_id *buffer);
+
+    status_t freeBuffer(OMX_U32 portIndex, OMX::buffer_id buffer);
+
+    status_t fillBuffer(OMX::buffer_id buffer);
+
+    status_t emptyBuffer(
+            OMX::buffer_id buffer,
+            OMX_U32 rangeOffset, OMX_U32 rangeLength,
+            OMX_U32 flags, OMX_TICKS timestamp);
+
+    status_t getExtensionIndex(
+            const char *parameterName, OMX_INDEXTYPE *index);
+
+    void onMessage(const omx_message &msg);
+    void onObserverDied();
+    void onGetHandleFailed();
+
+    static OMX_CALLBACKTYPE kCallbacks;
+
+private:
+    Mutex mLock;
+
+    OMX *mOwner;
+    OMX::node_id mNodeID;
+    OMX_HANDLETYPE mHandle;
+    sp<IOMXObserver> mObserver;
+
+    struct ActiveBuffer {
+        OMX_U32 mPortIndex;
+        OMX::buffer_id mID;
+    };
+    Vector<ActiveBuffer> mActiveBuffers;
+
+    ~OMXNodeInstance();
+
+    void addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id);
+    void removeActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id);
+    void freeActiveBuffers();
+
+    static OMX_ERRORTYPE OnEvent(
+            OMX_IN OMX_HANDLETYPE hComponent,
+            OMX_IN OMX_PTR pAppData,
+            OMX_IN OMX_EVENTTYPE eEvent,
+            OMX_IN OMX_U32 nData1,
+            OMX_IN OMX_U32 nData2,
+            OMX_IN OMX_PTR pEventData);
+
+    static OMX_ERRORTYPE OnEmptyBufferDone(
+            OMX_IN OMX_HANDLETYPE hComponent,
+            OMX_IN OMX_PTR pAppData,
+            OMX_IN OMX_BUFFERHEADERTYPE *pBuffer);
+
+    static OMX_ERRORTYPE OnFillBufferDone(
+            OMX_IN OMX_HANDLETYPE hComponent,
+            OMX_IN OMX_PTR pAppData,
+            OMX_IN OMX_BUFFERHEADERTYPE *pBuffer);
+
+    OMXNodeInstance(const OMXNodeInstance &);
+    OMXNodeInstance &operator=(const OMXNodeInstance &);
+};
+
+}  // namespace android
+
+#endif  // OMX_NODE_INSTANCE_H_
+
diff --git a/media/libstagefright/omx/Android.mk b/media/libstagefright/omx/Android.mk
index 4cadccd..20fb4f3 100644
--- a/media/libstagefright/omx/Android.mk
+++ b/media/libstagefright/omx/Android.mk
@@ -11,6 +11,7 @@
 
 LOCAL_SRC_FILES:=                 \
 	OMX.cpp                   \
+        OMXNodeInstance.cpp       \
         QComHardwareRenderer.cpp  \
         SoftwareRenderer.cpp      \
         TIHardwareRenderer.cpp
diff --git a/media/libstagefright/omx/OMX.cpp b/media/libstagefright/omx/OMX.cpp
index 8b83dd6..9ac0d44 100644
--- a/media/libstagefright/omx/OMX.cpp
+++ b/media/libstagefright/omx/OMX.cpp
@@ -18,13 +18,13 @@
 #define LOG_TAG "OMX"
 #include <utils/Log.h>
 
-#include <sys/socket.h>
-
-#include "OMX.h"
+#include "../include/OMX.h"
 #include "OMXRenderer.h"
 
 #include "pv_omxcore.h"
 
+#include "../include/OMXNodeInstance.h"
+
 #include <binder/IMemory.h>
 #include <media/stagefright/MediaDebug.h>
 #include <media/stagefright/QComHardwareRenderer.h>
@@ -36,47 +36,10 @@
 
 namespace android {
 
-class NodeMeta {
-public:
-    NodeMeta(OMX *owner)
-        : mOwner(owner),
-          mHandle(NULL) {
-    }
-
-    OMX *owner() const {
-        return mOwner;
-    }
-
-    void setHandle(OMX_HANDLETYPE handle) {
-        CHECK_EQ(mHandle, NULL);
-        mHandle = handle;
-    }
-
-    OMX_HANDLETYPE handle() const {
-        return mHandle;
-    }
-
-    void setObserver(const sp<IOMXObserver> &observer) {
-        mObserver = observer;
-    }
-
-    sp<IOMXObserver> observer() {
-        return mObserver;
-    }
-
-private:
-    OMX *mOwner;
-    OMX_HANDLETYPE mHandle;
-    sp<IOMXObserver> mObserver;
-
-    NodeMeta(const NodeMeta &);
-    NodeMeta &operator=(const NodeMeta &);
-};
-
 ////////////////////////////////////////////////////////////////////////////////
 
 struct OMX::CallbackDispatcher : public RefBase {
-    CallbackDispatcher();
+    CallbackDispatcher(OMX *owner);
 
     void post(const omx_message &msg);
 
@@ -85,6 +48,8 @@
 
 private:
     Mutex mLock;
+
+    OMX *mOwner;
     bool mDone;
     Condition mQueueChanged;
     List<omx_message> mQueue;
@@ -100,8 +65,9 @@
     CallbackDispatcher &operator=(const CallbackDispatcher &);
 };
 
-OMX::CallbackDispatcher::CallbackDispatcher()
-    : mDone(false) {
+OMX::CallbackDispatcher::CallbackDispatcher(OMX *owner)
+    : mOwner(owner),
+      mDone(false) {
     pthread_attr_t attr;
     pthread_attr_init(&attr);
     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
@@ -130,12 +96,12 @@
 }
 
 void OMX::CallbackDispatcher::dispatch(const omx_message &msg) {
-    NodeMeta *meta = static_cast<NodeMeta *>(msg.node);
-
-    sp<IOMXObserver> observer = meta->observer();
-    if (observer.get() != NULL) {
-        observer->on_message(msg);
+    OMXNodeInstance *instance = mOwner->findInstance(msg.node);
+    if (instance == NULL) {
+        LOGV("Would have dispatched a message to a node that's already gone.");
+        return;
     }
+    instance->onMessage(msg);
 }
 
 // static
@@ -213,46 +179,30 @@
     BufferMeta &operator=(const BufferMeta &);
 };
 
-// static
-OMX_CALLBACKTYPE OMX::kCallbacks = {
-    &OnEvent, &OnEmptyBufferDone, &OnFillBufferDone
-};
-
-// static
-OMX_ERRORTYPE OMX::OnEvent(
-        OMX_IN OMX_HANDLETYPE hComponent,
-        OMX_IN OMX_PTR pAppData,
-        OMX_IN OMX_EVENTTYPE eEvent,
-        OMX_IN OMX_U32 nData1,
-        OMX_IN OMX_U32 nData2,
-        OMX_IN OMX_PTR pEventData) {
-    NodeMeta *meta = static_cast<NodeMeta *>(pAppData);
-    return meta->owner()->OnEvent(meta, eEvent, nData1, nData2, pEventData);
-}
-
-// static
-OMX_ERRORTYPE OMX::OnEmptyBufferDone(
-        OMX_IN OMX_HANDLETYPE hComponent,
-        OMX_IN OMX_PTR pAppData,
-        OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) {
-    NodeMeta *meta = static_cast<NodeMeta *>(pAppData);
-    return meta->owner()->OnEmptyBufferDone(meta, pBuffer);
-}
-
-// static
-OMX_ERRORTYPE OMX::OnFillBufferDone(
-        OMX_IN OMX_HANDLETYPE hComponent,
-        OMX_IN OMX_PTR pAppData,
-        OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) {
-    NodeMeta *meta = static_cast<NodeMeta *>(pAppData);
-    return meta->owner()->OnFillBufferDone(meta, pBuffer);
-}
-
 OMX::OMX()
-    : mDispatcher(new CallbackDispatcher) {
+    : mDispatcher(new CallbackDispatcher(this)),
+      mNodeCounter(0) {
 }
 
-status_t OMX::list_nodes(List<String8> *list) {
+void OMX::binderDied(const wp<IBinder> &the_late_who) {
+    OMXNodeInstance *instance;
+
+    {
+        Mutex::Autolock autoLock(mLock);
+
+        ssize_t index = mLiveNodes.indexOfKey(the_late_who);
+        CHECK(index >= 0);
+
+        instance = mLiveNodes.editValueAt(index);
+        mLiveNodes.removeItemsAt(index);
+
+        invalidateNodeID_l(instance->nodeID());
+    }
+
+    instance->onObserverDied();
+}
+
+status_t OMX::listNodes(List<String8> *list) {
     OMX_MasterInit();  // XXX Put this somewhere else.
 
     list->clear();
@@ -269,204 +219,132 @@
     return OK;
 }
 
-status_t OMX::allocate_node(const char *name, node_id *node) {
+status_t OMX::allocateNode(
+        const char *name, const sp<IOMXObserver> &observer, node_id *node) {
     Mutex::Autolock autoLock(mLock);
 
     *node = 0;
 
     OMX_MasterInit();  // XXX Put this somewhere else.
 
-    NodeMeta *meta = new NodeMeta(this);
+    OMXNodeInstance *instance = new OMXNodeInstance(this, observer);
 
     OMX_HANDLETYPE handle;
     OMX_ERRORTYPE err = OMX_MasterGetHandle(
-            &handle, const_cast<char *>(name), meta, &kCallbacks);
+            &handle, const_cast<char *>(name), instance,
+            &OMXNodeInstance::kCallbacks);
 
     if (err != OMX_ErrorNone) {
         LOGE("FAILED to allocate omx component '%s'", name);
 
-        delete meta;
-        meta = NULL;
+        instance->onGetHandleFailed();
 
         return UNKNOWN_ERROR;
     }
 
-    meta->setHandle(handle);
+    *node = makeNodeID(instance);
 
-    *node = meta;
+    instance->setHandle(*node, handle);
+
+    mLiveNodes.add(observer->asBinder(), instance);
+    observer->asBinder()->linkToDeath(this);
 
     return OK;
 }
 
-status_t OMX::free_node(node_id node) {
-    Mutex::Autolock autoLock(mLock);
+status_t OMX::freeNode(node_id node) {
+    OMXNodeInstance *instance = findInstance(node);
 
-    NodeMeta *meta = static_cast<NodeMeta *>(node);
+    ssize_t index = mLiveNodes.indexOfKey(instance->observer()->asBinder());
+    CHECK(index >= 0);
+    mLiveNodes.removeItemsAt(index);
+    instance->observer()->asBinder()->unlinkToDeath(this);
 
-    OMX_ERRORTYPE err = OMX_MasterFreeHandle(meta->handle());
-
-    delete meta;
-    meta = NULL;
-
-    return (err != OMX_ErrorNone) ? UNKNOWN_ERROR : OK;
+    return instance->freeNode();
 }
 
-status_t OMX::send_command(
+status_t OMX::sendCommand(
         node_id node, OMX_COMMANDTYPE cmd, OMX_S32 param) {
-    Mutex::Autolock autoLock(mLock);
-
-    NodeMeta *meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err = OMX_SendCommand(meta->handle(), cmd, param, NULL);
-
-    return (err != OMX_ErrorNone) ? UNKNOWN_ERROR : OK;
+    return findInstance(node)->sendCommand(cmd, param);
 }
 
-status_t OMX::get_parameter(
+status_t OMX::getParameter(
         node_id node, OMX_INDEXTYPE index,
         void *params, size_t size) {
-    Mutex::Autolock autoLock(mLock);
-
-    NodeMeta *meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err = OMX_GetParameter(meta->handle(), index, params);
-
-    return (err != OMX_ErrorNone) ? UNKNOWN_ERROR : OK;
+    return findInstance(node)->getParameter(
+            index, params, size);
 }
 
-status_t OMX::set_parameter(
+status_t OMX::setParameter(
         node_id node, OMX_INDEXTYPE index,
         const void *params, size_t size) {
-    Mutex::Autolock autoLock(mLock);
-
-    NodeMeta *meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err =
-        OMX_SetParameter(meta->handle(), index, const_cast<void *>(params));
-
-    return (err != OMX_ErrorNone) ? UNKNOWN_ERROR : OK;
+    return findInstance(node)->setParameter(
+            index, params, size);
 }
 
-status_t OMX::get_config(
+status_t OMX::getConfig(
         node_id node, OMX_INDEXTYPE index,
         void *params, size_t size) {
-    Mutex::Autolock autoLock(mLock);
-
-    NodeMeta *meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err = OMX_GetConfig(meta->handle(), index, params);
-
-    return (err != OMX_ErrorNone) ? UNKNOWN_ERROR : OK;
+    return findInstance(node)->getConfig(
+            index, params, size);
 }
 
-status_t OMX::set_config(
+status_t OMX::setConfig(
         node_id node, OMX_INDEXTYPE index,
         const void *params, size_t size) {
-    Mutex::Autolock autoLock(mLock);
-
-    NodeMeta *meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err =
-        OMX_SetConfig(meta->handle(), index, const_cast<void *>(params));
-
-    return (err != OMX_ErrorNone) ? UNKNOWN_ERROR : OK;
+    return findInstance(node)->setConfig(
+            index, params, size);
 }
 
-status_t OMX::use_buffer(
+status_t OMX::useBuffer(
         node_id node, OMX_U32 port_index, const sp<IMemory> &params,
         buffer_id *buffer) {
-    Mutex::Autolock autoLock(mLock);
-
-    BufferMeta *buffer_meta = new BufferMeta(this, params);
-
-    OMX_BUFFERHEADERTYPE *header;
-
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err =
-        OMX_UseBuffer(node_meta->handle(), &header, port_index, buffer_meta,
-                      params->size(), static_cast<OMX_U8 *>(params->pointer()));
-
-    if (err != OMX_ErrorNone) {
-        LOGE("OMX_UseBuffer failed with error %d (0x%08x)", err, err);
-
-        delete buffer_meta;
-        buffer_meta = NULL;
-
-        *buffer = 0;
-        return UNKNOWN_ERROR;
-    }
-
-    *buffer = header;
-
-    return OK;
+    return findInstance(node)->useBuffer(
+            port_index, params, buffer);
 }
 
-status_t OMX::allocate_buffer(
+status_t OMX::allocateBuffer(
         node_id node, OMX_U32 port_index, size_t size,
         buffer_id *buffer) {
-    Mutex::Autolock autoLock(mLock);
-
-    BufferMeta *buffer_meta = new BufferMeta(this, size);
-
-    OMX_BUFFERHEADERTYPE *header;
-
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err =
-        OMX_AllocateBuffer(node_meta->handle(), &header, port_index,
-                           buffer_meta, size);
-
-    if (err != OMX_ErrorNone) {
-        delete buffer_meta;
-        buffer_meta = NULL;
-
-        *buffer = 0;
-        return UNKNOWN_ERROR;
-    }
-
-    *buffer = header;
-
-    return OK;
+    return findInstance(node)->allocateBuffer(
+            port_index, size, buffer);
 }
 
-status_t OMX::allocate_buffer_with_backup(
+status_t OMX::allocateBufferWithBackup(
         node_id node, OMX_U32 port_index, const sp<IMemory> &params,
         buffer_id *buffer) {
-    Mutex::Autolock autoLock(mLock);
-
-    BufferMeta *buffer_meta = new BufferMeta(this, params, true);
-
-    OMX_BUFFERHEADERTYPE *header;
-
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err =
-        OMX_AllocateBuffer(
-                node_meta->handle(), &header, port_index, buffer_meta,
-                params->size());
-
-    if (err != OMX_ErrorNone) {
-        delete buffer_meta;
-        buffer_meta = NULL;
-
-        *buffer = 0;
-        return UNKNOWN_ERROR;
-    }
-
-    *buffer = header;
-
-    return OK;
+    return findInstance(node)->allocateBufferWithBackup(
+            port_index, params, buffer);
 }
 
-status_t OMX::free_buffer(node_id node, OMX_U32 port_index, buffer_id buffer) {
-    OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
-    BufferMeta *buffer_meta = static_cast<BufferMeta *>(header->pAppPrivate);
+status_t OMX::freeBuffer(node_id node, OMX_U32 port_index, buffer_id buffer) {
+    return findInstance(node)->freeBuffer(
+            port_index, buffer);
+}
 
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
-    OMX_ERRORTYPE err =
-        OMX_FreeBuffer(node_meta->handle(), port_index, header);
+status_t OMX::fillBuffer(node_id node, buffer_id buffer) {
+    return findInstance(node)->fillBuffer(buffer);
+}
 
-    delete buffer_meta;
-    buffer_meta = NULL;
+status_t OMX::emptyBuffer(
+        node_id node,
+        buffer_id buffer,
+        OMX_U32 range_offset, OMX_U32 range_length,
+        OMX_U32 flags, OMX_TICKS timestamp) {
+    return findInstance(node)->emptyBuffer(
+            buffer, range_offset, range_length, flags, timestamp);
+}
 
-    return (err != OMX_ErrorNone) ? UNKNOWN_ERROR : OK;
+status_t OMX::getExtensionIndex(
+        node_id node,
+        const char *parameter_name,
+        OMX_INDEXTYPE *index) {
+    return findInstance(node)->getExtensionIndex(
+            parameter_name, index);
 }
 
 OMX_ERRORTYPE OMX::OnEvent(
-        NodeMeta *meta,
+        node_id node,
         OMX_IN OMX_EVENTTYPE eEvent,
         OMX_IN OMX_U32 nData1,
         OMX_IN OMX_U32 nData2,
@@ -475,7 +353,7 @@
 
     omx_message msg;
     msg.type = omx_message::EVENT;
-    msg.node = meta;
+    msg.node = node;
     msg.u.event_data.event = eEvent;
     msg.u.event_data.data1 = nData1;
     msg.u.event_data.data2 = nData2;
@@ -484,14 +362,14 @@
 
     return OMX_ErrorNone;
 }
-    
+
 OMX_ERRORTYPE OMX::OnEmptyBufferDone(
-        NodeMeta *meta, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer) {
+        node_id node, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer) {
     LOGV("OnEmptyBufferDone buffer=%p", pBuffer);
 
     omx_message msg;
     msg.type = omx_message::EMPTY_BUFFER_DONE;
-    msg.node = meta;
+    msg.node = node;
     msg.u.buffer_data.buffer = pBuffer;
 
     mDispatcher->post(msg);
@@ -500,14 +378,12 @@
 }
 
 OMX_ERRORTYPE OMX::OnFillBufferDone(
-        NodeMeta *meta, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer) {
+        node_id node, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer) {
     LOGV("OnFillBufferDone buffer=%p", pBuffer);
-    BufferMeta *buffer_meta = static_cast<BufferMeta *>(pBuffer->pAppPrivate);
-    buffer_meta->CopyFromOMX(pBuffer);
 
     omx_message msg;
     msg.type = omx_message::FILL_BUFFER_DONE;
-    msg.node = meta;
+    msg.node = node;
     msg.u.extended_buffer_data.buffer = pBuffer;
     msg.u.extended_buffer_data.range_offset = pBuffer->nOffset;
     msg.u.extended_buffer_data.range_length = pBuffer->nFilledLen;
@@ -520,62 +396,31 @@
     return OMX_ErrorNone;
 }
 
-status_t OMX::observe_node(
-        node_id node, const sp<IOMXObserver> &observer) {
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
+OMX::node_id OMX::makeNodeID(OMXNodeInstance *instance) {
+    // mLock is already held.
 
-    node_meta->setObserver(observer);
+    node_id node = (node_id)++mNodeCounter;
+    mNodeIDToInstance.add(node, instance);
 
-    return OK;
+    return node;
 }
 
-void OMX::fill_buffer(node_id node, buffer_id buffer) {
-    OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
-    header->nFilledLen = 0;
-    header->nOffset = 0;
-    header->nFlags = 0;
+OMXNodeInstance *OMX::findInstance(node_id node) {
+    Mutex::Autolock autoLock(mLock);
 
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
+    ssize_t index = mNodeIDToInstance.indexOfKey(node);
 
-    OMX_ERRORTYPE err =
-        OMX_FillThisBuffer(node_meta->handle(), header);
-    CHECK_EQ(err, OMX_ErrorNone);
+    return index < 0 ? NULL : mNodeIDToInstance.valueAt(index);
 }
 
-void OMX::empty_buffer(
-        node_id node,
-        buffer_id buffer,
-        OMX_U32 range_offset, OMX_U32 range_length,
-        OMX_U32 flags, OMX_TICKS timestamp) {
-    OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
-    header->nFilledLen = range_length;
-    header->nOffset = range_offset;
-    header->nFlags = flags;
-    header->nTimeStamp = timestamp;
-
-    BufferMeta *buffer_meta =
-        static_cast<BufferMeta *>(header->pAppPrivate);
-    buffer_meta->CopyToOMX(header);
-
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
-
-    OMX_ERRORTYPE err =
-        OMX_EmptyThisBuffer(node_meta->handle(), header);
-    CHECK_EQ(err, OMX_ErrorNone);
+void OMX::invalidateNodeID(node_id node) {
+    Mutex::Autolock autoLock(mLock);
+    invalidateNodeID_l(node);
 }
 
-status_t OMX::get_extension_index(
-        node_id node,
-        const char *parameter_name,
-        OMX_INDEXTYPE *index) {
-    NodeMeta *node_meta = static_cast<NodeMeta *>(node);
-
-    OMX_ERRORTYPE err =
-        OMX_GetExtensionIndex(
-                node_meta->handle(),
-                const_cast<char *>(parameter_name), index);
-
-    return err == OMX_ErrorNone ? OK : UNKNOWN_ERROR;
+void OMX::invalidateNodeID_l(node_id node) {
+    // mLock is held.
+    mNodeIDToInstance.removeItem(node);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp
new file mode 100644
index 0000000..8218918
--- /dev/null
+++ b/media/libstagefright/omx/OMXNodeInstance.cpp
@@ -0,0 +1,461 @@
+/*
+ * 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "OMXNodeInstance"
+#include <utils/Log.h>
+
+#include "../include/OMXNodeInstance.h"
+
+#include "pv_omxcore.h"
+
+#include <binder/IMemory.h>
+#include <media/stagefright/MediaDebug.h>
+
+namespace android {
+
+struct BufferMeta {
+    BufferMeta(const sp<IMemory> &mem, bool is_backup = false)
+        : mMem(mem),
+          mIsBackup(is_backup) {
+    }
+
+    BufferMeta(size_t size)
+        : mSize(size),
+          mIsBackup(false) {
+    }
+
+    void CopyFromOMX(const OMX_BUFFERHEADERTYPE *header) {
+        if (!mIsBackup) {
+            return;
+        }
+
+        memcpy((OMX_U8 *)mMem->pointer() + header->nOffset,
+               header->pBuffer + header->nOffset,
+               header->nFilledLen);
+    }
+
+    void CopyToOMX(const OMX_BUFFERHEADERTYPE *header) {
+        if (!mIsBackup) {
+            return;
+        }
+
+        memcpy(header->pBuffer + header->nOffset,
+               (const OMX_U8 *)mMem->pointer() + header->nOffset,
+               header->nFilledLen);
+    }
+
+private:
+    sp<IMemory> mMem;
+    size_t mSize;
+    bool mIsBackup;
+
+    BufferMeta(const BufferMeta &);
+    BufferMeta &operator=(const BufferMeta &);
+};
+
+// static
+OMX_CALLBACKTYPE OMXNodeInstance::kCallbacks = {
+    &OnEvent, &OnEmptyBufferDone, &OnFillBufferDone
+};
+
+OMXNodeInstance::OMXNodeInstance(
+        OMX *owner, const sp<IOMXObserver> &observer)
+    : mOwner(owner),
+      mNodeID(NULL),
+      mHandle(NULL),
+      mObserver(observer) {
+}
+
+OMXNodeInstance::~OMXNodeInstance() {
+    CHECK_EQ(mHandle, NULL);
+}
+
+void OMXNodeInstance::setHandle(OMX::node_id node_id, OMX_HANDLETYPE handle) {
+    CHECK_EQ(mHandle, NULL);
+    mNodeID = node_id;
+    mHandle = handle;
+}
+
+OMX *OMXNodeInstance::owner() {
+    return mOwner;
+}
+
+sp<IOMXObserver> OMXNodeInstance::observer() {
+    return mObserver;
+}
+
+OMX::node_id OMXNodeInstance::nodeID() {
+    return mNodeID;
+}
+
+static status_t StatusFromOMXError(OMX_ERRORTYPE err) {
+    return (err == OMX_ErrorNone) ? OK : UNKNOWN_ERROR;
+}
+
+status_t OMXNodeInstance::freeNode() {
+    // Transition the node from its current state all the way down
+    // to "Loaded".
+    // This ensures that all active buffers are properly freed even
+    // for components that don't do this themselves on a call to
+    // "FreeHandle".
+
+    OMX_STATETYPE state;
+    CHECK_EQ(OMX_GetState(mHandle, &state), OMX_ErrorNone);
+    switch (state) {
+        case OMX_StateExecuting:
+        {
+            LOGV("forcing Executing->Idle");
+            sendCommand(OMX_CommandStateSet, OMX_StateIdle);
+            OMX_ERRORTYPE err;
+            while ((err = OMX_GetState(mHandle, &state)) == OMX_ErrorNone
+                   && state != OMX_StateIdle) {
+                usleep(100000);
+            }
+            CHECK_EQ(err, OMX_ErrorNone);
+
+            // fall through
+        }
+
+        case OMX_StateIdle:
+        {
+            LOGV("forcing Idle->Loaded");
+            sendCommand(OMX_CommandStateSet, OMX_StateLoaded);
+
+            freeActiveBuffers();
+
+            OMX_ERRORTYPE err;
+            while ((err = OMX_GetState(mHandle, &state)) == OMX_ErrorNone
+                   && state != OMX_StateLoaded) {
+                LOGV("waiting for Loaded state...");
+                usleep(100000);
+            }
+            CHECK_EQ(err, OMX_ErrorNone);
+
+            // fall through
+        }
+
+        case OMX_StateLoaded:
+        case OMX_StateInvalid:
+            break;
+
+        default:
+            CHECK(!"should not be here, unknown state.");
+            break;
+    }
+
+    OMX_ERRORTYPE err = OMX_MasterFreeHandle(mHandle);
+    mHandle = NULL;
+
+    if (err != OMX_ErrorNone) {
+        LOGE("FreeHandle FAILED with error 0x%08x.", err);
+    }
+
+    mOwner->invalidateNodeID(mNodeID);
+    mNodeID = NULL;
+
+    LOGV("OMXNodeInstance going away.");
+    delete this;
+
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::sendCommand(
+        OMX_COMMANDTYPE cmd, OMX_S32 param) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_ERRORTYPE err = OMX_SendCommand(mHandle, cmd, param, NULL);
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::getParameter(
+        OMX_INDEXTYPE index, void *params, size_t size) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_ERRORTYPE err = OMX_GetParameter(mHandle, index, params);
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::setParameter(
+        OMX_INDEXTYPE index, const void *params, size_t size) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_ERRORTYPE err = OMX_SetParameter(
+            mHandle, index, const_cast<void *>(params));
+
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::getConfig(
+        OMX_INDEXTYPE index, void *params, size_t size) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_ERRORTYPE err = OMX_GetConfig(mHandle, index, params);
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::setConfig(
+        OMX_INDEXTYPE index, const void *params, size_t size) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_ERRORTYPE err = OMX_SetConfig(
+            mHandle, index, const_cast<void *>(params));
+
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::useBuffer(
+        OMX_U32 portIndex, const sp<IMemory> &params,
+        OMX::buffer_id *buffer) {
+    Mutex::Autolock autoLock(mLock);
+
+    BufferMeta *buffer_meta = new BufferMeta(params);
+
+    OMX_BUFFERHEADERTYPE *header;
+
+    OMX_ERRORTYPE err = OMX_UseBuffer(
+            mHandle, &header, portIndex, buffer_meta,
+            params->size(), static_cast<OMX_U8 *>(params->pointer()));
+
+    if (err != OMX_ErrorNone) {
+        LOGE("OMX_UseBuffer failed with error %d (0x%08x)", err, err);
+
+        delete buffer_meta;
+        buffer_meta = NULL;
+
+        *buffer = 0;
+
+        return UNKNOWN_ERROR;
+    }
+
+    *buffer = header;
+
+    addActiveBuffer(portIndex, *buffer);
+
+    return OK;
+}
+
+status_t OMXNodeInstance::allocateBuffer(
+        OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer) {
+    Mutex::Autolock autoLock(mLock);
+
+    BufferMeta *buffer_meta = new BufferMeta(size);
+
+    OMX_BUFFERHEADERTYPE *header;
+
+    OMX_ERRORTYPE err = OMX_AllocateBuffer(
+            mHandle, &header, portIndex, buffer_meta, size);
+
+    if (err != OMX_ErrorNone) {
+        LOGE("OMX_AllocateBuffer failed with error %d (0x%08x)", err, err);
+
+        delete buffer_meta;
+        buffer_meta = NULL;
+
+        *buffer = 0;
+
+        return UNKNOWN_ERROR;
+    }
+
+    *buffer = header;
+
+    addActiveBuffer(portIndex, *buffer);
+
+    return OK;
+}
+
+status_t OMXNodeInstance::allocateBufferWithBackup(
+        OMX_U32 portIndex, const sp<IMemory> &params,
+        OMX::buffer_id *buffer) {
+    Mutex::Autolock autoLock(mLock);
+
+    BufferMeta *buffer_meta = new BufferMeta(params, true);
+
+    OMX_BUFFERHEADERTYPE *header;
+
+    OMX_ERRORTYPE err = OMX_AllocateBuffer(
+            mHandle, &header, portIndex, buffer_meta, params->size());
+
+    if (err != OMX_ErrorNone) {
+        LOGE("OMX_AllocateBuffer failed with error %d (0x%08x)", err, err);
+
+        delete buffer_meta;
+        buffer_meta = NULL;
+
+        *buffer = 0;
+
+        return UNKNOWN_ERROR;
+    }
+
+    *buffer = header;
+
+    addActiveBuffer(portIndex, *buffer);
+
+    return OK;
+}
+
+status_t OMXNodeInstance::freeBuffer(
+        OMX_U32 portIndex, OMX::buffer_id buffer) {
+    Mutex::Autolock autoLock(mLock);
+
+    removeActiveBuffer(portIndex, buffer);
+
+    OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
+    BufferMeta *buffer_meta = static_cast<BufferMeta *>(header->pAppPrivate);
+
+    OMX_ERRORTYPE err = OMX_FreeBuffer(mHandle, portIndex, header);
+
+    delete buffer_meta;
+    buffer_meta = NULL;
+
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::fillBuffer(OMX::buffer_id buffer) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
+    header->nFilledLen = 0;
+    header->nOffset = 0;
+    header->nFlags = 0;
+
+    OMX_ERRORTYPE err = OMX_FillThisBuffer(mHandle, header);
+
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::emptyBuffer(
+        OMX::buffer_id buffer,
+        OMX_U32 rangeOffset, OMX_U32 rangeLength,
+        OMX_U32 flags, OMX_TICKS timestamp) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
+    header->nFilledLen = rangeLength;
+    header->nOffset = rangeOffset;
+    header->nFlags = flags;
+    header->nTimeStamp = timestamp;
+
+    BufferMeta *buffer_meta =
+        static_cast<BufferMeta *>(header->pAppPrivate);
+    buffer_meta->CopyToOMX(header);
+
+    OMX_ERRORTYPE err = OMX_EmptyThisBuffer(mHandle, header);
+
+    return StatusFromOMXError(err);
+}
+
+status_t OMXNodeInstance::getExtensionIndex(
+        const char *parameterName, OMX_INDEXTYPE *index) {
+    Mutex::Autolock autoLock(mLock);
+
+    OMX_ERRORTYPE err = OMX_GetExtensionIndex(
+            mHandle, const_cast<char *>(parameterName), index);
+
+    return StatusFromOMXError(err);
+}
+
+void OMXNodeInstance::onMessage(const omx_message &msg) {
+    if (msg.type == omx_message::FILL_BUFFER_DONE) {
+        OMX_BUFFERHEADERTYPE *buffer =
+            static_cast<OMX_BUFFERHEADERTYPE *>(
+                    msg.u.extended_buffer_data.buffer);
+
+        BufferMeta *buffer_meta =
+            static_cast<BufferMeta *>(buffer->pAppPrivate);
+
+        buffer_meta->CopyFromOMX(buffer);
+    }
+
+    mObserver->onMessage(msg);
+}
+
+void OMXNodeInstance::onObserverDied() {
+    LOGE("!!! Observer died. Quickly, do something, ... anything...");
+
+    // Try to force shutdown of the node and hope for the best.
+    freeNode();
+}
+
+void OMXNodeInstance::onGetHandleFailed() {
+    delete this;
+}
+
+// static
+OMX_ERRORTYPE OMXNodeInstance::OnEvent(
+        OMX_IN OMX_HANDLETYPE hComponent,
+        OMX_IN OMX_PTR pAppData,
+        OMX_IN OMX_EVENTTYPE eEvent,
+        OMX_IN OMX_U32 nData1,
+        OMX_IN OMX_U32 nData2,
+        OMX_IN OMX_PTR pEventData) {
+    OMXNodeInstance *instance = static_cast<OMXNodeInstance *>(pAppData);
+    return instance->owner()->OnEvent(
+            instance->nodeID(), eEvent, nData1, nData2, pEventData);
+}
+
+// static
+OMX_ERRORTYPE OMXNodeInstance::OnEmptyBufferDone(
+        OMX_IN OMX_HANDLETYPE hComponent,
+        OMX_IN OMX_PTR pAppData,
+        OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) {
+    OMXNodeInstance *instance = static_cast<OMXNodeInstance *>(pAppData);
+    return instance->owner()->OnEmptyBufferDone(instance->nodeID(), pBuffer);
+}
+
+// static
+OMX_ERRORTYPE OMXNodeInstance::OnFillBufferDone(
+        OMX_IN OMX_HANDLETYPE hComponent,
+        OMX_IN OMX_PTR pAppData,
+        OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) {
+    OMXNodeInstance *instance = static_cast<OMXNodeInstance *>(pAppData);
+    return instance->owner()->OnFillBufferDone(instance->nodeID(), pBuffer);
+}
+
+void OMXNodeInstance::addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id) {
+    ActiveBuffer active;
+    active.mPortIndex = portIndex;
+    active.mID = id;
+    mActiveBuffers.push(active);
+}
+
+void OMXNodeInstance::removeActiveBuffer(
+        OMX_U32 portIndex, OMX::buffer_id id) {
+    bool found = false;
+    for (size_t i = 0; i < mActiveBuffers.size(); ++i) {
+        if (mActiveBuffers[i].mPortIndex == portIndex
+            && mActiveBuffers[i].mID == id) {
+            found = true;
+            mActiveBuffers.removeItemsAt(i);
+            break;
+        }
+    }
+
+    if (!found) {
+        LOGW("Attempt to remove an active buffer we know nothing about...");
+    }
+}
+
+void OMXNodeInstance::freeActiveBuffers() {
+    // Make sure to count down here, as freeBuffer will in turn remove
+    // the active buffer from the vector...
+    for (size_t i = mActiveBuffers.size(); i--;) {
+        freeBuffer(mActiveBuffers[i].mPortIndex, mActiveBuffers[i].mID);
+    }
+}
+
+}  // namespace android
+
diff --git a/media/libstagefright/string.cpp b/media/libstagefright/stagefright_string.cpp
similarity index 97%
rename from media/libstagefright/string.cpp
rename to media/libstagefright/stagefright_string.cpp
index 5b16784..2aedb80 100644
--- a/media/libstagefright/string.cpp
+++ b/media/libstagefright/stagefright_string.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include <media/stagefright/string.h>
+#include <media/stagefright/stagefright_string.h>
 
 namespace android {
 
diff --git a/tests/DumpRenderTree/assets/results/layout_tests_crashed.txt b/tests/DumpRenderTree/assets/results/layout_tests_crashed.txt
index e69de29..89439d3 100644
--- a/tests/DumpRenderTree/assets/results/layout_tests_crashed.txt
+++ b/tests/DumpRenderTree/assets/results/layout_tests_crashed.txt
@@ -0,0 +1,4 @@
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/basic-auth.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/failed-auth.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/cross-origin-authorization.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/cross-origin-no-authorization.html
diff --git a/tests/DumpRenderTree/assets/results/layout_tests_failed.txt b/tests/DumpRenderTree/assets/results/layout_tests_failed.txt
index af7658b..5b64b9a 100644
--- a/tests/DumpRenderTree/assets/results/layout_tests_failed.txt
+++ b/tests/DumpRenderTree/assets/results/layout_tests_failed.txt
@@ -27,19 +27,12 @@
 /sdcard/android/layout_tests/accessibility/aria-label.html
 /sdcard/android/layout_tests/accessibility/textarea-line-for-index.html
 /sdcard/android/layout_tests/accessibility/nochildren-elements.html
-/sdcard/android/layout_tests/animations/play-state.html
-/sdcard/android/layout_tests/animations/animation-start-event-destroy-renderer.html
-/sdcard/android/layout_tests/animations/import.html
 /sdcard/android/layout_tests/animations/keyframes-to-missing.html
 /sdcard/android/layout_tests/animations/animation-hit-test.html
-/sdcard/android/layout_tests/animations/keyframes-comma-separated.html
 /sdcard/android/layout_tests/animations/animation-hit-test-transform.html
-/sdcard/android/layout_tests/animations/keyframes-rule.html
 /sdcard/android/layout_tests/animations/animation-controller-drt-api.html
 /sdcard/android/layout_tests/animations/keyframes-from-missing.html
-/sdcard/android/layout_tests/animations/animation-end-event-destroy-renderer.html
 /sdcard/android/layout_tests/animations/change-keyframes-name.html
-/sdcard/android/layout_tests/animations/keyframes-out-of-order.html
 /sdcard/android/layout_tests/animations/change-keyframes.html
 /sdcard/android/layout_tests/editing/style/remove-underline-from-stylesheet.html
 /sdcard/android/layout_tests/editing/style/remove-underline-in-bold.html
@@ -168,6 +161,7 @@
 /sdcard/android/layout_tests/fast/encoding/utf-32-little-endian-nobom.xml
 /sdcard/android/layout_tests/fast/encoding/char-encoding-mac.html
 /sdcard/android/layout_tests/fast/encoding/charset-koi8-u.html
+/sdcard/android/layout_tests/fast/workers/worker-location.html
 /sdcard/android/layout_tests/fast/selectors/lang-inheritance.html
 /sdcard/android/layout_tests/fast/selectors/lang-vs-xml-lang.html
 /sdcard/android/layout_tests/fast/selectors/lang-inheritance2.html
@@ -228,6 +222,7 @@
 /sdcard/android/layout_tests/fast/events/arrow-keys-on-body.html
 /sdcard/android/layout_tests/fast/events/ondragenter.html
 /sdcard/android/layout_tests/fast/events/pointer-events.html
+/sdcard/android/layout_tests/fast/events/scroll-to-anchor-in-overflow-hidden.html
 /sdcard/android/layout_tests/fast/events/autoscroll-nonscrollable-iframe-in-scrollable-div.html
 /sdcard/android/layout_tests/fast/events/keypress-focus-change.html
 /sdcard/android/layout_tests/fast/events/key-events-in-input-text.html
@@ -285,7 +280,9 @@
 /sdcard/android/layout_tests/fast/dom/navigator-detached-no-crash.html
 /sdcard/android/layout_tests/fast/dom/object-embed-plugin-scripting.html
 /sdcard/android/layout_tests/fast/dom/node-filter-gc.html
+/sdcard/android/layout_tests/fast/dom/noscript-canvas-in-created-html-document.html
 /sdcard/android/layout_tests/fast/dom/getClientRects.html
+/sdcard/android/layout_tests/fast/dom/null-document-location-href-put-crash.html
 /sdcard/android/layout_tests/fast/dom/prototype-inheritance-2.html
 /sdcard/android/layout_tests/fast/dom/location-new-window-no-crash.html
 /sdcard/android/layout_tests/fast/dom/gc-9.html
@@ -437,15 +434,8 @@
 /sdcard/android/layout_tests/fast/css/resize-single-axis.html
 /sdcard/android/layout_tests/fast/css/percent-character-as-value.html
 /sdcard/android/layout_tests/fast/css/uri-token-parsing.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/zoom-body-scroll.html
-/sdcard/android/layout_tests/fast/css/font-family-builtins.html
 /sdcard/android/layout_tests/fast/css/invalid-percentage-property.html
-/sdcard/android/layout_tests/fast/css/remove-shorthand.html
-/sdcard/android/layout_tests/fast/css/overflow-property.html
 /sdcard/android/layout_tests/fast/parser/external-entities-in-xslt.xml
 /sdcard/android/layout_tests/fast/parser/xml-declaration-missing-ending-mark.html
 /sdcard/android/layout_tests/fast/parser/tabindex-parsing.html
@@ -458,6 +448,7 @@
 /sdcard/android/layout_tests/fast/loader/local-iFrame-source-from-local.html
 /sdcard/android/layout_tests/fast/loader/null-request-after-willSendRequest.html
 /sdcard/android/layout_tests/fast/loader/stop-provisional-loads.html
+/sdcard/android/layout_tests/fast/loader/location-port.html
 /sdcard/android/layout_tests/fast/loader/user-style-sheet-resource-load-callbacks.html
 /sdcard/android/layout_tests/fast/loader/policy-delegate-action-hit-test-zoomed.html
 /sdcard/android/layout_tests/fast/loader/subframe-navigate-during-main-frame-load.html
@@ -532,11 +523,372 @@
 /sdcard/android/layout_tests/fast/frames/frame-length-fractional.html
 /sdcard/android/layout_tests/fast/frames/iframe-name-and-id.html
 /sdcard/android/layout_tests/fast/loading/subframe-removes-itself.html
+/sdcard/android/layout_tests/http/tests/media/video-seekable-stall.html
+/sdcard/android/layout_tests/http/tests/media/remove-while-loading.html
+/sdcard/android/layout_tests/http/tests/media/video-play-stall.html
+/sdcard/android/layout_tests/http/tests/media/video-play-stall-seek.html
+/sdcard/android/layout_tests/http/tests/plugins/npapi-response-headers.html
+/sdcard/android/layout_tests/http/tests/plugins/get-url.html
+/sdcard/android/layout_tests/http/tests/plugins/interrupted-get-url.html
+/sdcard/android/layout_tests/http/tests/plugins/post-url-file.html
+/sdcard/android/layout_tests/http/tests/plugins/cross-frame-object-access.html
+/sdcard/android/layout_tests/http/tests/plugins/local-geturl-from-remote.html
+/sdcard/android/layout_tests/http/tests/plugins/geturlnotify-from-npp-destroystream.html
+/sdcard/android/layout_tests/http/tests/mime/standard-mode-does-not-load-stylesheet-with-text-plain-and-css-extension.html
+/sdcard/android/layout_tests/http/tests/mime/standard-mode-does-not-load-stylesheet-with-text-plain.html
+/sdcard/android/layout_tests/http/tests/local/drag-over-remote-content.html
+/sdcard/android/layout_tests/http/tests/misc/image-blocked-src-change.html
+/sdcard/android/layout_tests/http/tests/misc/acid3.html
+/sdcard/android/layout_tests/http/tests/misc/dns-prefetch-control.html
+/sdcard/android/layout_tests/http/tests/misc/will-send-request-returns-null-on-redirect.html
+/sdcard/android/layout_tests/http/tests/misc/isindex-formdata.html
+/sdcard/android/layout_tests/http/tests/misc/image-blocked-src-no-change.html
+/sdcard/android/layout_tests/http/tests/misc/policy-delegate-called-twice.html
+/sdcard/android/layout_tests/http/tests/misc/window-dot-stop.html
+/sdcard/android/layout_tests/http/tests/misc/css-reject-any-type-in-strict-mode.html
+/sdcard/android/layout_tests/http/tests/misc/favicon-loads-with-images-disabled.html
+/sdcard/android/layout_tests/http/tests/misc/SVGFont-delayed-load.html
+/sdcard/android/layout_tests/http/tests/misc/location-test-xsl-style-sheet.xml
+/sdcard/android/layout_tests/http/tests/misc/redirect-to-external-url.html
+/sdcard/android/layout_tests/http/tests/misc/submit-get-in-utf7.html
+/sdcard/android/layout_tests/http/tests/cookies/simple-cookies-max-age.html
+/sdcard/android/layout_tests/http/tests/cookies/simple-cookies-expired.html
+/sdcard/android/layout_tests/http/tests/cookies/multiple-cookies.html
+/sdcard/android/layout_tests/http/tests/wml/access-target-path-deny.html
+/sdcard/android/layout_tests/http/tests/wml/post-data-to-server.html
+/sdcard/android/layout_tests/http/tests/wml/go-task-get-method-accept-charset.html
+/sdcard/android/layout_tests/http/tests/wml/access-target.html
+/sdcard/android/layout_tests/http/tests/wml/access-target-domain-deny.html
+/sdcard/android/layout_tests/http/tests/wml/go-task-post-method-accept-charset.html
+/sdcard/android/layout_tests/http/tests/wml/go-task-get-method.html
+/sdcard/android/layout_tests/http/tests/wml/go-task-post-method.html
+/sdcard/android/layout_tests/http/tests/navigation/success200-reload.html
+/sdcard/android/layout_tests/http/tests/navigation/redirect-cycle.html
+/sdcard/android/layout_tests/http/tests/navigation/reload-subframe-frame.html
+/sdcard/android/layout_tests/http/tests/navigation/window-open-adds-history-item.html
+/sdcard/android/layout_tests/http/tests/navigation/success200-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/timerredirect-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/lockedhistory-iframe.html
+/sdcard/android/layout_tests/http/tests/navigation/document-location-click-timeout.html
+/sdcard/android/layout_tests/http/tests/navigation/post-goback2.html
+/sdcard/android/layout_tests/http/tests/navigation/onload-navigation-iframe-timeout.html
+/sdcard/android/layout_tests/http/tests/navigation/location-assign-adds-history-item.html
+/sdcard/android/layout_tests/http/tests/navigation/anchor-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/redirect-load-no-form-restoration.html
+/sdcard/android/layout_tests/http/tests/navigation/metaredirect-subframeload.html
+/sdcard/android/layout_tests/http/tests/navigation/javascriptlink-subframeload.html
+/sdcard/android/layout_tests/http/tests/navigation/metaredirect-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/success200-subframeload.html
+/sdcard/android/layout_tests/http/tests/navigation/post-goback-same-url.html
+/sdcard/android/layout_tests/http/tests/navigation/restore-form-state-https.html
+/sdcard/android/layout_tests/http/tests/navigation/success200-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/redirect302-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/document-location-mouseover.html
+/sdcard/android/layout_tests/http/tests/navigation/redirect302-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/anchor-subframeload.html
+/sdcard/android/layout_tests/http/tests/navigation/target-frame-from-window.html
+/sdcard/android/layout_tests/http/tests/navigation/slowmetaredirect-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/reload-subframe-iframe.html
+/sdcard/android/layout_tests/http/tests/navigation/success200-loadsame.html
+/sdcard/android/layout_tests/http/tests/navigation/relativeanchor-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/redirect302-subframeload.html
+/sdcard/android/layout_tests/http/tests/navigation/relativeanchor-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/metaredirect-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/redirect302-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/multiple-back-forward-entries.html
+/sdcard/android/layout_tests/http/tests/navigation/javascriptlink-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/success200-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/postredirect-goback2.html
+/sdcard/android/layout_tests/http/tests/navigation/timerredirect-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/location-href-set-adds-history-item.html
+/sdcard/android/layout_tests/http/tests/navigation/anchor-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/document-location-click.html
+/sdcard/android/layout_tests/http/tests/navigation/onload-navigation-iframe.html
+/sdcard/android/layout_tests/http/tests/navigation/relativeanchor-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/metaredirect-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/location-replace-adds-history-item.html
+/sdcard/android/layout_tests/http/tests/navigation/success200-frames-loadsame.html
+/sdcard/android/layout_tests/http/tests/navigation/back-to-slow-frame.html
+/sdcard/android/layout_tests/http/tests/navigation/new-window-redirect-history.html
+/sdcard/android/layout_tests/http/tests/navigation/javascriptlink-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/timerredirect-subframeload.html
+/sdcard/android/layout_tests/http/tests/navigation/location-set-adds-history-item.html
+/sdcard/android/layout_tests/http/tests/navigation/onload-navigation-iframe-2.html
+/sdcard/android/layout_tests/http/tests/navigation/reload-subframe-object.html
+/sdcard/android/layout_tests/http/tests/navigation/timerredirect-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/slowtimerredirect-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/window-open-adds-history-item2.html
+/sdcard/android/layout_tests/http/tests/navigation/document-location-onload.html
+/sdcard/android/layout_tests/http/tests/history/redirect-meta-refresh-2-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-assign-before-load.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-href-0-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-href-2-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-form-submit-0-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-form-submit-2-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-0-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-2-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-href-before-load.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-replace-0-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-replace-2-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-document-location-0-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-document-location-2-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-form-submit-before-load.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-assign-0-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-assign-2-seconds.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-before-load.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-location-replace-before-load.html
+/sdcard/android/layout_tests/http/tests/history/redirect-js-document-location-before-load.html
+/sdcard/android/layout_tests/http/tests/history/redirect-meta-refresh-0-seconds.html
+/sdcard/android/layout_tests/http/tests/cache/subresource-expiration.html
+/sdcard/android/layout_tests/http/tests/appcache/local-content.html
+/sdcard/android/layout_tests/http/tests/appcache/max-size.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/xss-DENIED-set-opener.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-from-javascript-url-window-open.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame-2-level.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-window-open.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-window-open.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-2-level.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame-uppercase.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-window-open.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-to-data-url-sub-frame.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-from-data-url-to-data-url.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-from-data-url.html
+/sdcard/android/layout_tests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame.html
+/sdcard/android/layout_tests/http/tests/security/clipboard/clipboard-file-access.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/image-prototype.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/body-properties.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/number-prototype.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/body-prototype.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/global-variables.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/location-prototype.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/image-properties.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/document-open.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/document-prototype.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/window-properties.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/location-properties.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/all-window-prototypes.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/click-event.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/all-window-properties.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/document-properties.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/string-prototype.html
+/sdcard/android/layout_tests/http/tests/security/isolatedWorld/object-prototype.html
+/sdcard/android/layout_tests/http/tests/security/listener/xss-window-onclick-addEventListener.html
+/sdcard/android/layout_tests/http/tests/security/listener/xss-window-onclick-shortcut.html
+/sdcard/android/layout_tests/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-allow.html
+/sdcard/android/layout_tests/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html
+/sdcard/android/layout_tests/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-in-body.html
+/sdcard/android/layout_tests/http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag.html
+/sdcard/android/layout_tests/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-allow.html
+/sdcard/android/layout_tests/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny.html
+/sdcard/android/layout_tests/http/tests/security/XFrameOptions/x-frame-options-deny.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/xss-ALLOWED-targeted-subframe-navigation-change.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/xss-DENIED-targeted-link-navigation.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/xss-DENIED-plugin-navigation.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNode.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNodeNS.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttribute.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNS.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNode.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNodeNS.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-2-level.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-to-javscript-url.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-from-javscript-url.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-getAttribute-value.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-htmldom.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-sub-frame-2-level.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-window-open.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-DENIED-from-javascript-url-in-foreign-domain-window-open.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-location-htmldom.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-getAttribute-value.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-to-javascript-url-sub-frame.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-DENIED-to-javascript-url-in-foreign-domain-subframe.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-window-open.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-htmldom.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-DENIED-to-javascript-url-in-foreign-domain-window-open.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-sub-frame.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttribute.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNS.html
+/sdcard/android/layout_tests/http/tests/security/javascriptURL/xss-DENIED-from-javascript-url-in-foreign-domain-subframe.html
+/sdcard/android/layout_tests/http/tests/security/originHeader/origin-header-for-empty.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/base-href-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/base-href-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/faux-script1.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-convoluted.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/dom-write-location.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link-HTML-entities-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/object-embed-tag-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/anchor-url-dom-write-location.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/link-onclick-ampersand.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-with-source-double-quote.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-with-source-no-quote.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/base-href-safe3.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/http-equiv-utf-7-encoded.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/link-onclick-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/base-href-scheme-relative.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-open-redirect.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/object-embed-tag-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/faux-script3.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/link-onclick-entities.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-post.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/embed-tag-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/property-escape.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-post-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link-HTML-entities.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-addslashes-single-quote.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/dom-write-innerHTML.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-with-source-entities.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/dom-write-location-inline-event.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/malformed-HTML.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link-ampersand.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/link-onclick.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/anchor-url-dom-write-location-inline-event.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/base-href-safe2.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/anchor-url-dom-write-location-inline-event-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/dom-write-URL.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-redirect.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/object-tag.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-addslashes-backslash.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/dom-write-location-javascript-URL.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/embed-tag.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/faux-script2.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/anchor-url-dom-write-location-javascript-URL.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-with-source-relative-scheme.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/img-onerror-tricky.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link-HTML-entities-named.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link-HTML-entities-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-addslashes-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/link-opens-new-window.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-utf-7-encoded.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-utf-7.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-with-source.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-addslashes-double-quote.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-safe.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/link-onclick-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/javascript-link.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-with-source-null-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/iframe-javascript-url.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-src-redirect-safe.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-with-source-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/get-from-iframe.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/inline-event-HTML-entities.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/post-from-iframe.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-post-control-char.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/object-embed-tag.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/base-href.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/script-tag-entities.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/base-href-safe.html
+/sdcard/android/layout_tests/http/tests/security/xssAuditor/embed-tag-null-char.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-location-get-override.html
+/sdcard/android/layout_tests/http/tests/security/protocol-compare-case-insensitive.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-xsl-external-entity.xml
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-history-get-override.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-get-override.html
+/sdcard/android/layout_tests/http/tests/security/cross-origin-xsl-BLOCKED.html
+/sdcard/android/layout_tests/http/tests/security/local-iFrame-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/credentials-in-referer.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-xsl-external-entity-redirect.xml
+/sdcard/android/layout_tests/http/tests/security/local-video-poster-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/local-CSS-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/local-user-CSS-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-object-prototype.html
+/sdcard/android/layout_tests/http/tests/security/dataTransfer-set-data-file-url.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-enumeration.html
+/sdcard/android/layout_tests/http/tests/security/host-compare-case-insensitive.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-xsl-document.xml
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-protocol.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-private-browsing.html
+/sdcard/android/layout_tests/http/tests/security/feed-urls-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-put.html
+/sdcard/android/layout_tests/http/tests/security/canvas-remote-read-svg-image.html
+/sdcard/android/layout_tests/http/tests/security/window-properties-clear-domain.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-callback-explicit-domain-DENY.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-get.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-port.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-document-direct.html
+/sdcard/android/layout_tests/http/tests/security/window-properties-pass.html
+/sdcard/android/layout_tests/http/tests/security/local-video-src-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-history-put.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-child-explicit-domain.html
+/sdcard/android/layout_tests/http/tests/security/local-video-source-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/drag-over-remote-content-iframe.html
+/sdcard/android/layout_tests/http/tests/security/local-JavaScript-from-remote.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-parent-explicit-domain.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-location-put.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-history-get.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-get-custom-property-cached.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-location-get.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-delete.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-xsl-document-redirect.xml
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-protocol-explicit-domain.html
+/sdcard/android/layout_tests/http/tests/security/window-properties-clear-port.html
+/sdcard/android/layout_tests/http/tests/security/frame-loading-via-document-write.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-port-explicit-domain.html
+/sdcard/android/layout_tests/http/tests/security/local-image-from-remote.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/workers/methods-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/workers/methods.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/008.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/methods-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/methods.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/uri-resolution-opera-open-005.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/upload-onload-event.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/small-chunks-response-text.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-non-simple-allow-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/uri-resolution-opera-open-009.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/frame-unload-abort-crash.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-non-simple-deny-cached.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/uri-resolution-opera-open-006.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/upload-onprogress-event.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/cache-override.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xhr-onunload.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/methods-lower-case.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/uri-resolution-opera-open-007.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/svg-created-by-xhr-disallowed-in-dashboard.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/uri-resolution-opera-open-004.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-missing-file-exception.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/cookies.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/uri-resolution-opera-open-010.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-same-origin-get-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/response-encoding.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/frame-load-cancelled-abort.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/upload-progress-events.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xml-encoding.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/default-content-type-dashboard.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/abort-should-cancel-load.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-whitelist-request-headers.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/uri-resolution-opera-open-008.html
+/sdcard/android/layout_tests/http/tests/loading/preload-img-test.html
+/sdcard/android/layout_tests/http/tests/loading/gmail-assert-on-load.html
+/sdcard/android/layout_tests/http/tests/loading/text-content-type-with-binary-extension.html
+/sdcard/android/layout_tests/http/tests/loading/basic.html
+/sdcard/android/layout_tests/http/tests/loading/slow-parsing-subframe.html
+/sdcard/android/layout_tests/http/tests/loading/deleted-host-in-resource-load-delegate-callback.html
+/sdcard/android/layout_tests/http/tests/loading/bad-scheme-subframe.html
+/sdcard/android/layout_tests/http/tests/loading/location-hash-reload-cycle.html
+/sdcard/android/layout_tests/http/tests/loading/bad-server-subframe.html
+/sdcard/android/layout_tests/http/tests/loading/empty-subframe.html
+/sdcard/android/layout_tests/http/tests/loading/redirect-methods.html
 /sdcard/android/layout_tests/media/video-error-does-not-exist.html
 /sdcard/android/layout_tests/media/audio-constructor.html
+/sdcard/android/layout_tests/media/video-play-empty-events.html
 /sdcard/android/layout_tests/media/video-append-source.html
 /sdcard/android/layout_tests/media/media-load-event.html
 /sdcard/android/layout_tests/media/unsupported-rtsp.html
+/sdcard/android/layout_tests/media/video-dom-autoplay.html
 /sdcard/android/layout_tests/media/video-currentTime-set2.html
 /sdcard/android/layout_tests/media/video-muted.html
 /sdcard/android/layout_tests/media/progress-event.html
@@ -558,25 +910,33 @@
 /sdcard/android/layout_tests/media/video-controls-zoomed.html
 /sdcard/android/layout_tests/media/video-src-invalid-remove.html
 /sdcard/android/layout_tests/media/video-volume.html
+/sdcard/android/layout_tests/media/video-size.html
 /sdcard/android/layout_tests/media/controls-right-click-on-timebar.html
 /sdcard/android/layout_tests/media/video-currentTime.html
 /sdcard/android/layout_tests/media/audio-constructor-autobuffer.html
 /sdcard/android/layout_tests/media/broken-video.html
 /sdcard/android/layout_tests/media/video-buffered.html
+/sdcard/android/layout_tests/media/video-load-readyState.html
 /sdcard/android/layout_tests/media/video-load-networkState.html
 /sdcard/android/layout_tests/media/unsupported-tracks.html
 /sdcard/android/layout_tests/media/video-source-add-src.html
 /sdcard/android/layout_tests/media/video-seek-past-end-paused.html
+/sdcard/android/layout_tests/media/media-startTime.html
 /sdcard/android/layout_tests/media/video-source-error.html
+/sdcard/android/layout_tests/media/video-autoplay.html
 /sdcard/android/layout_tests/media/video-controls.html
 /sdcard/android/layout_tests/media/video-canvas-source.html
+/sdcard/android/layout_tests/media/video-timeupdate-during-playback.html
 /sdcard/android/layout_tests/media/video-currentTime-set.html
+/sdcard/android/layout_tests/media/controls-css-overload.html
 /sdcard/android/layout_tests/media/video-source-type-params.html
 /sdcard/android/layout_tests/media/event-attributes.html
 /sdcard/android/layout_tests/media/audio-data-url.html
 /sdcard/android/layout_tests/media/video-src-plus-source.html
 /sdcard/android/layout_tests/media/video-no-autoplay.html
+/sdcard/android/layout_tests/media/video-pause-empty-events.html
 /sdcard/android/layout_tests/media/video-document-types.html
+/sdcard/android/layout_tests/media/video-src-remove.html
 /sdcard/android/layout_tests/media/audio-delete-while-slider-thumb-clicked.html
 /sdcard/android/layout_tests/media/video-error-abort.html
 /sdcard/android/layout_tests/media/video-size-intrinsic-scale.html
@@ -625,8 +985,6 @@
 /sdcard/android/layout_tests/transitions/transition-hit-test.html
 /sdcard/android/layout_tests/transitions/opacity-transition-zindex.html
 /sdcard/android/layout_tests/transitions/interrupted-all-transition.html
-/sdcard/android/layout_tests/transitions/mask-transitions.html
-/sdcard/android/layout_tests/transitions/zero-duration-with-non-zero-delay-start.html
 /sdcard/android/layout_tests/transitions/hang-with-bad-transition-list.html
 /sdcard/android/layout_tests/transitions/zero-duration-with-non-zero-delay-end.html
 /sdcard/android/layout_tests/transitions/remove-transition-style.html
diff --git a/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt b/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt
index 121b5a1..665ef07 100644
--- a/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt
+++ b/tests/DumpRenderTree/assets/results/layout_tests_nontext.txt
@@ -3233,6 +3233,34 @@
 /sdcard/android/layout_tests/fonts/fantasy.html
 /sdcard/android/layout_tests/fonts/serif.html
 /sdcard/android/layout_tests/fonts/sans-serif.html
+/sdcard/android/layout_tests/http/tests/webarchive/test-css-url-encoding-shift-jis.html
+/sdcard/android/layout_tests/http/tests/webarchive/test-css-url-encoding.html
+/sdcard/android/layout_tests/http/tests/webarchive/test-css-url-encoding-utf-8.html
+/sdcard/android/layout_tests/http/tests/webarchive/test-preload-resources.html
+/sdcard/android/layout_tests/http/tests/multipart/invalid-image-data.html
+/sdcard/android/layout_tests/http/tests/multipart/invalid-image-data-standalone.html
+/sdcard/android/layout_tests/http/tests/local/file-url-sent-as-referer.html
+/sdcard/android/layout_tests/http/tests/misc/location-replace-crossdomain.html
+/sdcard/android/layout_tests/http/tests/misc/acid2.html
+/sdcard/android/layout_tests/http/tests/misc/acid2-pixel.html
+/sdcard/android/layout_tests/http/tests/misc/favicon-as-image.html
+/sdcard/android/layout_tests/http/tests/misc/generated-content-inside-table.html
+/sdcard/android/layout_tests/http/tests/misc/willCacheResponse-delegate-callback.html
+/sdcard/android/layout_tests/http/tests/misc/iframe404.html
+/sdcard/android/layout_tests/http/tests/misc/frame-access-during-load.html
+/sdcard/android/layout_tests/http/tests/navigation/postredirect-goback1.html
+/sdcard/android/layout_tests/http/tests/navigation/error404-subframeload.html
+/sdcard/android/layout_tests/http/tests/navigation/error404-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/anchor-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/postredirect-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/post-goback1.html
+/sdcard/android/layout_tests/http/tests/navigation/post-basic.html
+/sdcard/android/layout_tests/http/tests/navigation/post-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/error404-goback.html
+/sdcard/android/layout_tests/http/tests/navigation/javascriptlink-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/postredirect-frames.html
+/sdcard/android/layout_tests/http/tests/navigation/error404-frames.html
+/sdcard/android/layout_tests/http/tests/loading/simple-subframe.html
 /sdcard/android/layout_tests/media/video-display-toggle.html
 /sdcard/android/layout_tests/media/video-transformed.html
 /sdcard/android/layout_tests/media/video-empty-source.html
diff --git a/tests/DumpRenderTree/assets/results/layout_tests_passed.txt b/tests/DumpRenderTree/assets/results/layout_tests_passed.txt
index b40a21e..942b647 100644
--- a/tests/DumpRenderTree/assets/results/layout_tests_passed.txt
+++ b/tests/DumpRenderTree/assets/results/layout_tests_passed.txt
@@ -1,15 +1,20 @@
 /sdcard/android/layout_tests/accessibility/non-native-image-crash.html
 /sdcard/android/layout_tests/animations/animation-css-rule-types.html
 /sdcard/android/layout_tests/animations/animation-events-create.html
+/sdcard/android/layout_tests/animations/play-state.html
+/sdcard/android/layout_tests/animations/animation-start-event-destroy-renderer.html
 /sdcard/android/layout_tests/animations/combo-transform-translate+scale.html
 /sdcard/android/layout_tests/animations/transform-origin-vs-functions.html
 /sdcard/android/layout_tests/animations/simultaneous-start-transform.html
 /sdcard/android/layout_tests/animations/lineheight-animation.html
+/sdcard/android/layout_tests/animations/import.html
 /sdcard/android/layout_tests/animations/simultaneous-start-left.html
 /sdcard/android/layout_tests/animations/fill-unset-properties.html
 /sdcard/android/layout_tests/animations/multiple-keyframes.html
 /sdcard/android/layout_tests/animations/change-one-anim.html
+/sdcard/android/layout_tests/animations/keyframes-comma-separated.html
 /sdcard/android/layout_tests/animations/matrix-anim.html
+/sdcard/android/layout_tests/animations/keyframes-rule.html
 /sdcard/android/layout_tests/animations/generic-from-to.html
 /sdcard/android/layout_tests/animations/big-rotation.html
 /sdcard/android/layout_tests/animations/keyframe-timing-functions.html
@@ -18,11 +23,13 @@
 /sdcard/android/layout_tests/animations/animation-iteration-event-destroy-renderer.html
 /sdcard/android/layout_tests/animations/keyframes.html
 /sdcard/android/layout_tests/animations/multiple-animations.html
+/sdcard/android/layout_tests/animations/animation-end-event-destroy-renderer.html
 /sdcard/android/layout_tests/animations/transition-and-animation-2.html
 /sdcard/android/layout_tests/animations/import-crash.html
 /sdcard/android/layout_tests/animations/empty-keyframes.html
 /sdcard/android/layout_tests/animations/width-using-ems.html
 /sdcard/android/layout_tests/animations/combo-transform-rotate+scale.html
+/sdcard/android/layout_tests/animations/keyframes-out-of-order.html
 /sdcard/android/layout_tests/css1/units/zero-duration-without-units.html
 /sdcard/android/layout_tests/css2.1/atrule_longest_match.html
 /sdcard/android/layout_tests/css3/khtml-background-size-0x0-bmp.html
@@ -1231,6 +1238,23 @@
 /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/workers/worker-close.html
+/sdcard/android/layout_tests/fast/workers/worker-context-gc.html
+/sdcard/android/layout_tests/fast/workers/worker-constructor.html
+/sdcard/android/layout_tests/fast/workers/worker-timeout.html
+/sdcard/android/layout_tests/fast/workers/worker-messageport.html
+/sdcard/android/layout_tests/fast/workers/worker-gc.html
+/sdcard/android/layout_tests/fast/workers/worker-replace-self.html
+/sdcard/android/layout_tests/fast/workers/worker-event-listener.html
+/sdcard/android/layout_tests/fast/workers/worker-cloneport.html
+/sdcard/android/layout_tests/fast/workers/worker-call.html
+/sdcard/android/layout_tests/fast/workers/worker-messageport-gc.html
+/sdcard/android/layout_tests/fast/workers/stress-js-execution.html
+/sdcard/android/layout_tests/fast/workers/worker-terminate.html
+/sdcard/android/layout_tests/fast/workers/use-machine-stack.html
+/sdcard/android/layout_tests/fast/workers/worker-navigator.html
+/sdcard/android/layout_tests/fast/workers/worker-script-error.html
+/sdcard/android/layout_tests/fast/workers/worker-replace-global-constructor.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
@@ -1291,7 +1315,6 @@
 /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/message-channel-gc-3.html
-/sdcard/android/layout_tests/fast/events/scroll-to-anchor-in-overflow-hidden.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
@@ -1943,14 +1966,12 @@
 /sdcard/android/layout_tests/fast/dom/image-object.html
 /sdcard/android/layout_tests/fast/dom/gc-5.html
 /sdcard/android/layout_tests/fast/dom/cssTarget-crash.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/offset-parent-positioned-and-inline.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
@@ -2344,6 +2365,13 @@
 /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/font-family-builtins.html
+/sdcard/android/layout_tests/fast/css/remove-shorthand.html
+/sdcard/android/layout_tests/fast/css/overflow-property.html
 /sdcard/android/layout_tests/fast/css/pseudo-required-optional-005.html
 /sdcard/android/layout_tests/fast/css/min-device-aspect-ratio.html
 /sdcard/android/layout_tests/fast/css/nested-rule-parent-sheet.html
@@ -2417,7 +2445,6 @@
 /sdcard/android/layout_tests/fast/history/subframe-is-visited.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/location-port.html
 /sdcard/android/layout_tests/fast/loader/local-css-allowed-in-strict-mode.html
 /sdcard/android/layout_tests/fast/loader/url-strip-cr-lf-tab.html
 /sdcard/android/layout_tests/fast/loader/hashchange-event.html
@@ -2513,33 +2540,301 @@
 /sdcard/android/layout_tests/fast/reflections/teardown-crash.html
 /sdcard/android/layout_tests/fast/reflections/reflection-computed-style.html
 /sdcard/android/layout_tests/fast/reflections/reflection-overflow-scroll.html
-/sdcard/android/layout_tests/media/video-play-empty-events.html
+/sdcard/android/layout_tests/http/tests/multipart/win-boundary-crash.html
+/sdcard/android/layout_tests/http/tests/multipart/stop-crash.html
+/sdcard/android/layout_tests/http/tests/mime/standard-mode-loads-stylesheet-with-text-css-and-invalid-type.html
+/sdcard/android/layout_tests/http/tests/mime/standard-mode-loads-stylesheet-with-empty-content-type.html
+/sdcard/android/layout_tests/http/tests/mime/standard-mode-loads-stylesheet-with-charset-and-css-extension.html
+/sdcard/android/layout_tests/http/tests/mime/standard-mode-loads-stylesheet-with-charset.html
+/sdcard/android/layout_tests/http/tests/local/style-access-before-stylesheet-loaded.html
+/sdcard/android/layout_tests/http/tests/local/stylesheet-and-script-load-order-http.html
+/sdcard/android/layout_tests/http/tests/local/link-stylesheet-preferred.html
+/sdcard/android/layout_tests/http/tests/local/stylesheet-and-script-load-order.html
+/sdcard/android/layout_tests/http/tests/misc/uncacheable-script-repeated.html
+/sdcard/android/layout_tests/http/tests/misc/embedCrasher.html
+/sdcard/android/layout_tests/http/tests/misc/multiple-submit.html
+/sdcard/android/layout_tests/http/tests/misc/empty-file-formdata.html
+/sdcard/android/layout_tests/http/tests/misc/submit-post-in-utf7.html
+/sdcard/android/layout_tests/http/tests/misc/text-refresh.html
+/sdcard/android/layout_tests/http/tests/misc/window-open-then-write.html
+/sdcard/android/layout_tests/http/tests/misc/submit-post-in-utf16be.html
+/sdcard/android/layout_tests/http/tests/misc/frame-default-enc-same-domain.html
+/sdcard/android/layout_tests/http/tests/misc/submit-post-in-utf32le.html
+/sdcard/android/layout_tests/http/tests/misc/iframe-domain-test.html
+/sdcard/android/layout_tests/http/tests/misc/frame-default-enc-different-domain.html
+/sdcard/android/layout_tests/http/tests/misc/css-accept-any-type.html
+/sdcard/android/layout_tests/http/tests/misc/url-in-utf7.html
+/sdcard/android/layout_tests/http/tests/misc/submit-get-in-utf32be.html
+/sdcard/android/layout_tests/http/tests/misc/meta-refresh-stray-single-quote.html
+/sdcard/android/layout_tests/http/tests/misc/canvas-pattern-from-incremental-image.html
+/sdcard/android/layout_tests/http/tests/misc/submit-get-in-utf16le.html
+/sdcard/android/layout_tests/http/tests/misc/url-in-utf32be.html
+/sdcard/android/layout_tests/http/tests/misc/timer-vs-loading.html
+/sdcard/android/layout_tests/http/tests/misc/font-face-in-multiple-segmented-faces.html
+/sdcard/android/layout_tests/http/tests/misc/url-in-utf16le.html
+/sdcard/android/layout_tests/http/tests/misc/refresh-meta-with-newline.html
+/sdcard/android/layout_tests/http/tests/misc/post-submit-button.html
+/sdcard/android/layout_tests/http/tests/misc/redirect-to-about-blank.html
+/sdcard/android/layout_tests/http/tests/misc/javascript-url-stop-loaders.html
+/sdcard/android/layout_tests/http/tests/misc/iframe-invalid-source-crash.html
+/sdcard/android/layout_tests/http/tests/misc/slow-preload-cancel.html
+/sdcard/android/layout_tests/http/tests/misc/object-image-error-with-onload.html
+/sdcard/android/layout_tests/http/tests/misc/image-error.html
+/sdcard/android/layout_tests/http/tests/misc/referrer.html
+/sdcard/android/layout_tests/http/tests/misc/cached-scripts.html
+/sdcard/android/layout_tests/http/tests/misc/empty-cookie.html
+/sdcard/android/layout_tests/http/tests/misc/submit-post-in-utf32be.html
+/sdcard/android/layout_tests/http/tests/misc/missing-style-sheet.html
+/sdcard/android/layout_tests/http/tests/misc/submit-post-in-utf16le.html
+/sdcard/android/layout_tests/http/tests/misc/submit-get-in-utf16be.html
+/sdcard/android/layout_tests/http/tests/misc/DOMContentLoaded-event.html
+/sdcard/android/layout_tests/http/tests/misc/onload-remove-iframe-crash-2.html
+/sdcard/android/layout_tests/http/tests/misc/submit-get-in-utf32le.html
+/sdcard/android/layout_tests/http/tests/misc/object-image-error.html
+/sdcard/android/layout_tests/http/tests/misc/createElementNamespace3.html
+/sdcard/android/layout_tests/http/tests/misc/url-in-utf16be.html
+/sdcard/android/layout_tests/http/tests/misc/url-in-utf32le.html
+/sdcard/android/layout_tests/http/tests/misc/crash-multiple-family-fontface.html
+/sdcard/android/layout_tests/http/tests/misc/BOM-override-script.html
+/sdcard/android/layout_tests/http/tests/misc/createElementNamespace1.xml
+/sdcard/android/layout_tests/http/tests/workers/text-encoding.html
+/sdcard/android/layout_tests/http/tests/workers/worker-redirect.html
+/sdcard/android/layout_tests/http/tests/workers/worker-importScripts.html
+/sdcard/android/layout_tests/http/tests/cookies/double-quoted-value-with-semi-colon.html
+/sdcard/android/layout_tests/http/tests/uri/resolve-encoding-relative.html
+/sdcard/android/layout_tests/http/tests/uri/escaped-entity.html
+/sdcard/android/layout_tests/http/tests/uri/utf8-path.html
+/sdcard/android/layout_tests/http/tests/navigation/changing-frame-hierarchy-in-onload.html
+/sdcard/android/layout_tests/http/tests/navigation/fallback-anchor-reload.html
+/sdcard/android/layout_tests/http/tests/navigation/back-send-referrer.html
+/sdcard/android/layout_tests/http/tests/incremental/slow-utf8-css.html
+/sdcard/android/layout_tests/http/tests/incremental/frame-focus-before-load.html
+/sdcard/android/layout_tests/http/tests/appcache/crash-when-navigating-away-then-back.html
+/sdcard/android/layout_tests/http/tests/appcache/offline-access.html
+/sdcard/android/layout_tests/http/tests/appcache/update-cache.html
+/sdcard/android/layout_tests/http/tests/appcache/manifest-with-empty-file.html
+/sdcard/android/layout_tests/http/tests/appcache/simple.html
+/sdcard/android/layout_tests/http/tests/appcache/wrong-signature-2.html
+/sdcard/android/layout_tests/http/tests/appcache/top-frame-3.html
+/sdcard/android/layout_tests/http/tests/appcache/online-whitelist.html
+/sdcard/android/layout_tests/http/tests/appcache/fallback.html
+/sdcard/android/layout_tests/http/tests/appcache/different-origin-manifest.html
+/sdcard/android/layout_tests/http/tests/appcache/empty-manifest.html
+/sdcard/android/layout_tests/http/tests/appcache/manifest-redirect.html
+/sdcard/android/layout_tests/http/tests/appcache/navigating-away-while-cache-attempt-in-progress.html
+/sdcard/android/layout_tests/http/tests/appcache/top-frame-4.html
+/sdcard/android/layout_tests/http/tests/appcache/wrong-signature.html
+/sdcard/android/layout_tests/http/tests/appcache/fail-on-update.html
+/sdcard/android/layout_tests/http/tests/appcache/foreign-iframe-main.html
+/sdcard/android/layout_tests/http/tests/appcache/xhr-foreign-resource.html
+/sdcard/android/layout_tests/http/tests/appcache/manifest-containing-itself.html
+/sdcard/android/layout_tests/http/tests/appcache/resource-redirect.html
+/sdcard/android/layout_tests/http/tests/appcache/idempotent-update.html
+/sdcard/android/layout_tests/http/tests/appcache/top-frame-1.html
+/sdcard/android/layout_tests/http/tests/appcache/main-resource-hash.html
+/sdcard/android/layout_tests/http/tests/appcache/manifest-parsing.html
+/sdcard/android/layout_tests/http/tests/appcache/404-manifest.html
+/sdcard/android/layout_tests/http/tests/appcache/wrong-content-type.html
+/sdcard/android/layout_tests/http/tests/appcache/resource-redirect-2.html
+/sdcard/android/layout_tests/http/tests/appcache/top-frame-2.html
+/sdcard/android/layout_tests/http/tests/appcache/404-resource.html
+/sdcard/android/layout_tests/http/tests/appcache/remove-cache.html
+/sdcard/android/layout_tests/http/tests/appcache/manifest-redirect-2.html
+/sdcard/android/layout_tests/http/tests/appcache/reload.html
+/sdcard/android/layout_tests/http/tests/appcache/cyrillic-uri.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-alias.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-write.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-grandchildren-alias.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-with-base-tag.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/window-open-self-about-blank.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-grandchildren.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-grandchildren-writeln-lexical.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-window-open.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-grandchildren-write-lexical.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-grandchildren-lexical.html
+/sdcard/android/layout_tests/http/tests/security/aboutBlank/security-context-writeln.html
+/sdcard/android/layout_tests/http/tests/security/cookies/document-open.html
+/sdcard/android/layout_tests/http/tests/security/cookies/create-document.html
+/sdcard/android/layout_tests/http/tests/security/cookies/assign-document-url.html
+/sdcard/android/layout_tests/http/tests/security/cookies/basic.html
+/sdcard/android/layout_tests/http/tests/security/cookies/base-tag.html
+/sdcard/android/layout_tests/http/tests/security/cookies/base-about-blank.html
+/sdcard/android/layout_tests/http/tests/security/cookies/xmlhttprequest.html
+/sdcard/android/layout_tests/http/tests/security/listener/xss-JSTargetNode-onclick-shortcut.html
+/sdcard/android/layout_tests/http/tests/security/listener/xss-XMLHttpRequest-shortcut.html
+/sdcard/android/layout_tests/http/tests/security/listener/xss-JSTargetNode-onclick-addEventListener.html
+/sdcard/android/layout_tests/http/tests/security/listener/xss-XMLHttpRequest-addEventListener.html
+/sdcard/android/layout_tests/http/tests/security/MessagePort/event-listener-context.html
+/sdcard/android/layout_tests/http/tests/security/postMessage/delivery-order.html
+/sdcard/android/layout_tests/http/tests/security/postMessage/data-url-sends-null-origin.html
+/sdcard/android/layout_tests/http/tests/security/postMessage/origin-unaffected-by-base-tag.html
+/sdcard/android/layout_tests/http/tests/security/postMessage/origin-unaffected-by-document-domain.html
+/sdcard/android/layout_tests/http/tests/security/postMessage/javascript-page-still-sends-origin.html
+/sdcard/android/layout_tests/http/tests/security/postMessage/invalid-origin-throws-exception.html
+/sdcard/android/layout_tests/http/tests/security/postMessage/target-origin.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/context-for-window-open.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/context-for-location.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/not-opener.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/opener.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/context-for-location-assign.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/context-for-location-href.html
+/sdcard/android/layout_tests/http/tests/security/frameNavigation/xss-ALLOWED-parent-navigation-change.html
+/sdcard/android/layout_tests/http/tests/security/originHeader/origin-header-for-get.html
+/sdcard/android/layout_tests/http/tests/security/originHeader/origin-header-for-https.html
+/sdcard/android/layout_tests/http/tests/security/originHeader/origin-header-for-post.html
+/sdcard/android/layout_tests/http/tests/security/originHeader/origin-header-for-data.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-hash.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-history-prototype.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-synchronous-form.html
+/sdcard/android/layout_tests/http/tests/security/canvas-remote-read-redirect-to-remote-image.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-nonstandardProperty.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-pathname.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-frames.html
+/sdcard/android/layout_tests/http/tests/security/object-literals.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-location-prototype.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-search.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-selection.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-name-getter.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-call.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-reload.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-invalid-domain-change.html
+/sdcard/android/layout_tests/http/tests/security/canvas-remote-read-remote-image.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-protocol.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-first-time.html
+/sdcard/android/layout_tests/http/tests/security/xss-eval.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-DOMImplementation.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-hostname.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-custom.html
+/sdcard/android/layout_tests/http/tests/security/xss-DENIED-assign-location-host.html
+/sdcard/android/layout_tests/http/tests/security/cross-frame-access-callback-explicit-domain-ALLOW.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/workers/xmlhttprequest-file-not-found.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/workers/abort-exception-assert.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/workers/close.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/010.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/002.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/012.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/004.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/014.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/018.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/002-simple.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/001.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/011.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/003.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/013.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/005.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/015.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/web-apps/007.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/cross-site-denied-response.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/encode-request-url.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-non-simple-allow.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/inject-header.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-LSProgressEvent-ProgressEvent-should-match.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-same-origin-post-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-denied.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-cross-origin-post-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-InvalidStateException-getAllRequestHeaders.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/simple-cross-origin-denied-events-post-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/binary-x-user-defined.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/onloadstart-event.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-no-content-length-onProgress.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/readystatechange.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-contenttype-empty.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-post-fail-non-simple-content-type.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-forbidden-methods-exception.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-method.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/serialize-document.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/onerror-event.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/close-window.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/redirect-cross-origin-post-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/detaching-frame-2.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/encode-request-url-2.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/set-dangerous-headers.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/event-target.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-addEventListener-onProgress.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/send-on-abort.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/document-domain-set.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-timeout.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-responseXML-exception.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/cross-site-denied-response-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/upload-onloadstart-event.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/supported-xml-content-types.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/simple-cross-origin-denied-events.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/request-encoding.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/zero-length-response.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/connection-error-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-access-control-origin-header-data-url.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-header.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/redirect-cross-origin.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-star.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-crlf-getAllResponseHeader.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/event-listener-gc.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/interactive-state.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/state-after-network-error.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/abort-crash.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/get-dangerous-headers.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-image-not-loaded.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/exceptions.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-test-send-flag.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-cross-origin-post-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/referer.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-invalidHeader-getRequestHeader.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/infoOnProgressEvent.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-allow-access-control-origin-header.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/docLoaderFrame.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/simple-cross-origin-denied-events-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/post-content-type.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-whitelist-response-headers.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/onabort-event.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-same-origin-get-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/detaching-frame.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/redirect-cross-origin-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-get-fail-non-simple.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/zero-length-response-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/authorization-header.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-post-crash.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-cross-origin-get-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-cross-origin-get-async.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/redirect-cross-origin-sync-double.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-abort-readyState-shouldDispatchEvent.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-responseText-exception.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/redirect-cross-origin-2.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-abort-readyState-shouldNotDispatchEvent.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/status-after-abort.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/XMLHttpRequestException.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-onProgress-open-should-zero-length.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/broken-xml-encoding.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/simple-cross-origin-denied-events-post.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/extra-parameters.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-multiple-open.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/xmlhttprequest-InvalidStateException-getRequestHeader.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/origin-header-same-origin-post-sync.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/cross-site-denied-response-sync-2.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/request-from-popup.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/redirect-cross-origin-post.html
+/sdcard/android/layout_tests/http/tests/xmlhttprequest/simple-cross-origin-progress-events.html
+/sdcard/android/layout_tests/http/tests/messaging/cross-domain-message-event-dispatch.html
+/sdcard/android/layout_tests/http/tests/messaging/cross-domain-message-send.html
 /sdcard/android/layout_tests/media/constructors.html
-/sdcard/android/layout_tests/media/video-dom-autoplay.html
 /sdcard/android/layout_tests/media/video-poster.html
 /sdcard/android/layout_tests/media/video-source-media.html
 /sdcard/android/layout_tests/media/video-controls-with-mutation-event-handler.html
 /sdcard/android/layout_tests/media/video-src-set.html
 /sdcard/android/layout_tests/media/video-display-none-crash.html
-/sdcard/android/layout_tests/media/video-size.html
 /sdcard/android/layout_tests/media/video-width-height.html
 /sdcard/android/layout_tests/media/video-source.html
-/sdcard/android/layout_tests/media/video-load-readyState.html
 /sdcard/android/layout_tests/media/fallback.html
 /sdcard/android/layout_tests/media/remove-from-document-no-load.html
 /sdcard/android/layout_tests/media/before-load-member-access.html
 /sdcard/android/layout_tests/media/video-play-pause-events.html
-/sdcard/android/layout_tests/media/media-startTime.html
-/sdcard/android/layout_tests/media/video-autoplay.html
-/sdcard/android/layout_tests/media/video-timeupdate-during-playback.html
 /sdcard/android/layout_tests/media/media-constants.html
 /sdcard/android/layout_tests/media/video-src-source.html
-/sdcard/android/layout_tests/media/controls-css-overload.html
-/sdcard/android/layout_tests/media/video-pause-empty-events.html
 /sdcard/android/layout_tests/media/video-play-pause-exception.html
 /sdcard/android/layout_tests/media/video-dom-autobuffer.html
 /sdcard/android/layout_tests/media/video-seek-no-src-exception.html
-/sdcard/android/layout_tests/media/video-src-remove.html
 /sdcard/android/layout_tests/media/video-src.html
 /sdcard/android/layout_tests/plugins/createScriptableObject-before-start.html
 /sdcard/android/layout_tests/plugins/return-error-from-new-stream-callback-in-full-frame-plugin.html
@@ -2601,6 +2896,8 @@
 /sdcard/android/layout_tests/transitions/zero-duration-without-units.html
 /sdcard/android/layout_tests/transitions/min-max-width-height-transitions.html
 /sdcard/android/layout_tests/transitions/shorthand-transitions.html
+/sdcard/android/layout_tests/transitions/mask-transitions.html
+/sdcard/android/layout_tests/transitions/zero-duration-with-non-zero-delay-start.html
 /sdcard/android/layout_tests/transitions/zero-duration-in-list.html
 /sdcard/android/layout_tests/transitions/shorthand-border-transitions.html
 /sdcard/android/layout_tests/transitions/inherit-other-props.html
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
index e00d3ad..283b98c 100755
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoRunner.java
@@ -65,14 +65,15 @@
             } catch (Exception e) {
             }
         }
-        
+
         String r = (String)icicle.get("rebaseline");
         this.mRebaseline = (r != null && r.toLowerCase().equals("true"));
-        super.onCreate(icicle);
-        
+
         String logtime = (String) icicle.get("logtime");
         this.mLogtime = (logtime != null
                 && logtime.toLowerCase().equals("true"));
+
+        super.onCreate(icicle);
     }
     
     public String mTestPath = null;
