diff --git a/Source/WebCore/platform/graphics/android/layers/CanvasTexture.cpp b/Source/WebCore/platform/graphics/android/layers/CanvasTexture.cpp
index dca0dcd..ccab443 100644
--- a/Source/WebCore/platform/graphics/android/layers/CanvasTexture.cpp
+++ b/Source/WebCore/platform/graphics/android/layers/CanvasTexture.cpp
@@ -42,7 +42,7 @@
 
 #include <android/native_window.h>
 #include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
 
 namespace WebCore {
 
@@ -98,7 +98,7 @@
     }
 }
 
-SurfaceTextureClient* CanvasTexture::nativeWindow()
+android::Surface* CanvasTexture::nativeWindow()
 {
     android::Mutex::Autolock lock(m_surfaceLock);
     if (m_ANW.get())
@@ -108,7 +108,7 @@
     if (!useSurfaceTexture())
         return 0;
     m_surfaceTexture = new android::GLConsumer(m_texture, false);
-    m_ANW = new android::SurfaceTextureClient(m_surfaceTexture->getBufferQueue());
+    m_ANW = new android::Surface(m_surfaceTexture->getBufferQueue());
     int result = native_window_set_buffers_format(m_ANW.get(), HAL_PIXEL_FORMAT_RGBA_8888);
     GLUtils::checkSurfaceTextureError("native_window_set_buffers_format", result);
     if (result == NO_ERROR) {
@@ -127,7 +127,7 @@
 bool CanvasTexture::uploadImageBuffer(ImageBuffer* imageBuffer)
 {
     m_hasValidTexture = false;
-    SurfaceTextureClient* anw = nativeWindow();
+    android::Surface* anw = nativeWindow();
     if (!anw)
         return false;
     // Size mismatch, early abort (will fall back to software)
diff --git a/Source/WebCore/platform/graphics/android/layers/CanvasTexture.h b/Source/WebCore/platform/graphics/android/layers/CanvasTexture.h
index f8c2f95..1561434 100644
--- a/Source/WebCore/platform/graphics/android/layers/CanvasTexture.h
+++ b/Source/WebCore/platform/graphics/android/layers/CanvasTexture.h
@@ -35,7 +35,7 @@
 
 namespace android {
 class GLConsumer;
-class SurfaceTextureClient;
+class Surface;
 }
 
 namespace WebCore {
@@ -53,7 +53,7 @@
      * Called by WebKit thread
      ********************************************/
     void setSize(const IntSize& size);
-    SurfaceTextureClient* nativeWindow();
+    android::Surface* nativeWindow();
     bool uploadImageBuffer(ImageBuffer* imageBuffer);
     bool hasValidTexture() { return m_hasValidTexture; }
 
@@ -82,7 +82,7 @@
     GLuint m_texture;
     android::Mutex m_surfaceLock;
     sp<android::GLConsumer> m_surfaceTexture;
-    sp<android::SurfaceTextureClient> m_ANW;
+    sp<android::Surface> m_ANW;
     bool m_hasValidTexture;
     bool m_useHwAcceleration;
 
diff --git a/Source/WebCore/platform/graphics/android/layers/MediaLayer.h b/Source/WebCore/platform/graphics/android/layers/MediaLayer.h
index 188252b..fb24d1c 100644
--- a/Source/WebCore/platform/graphics/android/layers/MediaLayer.h
+++ b/Source/WebCore/platform/graphics/android/layers/MediaLayer.h
@@ -47,7 +47,7 @@
     void invertContents(bool invert) { m_mediaTexture->invertContents(invert); }
     void setOutlineSize(int size) { m_outlineSize = size; }
 
-    // function to setup the primary SurfaceTextureClient in the renderer's context
+    // function to setup the primary Surface in the renderer's context
     ANativeWindow* acquireNativeWindowForContent();
 
     // functions to manipulate secondary layers for video playback
@@ -60,7 +60,7 @@
     bool m_isCopy;
     int m_outlineSize;
 
-    // SurfaceTextureClient member variables
+    // Surface member variables
     MediaTexture* m_mediaTexture;
 };
 
diff --git a/Source/WebCore/platform/graphics/android/layers/MediaListener.h b/Source/WebCore/platform/graphics/android/layers/MediaListener.h
index f02ff7c..74eb59a 100644
--- a/Source/WebCore/platform/graphics/android/layers/MediaListener.h
+++ b/Source/WebCore/platform/graphics/android/layers/MediaListener.h
@@ -20,7 +20,7 @@
 #if USE(ACCELERATED_COMPOSITING)
 
 #include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
 #include <jni.h>
 #include <JNIUtility.h>
 #include "MediaTexture.h"
diff --git a/Source/WebCore/platform/graphics/android/layers/MediaTexture.cpp b/Source/WebCore/platform/graphics/android/layers/MediaTexture.cpp
index 67324c7..b001c1a 100644
--- a/Source/WebCore/platform/graphics/android/layers/MediaTexture.cpp
+++ b/Source/WebCore/platform/graphics/android/layers/MediaTexture.cpp
@@ -30,7 +30,7 @@
 
 #include <android/native_window.h>
 #include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
 #include <JNIUtility.h>
 #include "WebCoreJni.h"
 
@@ -281,7 +281,7 @@
     // populate the wrapper
     glGenTextures(1, &wrapper->textureId);
     wrapper->surfaceTexture = new android::GLConsumer(wrapper->textureId);
-    wrapper->nativeWindow = new android::SurfaceTextureClient(
+    wrapper->nativeWindow = new android::Surface(
             wrapper->surfaceTexture->getBufferQueue());
     wrapper->dimensions.setEmpty();
 
diff --git a/Source/WebCore/platform/graphics/android/rendering/GaneshRenderer.cpp b/Source/WebCore/platform/graphics/android/rendering/GaneshRenderer.cpp
index ed57613..4eace7c 100644
--- a/Source/WebCore/platform/graphics/android/rendering/GaneshRenderer.cpp
+++ b/Source/WebCore/platform/graphics/android/rendering/GaneshRenderer.cpp
@@ -91,7 +91,7 @@
     GaneshContext::instance()->flush();
 
     // In SurfaceTextureMode we must call swapBuffers to unlock and post the
-    // tile's ANativeWindow (i.e. SurfaceTextureClient) buffer
+    // tile's ANativeWindow (i.e. Surface) buffer
     TransferQueue* tileQueue = TilesManager::instance()->transferQueue();
     eglSwapBuffers(eglGetCurrentDisplay(), tileQueue->m_eglSurface);
     SkBitmap dummyBitmap;
diff --git a/Source/WebCore/platform/graphics/android/rendering/TextureInfo.cpp b/Source/WebCore/platform/graphics/android/rendering/TextureInfo.cpp
index 714410e..32237cd 100644
--- a/Source/WebCore/platform/graphics/android/rendering/TextureInfo.cpp
+++ b/Source/WebCore/platform/graphics/android/rendering/TextureInfo.cpp
@@ -31,7 +31,7 @@
 #include <JNIUtility.h>
 #include <android/native_window.h>
 #include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
 
 namespace WebCore {
 
diff --git a/Source/WebCore/platform/graphics/android/rendering/TilesManager.cpp b/Source/WebCore/platform/graphics/android/rendering/TilesManager.cpp
index 0ab74aa..f44f79d 100644
--- a/Source/WebCore/platform/graphics/android/rendering/TilesManager.cpp
+++ b/Source/WebCore/platform/graphics/android/rendering/TilesManager.cpp
@@ -43,7 +43,7 @@
 #include <android/native_window.h>
 #include <cutils/atomic.h>
 #include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
 #include <wtf/CurrentTime.h>
 
 // Important: We need at least twice as many textures as is needed to cover
diff --git a/Source/WebCore/platform/graphics/android/rendering/TransferQueue.cpp b/Source/WebCore/platform/graphics/android/rendering/TransferQueue.cpp
index 0db91bd..81b3ff4 100644
--- a/Source/WebCore/platform/graphics/android/rendering/TransferQueue.cpp
+++ b/Source/WebCore/platform/graphics/android/rendering/TransferQueue.cpp
@@ -40,7 +40,7 @@
 #include "TilesManager.h"
 #include <android/native_window.h>
 #include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
 
 // For simple webView usage, MINIMAL_SIZE is recommended for memory saving.
 // In browser case, EFFICIENT_SIZE is preferred.
@@ -113,7 +113,7 @@
                                         GL_TEXTURE_EXTERNAL_OES, true,
                                         bufferQueue);
 #endif
-        m_ANW = new android::SurfaceTextureClient(bufferQueue);
+        m_ANW = new android::Surface(bufferQueue);
         m_sharedSurfaceTexture->setSynchronousMode(true);
 
         int extraBuffersNeeded = 0;
diff --git a/Source/WebKit/android/plugins/ANPSurfaceInterface.cpp b/Source/WebKit/android/plugins/ANPSurfaceInterface.cpp
index 2b593e2..1b699de 100644
--- a/Source/WebKit/android/plugins/ANPSurfaceInterface.cpp
+++ b/Source/WebKit/android/plugins/ANPSurfaceInterface.cpp
@@ -35,6 +35,7 @@
 #include <ui/Rect.h>
 #include <ui/Region.h>
 #include <utils/RefBase.h>
+#include <android_runtime/android_view_Surface.h>
 
 using namespace android;
 
@@ -43,7 +44,6 @@
     bool        initialized;
     jmethodID   getSurfaceHolder;
     jmethodID   getSurface;
-    jfieldID    surfacePointer;
 } gSurfaceJavaGlue;
 
 static inline sp<android::Surface> getSurface(JNIEnv* env, jobject view) {
@@ -61,11 +61,6 @@
         gSurfaceJavaGlue.getSurface = env->GetMethodID(surfaceHolderClass, "getSurface",
                                                        "()Landroid/view/Surface;");
 
-        jclass surfaceClass = env->FindClass("android/view/Surface");
-        gSurfaceJavaGlue.surfacePointer = env->GetFieldID(surfaceClass,
-                ANDROID_VIEW_SURFACE_JNI_ID, "I");
-
-        env->DeleteLocalRef(surfaceClass);
         env->DeleteLocalRef(surfaceViewClass);
         env->DeleteLocalRef(surfaceHolderClass);
 
@@ -74,12 +69,13 @@
 
     jobject holder = env->CallObjectMethod(view, gSurfaceJavaGlue.getSurfaceHolder);
     jobject surface = env->CallObjectMethod(holder, gSurfaceJavaGlue.getSurface);
-    jint surfacePointer = env->GetIntField(surface, gSurfaceJavaGlue.surfacePointer);
+
+    sp<android::Surface> sur = android_view_Surface_getSurface(env, surface);
 
     env->DeleteLocalRef(holder);
     env->DeleteLocalRef(surface);
 
-    return sp<android::Surface>((android::Surface*) surfacePointer);
+    return sur;
 }
 
 static inline ANPBitmapFormat convertPixelFormat(PixelFormat format) {
@@ -111,14 +107,17 @@
         dirtyRegion.set(Rect(0x3FFF, 0x3FFF));
     }
 
-    android::Surface::SurfaceInfo info;
-    status_t err = surface->lock(&info, &dirtyRegion);
+
+    ANativeWindow_Buffer outBuffer;
+    Rect dirtyBounds(dirtyRegion.getBounds());
+    status_t err = surface->lock(&outBuffer, &dirtyBounds);
     if (err < 0) {
         return false;
     }
 
     // the surface may have expanded the dirty region so we must to pass that
     // information back to the plugin.
+    dirtyRegion.set(dirtyBounds);
     if (dirtyRect) {
         Rect dirtyBounds = dirtyRegion.getBounds();
         dirtyRect->left = dirtyBounds.left;
@@ -127,15 +126,15 @@
         dirtyRect->bottom = dirtyBounds.bottom;
     }
 
-    ssize_t bpr = info.s * bytesPerPixel(info.format);
+    ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
 
-    bitmap->format = convertPixelFormat(info.format);
-    bitmap->width = info.w;
-    bitmap->height = info.h;
+    bitmap->format = convertPixelFormat(outBuffer.format);
+    bitmap->width = outBuffer.width;
+    bitmap->height = outBuffer.height;
     bitmap->rowBytes = bpr;
 
-    if (info.w > 0 && info.h > 0) {
-        bitmap->baseAddr = info.bits;
+    if (outBuffer.width > 0 && outBuffer.height > 0) {
+        bitmap->baseAddr = outBuffer.bits;
     } else {
         bitmap->baseAddr = NULL;
         return false;
