am 9ca4f33e: (-s ours) am 3180c1cc: resolved conflicts for merge of 5a706141 to stage-aosp-master

* commit '9ca4f33e3a20e100af0390af4035382f7caa47eb':
  Remove the default text encoding resource.
  Wrap one more Context
diff --git a/chromium/Android.mk b/chromium/Android.mk
index edcfdb2..e015510 100644
--- a/chromium/Android.mk
+++ b/chromium/Android.mk
@@ -32,9 +32,9 @@
         plat_support/graphic_buffer_impl.cpp \
 
 LOCAL_C_INCLUDES:= \
-        $(CHROMIUM_PATH) \
         external/skia/include/core \
         frameworks/base/core/jni/android/graphics \
+        frameworks/base/libs/hwui \
         frameworks/native/include/ui \
 
 LOCAL_SHARED_LIBRARIES += \
@@ -44,6 +44,7 @@
         libskia \
         libui \
         libutils \
+        libhwui \
 
 LOCAL_MODULE_TAGS := optional
 
@@ -73,12 +74,5 @@
 
 include $(BUILD_SHARED_LIBRARY)
 
-
-# Include the makefile for the main package unless we are using a prebuilt.
-ifneq ($(PRODUCT_PREBUILT_WEBVIEWCHROMIUM),yes)
-extra_java_files :=
-include $(LOCAL_PATH)/package.mk
-endif
-
 # Build other stuff
 include $(call first-makefiles-under,$(LOCAL_PATH))
diff --git a/chromium/java/com/android/webview/chromium/ContentSettingsAdapter.java b/chromium/java/com/android/webview/chromium/ContentSettingsAdapter.java
index d0d7dd3..5f623e4 100644
--- a/chromium/java/com/android/webview/chromium/ContentSettingsAdapter.java
+++ b/chromium/java/com/android/webview/chromium/ContentSettingsAdapter.java
@@ -17,7 +17,6 @@
 package com.android.webview.chromium;
 
 import android.util.Log;
-import android.webkit.DebugFlags;
 import android.webkit.WebSettings.LayoutAlgorithm;
 import android.webkit.WebSettings.PluginState;
 import android.webkit.WebSettings.RenderPriority;
@@ -29,6 +28,7 @@
 public class ContentSettingsAdapter extends android.webkit.WebSettings {
 
     private static final String LOGTAG = ContentSettingsAdapter.class.getSimpleName();
+    private static final boolean TRACE = false;
 
     private AwSettings mAwSettings;
 
@@ -55,7 +55,7 @@
 
     @Override
     public void setSupportZoom(boolean support) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setSupportZoom=" + support);
+        if (TRACE) Log.d(LOGTAG, "setSupportZoom=" + support);
         mAwSettings.setSupportZoom(support);
     }
 
@@ -66,7 +66,7 @@
 
     @Override
     public void setBuiltInZoomControls(boolean enabled) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setBuiltInZoomControls=" + enabled);
+        if (TRACE) Log.d(LOGTAG, "setBuiltInZoomControls=" + enabled);
         mAwSettings.setBuiltInZoomControls(enabled);
     }
 
@@ -77,7 +77,7 @@
 
     @Override
     public void setDisplayZoomControls(boolean enabled) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setDisplayZoomControls=" + enabled);
+        if (TRACE) Log.d(LOGTAG, "setDisplayZoomControls=" + enabled);
         mAwSettings.setDisplayZoomControls(enabled);
     }
 
@@ -88,7 +88,7 @@
 
     @Override
     public void setAllowFileAccess(boolean allow) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setAllowFileAccess=" + allow);
+        if (TRACE) Log.d(LOGTAG, "setAllowFileAccess=" + allow);
         mAwSettings.setAllowFileAccess(allow);
     }
 
@@ -99,7 +99,7 @@
 
     @Override
     public void setAllowContentAccess(boolean allow) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setAllowContentAccess=" + allow);
+        if (TRACE) Log.d(LOGTAG, "setAllowContentAccess=" + allow);
         mAwSettings.setAllowContentAccess(allow);
     }
 
@@ -110,7 +110,7 @@
 
     @Override
     public void setLoadWithOverviewMode(boolean overview) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setLoadWithOverviewMode=" + overview);
+        if (TRACE) Log.d(LOGTAG, "setLoadWithOverviewMode=" + overview);
         mAwSettings.setLoadWithOverviewMode(overview);
     }
 
@@ -121,7 +121,7 @@
 
     @Override
     public void setAcceptThirdPartyCookies(boolean accept) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setAcceptThirdPartyCookies=" + accept);
+        if (TRACE) Log.d(LOGTAG, "setAcceptThirdPartyCookies=" + accept);
         mAwSettings.setAcceptThirdPartyCookies(accept);
     }
 
@@ -154,7 +154,7 @@
 
     @Override
     public void setSaveFormData(boolean save) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setSaveFormData=" + save);
+        if (TRACE) Log.d(LOGTAG, "setSaveFormData=" + save);
         mAwSettings.setSaveFormData(save);
     }
 
@@ -176,7 +176,7 @@
 
     @Override
     public synchronized void setTextZoom(int textZoom) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setTextZoom=" + textZoom);
+        if (TRACE) Log.d(LOGTAG, "setTextZoom=" + textZoom);
         mAwSettings.setTextZoom(textZoom);
     }
 
@@ -227,7 +227,7 @@
 
     @Override
     public synchronized void setUseWideViewPort(boolean use) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setUseWideViewPort=" + use);
+        if (TRACE) Log.d(LOGTAG, "setUseWideViewPort=" + use);
         mAwSettings.setUseWideViewPort(use);
     }
 
@@ -238,7 +238,7 @@
 
     @Override
     public synchronized void setSupportMultipleWindows(boolean support) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setSupportMultipleWindows=" + support);
+        if (TRACE) Log.d(LOGTAG, "setSupportMultipleWindows=" + support);
         mAwSettings.setSupportMultipleWindows(support);
     }
 
@@ -273,7 +273,7 @@
 
     @Override
     public synchronized void setStandardFontFamily(String font) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setStandardFontFamily=" + font);
+        if (TRACE) Log.d(LOGTAG, "setStandardFontFamily=" + font);
         mAwSettings.setStandardFontFamily(font);
     }
 
@@ -284,7 +284,7 @@
 
     @Override
     public synchronized void setFixedFontFamily(String font) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setFixedFontFamily=" + font);
+        if (TRACE) Log.d(LOGTAG, "setFixedFontFamily=" + font);
         mAwSettings.setFixedFontFamily(font);
     }
 
@@ -295,7 +295,7 @@
 
     @Override
     public synchronized void setSansSerifFontFamily(String font) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setSansSerifFontFamily=" + font);
+        if (TRACE) Log.d(LOGTAG, "setSansSerifFontFamily=" + font);
         mAwSettings.setSansSerifFontFamily(font);
     }
 
@@ -306,7 +306,7 @@
 
     @Override
     public synchronized void setSerifFontFamily(String font) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setSerifFontFamily=" + font);
+        if (TRACE) Log.d(LOGTAG, "setSerifFontFamily=" + font);
         mAwSettings.setSerifFontFamily(font);
     }
 
@@ -317,7 +317,7 @@
 
     @Override
     public synchronized void setCursiveFontFamily(String font) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setCursiveFontFamily=" + font);
+        if (TRACE) Log.d(LOGTAG, "setCursiveFontFamily=" + font);
         mAwSettings.setCursiveFontFamily(font);
     }
 
@@ -328,7 +328,7 @@
 
     @Override
     public synchronized void setFantasyFontFamily(String font) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setFantasyFontFamily=" + font);
+        if (TRACE) Log.d(LOGTAG, "setFantasyFontFamily=" + font);
         mAwSettings.setFantasyFontFamily(font);
     }
 
@@ -339,7 +339,7 @@
 
     @Override
     public synchronized void setMinimumFontSize(int size) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setMinimumFontSize=" + size);
+        if (TRACE) Log.d(LOGTAG, "setMinimumFontSize=" + size);
         mAwSettings.setMinimumFontSize(size);
     }
 
@@ -350,7 +350,7 @@
 
     @Override
     public synchronized void setMinimumLogicalFontSize(int size) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setMinimumLogicalFontSize=" + size);
+        if (TRACE) Log.d(LOGTAG, "setMinimumLogicalFontSize=" + size);
         mAwSettings.setMinimumLogicalFontSize(size);
     }
 
@@ -361,7 +361,7 @@
 
     @Override
     public synchronized void setDefaultFontSize(int size) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setDefaultFontSize=" + size);
+        if (TRACE) Log.d(LOGTAG, "setDefaultFontSize=" + size);
         mAwSettings.setDefaultFontSize(size);
     }
 
@@ -372,7 +372,7 @@
 
     @Override
     public synchronized void setDefaultFixedFontSize(int size) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setDefaultFixedFontSize=" + size);
+        if (TRACE) Log.d(LOGTAG, "setDefaultFixedFontSize=" + size);
         mAwSettings.setDefaultFixedFontSize(size);
     }
 
@@ -383,7 +383,7 @@
 
     @Override
     public synchronized void setLoadsImagesAutomatically(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setLoadsImagesAutomatically=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setLoadsImagesAutomatically=" + flag);
         mAwSettings.setLoadsImagesAutomatically(flag);
     }
 
@@ -394,7 +394,7 @@
 
     @Override
     public synchronized void setBlockNetworkImage(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setBlockNetworkImage=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setBlockNetworkImage=" + flag);
         mAwSettings.setImagesEnabled(!flag);
     }
 
@@ -405,7 +405,7 @@
 
     @Override
     public synchronized void setBlockNetworkLoads(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setBlockNetworkLoads=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setBlockNetworkLoads=" + flag);
         mAwSettings.setBlockNetworkLoads(flag);
     }
 
@@ -416,31 +416,31 @@
 
     @Override
     public synchronized void setJavaScriptEnabled(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setJavaScriptEnabled=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setJavaScriptEnabled=" + flag);
         mAwSettings.setJavaScriptEnabled(flag);
     }
 
     @Override
     public void setAllowUniversalAccessFromFileURLs(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setAllowUniversalAccessFromFileURLs=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setAllowUniversalAccessFromFileURLs=" + flag);
         mAwSettings.setAllowUniversalAccessFromFileURLs(flag);
     }
 
     @Override
     public void setAllowFileAccessFromFileURLs(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setAllowFileAccessFromFileURLs=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setAllowFileAccessFromFileURLs=" + flag);
         mAwSettings.setAllowFileAccessFromFileURLs(flag);
     }
 
     @Override
     public synchronized void setPluginsEnabled(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setPluginsEnabled=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setPluginsEnabled=" + flag);
         mAwSettings.setPluginsEnabled(flag);
     }
 
     @Override
     public synchronized void setPluginState(PluginState state) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setPluginState=" + state);
+        if (TRACE) Log.d(LOGTAG, "setPluginState=" + state);
         mAwSettings.setPluginState(state);
     }
 
@@ -456,13 +456,13 @@
 
     @Override
     public synchronized void setAppCacheEnabled(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setAppCacheEnabled=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setAppCacheEnabled=" + flag);
         mAwSettings.setAppCacheEnabled(flag);
     }
 
     @Override
     public synchronized void setAppCachePath(String appCachePath) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setAppCachePath=" + appCachePath);
+        if (TRACE) Log.d(LOGTAG, "setAppCachePath=" + appCachePath);
         mAwSettings.setAppCachePath(appCachePath);
     }
 
@@ -473,13 +473,13 @@
 
     @Override
     public synchronized void setDatabaseEnabled(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setDatabaseEnabled=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setDatabaseEnabled=" + flag);
         mAwSettings.setDatabaseEnabled(flag);
     }
 
     @Override
     public synchronized void setDomStorageEnabled(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setDomStorageEnabled=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setDomStorageEnabled=" + flag);
         mAwSettings.setDomStorageEnabled(flag);
     }
 
@@ -501,7 +501,7 @@
 
     @Override
     public synchronized void setGeolocationEnabled(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setGeolocationEnabled=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setGeolocationEnabled=" + flag);
         mAwSettings.setGeolocationEnabled(flag);
     }
 
@@ -532,7 +532,7 @@
 
     @Override
     public synchronized void setJavaScriptCanOpenWindowsAutomatically(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setJavaScriptCanOpenWindowsAutomatically=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setJavaScriptCanOpenWindowsAutomatically=" + flag);
         mAwSettings.setJavaScriptCanOpenWindowsAutomatically(flag);
     }
 
@@ -543,7 +543,7 @@
 
     @Override
     public synchronized void setDefaultTextEncodingName(String encoding) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setDefaultTextEncodingName=" + encoding);
+        if (TRACE) Log.d(LOGTAG, "setDefaultTextEncodingName=" + encoding);
         mAwSettings.setDefaultTextEncodingName(encoding);
     }
 
@@ -554,7 +554,7 @@
 
     @Override
     public synchronized void setUserAgentString(String ua) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setUserAgentString=" + ua);
+        if (TRACE) Log.d(LOGTAG, "setUserAgentString=" + ua);
         mAwSettings.setUserAgentString(ua);
     }
 
@@ -565,7 +565,7 @@
 
     @Override
     public void setNeedInitialFocus(boolean flag) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setNeedInitialFocus=" + flag);
+        if (TRACE) Log.d(LOGTAG, "setNeedInitialFocus=" + flag);
         mAwSettings.setShouldFocusFirstNode(flag);
     }
 
@@ -576,7 +576,7 @@
 
     @Override
     public void setCacheMode(int mode) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setCacheMode=" + mode);
+        if (TRACE) Log.d(LOGTAG, "setCacheMode=" + mode);
         mAwSettings.setCacheMode(mode);
     }
 
@@ -587,7 +587,7 @@
 
     @Override
     public void setMediaPlaybackRequiresUserGesture(boolean require) {
-        if (DebugFlags.TRACE_API) Log.d(LOGTAG, "setMediaPlaybackRequiresUserGesture=" + require);
+        if (TRACE) Log.d(LOGTAG, "setMediaPlaybackRequiresUserGesture=" + require);
         mAwSettings.setMediaPlaybackRequiresUserGesture(require);
     }
 
diff --git a/chromium/java/com/android/webview/chromium/CookieManagerAdapter.java b/chromium/java/com/android/webview/chromium/CookieManagerAdapter.java
index 57694e8..2dd34a3 100644
--- a/chromium/java/com/android/webview/chromium/CookieManagerAdapter.java
+++ b/chromium/java/com/android/webview/chromium/CookieManagerAdapter.java
@@ -88,6 +88,12 @@
         return getCookie(url);
     }
 
+    // TODO(igsolla): remove this override once the WebView apk does not longer need
+    // to be binary compatibility with the API 21 version of the framework
+    /**
+     * IMPORTANT: This override is required for compatibility with the API 21 version of
+     * {@link CookieManager}.
+     */
     @Override
     public synchronized String getCookie(WebAddress uri) {
         return mChromeCookieManager.getCookie(uri.toString());
@@ -129,7 +135,7 @@
     }
 
     @Override
-    protected void flushCookieStore() {
+    public void flush() {
         mChromeCookieManager.flushCookieStore();
     }
 
diff --git a/chromium/java/com/android/webview/chromium/DrawGLFunctor.java b/chromium/java/com/android/webview/chromium/DrawGLFunctor.java
index 7f7adeb..7805077 100644
--- a/chromium/java/com/android/webview/chromium/DrawGLFunctor.java
+++ b/chromium/java/com/android/webview/chromium/DrawGLFunctor.java
@@ -16,10 +16,12 @@
 
 package com.android.webview.chromium;
 
-import android.view.HardwareCanvas;
-import android.view.ViewRootImpl;
+import android.view.View;
+import android.graphics.Canvas;
 import android.util.Log;
 
+import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate;
+
 import org.chromium.content.common.CleanupReference;
 
 // Simple Java abstraction and wrapper for the native DrawGLFunctor flow.
@@ -34,10 +36,12 @@
     // Pointer to native side instance
     private CleanupReference mCleanupReference;
     private DestroyRunnable mDestroyRunnable;
+    private WebViewDelegate mWebViewDelegate;
 
-    public DrawGLFunctor(long viewContext) {
-        mDestroyRunnable = new DestroyRunnable(nativeCreateGLFunctor(viewContext));
+    public DrawGLFunctor(long viewContext, WebViewDelegate webViewDelegate) {
+        mDestroyRunnable = new DestroyRunnable(nativeCreateGLFunctor(viewContext), webViewDelegate);
         mCleanupReference = new CleanupReference(this, mDestroyRunnable);
+        mWebViewDelegate = webViewDelegate;
     }
 
     public void destroy() {
@@ -46,6 +50,7 @@
             mCleanupReference.cleanupNow();
             mCleanupReference = null;
             mDestroyRunnable = null;
+            mWebViewDelegate = null;
         }
     }
 
@@ -53,27 +58,29 @@
         mDestroyRunnable.detachNativeFunctor();
     }
 
-    public boolean requestDrawGL(HardwareCanvas canvas, ViewRootImpl viewRootImpl,
+    public boolean requestDrawGL(Canvas canvas, View containerView,
             boolean waitForCompletion) {
         if (mDestroyRunnable.mNativeDrawGLFunctor == 0) {
             throw new RuntimeException("requested DrawGL on already destroyed DrawGLFunctor");
         }
-        if (viewRootImpl == null) {
-            // Can happen during teardown when window is leaked.
+
+        if (canvas != null && waitForCompletion) {
+            throw new IllegalArgumentException("requested a blocking DrawGL with a not null canvas.");
+        }
+
+        if (!mWebViewDelegate.canInvokeDrawGlFunctor(containerView)) {
             return false;
         }
 
-        mDestroyRunnable.mViewRootImpl = viewRootImpl;
+        mDestroyRunnable.mContainerView = containerView;
+
         if (canvas == null) {
-            viewRootImpl.invokeFunctor(mDestroyRunnable.mNativeDrawGLFunctor, waitForCompletion);
+            mWebViewDelegate.invokeDrawGlFunctor(containerView,
+                    mDestroyRunnable.mNativeDrawGLFunctor, waitForCompletion);
             return true;
         }
 
-        canvas.callDrawGLFunction(mDestroyRunnable.mNativeDrawGLFunctor);
-        if (waitForCompletion) {
-            viewRootImpl.invokeFunctor(mDestroyRunnable.mNativeDrawGLFunctor,
-                    waitForCompletion);
-        }
+        mWebViewDelegate.callDrawGlFunction(canvas, mDestroyRunnable.mNativeDrawGLFunctor);
         return true;
     }
 
@@ -85,10 +92,12 @@
     // IMPORTANT: this class must not hold any reference back to the outer DrawGLFunctor
     // instance, as that will defeat GC of that object.
     private static final class DestroyRunnable implements Runnable {
-        ViewRootImpl mViewRootImpl;
+        private WebViewDelegate mWebViewDelegate;
+        View mContainerView;
         long mNativeDrawGLFunctor;
-        DestroyRunnable(long nativeDrawGLFunctor) {
+        DestroyRunnable(long nativeDrawGLFunctor, WebViewDelegate webViewDelegate) {
             mNativeDrawGLFunctor = nativeDrawGLFunctor;
+            mWebViewDelegate = webViewDelegate;
         }
 
         // Called when the outer DrawGLFunctor instance has been GC'ed, i.e this is its finalizer.
@@ -100,10 +109,12 @@
         }
 
         void detachNativeFunctor() {
-            if (mNativeDrawGLFunctor != 0 && mViewRootImpl != null) {
-                mViewRootImpl.detachFunctor(mNativeDrawGLFunctor);
+            if (mNativeDrawGLFunctor != 0 && mContainerView != null
+                    && mWebViewDelegate != null) {
+                mWebViewDelegate.detachDrawGlFunctor(mContainerView, mNativeDrawGLFunctor);
             }
-            mViewRootImpl = null;
+            mContainerView = null;
+            mWebViewDelegate = null;
         }
     }
 
diff --git a/chromium/java/com/android/webview/chromium/ResourceRewriter.java b/chromium/java/com/android/webview/chromium/ResourceRewriter.java
index 683277a..7d035b7 100644
--- a/chromium/java/com/android/webview/chromium/ResourceRewriter.java
+++ b/chromium/java/com/android/webview/chromium/ResourceRewriter.java
@@ -17,7 +17,6 @@
 package com.android.webview.chromium;
 
 import android.content.Context;
-import android.util.SparseArray;
 
 /**
  * Helper class used to fix up resource ids.
@@ -27,29 +26,15 @@
  */
 class ResourceRewriter {
 
-    public static void rewriteRValues(Context ctx) {
-        // Rewrite the R 'constants' for the WebView library apk.
-        SparseArray<String> packageIdentifiers = ctx.getResources().getAssets()
-                .getAssignedPackageIdentifiers();
-
-        final int N = packageIdentifiers.size();
-        for (int i = 0; i < N; i++) {
-            final String name = packageIdentifiers.valueAt(i);
-
-            // The resources are always called com.android.webview even if the manifest has had the
-            // package renamed.
-            if ("com.android.webview".equals(name)) {
-                final int id = packageIdentifiers.keyAt(i);
-
-                // TODO: We should use jarjar to remove the redundant R classes here, but due
-                // to a bug in jarjar it's not possible to rename classes with '$' in their name.
-                // See b/15684775.
-                com.android.webview.chromium.R.onResourcesLoaded(id);
-                org.chromium.ui.R.onResourcesLoaded(id);
-                org.chromium.content.R.onResourcesLoaded(id);
-
-                break;
-            }
-        }
+    /**
+     * Rewrite the R 'constants' for the WebView library apk.
+     */
+    public static void rewriteRValues(final int packageId) {
+        // TODO: We should use jarjar to remove the redundant R classes here, but due
+        // to a bug in jarjar it's not possible to rename classes with '$' in their name.
+        // See b/15684775.
+        com.android.webview.chromium.R.onResourcesLoaded(packageId);
+        org.chromium.ui.R.onResourcesLoaded(packageId);
+        org.chromium.content.R.onResourcesLoaded(packageId);
     }
 }
diff --git a/chromium/java/com/android/webview/chromium/ResourcesContextWrapperFactory.java b/chromium/java/com/android/webview/chromium/ResourcesContextWrapperFactory.java
new file mode 100644
index 0000000..da4174f
--- /dev/null
+++ b/chromium/java/com/android/webview/chromium/ResourcesContextWrapperFactory.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.webview.chromium;
+
+import android.content.ComponentCallbacks;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.res.AssetManager;
+import android.content.res.Resources;
+import android.view.LayoutInflater;
+
+import java.util.WeakHashMap;
+
+/**
+ * This class allows us to wrap the application context so that the WebView implementation can
+ * correctly reference both org.chromium.* and application classes which is necessary to properly
+ * inflate UI.  We keep a weak map from contexts to wrapped contexts to avoid constantly re-wrapping
+ * or doubly wrapping contexts.
+ */
+public class ResourcesContextWrapperFactory {
+    private static WeakHashMap<Context,ContextWrapper> sCtxToWrapper
+            = new WeakHashMap<Context,ContextWrapper>();
+    private static final Object sLock = new Object();
+
+    private ResourcesContextWrapperFactory() {
+    }
+
+    public static Context get(Context ctx) {
+        ContextWrapper wrappedCtx;
+        synchronized (sLock) {
+            wrappedCtx = sCtxToWrapper.get(ctx);
+            if (wrappedCtx == null) {
+                wrappedCtx = createWrapper(ctx);
+                sCtxToWrapper.put(ctx, wrappedCtx);
+            }
+        }
+        return wrappedCtx;
+    }
+
+    private static ContextWrapper createWrapper(final Context ctx) {
+        return new ContextWrapper(ctx) {
+            private Context applicationContext;
+
+            @Override
+            public ClassLoader getClassLoader() {
+                final ClassLoader appCl = getBaseContext().getClassLoader();
+                final ClassLoader webViewCl = this.getClass().getClassLoader();
+                return new ClassLoader() {
+                    @Override
+                    protected Class<?> findClass(String name) throws ClassNotFoundException {
+                        // First look in the WebViewProvider class loader.
+                        try {
+                            return webViewCl.loadClass(name);
+                        } catch (ClassNotFoundException e) {
+                            // Look in the app class loader; allowing it to throw ClassNotFoundException.
+                            return appCl.loadClass(name);
+                        }
+                    }
+                };
+            }
+
+            @Override
+            public Object getSystemService(String name) {
+                if (Context.LAYOUT_INFLATER_SERVICE.equals(name)) {
+                    LayoutInflater i = (LayoutInflater) getBaseContext().getSystemService(name);
+                    return i.cloneInContext(this);
+                } else {
+                    return getBaseContext().getSystemService(name);
+                }
+            }
+
+            @Override
+            public Context getApplicationContext() {
+                if (applicationContext == null)
+                    applicationContext = get(ctx.getApplicationContext());
+                return applicationContext;
+            }
+
+            @Override
+            public void registerComponentCallbacks(ComponentCallbacks callback) {
+                // We have to override registerComponentCallbacks and unregisterComponentCallbacks
+                // since they call getApplicationContext().[un]registerComponentCallbacks()
+                // which causes us to go into a loop.
+                ctx.registerComponentCallbacks(callback);
+            }
+
+            @Override
+            public void unregisterComponentCallbacks(ComponentCallbacks callback) {
+                ctx.unregisterComponentCallbacks(callback);
+            }
+        };
+    }
+}
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromium.java b/chromium/java/com/android/webview/chromium/WebViewChromium.java
index e29c3d3..ca82bb7 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromium.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromium.java
@@ -17,10 +17,8 @@
 package com.android.webview.chromium;
 
 import android.content.Context;
-import android.content.ContextWrapper;
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
-import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Paint;
@@ -32,14 +30,13 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Looper;
+import android.os.Handler;
 import android.os.Message;
 import android.print.PrintDocumentAdapter;
 import android.text.TextUtils;
 import android.util.Base64;
 import android.util.Log;
-import android.view.HardwareCanvas;
 import android.view.KeyEvent;
-import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.MeasureSpec;
@@ -58,6 +55,7 @@
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
+import android.webkit.WebViewFactory;
 import android.webkit.WebViewProvider;
 import android.webkit.WebChromeClient.CustomViewCallback;
 import android.widget.TextView;
@@ -69,6 +67,7 @@
 import org.chromium.android_webview.AwSettings;
 import org.chromium.android_webview.AwPrintDocumentAdapter;
 import org.chromium.base.ThreadUtils;
+import org.chromium.content.browser.SmartClipProvider;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.net.NetworkChangeNotifier;
 
@@ -92,7 +91,7 @@
  * and a small set of no-op deprecated APIs.
  */
 class WebViewChromium implements WebViewProvider,
-          WebViewProvider.ScrollDelegate, WebViewProvider.ViewDelegate {
+          WebViewProvider.ScrollDelegate, WebViewProvider.ViewDelegate, SmartClipProvider {
 
     private class WebViewChromiumRunQueue {
         public WebViewChromiumRunQueue() {
@@ -136,6 +135,8 @@
     WebView.PrivateAccess mWebViewPrivate;
     // The client adapter class.
     private WebViewContentsClientAdapter mContentsClientAdapter;
+    // The wrapped Context.
+    private Context mContext;
 
     // Variables for functionality provided by this adapter ---------------------------------------
     private ContentSettingsAdapter mWebSettings;
@@ -162,9 +163,11 @@
         mWebView = webView;
         mWebViewPrivate = webViewPrivate;
         mHitTestResult = new WebView.HitTestResult();
-        mAppTargetSdkVersion = mWebView.getContext().getApplicationInfo().targetSdkVersion;
+        mContext = ResourcesContextWrapperFactory.get(mWebView.getContext());
+        mAppTargetSdkVersion = mContext.getApplicationInfo().targetSdkVersion;
         mFactory = factory;
         mRunQueue = new WebViewChromiumRunQueue();
+        factory.getWebViewDelegate().addWebViewAssetPath(mWebView.getContext());
     }
 
     static void completeWindowCreation(WebView parent, WebView child) {
@@ -216,8 +219,8 @@
                 throw new IllegalArgumentException(msg);
             } else {
                 Log.w(TAG, msg);
-                TextView warningLabel = new TextView(mWebView.getContext());
-                warningLabel.setText(mWebView.getContext().getString(
+                TextView warningLabel = new TextView(mContext);
+                warningLabel.setText(mContext.getString(
                         R.string.webviewchromium_private_browsing_warning));
                 mWebView.addView(warningLabel);
             }
@@ -241,14 +244,15 @@
         final boolean areLegacyQuirksEnabled =
                 mAppTargetSdkVersion < Build.VERSION_CODES.KITKAT;
 
-        mContentsClientAdapter = new WebViewContentsClientAdapter(mWebView);
+        mContentsClientAdapter = new WebViewContentsClientAdapter(
+                mWebView, mContext, mFactory.getWebViewDelegate());
         mWebSettings = new ContentSettingsAdapter(new AwSettings(
-                mWebView.getContext(), isAccessFromFileURLsGrantedByDefault,
+                mContext, isAccessFromFileURLsGrantedByDefault,
                 areLegacyQuirksEnabled));
 
-        if (mAppTargetSdkVersion <= Build.VERSION_CODES.KITKAT) {
+        if (mAppTargetSdkVersion < Build.VERSION_CODES.LOLLIPOP) {
+            // Prior to Lollipop we always allowed third party cookies and mixed content.
             mWebSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
-            // On KK and older versions we always allowed third party cookies.
             mWebSettings.setAcceptThirdPartyCookies(true);
             mWebSettings.getAwSettings().setZeroLayoutHeightDisablesViewportQuirk(true);
         }
@@ -268,43 +272,8 @@
         });
     }
 
-    // Wrap Context so that we can use resources from the webview resource apk.
-    private static Context resourcesContextWrapper(final Context ctx) {
-        return new ContextWrapper(ctx) {
-            @Override
-            public ClassLoader getClassLoader() {
-                final ClassLoader appCl = getBaseContext().getClassLoader();
-                final ClassLoader webViewCl = this.getClass().getClassLoader();
-                return new ClassLoader() {
-                    @Override
-                    protected Class<?> findClass(String name) throws ClassNotFoundException {
-                        // First look in the WebViewProvider class loader.
-                        try {
-                            return webViewCl.loadClass(name);
-                        } catch (ClassNotFoundException e) {
-                            // Look in the app class loader; allowing it to throw ClassNotFoundException.
-                            return appCl.loadClass(name);
-                        }
-                    }
-                };
-            }
-
-            @Override
-            public Object getSystemService(String name) {
-                if (name.equals(Context.LAYOUT_INFLATER_SERVICE)) {
-                    LayoutInflater i = (LayoutInflater) getBaseContext().getSystemService(name);
-                    return i.cloneInContext(this);
-                } else {
-                    return getBaseContext().getSystemService(name);
-                }
-            }
-
-        };
-    }
-
     private void initForReal() {
-        Context ctx = resourcesContextWrapper(mWebView.getContext());
-        mAwContents = new AwContents(mFactory.getBrowserContext(), mWebView, ctx,
+        mAwContents = new AwContents(mFactory.getBrowserContext(), mWebView, mContext,
                 new InternalAccessAdapter(), new WebViewNativeGLDelegate(),
                 mContentsClientAdapter, mWebSettings.getAwSettings());
 
@@ -315,10 +284,10 @@
         }
 
         AwContentsStatics.setRecordFullDocument(sRecordWholeDocumentEnabledByApi ||
-                mAppTargetSdkVersion < Build.VERSION_CODES.L);
+                mAppTargetSdkVersion < Build.VERSION_CODES.LOLLIPOP);
 
-        if (mAppTargetSdkVersion <= Build.VERSION_CODES.KITKAT) {
-            // On KK and older versions, JavaScript objects injected via addJavascriptInterface
+        if (mAppTargetSdkVersion < Build.VERSION_CODES.LOLLIPOP) {
+            // Prior to Lollipop, JavaScript objects injected via addJavascriptInterface
             // were not inspectable.
             mAwContents.disableJavascriptInterfacesInspection();
         }
@@ -1257,7 +1226,7 @@
             return false;
         }
 
-        FindActionModeCallback findAction = new FindActionModeCallback(mWebView.getContext());
+        FindActionModeCallback findAction = new FindActionModeCallback(mContext);
         if (findAction == null) {
             return false;
         }
@@ -1344,19 +1313,27 @@
         if (client == null) {
             return false;
         }
-        // If client is not a subclass of WebChromeClient then the methods have not been
-        // implemented because WebChromeClient has empty implementations.
-        if (client.getClass().isAssignableFrom(WebChromeClient.class)) {
-            return false;
+        Class<?> clientClass = client.getClass();
+        boolean foundShowMethod = false;
+        boolean foundHideMethod = false;
+        while (clientClass != WebChromeClient.class && (!foundShowMethod || !foundHideMethod)) {
+            if (!foundShowMethod) {
+                try {
+                    clientClass.getDeclaredMethod("onShowCustomView", View.class,
+                            CustomViewCallback.class);
+                    foundShowMethod = true;
+                } catch (NoSuchMethodException e) { }
+            }
+
+            if (!foundHideMethod) {
+                try {
+                    clientClass.getDeclaredMethod("onHideCustomView");
+                    foundHideMethod = true;
+                } catch (NoSuchMethodException e) { }
+            }
+            clientClass = clientClass.getSuperclass();
         }
-        try {
-            client.getClass().getDeclaredMethod("onShowCustomView", View.class,
-                    CustomViewCallback.class);
-            client.getClass().getDeclaredMethod("onHideCustomView");
-            return true;
-        } catch (NoSuchMethodException e) {
-            return false;
-        }
+        return foundShowMethod && foundHideMethod;
     }
 
     @Override
@@ -1441,7 +1418,7 @@
         // This was deprecated in 2009 and hidden in JB MR1, so just provide the minimum needed
         // to stop very out-dated applications from crashing.
         Log.w(TAG, "WebView doesn't support getZoomControls");
-        return mAwContents.getSettings().supportZoom() ? new View(mWebView.getContext()) : null;
+        return mAwContents.getSettings().supportZoom() ? new View(mContext) : null;
     }
 
     @Override
@@ -1872,7 +1849,17 @@
     }
 
     @Override
-    public void onScrollChanged(int l, int t, int oldl, int oldt) {
+    public void onScrollChanged(final int l, final int t, final int oldl, final int oldt) {
+        if (checkNeedsPost()) {
+            mRunQueue.addTask(new Runnable() {
+                @Override
+                public void run() {
+                    onScrollChanged(l, t, oldl, oldt);
+                }
+            });
+            return;
+        }
+        mAwContents.onContainerViewScrollChanged(l, t, oldl, oldt);
     }
 
     @Override
@@ -2143,10 +2130,10 @@
         public boolean requestDrawGL(Canvas canvas, boolean waitForCompletion,
                 View containerView) {
             if (mGLfunctor == null) {
-                mGLfunctor = new DrawGLFunctor(mAwContents.getAwDrawGLViewContext());
+                mGLfunctor = new DrawGLFunctor(mAwContents.getAwDrawGLViewContext(),
+                        mFactory.getWebViewDelegate());
             }
-            return mGLfunctor.requestDrawGL(
-                    (HardwareCanvas) canvas, containerView.getViewRootImpl(), waitForCompletion);
+            return mGLfunctor.requestDrawGL(canvas, containerView, waitForCompletion);
         }
 
         @Override
@@ -2243,4 +2230,19 @@
             return mWebViewPrivate.super_onHoverEvent(event);
         }
     }
+
+    // Implements SmartClipProvider
+    @Override
+    public void extractSmartClipData(int x, int y, int width, int height) {
+        checkThread();
+        mAwContents.extractSmartClipData(x, y, width, height);
+    }
+
+    // Implements SmartClipProvider
+    @Override
+    public void setSmartClipResultHandler(final Handler resultHandler) {
+        checkThread();
+        mAwContents.setSmartClipResultHandler(resultHandler);
+    }
+
 }
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
index ad2a26d..5111105 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -16,21 +16,18 @@
 
 package com.android.webview.chromium;
 
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.app.ActivityManager;
-import android.app.ActivityThread;
 import android.content.ComponentCallbacks2;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.net.Uri;
 import android.os.Build;
-import android.os.FileUtils;
 import android.os.Looper;
 import android.os.StrictMode;
-import android.os.SystemProperties;
-import android.os.Trace;
 import android.util.Log;
 import android.webkit.CookieManager;
 import android.webkit.GeolocationPermissions;
@@ -42,6 +39,8 @@
 import android.webkit.WebViewFactoryProvider;
 import android.webkit.WebViewProvider;
 
+import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate;
+
 import org.chromium.android_webview.AwBrowserContext;
 import org.chromium.android_webview.AwBrowserProcess;
 import org.chromium.android_webview.AwContents;
@@ -98,11 +97,25 @@
     private boolean mStarted;
 
     private SharedPreferences mWebViewPrefs;
+    private WebViewDelegate mWebViewDelegate;
 
+    /**
+     * Constructor called by the API 21 version of {@link WebViewFactory} and earlier.
+     */
     public WebViewChromiumFactoryProvider() {
-        ThreadUtils.setWillOverrideUiThread();
+        initialize(WebViewDelegateFactory.createApi21CompatibilityDelegate());
+    }
 
-        if (Build.IS_DEBUGGABLE) {
+    /**
+     * Constructor called by the API 22 version of {@link WebViewFactory} and later.
+     */
+    public WebViewChromiumFactoryProvider(android.webkit.WebViewDelegate delegate) {
+        initialize(WebViewDelegateFactory.createProxyDelegate(delegate));
+    }
+
+    private void initialize(WebViewDelegate webViewDelegate) {
+        mWebViewDelegate = webViewDelegate;
+        if (isBuildDebuggable()) {
             // Suppress the StrictMode violation as this codepath is only hit on debugglable builds.
             StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
             CommandLine.initFromFile(COMMAND_LINE_FILE);
@@ -118,65 +131,62 @@
         // compiled in, we may as unconditionally enable them here.
         cl.appendSwitch("enable-dcheck");
 
-        // TODO: Remove when GL is supported by default in the upstream code.
-        if (!cl.hasSwitch("disable-webview-gl-mode")) {
-            cl.appendSwitch("testing-webview-gl-mode");
-        }
-
+        ThreadUtils.setWillOverrideUiThread();
         // Load chromium library.
-        Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "AwBrowserProcess.loadLibrary()");
         AwBrowserProcess.loadLibrary();
-        Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW);
+
+        final PackageInfo packageInfo = WebViewFactory.getLoadedPackageInfo();
+
+        // Register the handler that will append the WebView version to logcat in case of a crash.
+        AwContentsStatics.registerCrashHandler(
+                "Version " + packageInfo.versionName + " (code " + packageInfo.versionCode + ")");
+
         // Load glue-layer support library.
         System.loadLibrary("webviewchromium_plat_support");
 
-        // TODO: temporary try/catch while framework builds catch up with WebView builds.
-        // Remove this.
-        try {
-            // Use shared preference to check for package downgrade.
-            mWebViewPrefs = ActivityThread.currentApplication().getSharedPreferences(
-                                CHROMIUM_PREFS_NAME, Context.MODE_PRIVATE);
-            int lastVersion = mWebViewPrefs.getInt(VERSION_CODE_PREF, 0);
-            int currentVersion = WebViewFactory.getLoadedPackageInfo().versionCode;
-            if (lastVersion > currentVersion) {
-                // The WebView package has been downgraded since we last ran in this application.
-                // Delete the WebView data directory's contents.
-                String dataDir = PathUtils.getDataDirectory(ActivityThread.currentApplication());
-                Log.i(TAG, "WebView package downgraded from " + lastVersion + " to " + currentVersion +
-                           "; deleting contents of " + dataDir);
-                FileUtils.deleteContents(new File(dataDir));
-            }
-            if (lastVersion != currentVersion) {
-                mWebViewPrefs.edit().putInt(VERSION_CODE_PREF, currentVersion).apply();
-            }
-        } catch (NoSuchMethodError e) {
-            Log.w(TAG, "Not doing version downgrade check as framework is too old.");
+        // Use shared preference to check for package downgrade.
+        mWebViewPrefs = mWebViewDelegate.getApplication().getSharedPreferences(
+                            CHROMIUM_PREFS_NAME, Context.MODE_PRIVATE);
+        int lastVersion = mWebViewPrefs.getInt(VERSION_CODE_PREF, 0);
+        int currentVersion = packageInfo.versionCode;
+        if (lastVersion > currentVersion) {
+            // The WebView package has been downgraded since we last ran in this application.
+            // Delete the WebView data directory's contents.
+            String dataDir = PathUtils.getDataDirectory(mWebViewDelegate.getApplication());
+            Log.i(TAG, "WebView package downgraded from " + lastVersion + " to " + currentVersion +
+                       "; deleting contents of " + dataDir);
+            deleteContents(new File(dataDir));
         }
-
+        if (lastVersion != currentVersion) {
+            mWebViewPrefs.edit().putInt(VERSION_CODE_PREF, currentVersion).apply();
+        }
         // Now safe to use WebView data directory.
     }
 
+    private static boolean isBuildDebuggable() {
+        return !Build.TYPE.equals("user");
+    }
+
+    private static void deleteContents(File dir) {
+        File[] files = dir.listFiles();
+        if (files != null) {
+            for (File file : files) {
+                if (file.isDirectory()) {
+                    deleteContents(file);
+                }
+                if (!file.delete()) {
+                    Log.w(TAG, "Failed to delete " + file);
+                }
+            }
+        }
+    }
+
     private void initPlatSupportLibrary() {
         DrawGLFunctor.setChromiumAwDrawGLFunction(AwContents.getAwDrawGLFunction());
         AwContents.setAwDrawSWFunctionTable(GraphicsUtils.getDrawSWFunctionTable());
         AwContents.setAwDrawGLFunctionTable(GraphicsUtils.getDrawGLFunctionTable());
     }
 
-    private static void initTraceEvent() {
-        syncATraceState();
-        SystemProperties.addChangeCallback(new Runnable() {
-            @Override
-            public void run() {
-                syncATraceState();
-            }
-        });
-    }
-
-    private static void syncATraceState() {
-        long enabledFlags = SystemProperties.getLong("debug.atrace.tags.enableflags", 0);
-        TraceEvent.setATraceEnabled((enabledFlags & Trace.TRACE_TAG_WEBVIEW) != 0);
-    }
-
     private void ensureChromiumStartedLocked(boolean onMainThread) {
         assert Thread.holdsLock(mLock);
 
@@ -246,15 +256,23 @@
                 "/system/framework/webview/paks");
 
         // Make sure that ResourceProvider is initialized before starting the browser process.
-        setUpResources(ActivityThread.currentApplication());
+        Context context = getWrappedCurrentApplicationContext();
+        setUpResources(context);
         initPlatSupportLibrary();
-        AwBrowserProcess.start(ActivityThread.currentApplication());
+        AwBrowserProcess.start(context);
 
-        if (Build.IS_DEBUGGABLE) {
+        if (isBuildDebuggable()) {
             setWebContentsDebuggingEnabled(true);
         }
 
-        initTraceEvent();
+        TraceEvent.setATraceEnabled(mWebViewDelegate.isTraceTagEnabled());
+        mWebViewDelegate.setOnTraceEnabledChangeListener(
+                new WebViewDelegate.OnTraceEnabledChangeListener() {
+                    @Override
+                    public void onTraceEnabledChange(boolean enabled) {
+                        TraceEvent.setATraceEnabled(enabled);
+                    }
+                });
         mStarted = true;
 
         for (WeakReference<WebViewChromium> wvc : mWebViewsToStart) {
@@ -278,6 +296,10 @@
         }
     }
 
+    private Context getWrappedCurrentApplicationContext() {
+        return ResourcesContextWrapperFactory.get(mWebViewDelegate.getApplication());
+    }
+
     AwBrowserContext getBrowserContext() {
         synchronized (mLock) {
             return getBrowserContextLocked();
@@ -305,10 +327,13 @@
         mDevToolsServer.setRemoteDebuggingEnabled(enable);
     }
 
-    private void setUpResources(Context ctx) {
-        ResourceRewriter.rewriteRValues(ctx);
+    private void setUpResources(Context context) {
+        // The resources are always called com.android.webview even if the manifest has had the
+        // package renamed.
+        ResourceRewriter.rewriteRValues(
+                mWebViewDelegate.getPackageId(context.getResources(), "com.android.webview"));
 
-        AwResource.setResources(ctx.getResources());
+        AwResource.setResources(context.getResources());
         AwResource.setErrorPageResources(android.R.raw.loaderror,
                 android.R.raw.nodomain);
         AwResource.setConfigKeySystemUuidMapping(
@@ -337,7 +362,7 @@
                     @Override
                     public void setWebContentsDebuggingEnabled(boolean enable) {
                         // Web Contents debugging is always enabled on debug builds.
-                        if (!Build.IS_DEBUGGABLE) {
+                        if (!isBuildDebuggable()) {
                             WebViewChromiumFactoryProvider.this.
                                     setWebContentsDebuggingEnabled(enable);
                         }
@@ -406,7 +431,7 @@
                     // will bring up just the parts it needs to make this work on a temporary
                     // basis until Chromium is started for real. The temporary cookie manager
                     // needs the application context to have been set.
-                    ContentMain.initApplicationContext(ActivityThread.currentApplication());
+                    ContentMain.initApplicationContext(getWrappedCurrentApplicationContext());
                 }
                 mCookieManager = new CookieManagerAdapter(new AwCookieManager());
             }
@@ -449,4 +474,8 @@
         }
         return mWebViewDatabase;
     }
+
+    WebViewDelegate getWebViewDelegate() {
+        return mWebViewDelegate;
+    }
 }
diff --git a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
index 0c034b3..a08c457 100644
--- a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
+++ b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
@@ -24,7 +24,6 @@
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Picture;
-import android.net.http.ErrorStrings;
 import android.net.http.SslError;
 import android.net.Uri;
 import android.os.Build;
@@ -52,6 +51,8 @@
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
+import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate;
+
 import org.chromium.android_webview.AwContentsClient;
 import org.chromium.android_webview.AwContentsClientBridge;
 import org.chromium.android_webview.AwHttpAuthHandler;
@@ -95,9 +96,11 @@
     // TAG is chosen for consistency with classic webview tracing.
     private static final String TAG = "WebViewCallback";
     // Enables API callback tracing
-    private static final boolean TRACE = android.webkit.DebugFlags.TRACE_CALLBACK;
+    private static final boolean TRACE = false;
     // The WebView instance that this adapter is serving.
     private final WebView mWebView;
+    // The Context to use. This is different from mWebView.getContext(), which should not be used.
+    private final Context mContext;
     // The WebViewClient instance that was passed to WebView.setWebViewClient().
     private WebViewClient mWebViewClient;
     // The WebChromeClient instance that was passed to WebView.setContentViewClient().
@@ -107,6 +110,8 @@
     // The listener receiving notifications of screen updates.
     private WebView.PictureListener mPictureListener;
 
+    private WebViewDelegate mWebViewDelegate;
+
     private DownloadListener mDownloadListener;
 
     private Handler mUiThreadHandler;
@@ -120,12 +125,19 @@
      *
      * @param webView the {@link WebView} instance that this adapter is serving.
      */
-    WebViewContentsClientAdapter(WebView webView) {
-        if (webView == null) {
-            throw new IllegalArgumentException("webView can't be null");
+    WebViewContentsClientAdapter(WebView webView, Context context,
+            WebViewDelegate webViewDelegate) {
+        if (webView == null || webViewDelegate == null) {
+            throw new IllegalArgumentException("webView or delegate can't be null.");
         }
 
+        if (context == null) {
+            throw new IllegalArgumentException("context can't be null.");
+        }
+
+        mContext = context;
         mWebView = webView;
+        mWebViewDelegate = webViewDelegate;
         setWebViewClient(null);
 
         mUiThreadHandler = new Handler() {
@@ -531,7 +543,7 @@
             // ErrorStrings is @hidden, so we can't do this in AwContents.
             // Normally the net/ layer will set a valid description, but for synthesized callbacks
             // (like in the case for intercepted requests) AwContents will pass in null.
-            description = ErrorStrings.getString(errorCode, mWebView.getContext());
+            description = mWebViewDelegate.getErrorString(mContext, errorCode);
         }
         TraceEvent.begin();
         if (TRACE) Log.d(TAG, "onReceivedError=" + failingUrl);
@@ -689,7 +701,7 @@
             if (TRACE) Log.d(TAG, "onJsAlert");
             if (!mWebChromeClient.onJsAlert(mWebView, url, message, res)) {
                 new JsDialogHelper(res, JsDialogHelper.ALERT, null, message, url)
-                        .showDialog(mWebView.getContext());
+                        .showDialog(mContext);
             }
         } else {
             receiver.cancel();
@@ -706,7 +718,7 @@
             if (TRACE) Log.d(TAG, "onJsBeforeUnload");
             if (!mWebChromeClient.onJsBeforeUnload(mWebView, url, message, res)) {
                 new JsDialogHelper(res, JsDialogHelper.UNLOAD, null, message, url)
-                        .showDialog(mWebView.getContext());
+                        .showDialog(mContext);
             }
         } else {
             receiver.cancel();
@@ -723,7 +735,7 @@
             if (TRACE) Log.d(TAG, "onJsConfirm");
             if (!mWebChromeClient.onJsConfirm(mWebView, url, message, res)) {
                 new JsDialogHelper(res, JsDialogHelper.CONFIRM, null, message, url)
-                        .showDialog(mWebView.getContext());
+                        .showDialog(mContext);
             }
         } else {
             receiver.cancel();
@@ -741,7 +753,7 @@
             if (TRACE) Log.d(TAG, "onJsPrompt");
             if (!mWebChromeClient.onJsPrompt(mWebView, url, message, defaultValue, res)) {
                 new JsDialogHelper(res, JsDialogHelper.PROMPT, defaultValue, message, url)
-                        .showDialog(mWebView.getContext());
+                        .showDialog(mContext);
             }
         } else {
             receiver.cancel();
@@ -887,7 +899,7 @@
         }
         TraceEvent.begin();
         FileChooserParamsAdapter adapter = new FileChooserParamsAdapter(
-                fileChooserParams, mWebView.getContext());
+                fileChooserParams, mContext);
         if (TRACE) Log.d(TAG, "showFileChooser");
         ValueCallback<Uri[]> callbackAdapter = new ValueCallback<Uri[]>() {
             private boolean mCompleted;
@@ -907,14 +919,23 @@
                 uploadFileCallback.onReceiveValue(s);
             }
         };
+
+        // Invoke the new callback introduced in Lollipop. If the app handles
+        // it, we're done here.
         if (mWebChromeClient.onShowFileChooser(mWebView, callbackAdapter, adapter)) {
             return;
         }
-        if (mWebView.getContext().getApplicationInfo().targetSdkVersion >
-                Build.VERSION_CODES.KITKAT) {
+
+        // If the app did not handle it and we are running on Lollipop or newer, then
+        // abort.
+        if (mContext.getApplicationInfo().targetSdkVersion >=
+                Build.VERSION_CODES.LOLLIPOP) {
             uploadFileCallback.onReceiveValue(null);
             return;
         }
+
+        // Otherwise, for older apps, attempt to invoke the legacy (hidden) API for
+        // backwards compatibility.
         ValueCallback<Uri> innerCallback = new ValueCallback<Uri>() {
             private boolean mCompleted;
             @Override
@@ -986,9 +1007,8 @@
         if (result == null) {
             // The ic_media_video_poster icon is transparent so we need to draw it on a gray
             // background.
-            Context ctx = ResourcesContextWrapperFactory.get(mWebView.getContext());
             Bitmap poster = BitmapFactory.decodeResource(
-                    ctx.getResources(),
+                    mContext.getResources(),
                     R.drawable.ic_media_video_poster);
             result = Bitmap.createBitmap(poster.getWidth(), poster.getHeight(), poster.getConfig());
             result.eraseColor(Color.GRAY);
diff --git a/chromium/java/com/android/webview/chromium/WebViewDelegateFactory.java b/chromium/java/com/android/webview/chromium/WebViewDelegateFactory.java
new file mode 100644
index 0000000..bf6a06f
--- /dev/null
+++ b/chromium/java/com/android/webview/chromium/WebViewDelegateFactory.java
@@ -0,0 +1,345 @@
+package com.android.webview.chromium;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.res.AssetManager;
+import android.content.res.Resources;
+import android.graphics.Canvas;
+import android.os.Trace;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.View;
+import android.webkit.WebViewFactory;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * Factory class for {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate}s.
+ *
+ * <p>{@link WebViewDelegate com.android.webview.chromium.WebViewDelegate}s provide the same
+ * interface as {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} but without
+ * a dependency on the webkit class. Defining our own
+ * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} in frameworks/webview
+ * allows the WebView apk to be binary compatible with the API 21 version of the framework, in
+ * which {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had not yet been
+ * introduced.
+ *
+ * <p>The {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} interface and this
+ * factory class can be removed once we don't longer need to support WebView apk updates to devices
+ * running the API 21 version of the framework. At that point, we should use
+ * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} directly instead.
+ */
+class WebViewDelegateFactory {
+
+    /**
+     * Copy of {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate}'s interface.
+     * See {@link WebViewDelegateFactory} for the reasons why this copy is needed.
+     */
+    interface WebViewDelegate {
+        /** @see android.webkit.WebViewDelegate.OnTraceEnabledChangeListener */
+        interface OnTraceEnabledChangeListener {
+            void onTraceEnabledChange(boolean enabled);
+        }
+
+        /** @see android.webkit.WebViewDelegate#setOnTraceEnabledChangeListener */
+        void setOnTraceEnabledChangeListener(final OnTraceEnabledChangeListener listener);
+
+        /** @see android.webkit.WebViewDelegate#isTraceTagEnabled */
+        boolean isTraceTagEnabled();
+
+        /** @see android.webkit.WebViewDelegate#canInvokeDrawGlFunctor */
+        boolean canInvokeDrawGlFunctor(View containerView);
+
+        /** @see android.webkit.WebViewDelegate#invokeDrawGlFunctor */
+        void invokeDrawGlFunctor(View containerView, long nativeDrawGLFunctor,
+                boolean waitForCompletion);
+
+        /** @see android.webkit.WebViewDelegate#callDrawGlFunction */
+        void callDrawGlFunction(Canvas canvas, long nativeDrawGLFunctor);
+
+        /** @see android.webkit.WebViewDelegate#detachDrawGlFunctor */
+        void detachDrawGlFunctor(View containerView, long nativeDrawGLFunctor);
+
+        /** @see android.webkit.WebViewDelegate#getPackageId */
+        int getPackageId(Resources resources, String packageName);
+
+        /** @see android.webkit.WebViewDelegate#getApplication */
+        Application getApplication();
+
+        /** @see android.webkit.WebViewDelegate#getErrorString */
+        String getErrorString(Context context, int errorCode);
+
+        /** @see android.webkit.WebViewDelegate#addWebViewAssetPath */
+        void addWebViewAssetPath(Context context);
+    }
+
+    /**
+     * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} that proxies
+     * requests to the given {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate}.
+     *
+     * @return the created delegate
+     */
+    static WebViewDelegate createProxyDelegate(android.webkit.WebViewDelegate delegate) {
+        return new ProxyDelegate(delegate);
+    }
+
+    /**
+     * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} compatible
+     * with the API 21 version of the framework in which
+     * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had not yet been
+     * introduced.
+     *
+     * @return the created delegate
+     */
+    static WebViewDelegate createApi21CompatibilityDelegate() {
+        return new Api21CompatibilityDelegate();
+    }
+
+    /**
+     * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} that proxies requests
+     * to a {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate}.
+     */
+    private static class ProxyDelegate implements WebViewDelegate {
+
+        android.webkit.WebViewDelegate delegate;
+
+        ProxyDelegate(android.webkit.WebViewDelegate delegate) {
+            this.delegate = delegate;
+        }
+
+        @Override
+        public void setOnTraceEnabledChangeListener(final OnTraceEnabledChangeListener listener) {
+            delegate.setOnTraceEnabledChangeListener(
+                    new android.webkit.WebViewDelegate.OnTraceEnabledChangeListener() {
+                        @Override
+                        public void onTraceEnabledChange(boolean enabled) {
+                            listener.onTraceEnabledChange(enabled);
+                            ;
+                        }
+                    });
+        }
+
+        @Override
+        public boolean isTraceTagEnabled() {
+            return delegate.isTraceTagEnabled();
+        }
+
+        @Override
+        public boolean canInvokeDrawGlFunctor(View containerView) {
+            return delegate.canInvokeDrawGlFunctor(containerView);
+        }
+
+        @Override
+        public void invokeDrawGlFunctor(View containerView, long nativeDrawGLFunctor,
+                boolean waitForCompletion) {
+            delegate.invokeDrawGlFunctor(containerView, nativeDrawGLFunctor, waitForCompletion);
+        }
+
+        @Override
+        public void callDrawGlFunction(Canvas canvas, long nativeDrawGLFunctor) {
+            delegate.callDrawGlFunction(canvas, nativeDrawGLFunctor);
+        }
+
+        @Override
+        public void detachDrawGlFunctor(View containerView, long nativeDrawGLFunctor) {
+            delegate.detachDrawGlFunctor(containerView, nativeDrawGLFunctor);
+        }
+
+        @Override
+        public int getPackageId(Resources resources, String packageName) {
+            return delegate.getPackageId(resources, packageName);
+        }
+
+        @Override
+        public Application getApplication() {
+            return delegate.getApplication();
+        }
+
+        @Override
+        public String getErrorString(Context context, int errorCode) {
+            return delegate.getErrorString(context, errorCode);
+        }
+
+        @Override
+        public void addWebViewAssetPath(Context context) {
+            delegate.addWebViewAssetPath(context);
+        }
+    }
+
+    /**
+     * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} compatible with the
+     * API 21 version of the framework in which
+     * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had not yet been
+     * introduced.
+     *
+     * <p>This class implements the
+     * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} functionality by using
+     * reflection to call into hidden frameworks APIs released in the API-21 version of the
+     * framework.
+     */
+    private static class Api21CompatibilityDelegate implements WebViewDelegate {
+        /** Copy of Trace.TRACE_TAG_WEBVIEW */
+        private final static long TRACE_TAG_WEBVIEW = 1L << 4;
+
+        /** Hidden APIs released in the API 21 version of the framework */
+        private final Method mIsTagEnabledMethod;
+        private final Method mAddChangeCallbackMethod;
+        private final Method mGetViewRootImplMethod;
+        private final Method mInvokeFunctorMethod;
+        private final Method mCallDrawGLFunctionMethod;
+        private final Method mDetachFunctorMethod;
+        private final Method mGetAssignedPackageIdentifiersMethod;
+        private final Method mAddAssetPathMethod;
+        private final Method mCurrentApplicationMethod;
+        private final Method mGetStringMethod;
+        private final Method mGetLoadedPackageInfoMethod;
+
+        Api21CompatibilityDelegate() {
+            try {
+                // Important: This reflection essentially defines a snapshot of some hidden APIs
+                // at version 21 of the framework for compatibility reasons, and the reflection
+                // should not be changed even if those hidden APIs change in future releases.
+                mIsTagEnabledMethod = Trace.class.getMethod("isTagEnabled", long.class);
+                mAddChangeCallbackMethod = Class.forName("android.os.SystemProperties")
+                        .getMethod("addChangeCallback", Runnable.class);
+                mGetViewRootImplMethod = View.class.getMethod("getViewRootImpl");
+                mInvokeFunctorMethod = Class.forName("android.view.ViewRootImpl")
+                        .getMethod("invokeFunctor", long.class, boolean.class);
+                mDetachFunctorMethod = Class.forName("android.view.ViewRootImpl")
+                        .getMethod("detachFunctor", long.class);
+                mCallDrawGLFunctionMethod = Class.forName("android.view.HardwareCanvas")
+                        .getMethod("callDrawGLFunction", long.class);
+                mGetAssignedPackageIdentifiersMethod = AssetManager.class.getMethod(
+                        "getAssignedPackageIdentifiers");
+                mAddAssetPathMethod = AssetManager.class.getMethod(
+                        "addAssetPath", String.class);
+                mCurrentApplicationMethod = Class.forName("android.app.ActivityThread")
+                        .getMethod("currentApplication");
+                mGetStringMethod = Class.forName("android.net.http.ErrorStrings")
+                        .getMethod("getString", int.class, Context.class);
+                mGetLoadedPackageInfoMethod = Class.forName("android.webkit.WebViewFactory")
+                        .getMethod("getLoadedPackageInfo");
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public void setOnTraceEnabledChangeListener(final OnTraceEnabledChangeListener listener) {
+            try {
+                mAddChangeCallbackMethod.invoke(null, new Runnable() {
+                    @Override
+                    public void run() {
+                        listener.onTraceEnabledChange(isTraceTagEnabled());
+                    }
+                });
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public boolean isTraceTagEnabled() {
+            try {
+                return ((Boolean) mIsTagEnabledMethod.invoke(null, TRACE_TAG_WEBVIEW));
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public boolean canInvokeDrawGlFunctor(View containerView) {
+            try {
+                Object viewRootImpl = mGetViewRootImplMethod.invoke(containerView);
+                 // viewRootImpl can be null during teardown when window is leaked.
+                return viewRootImpl != null;
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public void invokeDrawGlFunctor(View containerView, long nativeDrawGLFunctor,
+                boolean waitForCompletion) {
+            try {
+                Object viewRootImpl = mGetViewRootImplMethod.invoke(containerView);
+                if (viewRootImpl != null) {
+                    mInvokeFunctorMethod.invoke(viewRootImpl, nativeDrawGLFunctor, waitForCompletion);
+                }
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public void callDrawGlFunction(Canvas canvas, long nativeDrawGLFunctor) {
+            try {
+                mCallDrawGLFunctionMethod.invoke(canvas, nativeDrawGLFunctor);
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public void detachDrawGlFunctor(View containerView, long nativeDrawGLFunctor) {
+            try {
+                Object viewRootImpl = mGetViewRootImplMethod.invoke(containerView);
+                if (viewRootImpl != null) {
+                    mDetachFunctorMethod.invoke(viewRootImpl, nativeDrawGLFunctor);
+                }
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public int getPackageId(Resources resources, String packageName) {
+            try {
+                SparseArray packageIdentifiers =
+                        (SparseArray) mGetAssignedPackageIdentifiersMethod.invoke(
+                                resources.getAssets());
+                for (int i = 0; i < packageIdentifiers.size(); i++) {
+                    final String name = (String) packageIdentifiers.valueAt(i);
+
+                    if (packageName.equals(name)) {
+                        return packageIdentifiers.keyAt(i);
+                    }
+                }
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+            throw new RuntimeException("Package not found: " + packageName);
+        }
+
+        @Override
+        public Application getApplication() {
+            try {
+                return (Application) mCurrentApplicationMethod.invoke(null);
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public String getErrorString(Context context, int errorCode) {
+            try {
+                return (String) mGetStringMethod.invoke(null, errorCode, context);
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+
+        @Override
+        public void addWebViewAssetPath(Context context) {
+            try {
+                PackageInfo info = (PackageInfo) mGetLoadedPackageInfoMethod.invoke(null);
+                mAddAssetPathMethod.invoke(context.getAssets(), info.applicationInfo.sourceDir);
+            } catch (Exception e) {
+                throw new RuntimeException("Invalid reflection", e);
+            }
+        }
+    }
+}
+
diff --git a/chromium/listing/res/values-af/strings.xml b/chromium/listing/res/values-af/strings.xml
new file mode 100644
index 0000000..4be8a39
--- /dev/null
+++ b/chromium/listing/res/values-af/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android Stelselwebaansig"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webinhoud vir programme, aangedryf deur Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webaansig is \'n stelselkomponent wat deur Chrome aangedryf word wat Android-programme toelaat om webinhoud te wys. Hierdie komponent is vooraf in jou toestel geïnstalleer en behoort bygewerk gehou te word om te verseker dat jy die jongste sekuriteitopdaterings en ander foutoplossings het."</string>
+</resources>
diff --git a/chromium/listing/res/values-am/strings.xml b/chromium/listing/res/values-am/strings.xml
new file mode 100644
index 0000000..4194a4d
--- /dev/null
+++ b/chromium/listing/res/values-am/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"የAndroid ስርዓት ድር እይታ"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"የድር ይዘት ለመተግበሪያዎች፣ በChrome የተጎላበተ"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android የድር እይታ የAndroid መተግበሪያዎች የድር ይዘትን እንዲያሳዩ የሚያስችል በChrome የተጎላበተ የስርዓት አካል ነው። ይህ አካል በመሣሪያዎ ላይ ቅድሚያ የተጫነ እና የቅርብ ጊዜዎቹን የደህንነት ዝማኔዎች እና የሳንካ ጥገናዎች እንዳሉዎት ለማረጋገጥ መዘመን አለበት።"</string>
+</resources>
diff --git a/chromium/listing/res/values-ar/strings.xml b/chromium/listing/res/values-ar/strings.xml
new file mode 100644
index 0000000..f58c131
--- /dev/null
+++ b/chromium/listing/res/values-ar/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"‏محتوى الويب للتطبيقات، بإدارة من Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"‏يعد Android Webview مكونًا من مكونات النظام التي يديرها Chrome ويتيح لتطبيقات Android عرض محتوى الويب. يتم تثبيت هذا المكوِّن مسبقًا على جهازك ويجب تحديثه أولاً بأول لضمان توفر آخر تحديثات الأمان وإصلاح الأخطاء الأخرى."</string>
+</resources>
diff --git a/chromium/listing/res/values-bg/strings.xml b/chromium/listing/res/values-bg/strings.xml
new file mode 100644
index 0000000..3349fc1
--- /dev/null
+++ b/chromium/listing/res/values-bg/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView за систем. на Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Предоставено от Chrome уеб съдържание за приложения"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Webview за Android е системен компонент, предоставен от Chrome, който разрешава на приложенията за Android да показват уеб съдържание. Той е предварително инсталиран на устройството и трябва да се поддържа актуален, за да се гарантира, че имате последните актуализации за сигурност и са отстранени други програмни грешки."</string>
+</resources>
diff --git a/chromium/listing/res/values-bn-rBD/strings.xml b/chromium/listing/res/values-bn-rBD/strings.xml
new file mode 100644
index 0000000..b8b4505
--- /dev/null
+++ b/chromium/listing/res/values-bn-rBD/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android সিস্টেম WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome কর্তৃক চালিত, অ্যাপ্লিকেশানগুলির জন্য ওয়েব সামগ্রী"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview হল Chrome কর্তৃক চালিত একটি সিস্টেম উপাদান যা Android অ্যাপ্লিকেশানগুলিকে ওয়েব সামগ্রীগুলির প্রদর্শন করতে মঞ্জুরি প্রদান করে৷ এই উপাদানটি আপনার ডিভাইসে আগে থেকেই ইনস্টল করা থাকে এবং আপনার কাছে আধুনিক সুরক্ষা আপডেট এবং অন্যান্য ত্রুটি সংশোধনগুলি আছে কিনা তা নিশ্চিত করতে সেটিকে আপ টু ডেট করে রাখা উচিৎ৷"</string>
+</resources>
diff --git a/chromium/listing/res/values-ca/strings.xml b/chromium/listing/res/values-ca/strings.xml
new file mode 100644
index 0000000..20c02c6
--- /dev/null
+++ b/chromium/listing/res/values-ca/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView del sistema Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Contingut web per a aplicacions, amb la tecnologia de Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"WebView per a Android és un component del sistema que incorpora la tecnologia de Chrome que permet que a les aplicacions Android es mostri contingut web. Aquest component està preinstal·lat al dispositiu i s\'ha de mantenir actualitzat per garantir que tinguis les darreres actualitzacions de seguretat i altres correccions d\'errors."</string>
+</resources>
diff --git a/chromium/listing/res/values-cs/strings.xml b/chromium/listing/res/values-cs/strings.xml
new file mode 100644
index 0000000..55fcbea
--- /dev/null
+++ b/chromium/listing/res/values-cs/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webový obsah pro aplikace, využívá technologii Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview je součást systému využívající technologii Chrome, která aplikacím v systému Android umožňuje zobrazovat webový obsah. Tato součást je v zařízení předinstalována a měla by být pravidelně aktualizována, abyste měli nejnovější aktualizace zabezpečení a jiné opravy chyb."</string>
+</resources>
diff --git a/chromium/listing/res/values-da/strings.xml b/chromium/listing/res/values-da/strings.xml
new file mode 100644
index 0000000..6c9d8ce
--- /dev/null
+++ b/chromium/listing/res/values-da/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView til Android-systemet"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webindhold til apps, leveret af Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebView er en systemkomponent, der leveres af Chrome, som gør det muligt for Android-apps at vise webindhold. Denne komponent er forudinstalleret på enheden og bør holdes opdateret for at sikre, at du har de nyeste sikkerhedsopdateringer og andre fejlrettelser."</string>
+</resources>
diff --git a/chromium/listing/res/values-de/strings.xml b/chromium/listing/res/values-de/strings.xml
new file mode 100644
index 0000000..7f1b91b
--- /dev/null
+++ b/chromium/listing/res/values-de/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webinhalte für Apps, von Chrome bereitgestellt"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebView ist eine von Chrome bereitgestellte Systemkomponente, die Android-Apps die Anzeige von Webinhalten ermöglicht. Diese Komponente ist auf Ihrem Gerät vorinstalliert und sollte regelmäßig aktualisiert werden, damit Ihnen stets die neuesten Sicherheitsupdates und andere Fehlerbehebungen zur Verfügung stehen."</string>
+</resources>
diff --git a/chromium/listing/res/values-el/strings.xml b/chromium/listing/res/values-el/strings.xml
new file mode 100644
index 0000000..bd5ffe7
--- /dev/null
+++ b/chromium/listing/res/values-el/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Περιεχόμενο ιστού για εφαρμογές, με την υποστήριξη του Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Το Android WebView είναι ένα συστατικό συστήματος με την υποστήριξη του Chrome που επιτρέπει στις εφαρμογές Android να εμφανίζουν το περιεχόμενο ιστού. Αυτό το συστατικό είναι προ-εγκατεστημένο στη συσκευή σας και θα πρέπει να διατηρείται ενημερωμένο για να εξασφαλίσει ότι διαθέτετε τις πιο πρόσφατες ενημερώσεις ασφαλείας και άλλες επιδιορθώσεις σφαλμάτων."</string>
+</resources>
diff --git a/chromium/listing/res/values-en-rAU/strings.xml b/chromium/listing/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..5a84206
--- /dev/null
+++ b/chromium/listing/res/values-en-rAU/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Web content for apps, powered by Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview is a system component powered by Chrome that allows Android apps to display web content. This component is pre-installed on your device and should be kept up to date to ensure that you have the latest security updates and other bug fixes."</string>
+</resources>
diff --git a/chromium/listing/res/values-en-rGB/strings.xml b/chromium/listing/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..5a84206
--- /dev/null
+++ b/chromium/listing/res/values-en-rGB/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Web content for apps, powered by Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview is a system component powered by Chrome that allows Android apps to display web content. This component is pre-installed on your device and should be kept up to date to ensure that you have the latest security updates and other bug fixes."</string>
+</resources>
diff --git a/chromium/listing/res/values-en-rIN/strings.xml b/chromium/listing/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..5a84206
--- /dev/null
+++ b/chromium/listing/res/values-en-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Web content for apps, powered by Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview is a system component powered by Chrome that allows Android apps to display web content. This component is pre-installed on your device and should be kept up to date to ensure that you have the latest security updates and other bug fixes."</string>
+</resources>
diff --git a/chromium/listing/res/values-es-rUS/strings.xml b/chromium/listing/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..cf6de04
--- /dev/null
+++ b/chromium/listing/res/values-es-rUS/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView del sistema Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Contenido web para aplicaciones, con tecnología de Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Webview de Android es un componente del sistema con tecnología de Chrome que permite a las aplicaciones de Android mostrar contenido web. Este componente está preinstalado en el dispositivo, y debes actualizarlo para asegurarte de tener las actualizaciones de seguridad y las correcciones de errores más recientes."</string>
+</resources>
diff --git a/chromium/listing/res/values-es/strings.xml b/chromium/listing/res/values-es/strings.xml
new file mode 100644
index 0000000..066f552
--- /dev/null
+++ b/chromium/listing/res/values-es/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView del sistema Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Contenido web para aplicaciones, con tecnología de Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Webview es un componente del sistema Android con tecnología de Chrome que permite que las aplicaciones de Android muestren contenido web. Este componente está preinstalado en el dispositivo y debes actualizarlo para asegurarte de tener las actualizaciones de seguridad y las correcciones de errores más recientes."</string>
+</resources>
diff --git a/chromium/listing/res/values-et-rEE/strings.xml b/chromium/listing/res/values-et-rEE/strings.xml
new file mode 100644
index 0000000..4e7583b
--- /dev/null
+++ b/chromium/listing/res/values-et-rEE/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Androidi süsteemi WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Veebisisu rakendustele – töötab Chrome\'i jõul"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview on Chrome\'i jõul töötav süsteemikomponent, mis võimaldab Androidi rakendustel veebisisu kuvada. Komponent on seadmesse eelinstallitud ja see tuleks hoida ajakohasena tagamaks, et kasutate uusimaid turvavärskendusi ja muid veaparandusi."</string>
+</resources>
diff --git a/chromium/listing/res/values-eu-rES/strings.xml b/chromium/listing/res/values-eu-rES/strings.xml
new file mode 100644
index 0000000..c71ae18
--- /dev/null
+++ b/chromium/listing/res/values-eu-rES/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android sistemaren Web-ikuspegia"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Aplikazioetarako web-edukia, Chrome teknologiarekin"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Web-ikuspegia Chrome-ren teknologia darabilen sistemaren osagaia da eta web-edukia bistaratzea baimentzen die Android aplikazioei. Osagaia instalatuta dator gailuan eta eguneratuta izan behar da azken segurtasun-eguneratzeak eta bestelako konponketak eginda dituzula ziurtatzeko."</string>
+</resources>
diff --git a/chromium/listing/res/values-fa/strings.xml b/chromium/listing/res/values-fa/strings.xml
new file mode 100644
index 0000000..2ad7209
--- /dev/null
+++ b/chromium/listing/res/values-fa/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"‏محتوای وب برای برنامه‌ها، ارائه شده توسط Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"‏Android Webview یک جزء سیستم طراحی شده توسط Chrome است که به برنامه‌های Android امکان می‌دهد محتوای وب را نمایش دهند. این جزء در دستگاه شما از پیش نصب شده است و باید آن را به روز نگه دارید تا این اطمینان حاصل شود که آخرین به‌روزرسانی‌های امنیتی و رفع اشکالات دیگر را در اختیار دارید."</string>
+</resources>
diff --git a/chromium/listing/res/values-fi/strings.xml b/chromium/listing/res/values-fi/strings.xml
new file mode 100644
index 0000000..311e6e5
--- /dev/null
+++ b/chromium/listing/res/values-fi/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android-järjestelmän WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Verkkosisältöä sovelluksissa Chromen avulla"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview on Chromea käyttävä järjestelmäkomponentti, jonka avulla Android-sovellukset voivat näyttää verkkosisältöä. Komponentti on esiasennettu laitteeseesi ja se on pidettävä ajan tasalla sen varmistamiseksi, että saat uusimmat tietoturvapäivitykset ja muut korjaukset."</string>
+</resources>
diff --git a/chromium/listing/res/values-fr-rCA/strings.xml b/chromium/listing/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..2d31f01
--- /dev/null
+++ b/chromium/listing/res/values-fr-rCA/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Des contenus Web proposés par Chrome pour les applications"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview est un composant système proposé par Chrome qui permet aux applications Android d\'afficher des contenus Web. Ce composant est préinstallé sur votre appareil. Vous devez le tenir à jour afin de disposer des dernières mises à jour de sécurité et d\'autres corrections de bogues."</string>
+</resources>
diff --git a/chromium/listing/res/values-fr/strings.xml b/chromium/listing/res/values-fr/strings.xml
new file mode 100644
index 0000000..ce870a3
--- /dev/null
+++ b/chromium/listing/res/values-fr/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Des contenus Web proposés par Chrome pour les applications"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview est un composant système proposé par Chrome qui permet aux applications Android d\'afficher des contenus Web. Ce composant est préinstallé sur votre appareil. Vous devez le tenir à jour afin de disposer des dernières mises à jour de sécurité et d\'autres corrections de bugs."</string>
+</resources>
diff --git a/chromium/listing/res/values-gl-rES/strings.xml b/chromium/listing/res/values-gl-rES/strings.xml
new file mode 100644
index 0000000..703ff13
--- /dev/null
+++ b/chromium/listing/res/values-gl-rES/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Sistema de Android WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Contido da web para aplicacións con tecnoloxía de Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview é un compoñente do sistema con tecnoloxía de Chrome que permite ás aplicacións de Android visualizar contido web. Este compoñente está preinstalado no teu dispositivo e debe manterse actualizado para garantir que tes as últimas actualizacións de seguridade e outras correccións de erros."</string>
+</resources>
diff --git a/chromium/listing/res/values-gu-rIN/strings.xml b/chromium/listing/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..ac68f3a
--- /dev/null
+++ b/chromium/listing/res/values-gu-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android સિસ્ટમ WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome દ્વારા સંચાલિત એપ્લિકેશન્સ માટે વેબ સામગ્રી"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview એ Chrome દ્વારા સંચાલિત એક સિસ્ટમ ઘટક છે જે Android એપ્લિકેશન્સને વેબ સામગ્રી પ્રદર્શિત કરવાની મંજૂરી આપે છે. તમારા ઉપકરણ પર આ ઘટક પૂર્વમાં સ્થાપિત છે અને તમારી પાસે નવીનતમ સુરક્ષા અપડેટ્સ અને અન્ય બગ ફિક્સેસ છે તેની ખાતરી કરવા માટે અપ ટૂ ડેટ રાખવું જોઈએ."</string>
+</resources>
diff --git a/chromium/listing/res/values-hi/strings.xml b/chromium/listing/res/values-hi/strings.xml
new file mode 100644
index 0000000..86f0130
--- /dev/null
+++ b/chromium/listing/res/values-hi/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"ऐप्स की वेब सामग्री, Chrome द्वारा पावर्ड"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview, Chrome द्वारा पावर्ड ऐसा सिस्टम घटक है जो Android ऐप्स को वेब सामग्री दिखाने देता है. यह घटक आपके डिवाइस पर पहले से इंस्टॉल है और उसे अद्यतित रखा जाना चाहिए ताकि यह सुनिश्चित हो सके कि आपके पास नवीनतम सुरक्षा अपडेट और बग समाधान हैं."</string>
+</resources>
diff --git a/chromium/listing/res/values-hr/strings.xml b/chromium/listing/res/values-hr/strings.xml
new file mode 100644
index 0000000..871a07c
--- /dev/null
+++ b/chromium/listing/res/values-hr/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Web-sadržaj za aplikacije, omogućuje Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview komponenta je sustava koju omogućuje Chrome, a pomoću nje Androidove aplikacije prikazuju web-sadržaj. Ta je komponenta unaprijed instalirana na uređaju i trebala bi se redovito ažurirati kako biste dobivali najnovija sigurnosna ažuriranja i ostale popravke programskih pogrešaka."</string>
+</resources>
diff --git a/chromium/listing/res/values-hu/strings.xml b/chromium/listing/res/values-hu/strings.xml
new file mode 100644
index 0000000..a2f0f98
--- /dev/null
+++ b/chromium/listing/res/values-hu/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Internetes tartalom alkalmazásoknak, a Chrome erejével"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Az Android Webview egy rendszerösszetevő, amely a Chrome-ot használja, és segítségével az androidos alkalmazások megjeleníthetik az internetes tartalmakat. Ez az összetevő előzetesen telepítve van az eszközön, és mindig naprakészen kell tartani a legfrissebb biztonsági frissítések és egyéb programhiba-javítások beszerzése érdekében."</string>
+</resources>
diff --git a/chromium/listing/res/values-hy-rAM/strings.xml b/chromium/listing/res/values-hy-rAM/strings.xml
new file mode 100644
index 0000000..c5269fc
--- /dev/null
+++ b/chromium/listing/res/values-hy-rAM/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Վեբ բովանդակություն հավելվածների համար՝ Chrome-ի կողմից"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview-ն համակարգի բաղադրիչ է Chrome-ի կողմից, որը թույլ է տալիս, որպեսզի Android հավելվածները ցուցադրեն վեբ բովանդակություն: Այս բաղադրիչը նախատեղադրված է ձեր սարքում և կթարմացվի ամենավերջին տարբերակով՝ համոզվելու համար, որ դուք ունեք անվտանգության վերջին թարմացումները և սխալների շտկումը:"</string>
+</resources>
diff --git a/chromium/listing/res/values-in/strings.xml b/chromium/listing/res/values-in/strings.xml
new file mode 100644
index 0000000..615e046
--- /dev/null
+++ b/chromium/listing/res/values-in/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"TampilanWeb Sistem Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Konten web untuk aplikasi, diberdayakan oleh Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Tampilan web Android adalah komponen sistem yang diberdayakan oleh Chrome agar aplikasi Andorid dapat menampilkan konten web. Komponen ini di-prapasang pada perangkat dan sebaiknya terus diperbarui untuk memastikan Anda memiliki pembaruan keamanan terbaru dan perbaikan bug lainnya."</string>
+</resources>
diff --git a/chromium/listing/res/values-is-rIS/strings.xml b/chromium/listing/res/values-is-rIS/strings.xml
new file mode 100644
index 0000000..2790d65
--- /dev/null
+++ b/chromium/listing/res/values-is-rIS/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Vefefni fyrir forrit, knúið af Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview er kerfisíhlutur knúinn af Chrome sem gerir Android forritum kleift að birta vefefni. Íhluturinn er foruppsettur í tækinu og þú ættir að halda honum uppfærðum til að tryggja að nýjustu öryggisuppfærslur og aðrar villuleiðréttingar séu til staðar."</string>
+</resources>
diff --git a/chromium/listing/res/values-it/strings.xml b/chromium/listing/res/values-it/strings.xml
new file mode 100644
index 0000000..9c5f556
--- /dev/null
+++ b/chromium/listing/res/values-it/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Contenuti web per le app, con tecnologia Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview è un componente di sistema con tecnologia Chrome che consente alle app Android di mostrare contenuti web. Questo componente è preinstallato sul dispositivo e deve essere costantemente aggiornato per disporre degli aggiornamenti della sicurezza più recenti e altre correzioni di bug."</string>
+</resources>
diff --git a/chromium/listing/res/values-iw/strings.xml b/chromium/listing/res/values-iw/strings.xml
new file mode 100644
index 0000000..6d7ee16
--- /dev/null
+++ b/chromium/listing/res/values-iw/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"‏WebView של מערכת Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"‏תוכן אינטרנט עבור אפליקציות, בהפעלת Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"‏Android Webview הוא רכיב מערכת המופעל על ידי Chrome שמאפשר לאפליקציות Android להציג תוכן אינטרנט. רכיב זה מותקן-מראש במכשיר שלך ועליך לוודא שהוא מעודכן כדי להבטיח שיש לך את עדכוני האבטחה העדכניים ביותר ותיקוני באגים עדכניים אחרים."</string>
+</resources>
diff --git a/chromium/listing/res/values-ja/strings.xml b/chromium/listing/res/values-ja/strings.xml
new file mode 100644
index 0000000..4ee0e7a
--- /dev/null
+++ b/chromium/listing/res/values-ja/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"AndroidシステムのWebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chromeが搭載されたアプリ用ウェブコンテンツ"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebviewはChromeを搭載したシステムコンポーネントで、Androidアプリをウェブコンテンツに表示することができます。このコンポーネントはお使いの端末にプリインストールされており、最新のセキュリティアップデートやその他のバグ修正を取得できるよう常に最新に維持する必要があります。"</string>
+</resources>
diff --git a/chromium/listing/res/values-ka-rGE/strings.xml b/chromium/listing/res/values-ka-rGE/strings.xml
new file mode 100644
index 0000000..1ecabe0
--- /dev/null
+++ b/chromium/listing/res/values-ka-rGE/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"ვებ-ქონთენთი აპებისთვის, Chrome-ის მხარდაჭერით"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview სისტემური კომპონენტია, Chrome-ის მიერ მხარდაჭერილი, რომელიც Android-ის აპებს ვებ-ქონთენთის ჩვენების საშუალებას აძლევს. ეს კომპონენტი თქვენს მოწყობილობაზე წინასწარ არის დაყენებული და განახლებული უნდა იყოს, რათა მუდამ შეძლოთ უახლესი უსაფრთხოების განახლებებითა და ხარვეზების სხვა შესწორებებით სარგებლობა."</string>
+</resources>
diff --git a/chromium/listing/res/values-kk-rKZ/strings.xml b/chromium/listing/res/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..7810222
--- /dev/null
+++ b/chromium/listing/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Қолданбаларға арналған веб-мазмұн, Chrome браузеріне негізделген"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview – Android қолданбаларына веб-мазмұнды көрсетуге мүмкіндік беретін Chrome браузеріне негізделген жүйелік құрамдас. Бұл құрамдас құрылғыңызда алдын ала орнатылған және соңғы қауіпсіздік жаңартуларын және басқа қателерді түзетулерді алып отыруды қамтамасыз ету үшін оны жаңартылған күйде сақтау керек."</string>
+</resources>
diff --git a/chromium/listing/res/values-km-rKH/strings.xml b/chromium/listing/res/values-km-rKH/strings.xml
new file mode 100644
index 0000000..dea2a4b
--- /dev/null
+++ b/chromium/listing/res/values-km-rKH/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView ប្រព័ន្ធ Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"មាតិកា​បណ្ដាញ​សម្រាប់​កម្មវិធី ដំណើរការ​ដោយ Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview គឺជា​សមាសភាគ​ប្រព័ន្ធ​ដំណើរការ​ដោយ Chrome ដែល​អនុញ្ញាត​ឲ្យ​កម្មវិធី Android បង្ហាញ​មាតិកា​បណ្ដាញ។ សមាសភាគ​នេះ​ត្រូវ​បាន​ដំឡើង​ជាមុន​នៅ​លើ​ឧបករណ៍​របស់​អ្នក ហើយ​វា​គួរ​ត្រូវ​បាន​ធ្វើឲ្យ​ទាន់សម័យ​ជា​បន្តបន្ទាប់ ដើម្បី​ធានា​ថា​អ្នក​មាន​បច្ចុប្បន្នភាព​សុវត្ថិភាព​ចុងក្រោយ​បំផុត និង​ការ​កែ​កំហុស​ផ្សេងទៀត។"</string>
+</resources>
diff --git a/chromium/listing/res/values-kn-rIN/strings.xml b/chromium/listing/res/values-kn-rIN/strings.xml
new file mode 100644
index 0000000..dc9db21
--- /dev/null
+++ b/chromium/listing/res/values-kn-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android ಸಿಸ್ಟಂ ವೆಬ್‌ವೀಕ್ಷಣೆ"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome ಸಂಚಾಲಿತ, ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗಾಗಿ ವೆಬ್ ವಿಷಯ"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android ವೆಬ್‌ವೀಕ್ಷಣೆಯು Android ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ವೆಬ್ ವಿಷಯವನ್ನು ಪ್ರದರ್ಶೀಸಲು ಅನುಮತಿಸುವ Chrome ನಿಂದ ಸಂಚಾಲಿತವಾಗಿರುವ ಸಿಸ್ಟಂನ ಅಂಶವಾಗಿದೆ. ಈ ಅಂಶವನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಮೊದಲೇ ಸ್ಥಾಪಿಸಲಾಗಿದ್ದು ಮತ್ತು ನೀವು ಇತ್ತೀಚಿನ ಭದ್ರತೆ ನವೀಕರಣಗಳು ಹಾಗೂ ಇತರೆ ದೋಷ ಪರಿಹಾರಗಳನ್ನು ಹೊಂದಿರುವಿರಿ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಲು ನವಿಕೃತವಾಗಿರಿಸಬೇಕಾಗಿದೆ."</string>
+</resources>
diff --git a/chromium/listing/res/values-ko/strings.xml b/chromium/listing/res/values-ko/strings.xml
new file mode 100644
index 0000000..7beea07
--- /dev/null
+++ b/chromium/listing/res/values-ko/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android 시스템 WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"앱을 위한 웹 콘텐츠(Chrome 제공)"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview는 Android 앱이 웹 콘텐츠를 표시할 수 있도록 Chrome에서 제공하는 시스템 구성요소입니다. 이 구성요소는 기기에 사전 설치되어 있으며, 최신 보안 업데이트 및 기타 버그 수정을 위해 최신 상태로 유지해야 합니다."</string>
+</resources>
diff --git a/chromium/listing/res/values-ky-rKG/strings.xml b/chromium/listing/res/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..67eb4f3
--- /dev/null
+++ b/chromium/listing/res/values-ky-rKG/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android тутумдук WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome тарабынан чыгарылган колдонмолор үчүн желе мазмуну"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebView Android колдонмолоруна желе мазмунун көрсөтүүгө мүмкүндүк берген Chrome\'дун тутумдук курамдык бөлүгү. Бул курамдык бөлүк түзмөгүңүздө күн мурунтан орнотулган жана эң акыркы коопсуздук жаңыртуулары жана мүчүлүштүктөрдү оңдоо каражаттары менен камсыз кылуу үчүн мезгил-мезгили менен жаңыртылып турушу керек."</string>
+</resources>
diff --git a/chromium/listing/res/values-lo-rLA/strings.xml b/chromium/listing/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..2e638db
--- /dev/null
+++ b/chromium/listing/res/values-lo-rLA/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"​ເນື້ອ​ຫາ​ເວັບ​ສຳ​ລັບ​ແອັບຯ, ຂັບ​ເຄື່ອນ​ໂດຍ Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview ​ແມ່ນ​ສ່ວນ​ປະ​ກອບ​ຂອງ​ລະ​ບົບ​ທີ່​ຂັບ​ເຄື່ອນໂດຍ Chrome ​ເຊິ່ງ​ອະ​ນຸ​ຍາດ​ໃຫ້​ແອັບຯ Android ​ສະ​ແດງ​ເນື້ອ​ຫາ​ຈາກ​ເວັບ​ໄດ້. ​ສ່ວນ​ປະ​ກອບ​ນີ້​ແມ່ນ​ຖືກ​ຕິດ​ຕັ້ງ​ມາ​ພ້ອມ​ອຸ​ປະ​ກອນ​ຂອງ​ທ່ານ ແລະ ຄວນ​ອັບ​ເດດ​ສະ​ເໝີ​ເພື່ອ​ໝັ້ນ​ໃຈ​ວ່າ​ທ່ານ​ໄດ້​ຮັບ​ການ​ອັບ​ເດດ​ດ້ານ​ຄວາມ​ປອດ​ໄພ ແລະ ແກ້​ໄຂ​ຂໍ້​ຜິດ​ພາດ​ຢູ່​ເລື້ອຍໆ."</string>
+</resources>
diff --git a/chromium/listing/res/values-lt/strings.xml b/chromium/listing/res/values-lt/strings.xml
new file mode 100644
index 0000000..caa1b0e
--- /dev/null
+++ b/chromium/listing/res/values-lt/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"„Android“ sistema „WebView“"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Žiniatinklio turinys programoms. Jį teikia „Chrome“"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"„Android Webview“ yra sistemos komponentas, kurį teikia „Chrome“. Jį naudojant „Android“ programose gali būti rodomas žiniatinklio turinys. Šis komponentas iš anksto įdiegiamas jūsų įrenginyje ir turi būti nuolat atnaujinamas, kad būtumėte tikri, jog turite naujausius saugos naujinius ir iš įrenginio pašalinamos kitos triktys."</string>
+</resources>
diff --git a/chromium/listing/res/values-lv/strings.xml b/chromium/listing/res/values-lv/strings.xml
new file mode 100644
index 0000000..0d1a8f4
--- /dev/null
+++ b/chromium/listing/res/values-lv/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Tīmekļa satura lietotnes, kuru darbību nodrošina pārlūkprogramma Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview ir sistēmas komponents, kura darbību nodrošina pārlūkprogramma Chrome un kurš ļauj Android lietotnēs rādīt tīmekļa saturu. Šis komponents ir jau sākotnēji instalēts jūsu ierīcē, un to ir regulāri jāatjaunina, lai nodrošinātu, ka darbojas pēdējie drošības atjauninājumi un ieviesti jaunākie kļūdu labojumi."</string>
+</resources>
diff --git a/chromium/listing/res/values-mk-rMK/strings.xml b/chromium/listing/res/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..86d5818
--- /dev/null
+++ b/chromium/listing/res/values-mk-rMK/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Веб-содржина за апликации, овозможена од Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview е системска компонента овозможена од Chrome која им дозволува на апликациите за Android да прикажуваат веб-содржина. Таа е претходно инсталирана на уредот и треба да се ажурира за сигурно да ги имате најновите ажурирања за безбедност и другите поправки на грешки."</string>
+</resources>
diff --git a/chromium/listing/res/values-ml-rIN/strings.xml b/chromium/listing/res/values-ml-rIN/strings.xml
new file mode 100644
index 0000000..b95de50
--- /dev/null
+++ b/chromium/listing/res/values-ml-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android സിസ്‌റ്റം വെബ്‌കാഴ്‌ച"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome നൽകുന്ന, അപ്ലിക്കേഷനുകൾക്കുള്ള വെബ് ഉള്ളടക്കം"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"വെബ് ഉള്ളടക്കം ദൃശ്യമാകാൻ Android അപ്ലിക്കേഷനുകളെ അനുവദിക്കുന്ന Chrome-ന്റെ ഒരു സിസ്റ്റം ഘടകമാണ് Android വെബ്‌കാഴ്‌ച. നിങ്ങളുടെ ഉപകരണത്തിൽ ഈ ഘടകം മുൻകൂട്ടി ഇൻസ്റ്റാളുചെയ്‌തിട്ടുണ്ട്, നിങ്ങൾക്ക് ഏറ്റവും പുതിയ സുരക്ഷാ അപ്‌ഡേറ്റുകളും മറ്റ് ബഗ് പരിഹരിക്കലുകളുമുണ്ടെന്ന് ഉറപ്പുവരുത്താൻ അത് അപ്‌റ്റുഡേറ്റായി നിലനിർത്തണം."</string>
+</resources>
diff --git a/chromium/listing/res/values-mn-rMN/strings.xml b/chromium/listing/res/values-mn-rMN/strings.xml
new file mode 100644
index 0000000..1bbb550
--- /dev/null
+++ b/chromium/listing/res/values-mn-rMN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Апп-уудад зориулсан веб контент, Кром-р дэмжигдсэн"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview нь Андройд апп-уудад вебийн контентыг харуулах боломж олгодог Кром-н хөгжүүлсэн системийн хэсэг юм. Энэ хэсэг нь таны төхөөрөмж дээр урьдчилан суусан бөгөөд таны аюулгүй байдлын шинэчлэлт, согог засварыг хангахын тулд байнга шинэчлэгдэх шаардлагатай."</string>
+</resources>
diff --git a/chromium/listing/res/values-mr-rIN/strings.xml b/chromium/listing/res/values-mr-rIN/strings.xml
new file mode 100644
index 0000000..299ef66
--- /dev/null
+++ b/chromium/listing/res/values-mr-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android प्रणाली WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome द्वारे समर्थित, अॅप्स साठी वेब सामग्री"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview हा Chrome द्वारे समर्थित एक प्रणाली घटक आहे जो Android अॅप्सना वेब सामग्री प्रदर्शित करण्यासाठी अनुमती देतो. हा घटक आपल्या डिव्हाइसवर पूर्व-स्थापित केलेला आहे आणि आपल्याकडे नवीनतम सुरक्षितता अद्यतने आणि इतर दोष निराकरणे असल्याचे सुनिश्चित करण्यासाठी अद्ययावत ठेवला जावा."</string>
+</resources>
diff --git a/chromium/listing/res/values-ms-rMY/strings.xml b/chromium/listing/res/values-ms-rMY/strings.xml
new file mode 100644
index 0000000..2ad8d27
--- /dev/null
+++ b/chromium/listing/res/values-ms-rMY/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView Sistem Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Kandungan web untuk apl, dikuasakan oleh Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Webview Android ialah satu komponen sistem yang dikuasakan oleh Chrome dan membenarkan apl Android memaparkan kandungan web. Komponen ini siap terpasang pada peranti anda dan hendaklah sentiasa terkini untuk memastikan anda mempunyai kemas kini keselamatan dan pembetulan pepijat lain yang terbaharu."</string>
+</resources>
diff --git a/chromium/listing/res/values-my-rMM/strings.xml b/chromium/listing/res/values-my-rMM/strings.xml
new file mode 100644
index 0000000..276347b
--- /dev/null
+++ b/chromium/listing/res/values-my-rMM/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android စနစ် ဝက်ဘ်မြင်ကွင်း"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome မှ မောင်းနှင်ပေးသည့် ဝက်ဘ် အကြောင်းအရာများ"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"အန်ဒရွိုက် ၀ကဘ်မြင်ကွင်းမှာ Chrome မှ မောင်းနှင်သည့် စနစ် အစိတ်အပိုင်း တစ်ခုဖြစ်ပြီး အန်ဒရွိုက်အား ဝက်ဘ် အကြောင်းအရာများကို ပြခွင့်ပြုသည်။ ထိုအပိုင်းကို သင်၏ ကိရိယာ ထဲမှာ ကြိုတပ်ဆင်ထားပြီ ဖြစ်ကာ သင့်ဆီမှာ နောက်ဆုံး လုံခြုံရေး မွမ်းမံမှုများ နှင့် အခြားသော ဘာဂ် ပြပြင်မှုများ ရှိနေတာကို စစ်ကြည့်ရန် လိုပါသည်။"</string>
+</resources>
diff --git a/chromium/listing/res/values-nb/strings.xml b/chromium/listing/res/values-nb/strings.xml
new file mode 100644
index 0000000..5a29ae9
--- /dev/null
+++ b/chromium/listing/res/values-nb/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webinnhold for apper, drevet av Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview er en systemkomponent drevet av Chrome som lar Android-apper se nettinnhold. Denne komponenten er forhåndsinstallert på enheten din, og bør holdes oppdatert for å sikre at du har de nyeste sikkerhetsoppdateringene og andre feilrettinger."</string>
+</resources>
diff --git a/chromium/listing/res/values-ne-rNP/strings.xml b/chromium/listing/res/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..616c813
--- /dev/null
+++ b/chromium/listing/res/values-ne-rNP/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android प्रणाली WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"अनुप्रयोगहरू लागि वेब सामाग्री, Chrome द्वारा संचालित"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Chrome द्वारा संचालित Android Webview एक प्रणाली घटक हो जसले वेब सामग्री प्रदर्शन गर्न Android अनुप्रयोगहरूलाई अनुमति दिन्छ। तपाईंको नवीनतम सुरक्षा अद्यावधिक र अन्य बग फिक्स सुनिश्चित गर्न यो घटक तपाईँको उपकरणमा पूर्व-स्थापित छ र अद्यावधिक राख्नुपर्छ।"</string>
+</resources>
diff --git a/chromium/listing/res/values-nl/strings.xml b/chromium/listing/res/values-nl/strings.xml
new file mode 100644
index 0000000..d502d32
--- /dev/null
+++ b/chromium/listing/res/values-nl/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView voor Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webcontent voor apps, mogelijk gemaakt door Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview is een systeemcomponent dat mogelijk wordt gemaakt door Chrome en waarmee Android-apps webcontent kunnen weergeven. Dit component is vooraf geïnstalleerd op uw apparaat en moet up-to-date blijven zodat u over de nieuwste beveiligingsupdates en andere bugfixes beschikt."</string>
+</resources>
diff --git a/chromium/listing/res/values-pa-rIN/strings.xml b/chromium/listing/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..9a47782
--- /dev/null
+++ b/chromium/listing/res/values-pa-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"ਐਪਸ ਲਈ ਵੈਬ ਸਮੱਗਰੀ, Chrome ਵੱਲੋਂ ਪੇਸ਼ ਕੀਤੀ"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview, Chrome ਵੱਲੋਂ ਪੇਸ਼ ਕੀਤਾ ਇੱਕ ਅਜਿਹਾ ਸਿਸਟਮ ਕੰਪੋਨੈਂਟ ਹੈ, ਜੋ Android ਐਪਸ ਨੂੰ ਵੈਬ ਸਮੱਗਰੀ ਡਿਸਪਲੇ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਕੰਪੋਨੈਂਟ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਤੇ ਪ੍ਰੀ-ਇੰਸਟੌਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਅਪ ਟੂ ਡੇਟ ਰੱਖਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਨਵੀਨਤਮ ਸੁਰੱਖਿਆ ਅਪਡੇਟਾਂ ਅਤੇ ਹੋਰ ਬਗ ਫਿਕਸਿਜ ਹਨ।"</string>
+</resources>
diff --git a/chromium/listing/res/values-pl/strings.xml b/chromium/listing/res/values-pl/strings.xml
new file mode 100644
index 0000000..e6af831
--- /dev/null
+++ b/chromium/listing/res/values-pl/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Treści internetowe w aplikacjach – technologia Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebView to składnik systemowy bazujący na Chrome, który umożliwia aplikacjom na Androida wyświetlanie treści internetowych. Jest on wstępnie zainstalowany na każdym urządzeniu i powinien być regularnie aktualizowany, by zapewnić dostęp do najnowszych aktualizacji zabezpieczeń i innych poprawek."</string>
+</resources>
diff --git a/chromium/listing/res/values-pt-rPT/strings.xml b/chromium/listing/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..60b887f
--- /dev/null
+++ b/chromium/listing/res/values-pt-rPT/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Sistema Android WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Conteúdo Web para aplicações, com tecnologia Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"O Android Webview é um componente do sistema com tecnologia Chrome que permite às aplicações Android apresentarem conteúdo Web. Este componente está pré-instalado no seu dispositivo e deve ser mantido atualizado para garantir que tem as atualizações de segurança e outras correções de erros mais recentes."</string>
+</resources>
diff --git a/chromium/listing/res/values-pt/strings.xml b/chromium/listing/res/values-pt/strings.xml
new file mode 100644
index 0000000..7f5d960
--- /dev/null
+++ b/chromium/listing/res/values-pt/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Sistema Android WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Conteúdo da Web para apps, com tecnologia Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"O Android Webview é um componente do sistema com tecnologia Chrome que permite aos apps Android apresentarem conteúdo da Web. Este componente está pré-instalado em seu dispositivo e deve ser mantido atualizado para garantir que você tenha as atualizações de segurança mais recentes e outras correções de bugs."</string>
+</resources>
diff --git a/chromium/listing/res/values-ro/strings.xml b/chromium/listing/res/values-ro/strings.xml
new file mode 100644
index 0000000..b11864b
--- /dev/null
+++ b/chromium/listing/res/values-ro/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Conținut web pentru aplicații, cu tehnologie Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebView este o componentă de sistem cu tehnologie Chrome, care permite aplicațiilor Android să afișeze conținut web. Această componentă este preinstalată pe dispozitiv și trebuie actualizată pentru a vă asigura că beneficiați de cele mai recente actualizări de securitate și de remedierea unor erori."</string>
+</resources>
diff --git a/chromium/listing/res/values-ru/strings.xml b/chromium/listing/res/values-ru/strings.xml
new file mode 100644
index 0000000..4637101
--- /dev/null
+++ b/chromium/listing/res/values-ru/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Просмотр веб-контента в приложениях (технологии Chrome)"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Системный компонент Android WebView работает на базе технологий Chrome и позволяет просматривать веб-контент в приложениях Android. Он уже установлен на вашем устройстве. Чтобы обеспечить его безопасность и высокую производительность, не забывайте обновлять его."</string>
+</resources>
diff --git a/chromium/listing/res/values-si-rLK/strings.xml b/chromium/listing/res/values-si-rLK/strings.xml
new file mode 100644
index 0000000..28050b1
--- /dev/null
+++ b/chromium/listing/res/values-si-rLK/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"යෙදුම් සඳහා වෙබ් අන්තර්ගත, Chrome මඟින් බලගන්වනු ලැබේ"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview යනු Chrome මඟින් බලගන්නවන පද්ධති සංරචකයකි, එය Android යෙදුම් වලට වෙබ් අන්තර්ගත දර්ශනය කිරීමට ඉඩ දෙයි. මෙම සංරචකය ඔබගේ උපාංගයේ කළින්-ස්ථාපයන කර තිබේ සහ ඔබට නවතම ආරක්ෂක යාවත්කාලීන සහ වෙනත් දෝෂ සැදීම් තිබේ දැයි සහතික කරගැනීමට යාවත්කාලීනව තබා ගැනීමට අවශ්‍ය වේ."</string>
+</resources>
diff --git a/chromium/listing/res/values-sk/strings.xml b/chromium/listing/res/values-sk/strings.xml
new file mode 100644
index 0000000..879cd9a
--- /dev/null
+++ b/chromium/listing/res/values-sk/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webový obsah pre aplikácie (využívajúci technológiu prehliadača Chrome)"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview je systémový komponent využívajúci technológiu prehliadača Chrome, ktorý umožňuje aplikáciám pre Android zobrazovať webový obsah. Tento komponent je predinštalovaný na vašom zariadení. Je potrebné ho aktualizovať, aby ste mali vždy k dispozícii najnovšie aktualizácie zabezpečenia a ďalšie opravy chýb."</string>
+</resources>
diff --git a/chromium/listing/res/values-sl/strings.xml b/chromium/listing/res/values-sl/strings.xml
new file mode 100644
index 0000000..5ab7320
--- /dev/null
+++ b/chromium/listing/res/values-sl/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView za sistem Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Spletna vsebina za aplikacije, ki uporabljajo Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview je sistemska komponenta, ki uporablja Chrome in aplikacijam za sistem Android omogoča prikaz spletne vsebine. Ta komponenta je v vaši napravi vnaprej nameščena in jo morate sproti posodabljati, če si želite zagotoviti najnovejše varnostne posodobitve in druge popravke napak."</string>
+</resources>
diff --git a/chromium/listing/res/values-sq-rAL/strings.xml b/chromium/listing/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..c41570a
--- /dev/null
+++ b/chromium/listing/res/values-sq-rAL/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView e sistemit \"android\""</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Përmbajtje uebi për aplikacione. Mundësuar nga Chrome."</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"\"Android WebView\" është një përbërës sistemi i mundësuar nga Chrome, që lejon aplikacionet e llojit \"android\" të shfaqin përmbajtje uebi. Ky përbërës është i instaluar paraprakisht në pajisjen tënde dhe duhet përditësuar në mënyrë që të kesh gjithnjë përditësimet më të fundit të sigurisë dhe rregullime të defekteve në kod."</string>
+</resources>
diff --git a/chromium/listing/res/values-sr/strings.xml b/chromium/listing/res/values-sr/strings.xml
new file mode 100644
index 0000000..98c8402
--- /dev/null
+++ b/chromium/listing/res/values-sr/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Веб-садржај за апликације, омогућава Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview је системска компонента коју омогућава Chrome и која Android апликацијама омогућава да приказују веб-садржај. Та компонента је унапред инсталирана на уређају и треба је редовно ажурирати да бисте били сигурни да ћете имати најновија безбедносна ажурирања и друге исправке грешака."</string>
+</resources>
diff --git a/chromium/listing/res/values-sv/strings.xml b/chromium/listing/res/values-sv/strings.xml
new file mode 100644
index 0000000..fc3fd17
--- /dev/null
+++ b/chromium/listing/res/values-sv/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView i Android-systemet"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Webbinnehåll för appar, drivs av Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview är en systemkomponent som använder teknik från Chrome. Med dess hjälp kan webbinnehåll visas i Android-appar. Komponenten är förinstallerad på enheten och bör hållas uppdaterad så att du alltid har de senaste säkerhetsuppdateringarna och andra felkorrigeringarna."</string>
+</resources>
diff --git a/chromium/listing/res/values-sw/strings.xml b/chromium/listing/res/values-sw/strings.xml
new file mode 100644
index 0000000..1903f6b
--- /dev/null
+++ b/chromium/listing/res/values-sw/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Mfumo wa Android wa WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Maudhui ya wavuti kwa programu, yanayoendeshwa na Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview ni kijenzi cha mfumo kinachoendeshwa na Chrome kinachoruhusu programu za Android zionyeshe maudhui ya wavuti. Kijenzi hiki huwekwa awali kwenye kifaa chako na kinapaswa kusasishwa kila wakati ili kuhakikisha kwamba kina sasisho mpya za usalama na marekebisho mengine ya hitilafu."</string>
+</resources>
diff --git a/chromium/listing/res/values-ta-rIN/strings.xml b/chromium/listing/res/values-ta-rIN/strings.xml
new file mode 100644
index 0000000..aef4a2a
--- /dev/null
+++ b/chromium/listing/res/values-ta-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"பயன்பாடுகளுக்கான இணைய உள்ளடக்கம், வழங்குவது Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview என்பது Chrome வழங்கும் முறைமைக் கூறாகும். இது, இணைய உள்ளடக்கத்தை Android பயன்பாடுகள் காண்பிக்க அனுமதிக்கும். இந்தக் கூறு உங்கள் சாதனத்தில் ஏற்கனவே நிறுவப்பட்டிருக்கும். இதை எப்போதும் புதுப்பித்த நிலையில் வைத்திருந்து, சமீபத்திய பாதுகாப்புப் புதுப்பிப்புகள் மற்றும் பிழைத் திருத்தங்களைப் பெறவும்."</string>
+</resources>
diff --git a/chromium/listing/res/values-te-rIN/strings.xml b/chromium/listing/res/values-te-rIN/strings.xml
new file mode 100644
index 0000000..f6d34c8
--- /dev/null
+++ b/chromium/listing/res/values-te-rIN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android సిస్టమ్ వెబ్‌వీక్షణ"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"అనువర్తనాల కోసం వెబ్ కంటెంట్, Chrome ఆధారితం"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android వెబ్‌వీక్షణ అనేది వెబ్ కంటెంట్‌ను ప్రదర్శించడానికి Android అనువర్తనాలను అనుమతించే Chrome ఆధారితమైన సిస్టమ్‌లోని భాగం. ఈ భాగం మీ పరికరంలో ముందుగానే ఇన్‌స్టాల్ చేయబడి ఉంటుంది మరియు మీకు సరికొత్త భద్రతా నవీకరణలు మరియు ఇతర బగ్ పరిష్కారాలు ఉన్నాయని నిర్ధారించడానికి ఎప్పటికప్పుడు తాజాగా ఉంచాలి."</string>
+</resources>
diff --git a/chromium/listing/res/values-th/strings.xml b/chromium/listing/res/values-th/strings.xml
new file mode 100644
index 0000000..6361656
--- /dev/null
+++ b/chromium/listing/res/values-th/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"WebView ของระบบ Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"เนื้อหาเว็บสำหรับแอป สนับสนุนโดย Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview เป็นคอมโพเนนต์ระบบที่ได้รับการสนับสนุนโดย Chrome เพื่อให้แอป Android แสดงเนื้อหาเว็บได้ คอมโพเนนต์นี้จะติดตั้งไว้ล่วงหน้าบนอุปกรณ์และควรอัปเดตให้ทันสมัยเพื่อให้มั่นใจว่าคุณได้รับการอัปเดตด้านความปลอดภัยล่าสุดและการแก้ไขข้อบกพร่องอื่นๆ"</string>
+</resources>
diff --git a/chromium/listing/res/values-tl/strings.xml b/chromium/listing/res/values-tl/strings.xml
new file mode 100644
index 0000000..8b495e6
--- /dev/null
+++ b/chromium/listing/res/values-tl/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Web content para sa mga app, pinapagana ng Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Ang Android Webview ay isang bahagi ng system na pinapagana ng Chrome na nagbibigay-daan sa mga Android app na magpakita ng web content. Ang bahaging ito ay paunang naka-install sa iyong device at dapat panatilihing napapanahon upang matiyak na mayroon ka ng mga pinakabagong update sa seguridad at iba pang mga pag-aayos ng bug."</string>
+</resources>
diff --git a/chromium/listing/res/values-tr/strings.xml b/chromium/listing/res/values-tr/strings.xml
new file mode 100644
index 0000000..124f6ed
--- /dev/null
+++ b/chromium/listing/res/values-tr/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android Sistemi WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Chrome tarafından desteklenen, uygulamalar için web içeriği"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview, Chrome tarafından desteklenen ve Android uygulamalarının web içeriklerini görüntülemesini sağlayan bir sistem bileşenidir. Bu bileşen, cihazınıza önceden yüklenir ve en son güvenlik güncellemeleri ile diğer hata düzeltmelerine sahip olmanızı sağlamak için güncel tutulması gerekir."</string>
+</resources>
diff --git a/chromium/listing/res/values-uk/strings.xml b/chromium/listing/res/values-uk/strings.xml
new file mode 100644
index 0000000..4f41fea
--- /dev/null
+++ b/chromium/listing/res/values-uk/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Компонент Android WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Веб-вміст для додатків на основі технологій Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebView – це системний компонент, який працює на основі технології Chrome. Він дає додаткам Android змогу показувати веб-вміст. Цей компонент заздалегідь установлено на вашому пристрої, і його потрібно регулярно оновлювати, що мати найновіші оновлення системи безпеки та виправлення помилок."</string>
+</resources>
diff --git a/chromium/listing/res/values-ur-rPK/strings.xml b/chromium/listing/res/values-ur-rPK/strings.xml
new file mode 100644
index 0000000..bc007ba
--- /dev/null
+++ b/chromium/listing/res/values-ur-rPK/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"‏Android سسٹم WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"‏Chrome کے ذریعے تقویت یافتہ، ایپس کیلئے ویب مواد"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"‏Android Webview ایک سسٹم عنصر ہے جو Chrome کے ذریعے تقویت یافتہ ہے جو Android ایپس کو ویب مواد ڈسپلے کرنے کی اجازت دیتا ہے۔ یہ عنصر آپ کے آلہ پر پہلے سے انسٹال ہوتا ہے اور اسے یہ یقینی بنانے کیلئے اپ ٹو ڈيٹ رکھنا چاہیے کہ آپ کے پاس تازہ ترین سیکیورٹی اپ ڈيٹس اور دیگر بگ اصلاحات ہیں۔"</string>
+</resources>
diff --git a/chromium/listing/res/values-uz-rUZ/strings.xml b/chromium/listing/res/values-uz-rUZ/strings.xml
new file mode 100644
index 0000000..9db3752
--- /dev/null
+++ b/chromium/listing/res/values-uz-rUZ/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Ilovalar uchun veb-kontent. Chrome asosida ishlaydi."</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview bu – tizimning tarkibiy qismi bo‘lib, u Chrome asosida ishlaydi va Android ilovalarga veb-kontentni ko‘rsatish imkonini beradi. U qurilmangizga oldindan o‘rnatilgan bo‘ladi. Qurilmangizni so‘nggi xavfsizlik yangilanishlari va tuzatmalar bilan ta’minlash uchun uni doim yangilab turish lozim."</string>
+</resources>
diff --git a/chromium/listing/res/values-vi/strings.xml b/chromium/listing/res/values-vi/strings.xml
new file mode 100644
index 0000000..225b804
--- /dev/null
+++ b/chromium/listing/res/values-vi/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Nội dung web cho ứng dụng, được Chrome hỗ trợ"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android WebView là một thành phần hệ thống được Chrome hỗ trợ cho phép các ứng dụng Android hiển thị nội dung web. Thành phần này được cài đặt sẵn trên thiết bị của bạn và cần được cập nhật để đảm bảo bạn có bản cập nhật bảo mật mới nhất và bản sửa lỗi khác."</string>
+</resources>
diff --git a/chromium/listing/res/values-zh-rCN/strings.xml b/chromium/listing/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..87228e4
--- /dev/null
+++ b/chromium/listing/res/values-zh-rCN/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"使应用能够显示网页内容,由 Chrome 提供支持"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview 是一项由 Chrome 提供支持的系统组件,使 Android 应用能够显示网页内容。该组件已经预装在您的设备上,您需要及时更新该组件,以确保系统拥有最新的安全更新,并修正其他错误。"</string>
+</resources>
diff --git a/chromium/listing/res/values-zh-rHK/strings.xml b/chromium/listing/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..f67ebfd
--- /dev/null
+++ b/chromium/listing/res/values-zh-rHK/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"讓應用程式顯示網頁內容,由 Chrome 提供技術支援"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview 是由 Chrome 提供技術支援的系統元件,讓 Android 應用程式顯示網頁內容。這個元件已經預載到您的裝置上,並需要保持更新,以確保您有最新的安全更新及其他錯誤修正。"</string>
+</resources>
diff --git a/chromium/listing/res/values-zh-rTW/strings.xml b/chromium/listing/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..72e7677
--- /dev/null
+++ b/chromium/listing/res/values-zh-rTW/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"Android System WebView"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"可供應用程式顯示網頁內容,由 Chrome 提供技術支援"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"Android Webview 是一項由 Chrome 提供技術支援的系統元件,Android 應用程式可透過這項元件顯示網頁內容。這個元件已經預先安裝在您的裝置中,請隨時保持最新狀態,以確保您取得最新的安全更新檔和其他的錯誤修正檔。"</string>
+</resources>
diff --git a/chromium/listing/res/values-zu/strings.xml b/chromium/listing/res/values-zu/strings.xml
new file mode 100644
index 0000000..bfa4c89
--- /dev/null
+++ b/chromium/listing/res/values-zu/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewgoogle_play_store_title" msgid="6227907912304696478">"I-WebView Yesistimu ye-Android"</string>
+    <string name="webviewgoogle_play_store_tagline" msgid="825305078705915422">"Okuqukethwe kwewebhu kwezinhlelo zokusebenza, okunikwe amandla yi-Chrome"</string>
+    <string name="webviewgoogle_play_store_description" msgid="3054088773113944489">"I-Android WebView yingxenye yesistimu enikwe amandla yi-Chrome evumela izinhlelo zokusebenza ze-Android ukuthi zibonise okuqukethwe kwewebhu. Le ngxenye ifakwa ngaphambili kudivayisi yakho futhi kuzomele igcinwe isesikhathini ukuze kuqinisekiswe ukuthi unezibuyekezo zokuvikela zakamuva nokunye ukulungiswa kweziphazamisi."</string>
+</resources>
diff --git a/chromium/listing/res/values/strings.xml b/chromium/listing/res/values/strings.xml
new file mode 100644
index 0000000..599dd95
--- /dev/null
+++ b/chromium/listing/res/values/strings.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2014 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Play Store title text [CHAR-LIMIT=30] -->
+    <string name="webviewgoogle_play_store_title">Android System WebView</string>
+
+    <!-- Play Store tagline text. [CHAR-LIMIT=80] -->
+    <string name="webviewgoogle_play_store_tagline">Web content for apps, powered by Chrome</string>
+
+    <!-- Play Store description text. [CHAR-LIMIT=4000] -->
+    <string name="webviewgoogle_play_store_description">Android Webview is a system component powered by Chrome that allows Android apps to display web content. This component is pre-installed on your device and should be kept up to date to ensure you have the latest security updates and other bug fixes.</string>
+
+</resources>
diff --git a/chromium/loader/loader.cpp b/chromium/loader/loader.cpp
index f5aff7a..87f7226 100644
--- a/chromium/loader/loader.cpp
+++ b/chromium/loader/loader.cpp
@@ -41,6 +41,11 @@
 void* gReservedAddress = NULL;
 size_t gReservedSize = 0;
 
+jint LIBLOAD_SUCCESS;
+jint LIBLOAD_FAILED_TO_OPEN_RELRO_FILE;
+jint LIBLOAD_FAILED_TO_LOAD_LIBRARY;
+jint LIBLOAD_FAILED_JNI_CALL;
+
 jboolean DoReserveAddressSpace(jlong size) {
   size_t vsize = static_cast<size_t>(size);
 
@@ -98,11 +103,11 @@
   return JNI_TRUE;
 }
 
-jboolean DoLoadWithRelroFile(const char* lib, const char* relro) {
+jint DoLoadWithRelroFile(const char* lib, const char* relro) {
   int relro_fd = TEMP_FAILURE_RETRY(open(relro, O_RDONLY));
   if (relro_fd == -1) {
     ALOGE("Failed to open relro file %s: %s", relro, strerror(errno));
-    return JNI_FALSE;
+    return LIBLOAD_FAILED_TO_OPEN_RELRO_FILE;
   }
   android_dlextinfo extinfo;
   extinfo.flags = ANDROID_DLEXT_RESERVED_ADDRESS | ANDROID_DLEXT_USE_RELRO;
@@ -113,10 +118,10 @@
   close(relro_fd);
   if (handle == NULL) {
     ALOGE("Failed to load library %s: %s", lib, dlerror());
-    return JNI_FALSE;
+    return LIBLOAD_FAILED_TO_LOAD_LIBRARY;
   }
   ALOGV("Loaded library %s with relro file %s", lib, relro);
-  return JNI_TRUE;
+  return LIBLOAD_SUCCESS;
 }
 
 /******************************************************************************/
@@ -151,7 +156,7 @@
   return ret;
 }
 
-jboolean LoadWithRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64,
+jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64,
                            jstring relro32, jstring relro64) {
 #ifdef __LP64__
   jstring lib = lib64;
@@ -162,7 +167,7 @@
   jstring relro = relro32;
   (void)lib64; (void)relro64;
 #endif
-  jboolean ret = JNI_FALSE;
+  jint ret = LIBLOAD_FAILED_JNI_CALL;
   const char* lib_utf8 = env->GetStringUTFChars(lib, NULL);
   if (lib_utf8 != NULL) {
     const char* relro_utf8 = env->GetStringUTFChars(relro, NULL);
@@ -183,7 +188,7 @@
       "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z",
       reinterpret_cast<void*>(CreateRelroFile) },
   { "nativeLoadWithRelroFile",
-      "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z",
+      "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I",
       reinterpret_cast<void*>(LoadWithRelroFile) },
 };
 
@@ -195,6 +200,22 @@
   jclass clazz = env->FindClass(kClassName);
   if (clazz) {
     env->RegisterNatives(clazz, kJniMethods, NELEM(kJniMethods));
+
+    LIBLOAD_SUCCESS = env->GetStaticIntField(
+        clazz,
+        env->GetStaticFieldID(clazz, "LIBLOAD_SUCCESS", "I"));
+
+    LIBLOAD_FAILED_TO_OPEN_RELRO_FILE = env->GetStaticIntField(
+        clazz,
+        env->GetStaticFieldID(clazz, "LIBLOAD_FAILED_TO_OPEN_RELRO_FILE", "I"));
+
+    LIBLOAD_FAILED_TO_LOAD_LIBRARY = env->GetStaticIntField(
+        clazz,
+        env->GetStaticFieldID(clazz, "LIBLOAD_FAILED_TO_LOAD_LIBRARY", "I"));
+
+    LIBLOAD_FAILED_JNI_CALL = env->GetStaticIntField(
+        clazz,
+        env->GetStaticFieldID(clazz, "LIBLOAD_FAILED_JNI_CALL", "I"));
   }
 }
 
diff --git a/chromium/package.mk b/chromium/package.mk
index 028a40d..1abe575 100644
--- a/chromium/package.mk
+++ b/chromium/package.mk
@@ -35,6 +35,8 @@
 
 LOCAL_MODULE_TAGS := optional
 
+LOCAL_SDK_VERSION := system_current
+
 LOCAL_STATIC_JAVA_LIBRARIES += android_webview_java_with_new_resources
 
 LOCAL_SRC_FILES := $(call all-java-files-under, java)
@@ -59,11 +61,12 @@
 
 LOCAL_MULTILIB := both
 
-# TODO: filter webviewchromium_webkit_strings based on PRODUCT_LOCALES.
+# If this build is just for apps, skip building the platform-side dependencies.
+ifeq ($(TARGET_BUILD_APPS),)
 LOCAL_REQUIRED_MODULES := \
-        libwebviewchromium \
         libwebviewchromium_loader \
         libwebviewchromium_plat_support
+endif
 
 LOCAL_PROGUARD_ENABLED := full
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
diff --git a/chromium/plat_support/draw_gl.h b/chromium/plat_support/draw_gl.h
new file mode 100644
index 0000000..a60346f
--- /dev/null
+++ b/chromium/plat_support/draw_gl.h
@@ -0,0 +1,116 @@
+// Copyright 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+//******************************************************************************
+// This is a copy of the coresponding android_webview/public/browser header.
+// Any changes to the interface should be made there.
+//
+// The purpose of having the copy is twofold:
+//  - it removes the need to have Chromium sources present in the tree in order
+//    to build the plat_support library,
+//  - it captures API that the corresponding Android release supports.
+//******************************************************************************
+
+#ifndef ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_GL_H_
+#define ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_GL_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static const int kAwDrawGLInfoVersion = 1;
+
+// Holds the information required to trigger an OpenGL drawing operation.
+struct AwDrawGLInfo {
+  int version;  // The AwDrawGLInfo this struct was built with.
+
+  // Input: tells the draw function what action to perform.
+  enum Mode {
+    kModeDraw = 0,
+    kModeProcess,
+    kModeProcessNoContext,
+    kModeSync,
+  } mode;
+
+  // Input: current clip rect in surface coordinates. Reflects the current state
+  // of the OpenGL scissor rect. Both the OpenGL scissor rect and viewport are
+  // set by the caller of the draw function and updated during View animations.
+  int clip_left;
+  int clip_top;
+  int clip_right;
+  int clip_bottom;
+
+  // Input: current width/height of destination surface.
+  int width;
+  int height;
+
+  // Input: is the View rendered into an independent layer.
+  // If false, the surface is likely to hold to the full screen contents, with
+  // the scissor box set by the caller to the actual View location and size.
+  // Also the transformation matrix will contain at least a translation to the
+  // position of the View to render, plus any other transformations required as
+  // part of any ongoing View animation. View translucency (alpha) is ignored,
+  // although the framework will set is_layer to true for non-opaque cases.
+  // Can be requested via the View.setLayerType(View.LAYER_TYPE_NONE, ...)
+  // Android API method.
+  //
+  // If true, the surface is dedicated to the View and should have its size.
+  // The viewport and scissor box are set by the caller to the whole surface.
+  // Animation transformations are handled by the caller and not reflected in
+  // the provided transformation matrix. Translucency works normally.
+  // Can be requested via the View.setLayerType(View.LAYER_TYPE_HARDWARE, ...)
+  // Android API method.
+  bool is_layer;
+
+  // Input: current transformation matrix in surface pixels.
+  // Uses the column-based OpenGL matrix format.
+  float transform[16];
+};
+
+// Function to invoke a direct GL draw into the client's pre-configured
+// GL context. Obtained via AwContents.getDrawGLFunction() (static).
+// |view_context| is an opaque identifier that was returned by the corresponding
+// call to AwContents.getAwDrawGLViewContext().
+// |draw_info| carries the in and out parameters for this draw.
+// |spare| ignored; pass NULL.
+typedef void (AwDrawGLFunction)(long view_context,
+                                AwDrawGLInfo* draw_info,
+                                void* spare);
+enum AwMapMode {
+  MAP_READ_ONLY,
+  MAP_WRITE_ONLY,
+  MAP_READ_WRITE,
+};
+
+// Called to create a GraphicBuffer
+typedef long AwCreateGraphicBufferFunction(int w, int h);
+// Called to release a GraphicBuffer
+typedef void AwReleaseGraphicBufferFunction(long buffer_id);
+// Called to map a GraphicBuffer in |mode|.
+typedef int AwMapFunction(long buffer_id, AwMapMode mode, void** vaddr);
+// Called to unmap a GraphicBuffer
+typedef int AwUnmapFunction(long buffer_id);
+// Called to get a native buffer pointer
+typedef void* AwGetNativeBufferFunction(long buffer_id);
+// Called to get the stride of the buffer
+typedef unsigned int AwGetStrideFunction(long buffer_id);
+
+static const int kAwDrawGLFunctionTableVersion = 1;
+
+// Set of functions used in rendering in hardware mode
+struct AwDrawGLFunctionTable {
+  int version;
+  AwCreateGraphicBufferFunction* create_graphic_buffer;
+  AwReleaseGraphicBufferFunction* release_graphic_buffer;
+  AwMapFunction* map;
+  AwUnmapFunction* unmap;
+  AwGetNativeBufferFunction* get_native_buffer;
+  AwGetStrideFunction* get_stride;
+};
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
+#endif  // ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_GL_H_
diff --git a/chromium/plat_support/draw_gl_functor.cpp b/chromium/plat_support/draw_gl_functor.cpp
index 03b6385..a7fbe5b 100644
--- a/chromium/plat_support/draw_gl_functor.cpp
+++ b/chromium/plat_support/draw_gl_functor.cpp
@@ -19,7 +19,7 @@
 
 #define LOG_TAG "webviewchromium_plat_support"
 
-#include "android_webview/public/browser/draw_gl.h"
+#include "draw_gl.h"
 
 #include <errno.h>
 #include <jni.h>
diff --git a/chromium/plat_support/draw_sw.h b/chromium/plat_support/draw_sw.h
new file mode 100644
index 0000000..7423e13
--- /dev/null
+++ b/chromium/plat_support/draw_sw.h
@@ -0,0 +1,66 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+//******************************************************************************
+// This is a copy of the coresponding android_webview/public/browser header.
+// Any changes to the interface should be made there.
+//
+// The purpose of having the copy is twofold:
+//  - it removes the need to have Chromium sources present in the tree in order
+//    to build the plat_support library,
+//  - it captures API that the corresponding Android release supports.
+//******************************************************************************
+
+#ifndef ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_
+#define ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_
+
+#include <jni.h>
+#include <stddef.h>
+
+#ifndef __cplusplus
+#error "Can't mix C and C++ when using jni.h"
+#endif
+
+class SkCanvasState;
+class SkPicture;
+
+static const int kAwPixelInfoVersion = 3;
+
+// Holds the information required to implement the SW draw to system canvas.
+struct AwPixelInfo {
+  int version;          // The kAwPixelInfoVersion this struct was built with.
+  SkCanvasState* state; // The externalize state in skia format.
+  // NOTE: If you add more members, bump kAwPixelInfoVersion.
+};
+
+// Function that can be called to fish out the underlying native pixel data
+// from a Java canvas object, for optimized rendering path.
+// Returns the pixel info on success, which must be freed via a call to
+// AwReleasePixelsFunction, or NULL.
+typedef AwPixelInfo* (AwAccessPixelsFunction)(JNIEnv* env, jobject canvas);
+
+// Must be called to balance every *successful* call to AwAccessPixelsFunction
+// (i.e. that returned true).
+typedef void (AwReleasePixelsFunction)(AwPixelInfo* pixels);
+
+// Called to create an Android Picture object encapsulating a native SkPicture.
+typedef jobject (AwCreatePictureFunction)(JNIEnv* env, SkPicture* picture);
+
+// Method that returns the current Skia function.
+typedef void (SkiaVersionFunction)(int* major, int* minor, int* patch);
+
+// Called to verify if the Skia versions are compatible.
+typedef bool (AwIsSkiaVersionCompatibleFunction)(SkiaVersionFunction function);
+
+static const int kAwDrawSWFunctionTableVersion = 1;
+
+// "vtable" for the functions declared in this file. An instance must be set via
+// AwContents.setAwDrawSWFunctionTable
+struct AwDrawSWFunctionTable {
+  int version;
+  AwAccessPixelsFunction* access_pixels;
+  AwReleasePixelsFunction* release_pixels;
+};
+
+#endif  // ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_
diff --git a/chromium/plat_support/graphic_buffer_impl.h b/chromium/plat_support/graphic_buffer_impl.h
index 5d5da12..442710a 100644
--- a/chromium/plat_support/graphic_buffer_impl.h
+++ b/chromium/plat_support/graphic_buffer_impl.h
@@ -22,7 +22,7 @@
 
 #include <ui/GraphicBuffer.h>
 
-#include "android_webview/public/browser/draw_gl.h"
+#include "draw_gl.h"
 
 namespace android {
 
diff --git a/chromium/plat_support/graphics_utils.cpp b/chromium/plat_support/graphics_utils.cpp
index 320e419..1e88c12 100644
--- a/chromium/plat_support/graphics_utils.cpp
+++ b/chromium/plat_support/graphics_utils.cpp
@@ -19,8 +19,8 @@
 
 #define LOG_TAG "webviewchromium_plat_support"
 
-#include "android_webview/public/browser/draw_gl.h"
-#include "android_webview/public/browser/draw_sw.h"
+#include "draw_gl.h"
+#include "draw_sw.h"
 
 #include <cstdlib>
 #include <jni.h>
@@ -55,7 +55,11 @@
 }
 
 AwPixelInfo* GetPixels(JNIEnv* env, jobject java_canvas) {
-  SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, java_canvas);
+  android::Canvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, java_canvas);
+  if (!nativeCanvas)
+    return NULL;
+
+  SkCanvas* canvas = nativeCanvas->asSkCanvas();
   if (!canvas)
     return NULL;
 
diff --git a/chromium/proguard.flags b/chromium/proguard.flags
index 6401a8c..b19519f 100644
--- a/chromium/proguard.flags
+++ b/chromium/proguard.flags
@@ -80,6 +80,12 @@
   *** startFinalizer(java.lang.Class,java.lang.Object);
 }
 
+# Keep support framework support for SmartClip.
+-keep class com.android.webview.chromium.WebViewChromium {
+  public void extractSmartClipData(int,int,int,int);
+  public void setSmartClipResultHandler(android.os.Handler);
+}
+
 # We need to explicitly keep classes and constructors referenced only in
 # layout resources.
 -keep class com.android.org.chromium.ui.ColorPickerAdvanced {
diff --git a/chromium/res/values-af/strings.xml b/chromium/res/values-af/strings.xml
index d44bf8e..5a9af53 100644
--- a/chromium/res/values-af/strings.xml
+++ b/chromium/res/values-af/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Hierdie funksie word nie ondersteun in hierdie weergawe van Android nie."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Dié weergawe van Android steun nie díe funksie nie."</string>
 </resources>
diff --git a/chromium/res/values-am/strings.xml b/chromium/res/values-am/strings.xml
index d1f8671..944f0b5 100644
--- a/chromium/res/values-am/strings.xml
+++ b/chromium/res/values-am/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"ይህ ተግባራዊነት በዚህ የAndroid ስሪት የተደገ አይደለም።"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"ይህ ተግባራዊ በዚህ የAndroid ስሪት ላይ የተደገ አይደለም።"</string>
 </resources>
diff --git a/chromium/res/values-ar/strings.xml b/chromium/res/values-ar/strings.xml
index 521e715..15f29db 100644
--- a/chromium/res/values-ar/strings.xml
+++ b/chromium/res/values-ar/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"‏هذه الوظيفة غير متوافقة مع هذا الإصدار من Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"‏هذه الخدمة غير متوافقة مع هذا الإصدار من Android."</string>
 </resources>
diff --git a/chromium/res/values-bg/strings.xml b/chromium/res/values-bg/strings.xml
index dee8ef8..d57e8fd 100644
--- a/chromium/res/values-bg/strings.xml
+++ b/chromium/res/values-bg/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Функционалността не се поддържа в тази версия на Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Функционалността не се поддържа в тази версия на Android."</string>
 </resources>
diff --git a/chromium/res/values-bn-rBD/strings.xml b/chromium/res/values-bn-rBD/strings.xml
new file mode 100644
index 0000000..9add0e9
--- /dev/null
+++ b/chromium/res/values-bn-rBD/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"এই কার্যকারিতাটি Android এর এই সংস্করণে সমর্থিত নয়।"</string>
+</resources>
diff --git a/chromium/res/values-ca/strings.xml b/chromium/res/values-ca/strings.xml
index 35dcf8b..a4c2a83 100644
--- a/chromium/res/values-ca/strings.xml
+++ b/chromium/res/values-ca/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"No s\'admet aquesta funcionalitat en aquesta versió d\'Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Aquesta funció no és compatible amb aquesta versió d\'Android."</string>
 </resources>
diff --git a/chromium/res/values-cs/strings.xml b/chromium/res/values-cs/strings.xml
index 45b6edb..f0a8c29 100644
--- a/chromium/res/values-cs/strings.xml
+++ b/chromium/res/values-cs/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Tuto funkci daná verze systému Android nepodporuje."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Tuto funkci daná verze systému Android nepodporuje."</string>
 </resources>
diff --git a/chromium/res/values-da/strings.xml b/chromium/res/values-da/strings.xml
index 83eb9f1..4284767 100644
--- a/chromium/res/values-da/strings.xml
+++ b/chromium/res/values-da/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Denne funktion understøttes ikke i denne version af Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Denne funktion understøttes ikke i denne version af Android."</string>
 </resources>
diff --git a/chromium/res/values-de/strings.xml b/chromium/res/values-de/strings.xml
index a15d788..f714539 100644
--- a/chromium/res/values-de/strings.xml
+++ b/chromium/res/values-de/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Die Funktion wird von dieser Android-Version nicht unterstützt."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Die Funktion wird von dieser Android-Version nicht unterstützt."</string>
 </resources>
diff --git a/chromium/res/values-el/strings.xml b/chromium/res/values-el/strings.xml
index 3cdfa7f..9e2d943 100644
--- a/chromium/res/values-el/strings.xml
+++ b/chromium/res/values-el/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Αυτή η λειτουργία δεν υποστηρίζεται σε αυτήν την έκδοση Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Αυτή η λειτουργία δεν υποστηρίζεται σε αυτήν την έκδοση Android."</string>
 </resources>
diff --git a/chromium/res/values-en-rAU/strings.xml b/chromium/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..388e12c
--- /dev/null
+++ b/chromium/res/values-en-rAU/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"This functionality is not supported in this version of Android."</string>
+</resources>
diff --git a/chromium/res/values-en-rGB/strings.xml b/chromium/res/values-en-rGB/strings.xml
index 15aa20f..388e12c 100644
--- a/chromium/res/values-en-rGB/strings.xml
+++ b/chromium/res/values-en-rGB/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"This functionality is not supported in this version of Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"This functionality is not supported in this version of Android."</string>
 </resources>
diff --git a/chromium/res/values-en-rIN/strings.xml b/chromium/res/values-en-rIN/strings.xml
index 15aa20f..388e12c 100644
--- a/chromium/res/values-en-rIN/strings.xml
+++ b/chromium/res/values-en-rIN/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"This functionality is not supported in this version of Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"This functionality is not supported in this version of Android."</string>
 </resources>
diff --git a/chromium/res/values-es-rUS/strings.xml b/chromium/res/values-es-rUS/strings.xml
index d6633cc..1320a1c 100644
--- a/chromium/res/values-es-rUS/strings.xml
+++ b/chromium/res/values-es-rUS/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"La función no es compatible con esta versión de Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Incompatible con versión"</string>
 </resources>
diff --git a/chromium/res/values-es/strings.xml b/chromium/res/values-es/strings.xml
index d6633cc..383c959 100644
--- a/chromium/res/values-es/strings.xml
+++ b/chromium/res/values-es/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"La función no es compatible con esta versión de Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Incompatible con versión."</string>
 </resources>
diff --git a/chromium/res/values-et-rEE/strings.xml b/chromium/res/values-et-rEE/strings.xml
index f6daf20..4d9682d 100644
--- a/chromium/res/values-et-rEE/strings.xml
+++ b/chromium/res/values-et-rEE/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"See funktsioon pole selles Androidi versioonis toetatud."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"See funktsioon pole selles Androidi versioonis toetatud."</string>
 </resources>
diff --git a/chromium/res/values-eu-rES/strings.xml b/chromium/res/values-eu-rES/strings.xml
new file mode 100644
index 0000000..ec152a0
--- /dev/null
+++ b/chromium/res/values-eu-rES/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Android bertsio honek ez du funtzio hori onartzen."</string>
+</resources>
diff --git a/chromium/res/values-fa/strings.xml b/chromium/res/values-fa/strings.xml
index fed6ec6..4207c0b 100644
--- a/chromium/res/values-fa/strings.xml
+++ b/chromium/res/values-fa/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"‏این عملکرد در این نسخه از Android پشتیبانی نمی‌شود."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"‏این عملکرد در این نسخه Android پشتیبانی نمی‌شود."</string>
 </resources>
diff --git a/chromium/res/values-fi/strings.xml b/chromium/res/values-fi/strings.xml
index 7246029..4350924 100644
--- a/chromium/res/values-fi/strings.xml
+++ b/chromium/res/values-fi/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Toiminnallisuutta ei tueta tässä Android-versiossa."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Toiminnallisuutta ei tueta tässä Android-versiossa."</string>
 </resources>
diff --git a/chromium/res/values-fr-rCA/strings.xml b/chromium/res/values-fr-rCA/strings.xml
index 8b074e9..39caa21 100644
--- a/chromium/res/values-fr-rCA/strings.xml
+++ b/chromium/res/values-fr-rCA/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Cette fonctionnalité n\'est pas compatible avec cette version d\'Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Cette fonctionnalité n\'est pas compatible avec cette version d\'Android."</string>
 </resources>
diff --git a/chromium/res/values-fr/strings.xml b/chromium/res/values-fr/strings.xml
index 8b074e9..d735e7d 100644
--- a/chromium/res/values-fr/strings.xml
+++ b/chromium/res/values-fr/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Cette fonctionnalité n\'est pas compatible avec cette version d\'Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Fonctionnalité non compatible avec cette version d\'Android."</string>
 </resources>
diff --git a/chromium/res/values-gl-rES/strings.xml b/chromium/res/values-gl-rES/strings.xml
new file mode 100644
index 0000000..4246bfa
--- /dev/null
+++ b/chromium/res/values-gl-rES/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Esta funcionalidade non é compatible con esta versión de Android."</string>
+</resources>
diff --git a/chromium/res/values-gu-rIN/strings.xml b/chromium/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..f37f20a
--- /dev/null
+++ b/chromium/res/values-gu-rIN/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Android ના આ સંસ્કરણમાં આ કાર્યક્ષમતા સમર્થિત નથી."</string>
+</resources>
diff --git a/chromium/res/values-hi/strings.xml b/chromium/res/values-hi/strings.xml
index ab5af4a..6972fce 100644
--- a/chromium/res/values-hi/strings.xml
+++ b/chromium/res/values-hi/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"यह कार्यात्मकता Android के इस संस्करण में समर्थित नहीं है."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"कार्यक्षमता, Android वर्शन में समर्थित नहीं."</string>
 </resources>
diff --git a/chromium/res/values-hr/strings.xml b/chromium/res/values-hr/strings.xml
index ac1ea59..e7e1d83 100644
--- a/chromium/res/values-hr/strings.xml
+++ b/chromium/res/values-hr/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Ta funkcija nije podržana na ovoj verziji Androida."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Ver. Androida ne podrž. tu fun."</string>
 </resources>
diff --git a/chromium/res/values-hu/strings.xml b/chromium/res/values-hu/strings.xml
index 8ae6d8c..67b848c 100644
--- a/chromium/res/values-hu/strings.xml
+++ b/chromium/res/values-hu/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Ez a funkció nem támogatott az Android ezen verzióján."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Ez a funkció nem támogatott az Android ezen verzióján."</string>
 </resources>
diff --git a/chromium/res/values-hy-rAM/strings.xml b/chromium/res/values-hy-rAM/strings.xml
index 8084d71..55dfcb1 100644
--- a/chromium/res/values-hy-rAM/strings.xml
+++ b/chromium/res/values-hy-rAM/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Այս գործառույթը Android-ի այս տարբերակում չի աջակցվում:"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Այս գործառույթը Android-ի այս տարբերակում չի աջակցվում:"</string>
 </resources>
diff --git a/chromium/res/values-in/strings.xml b/chromium/res/values-in/strings.xml
index a1b7d54..d7b08bb 100644
--- a/chromium/res/values-in/strings.xml
+++ b/chromium/res/values-in/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Fungsi ini tidak didukung oleh versi Android ini."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Fungsi ini tidak didukung oleh versi Android ini."</string>
 </resources>
diff --git a/chromium/res/values-is-rIS/strings.xml b/chromium/res/values-is-rIS/strings.xml
new file mode 100644
index 0000000..d6245e6
--- /dev/null
+++ b/chromium/res/values-is-rIS/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Þessi eiginleiki er ekki studdur í þessari útgáfu af Android."</string>
+</resources>
diff --git a/chromium/res/values-it/strings.xml b/chromium/res/values-it/strings.xml
index 433fec9..f407a4b 100644
--- a/chromium/res/values-it/strings.xml
+++ b/chromium/res/values-it/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Questa funzionalità non è supportata in questa versione di Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Questa funzionalità non è supportata in questa versione di Android."</string>
 </resources>
diff --git a/chromium/res/values-iw/strings.xml b/chromium/res/values-iw/strings.xml
index 624e5ab..9be0ed5 100644
--- a/chromium/res/values-iw/strings.xml
+++ b/chromium/res/values-iw/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"‏הפונקציונליות הזו אינה נתמכת בגרסה הזו של Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"פעולה לא נתמכת בגרסה זו."</string>
 </resources>
diff --git a/chromium/res/values-ja/strings.xml b/chromium/res/values-ja/strings.xml
index bacbb3b..44ca5a8 100644
--- a/chromium/res/values-ja/strings.xml
+++ b/chromium/res/values-ja/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"この機能はこのバージョンのAndroidではサポートされていません。"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"この機能はこのバージョンのAndroidではサポートされていません。"</string>
 </resources>
diff --git a/chromium/res/values-ka-rGE/strings.xml b/chromium/res/values-ka-rGE/strings.xml
index ef5dee9..7735693 100644
--- a/chromium/res/values-ka-rGE/strings.xml
+++ b/chromium/res/values-ka-rGE/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Android-ის ამ ვერსიაში ეს ფუნქცია მხარდაჭერილი არ არის."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"ამ ვერს. ფუნქც.მხარდაუჭ."</string>
 </resources>
diff --git a/chromium/res/values-kk-rKZ/strings.xml b/chromium/res/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..9248461
--- /dev/null
+++ b/chromium/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Бұл фун. осы Android қолдам."</string>
+</resources>
diff --git a/chromium/res/values-km-rKH/strings.xml b/chromium/res/values-km-rKH/strings.xml
index 3dc16cd..c2cbf48 100644
--- a/chromium/res/values-km-rKH/strings.xml
+++ b/chromium/res/values-km-rKH/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"មុខងារ​នេះ​មិន​ត្រូវ​បាន​គាំទ្រ​នៅ​ក្នុង​កំណែ​របស់ Android នេះ​ទេ។"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"មុខងារនេះមិនត្រូវបានគាំទ្រនៅក្នុងកំណែ Android នេះទេ។"</string>
 </resources>
diff --git a/chromium/res/values-kn-rIN/strings.xml b/chromium/res/values-kn-rIN/strings.xml
new file mode 100644
index 0000000..8dbf6c9
--- /dev/null
+++ b/chromium/res/values-kn-rIN/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Android ನ ಈ ಆವೃತ್ತಿಯಲ್ಲಿ ಈ ಕಾರ್ಯಕ್ಷಮತೆಯು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ."</string>
+</resources>
diff --git a/chromium/res/values-ko/strings.xml b/chromium/res/values-ko/strings.xml
index f68e8d6..f097b7f 100644
--- a/chromium/res/values-ko/strings.xml
+++ b/chromium/res/values-ko/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"사용 중인 Android 버전에서 지원되지 않는 기능입니다."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"사용 중인 Android 버전에서 지원되지 않는 기능입니다."</string>
 </resources>
diff --git a/chromium/res/values-ky-rKG/strings.xml b/chromium/res/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..2262754
--- /dev/null
+++ b/chromium/res/values-ky-rKG/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Бул функция ушул Android версиясында колдоого алынбайт."</string>
+</resources>
diff --git a/chromium/res/values-lo-rLA/strings.xml b/chromium/res/values-lo-rLA/strings.xml
index 0551b30..1fa390b 100644
--- a/chromium/res/values-lo-rLA/strings.xml
+++ b/chromium/res/values-lo-rLA/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"ຄວາມສາມາດນີ້ຍັງບໍ່ຖືກຮອງຮັບໃນ Android ເວີຊັນນີ້ເທື່ອ."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"ຄວາມ​ສາມາດນີ້​ຍັງບໍ່ຖືກ​ຮອງຮັບໃນ Android ເວີຊັນ​ນີ້ເທື່ອ."</string>
 </resources>
diff --git a/chromium/res/values-lt/strings.xml b/chromium/res/values-lt/strings.xml
index 5e74864..3eee6c6 100644
--- a/chromium/res/values-lt/strings.xml
+++ b/chromium/res/values-lt/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Naudojant šią „Android“ versiją, šios funkcijos negalimos."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Šios v. „Android“ šios funkc. nepal."</string>
 </resources>
diff --git a/chromium/res/values-lv/strings.xml b/chromium/res/values-lv/strings.xml
index 5999b45..c6be5ba 100644
--- a/chromium/res/values-lv/strings.xml
+++ b/chromium/res/values-lv/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Šajā Android versijā šī funkcija netiek atbalstīta."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Šajā Android versijā šī funkcija netiek atbalstīta."</string>
 </resources>
diff --git a/chromium/res/values-mk-rMK/strings.xml b/chromium/res/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..8ca84e9
--- /dev/null
+++ b/chromium/res/values-mk-rMK/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Функцијата не е поддржана во оваа верзија на Android."</string>
+</resources>
diff --git a/chromium/res/values-ml-rIN/strings.xml b/chromium/res/values-ml-rIN/strings.xml
new file mode 100644
index 0000000..3713095
--- /dev/null
+++ b/chromium/res/values-ml-rIN/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Android-ന്റെ ഈ പതിപ്പിൽ ഈ പ്രവർത്തനത്തെ പിന്തുണയ്ക്കില്ല."</string>
+</resources>
diff --git a/chromium/res/values-mn-rMN/strings.xml b/chromium/res/values-mn-rMN/strings.xml
index 7f3323c..31bc7ab 100644
--- a/chromium/res/values-mn-rMN/strings.xml
+++ b/chromium/res/values-mn-rMN/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Андройдын энэ хувилбар дээр энэ функц дэмжигдээгүй."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Андройдын энэ хувилбар дээр энэ функц дэмжигдээгүй."</string>
 </resources>
diff --git a/chromium/res/values-mr-rIN/strings.xml b/chromium/res/values-mr-rIN/strings.xml
new file mode 100644
index 0000000..0ce6a26
--- /dev/null
+++ b/chromium/res/values-mr-rIN/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Android च्‍या या आवृत्तीत ही कार्यक्षमता समर्थित नाही."</string>
+</resources>
diff --git a/chromium/res/values-ms-rMY/strings.xml b/chromium/res/values-ms-rMY/strings.xml
index 1582386..219a935 100644
--- a/chromium/res/values-ms-rMY/strings.xml
+++ b/chromium/res/values-ms-rMY/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Fungsi ini tidak disokong dalam Android versi ini."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Fungsi ini tidak disokong dalam Android versi ini."</string>
 </resources>
diff --git a/chromium/res/values-my-rMM/strings.xml b/chromium/res/values-my-rMM/strings.xml
new file mode 100644
index 0000000..e819ed0
--- /dev/null
+++ b/chromium/res/values-my-rMM/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"ဤဗားရှင်းတွင် သုံးမရပါ။"</string>
+</resources>
diff --git a/chromium/res/values-nb/strings.xml b/chromium/res/values-nb/strings.xml
index fa7fabe..a07b17f 100644
--- a/chromium/res/values-nb/strings.xml
+++ b/chromium/res/values-nb/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Denne funksjonaliteten støttes ikke i denne Android-versjonen."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Denne funksjonaliteten støttes ikke i denne Android-versjonen."</string>
 </resources>
diff --git a/chromium/res/values-ne-rNP/strings.xml b/chromium/res/values-ne-rNP/strings.xml
index fe693d3..ce13393 100644
--- a/chromium/res/values-ne-rNP/strings.xml
+++ b/chromium/res/values-ne-rNP/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Android को यस संस्करणमा यो कार्य समर्थित छैन।"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Android को यस संस्करणमा यो कार्य समर्थित छैन।"</string>
 </resources>
diff --git a/chromium/res/values-nl/strings.xml b/chromium/res/values-nl/strings.xml
index 77634b4..c8ef70a 100644
--- a/chromium/res/values-nl/strings.xml
+++ b/chromium/res/values-nl/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Deze functionaliteit wordt niet ondersteund in deze versie van Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Deze functionaliteit wordt niet ondersteund in deze versie van Android."</string>
 </resources>
diff --git a/chromium/res/values-pa-rIN/strings.xml b/chromium/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..2fdf77e
--- /dev/null
+++ b/chromium/res/values-pa-rIN/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"ਇਹ ਫੰਕਸ਼ਨੈਲਿਟੀ Android ਦੇ ਇਸ ਵਰਜਨ ਵਿੱਚ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ।"</string>
+</resources>
diff --git a/chromium/res/values-pl/strings.xml b/chromium/res/values-pl/strings.xml
index 1b079e5..d7524ac 100644
--- a/chromium/res/values-pl/strings.xml
+++ b/chromium/res/values-pl/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"W tej wersji Androida ta funkcja jest niedostępna."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"W tej wersji Androida ta funkcja jest niedostępna."</string>
 </resources>
diff --git a/chromium/res/values-pt-rPT/strings.xml b/chromium/res/values-pt-rPT/strings.xml
index 1517a4a..460b29a 100644
--- a/chromium/res/values-pt-rPT/strings.xml
+++ b/chromium/res/values-pt-rPT/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Esta funcionalidade não é suportada nesta versão do Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Esta funcionalidade não é compatível com esta versão do Android."</string>
 </resources>
diff --git a/chromium/res/values-pt/strings.xml b/chromium/res/values-pt/strings.xml
index 57f399c..b8db4b0 100644
--- a/chromium/res/values-pt/strings.xml
+++ b/chromium/res/values-pt/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Funcionalidade não suportada nesta versão do Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Não ac. neste Android."</string>
 </resources>
diff --git a/chromium/res/values-ro/strings.xml b/chromium/res/values-ro/strings.xml
index 5c8d240..a45ff3a 100644
--- a/chromium/res/values-ro/strings.xml
+++ b/chromium/res/values-ro/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Această funcție nu este acceptată în această versiune de Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Această funcție nu este acceptată în această versiune de Android."</string>
 </resources>
diff --git a/chromium/res/values-ru/strings.xml b/chromium/res/values-ru/strings.xml
index 2172f0e..fb5c12f 100644
--- a/chromium/res/values-ru/strings.xml
+++ b/chromium/res/values-ru/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Эта функция не поддерживается в данной версии Android"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Эта функция не поддерживается в данной версии Android"</string>
 </resources>
diff --git a/chromium/res/values-si-rLK/strings.xml b/chromium/res/values-si-rLK/strings.xml
index b371c48..039f0e1 100644
--- a/chromium/res/values-si-rLK/strings.xml
+++ b/chromium/res/values-si-rLK/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"මෙම ක්‍රියාකාරිත්වය මෙම Android අනුවාදයේ සහය නොදක්වයි."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"මෙම ක්‍රියාකාරිත්වය මෙම Android අනුවාදයේ සහය නොදක්වයි."</string>
 </resources>
diff --git a/chromium/res/values-sk/strings.xml b/chromium/res/values-sk/strings.xml
index ae78264..5989b27 100644
--- a/chromium/res/values-sk/strings.xml
+++ b/chromium/res/values-sk/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Daná funkcia nie je v tejto verzii systému Android podporovaná."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Funkcia nie je v tejto verzii Androidu podporovaná."</string>
 </resources>
diff --git a/chromium/res/values-sl/strings.xml b/chromium/res/values-sl/strings.xml
index 08e62ff..501fb33 100644
--- a/chromium/res/values-sl/strings.xml
+++ b/chromium/res/values-sl/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Ta funkcija ni podprta v tej različici Androida."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Ta funkcija ni podprta v tej različici Androida."</string>
 </resources>
diff --git a/chromium/res/values-sq-rAL/strings.xml b/chromium/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..69f64bd
--- /dev/null
+++ b/chromium/res/values-sq-rAL/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Ky funksion nuk mbështetet në këtë version të \"androidit\"."</string>
+</resources>
diff --git a/chromium/res/values-sr/strings.xml b/chromium/res/values-sr/strings.xml
index 222d155..0ca5ec1 100644
--- a/chromium/res/values-sr/strings.xml
+++ b/chromium/res/values-sr/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Ова функција није подржана у овој верзији Android-а."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Ова функција није подржана у овој верзији Android-а."</string>
 </resources>
diff --git a/chromium/res/values-sv/strings.xml b/chromium/res/values-sv/strings.xml
index 8803f6f..c97f584 100644
--- a/chromium/res/values-sv/strings.xml
+++ b/chromium/res/values-sv/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Funktionen stöds inte i den här versionen av Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Funktionen stöds inte i den här versionen av Android."</string>
 </resources>
diff --git a/chromium/res/values-sw/strings.xml b/chromium/res/values-sw/strings.xml
index 57a685a..28afac3 100644
--- a/chromium/res/values-sw/strings.xml
+++ b/chromium/res/values-sw/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Utendaji huu hauwezi kutumika katika toleo hili la Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Utendaji huu hauwezi kutumika katika toleo hili la Android."</string>
 </resources>
diff --git a/chromium/res/values-ta-rIN/strings.xml b/chromium/res/values-ta-rIN/strings.xml
new file mode 100644
index 0000000..66ed197
--- /dev/null
+++ b/chromium/res/values-ta-rIN/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"இந்த Android பதிப்பில், செயல்பாடு ஆதரிக்கப்படவில்லை."</string>
+</resources>
diff --git a/chromium/res/values-te-rIN/strings.xml b/chromium/res/values-te-rIN/strings.xml
new file mode 100644
index 0000000..cf369e8
--- /dev/null
+++ b/chromium/res/values-te-rIN/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"ఈ కార్యాచరణకు ఈ Android సంస్కరణలో మద్దతు లేదు."</string>
+</resources>
diff --git a/chromium/res/values-th/strings.xml b/chromium/res/values-th/strings.xml
index aad3ebd..c25d58f 100644
--- a/chromium/res/values-th/strings.xml
+++ b/chromium/res/values-th/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"ฟังก์ชันการทำงานนี้ไม่ได้รับการสนับสนุนใน Android เวอร์ชันนี้"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Android ไม่รองรับ"</string>
 </resources>
diff --git a/chromium/res/values-tl/strings.xml b/chromium/res/values-tl/strings.xml
index 40cf23b..3aeb7fd 100644
--- a/chromium/res/values-tl/strings.xml
+++ b/chromium/res/values-tl/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Hindi sinusuportahan ang pagpapaganang ito sa bersyong ito ng Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Hindi sinusuportahan functionality sa Android version na ito."</string>
 </resources>
diff --git a/chromium/res/values-tr/strings.xml b/chromium/res/values-tr/strings.xml
index 02d73dd..c6833c5 100644
--- a/chromium/res/values-tr/strings.xml
+++ b/chromium/res/values-tr/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Bu işlev, Android\'in bu sürümünde desteklenmiyor."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Bu işlev, Android\'in bu sürümünde desteklenmiyor."</string>
 </resources>
diff --git a/chromium/res/values-uk/strings.xml b/chromium/res/values-uk/strings.xml
index bafe75c..0774531 100644
--- a/chromium/res/values-uk/strings.xml
+++ b/chromium/res/values-uk/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Функція не підтримується в цій версії Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Функція не підтримується в цій версії Android."</string>
 </resources>
diff --git a/chromium/res/values-ur-rPK/strings.xml b/chromium/res/values-ur-rPK/strings.xml
new file mode 100644
index 0000000..0926aeb
--- /dev/null
+++ b/chromium/res/values-ur-rPK/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"‏یہ فعالیت Android کے اس ورژن میں تعاون یافتہ نہیں ہے۔"</string>
+</resources>
diff --git a/chromium/res/values-uz-rUZ/strings.xml b/chromium/res/values-uz-rUZ/strings.xml
new file mode 100644
index 0000000..53c31b2
--- /dev/null
+++ b/chromium/res/values-uz-rUZ/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (c) 2012 The Chromium Authors. All rights reserved.
+
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Bu xususiyat Androidning ushbu versiyasida ishlamaydi."</string>
+</resources>
diff --git a/chromium/res/values-vi/strings.xml b/chromium/res/values-vi/strings.xml
index 7f591e7..29c7ee8 100644
--- a/chromium/res/values-vi/strings.xml
+++ b/chromium/res/values-vi/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Chức năng này không được hỗ trợ trong phiên bản này của Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Chức năng này không được hỗ trợ trong phiên bản này của Android."</string>
 </resources>
diff --git a/chromium/res/values-zh-rCN/strings.xml b/chromium/res/values-zh-rCN/strings.xml
index 4fc2d08..fcaa983 100644
--- a/chromium/res/values-zh-rCN/strings.xml
+++ b/chromium/res/values-zh-rCN/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"此版本的 Android 系统不支持该功能。"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"此版本的Android系统不支持该功能。"</string>
 </resources>
diff --git a/chromium/res/values-zh-rHK/strings.xml b/chromium/res/values-zh-rHK/strings.xml
index 2ff5160..5a37ee7 100644
--- a/chromium/res/values-zh-rHK/strings.xml
+++ b/chromium/res/values-zh-rHK/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"這個 Android 版本不支援這項功能。"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"這個 Android 版本不支援這項功能。"</string>
 </resources>
diff --git a/chromium/res/values-zh-rTW/strings.xml b/chromium/res/values-zh-rTW/strings.xml
index 2ff5160..5a37ee7 100644
--- a/chromium/res/values-zh-rTW/strings.xml
+++ b/chromium/res/values-zh-rTW/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"這個 Android 版本不支援這項功能。"</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"這個 Android 版本不支援這項功能。"</string>
 </resources>
diff --git a/chromium/res/values-zu/strings.xml b/chromium/res/values-zu/strings.xml
index f0c7f51..484b4c4 100644
--- a/chromium/res/values-zu/strings.xml
+++ b/chromium/res/values-zu/strings.xml
@@ -7,5 +7,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="webviewchromium_private_browsing_warning" msgid="5444325116504635857">"Lokhu kusebenza akusekelwe kule nguqulo ye-Android."</string>
+    <string name="webviewchromium_private_browsing_warning" msgid="4489411236472600535">"Lokhu kusebenza akusekelwe kule nguqulo ye-Android."</string>
 </resources>
diff --git a/chromium/tests/UbWebViewJankTests/Android.mk b/chromium/tests/UbWebViewJankTests/Android.mk
deleted file mode 100644
index 0c2d128..0000000
--- a/chromium/tests/UbWebViewJankTests/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2014 Google Inc. All Rights Reserved.
-#
-# 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.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := UbWebViewJankTests
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := ub-uiautomator ub-janktesthelper
-
-LOCAK_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/chromium/tests/UbWebViewJankTests/AndroidManifest.xml b/chromium/tests/UbWebViewJankTests/AndroidManifest.xml
deleted file mode 100644
index cf1adb6..0000000
--- a/chromium/tests/UbWebViewJankTests/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.webview.chromium.tests.jank">
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation
-            android:name="android.test.InstrumentationTestRunner"
-            android:targetPackage="com.android.webview.chromium.tests.jank"
-            android:label="Chromium Jank Tests" />
-
-</manifest>
diff --git a/chromium/tests/UbWebViewJankTests/src/com/android/webview/chromium/tests/jank/WebViewFlingTest.java b/chromium/tests/UbWebViewJankTests/src/com/android/webview/chromium/tests/jank/WebViewFlingTest.java
deleted file mode 100644
index 16eee7f..0000000
--- a/chromium/tests/UbWebViewJankTests/src/com/android/webview/chromium/tests/jank/WebViewFlingTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.webview.chromium.tests.jank;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.SystemClock;
-import android.support.test.jank.JankTest;
-import android.support.test.jank.JankTestBase;
-import android.support.test.jank.JankType;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.UiScrollable;
-import android.support.test.uiautomator.UiSelector;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Jank test for Android Webview.
- *
- * To run
- * 1) Install the test application (com.android.webview.chromium.shell)
- * 2) Place a directories containing the test pages on the test device in
- *    $EXTERNAL_STORAGE/AwJankPages. Each directory should contain an index.html
- *    file as the main file of the test page.
- * 3) Build this test and install the resulting apk file
- * 4) Run the test using the command:
- *    adb shell am instrument -e Url URL -w \
- *            com.android.webview.chromium.tests.jank/android.test.InstrumentationTestRunner
- *
- */
-public class WebViewFlingTest extends JankTestBase {
-
-    private static final long TEST_DELAY_TIME_MS = 2 * 1000; // 2 seconds
-    private static final long PAGE_LOAD_DELAY_TIME_MS = 20 * 1000; // 20 seconds
-    private static final int MIN_DATA_SIZE = 50;
-    private static final long DEFAULT_ANIMATION_TIME = 2 * 1000;
-    private static final String CHROMIUM_SHELL_APP = "com.android.webview.chromium.shell";
-    private static final String CHROMIUM_SHELL_ACTIVITY = CHROMIUM_SHELL_APP + ".JankActivity";
-    private static final String RES_PACKAGE = "com.android.webview.chromium.shell";
-
-    private UiDevice mDevice;
-
-    /**
-    * {@inheritDoc}
-    */
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mDevice = UiDevice.getInstance(getInstrumentation());
-        mDevice.setOrientationNatural();
-
-        // Get the URL argument
-        String url = getArguments().getString("Url");
-        File webpage = new File(url);
-        assertNotNull("No test pages", webpage);
-
-        // Launch the chromium shell
-        Intent intent = new Intent(Intent.ACTION_DEFAULT,
-                Uri.parse("file://" + webpage.getAbsolutePath()));
-        intent.setClassName(CHROMIUM_SHELL_APP, CHROMIUM_SHELL_ACTIVITY);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        getInstrumentation().getContext().startActivity(intent);
-        SystemClock.sleep(PAGE_LOAD_DELAY_TIME_MS);
-    }
-
-    @Override
-    public void beforeLoop() {
-        UiObject2 container = mDevice.findObject(By.res(RES_PACKAGE, "container"));
-
-        // Fling to the top
-        while (container.fling(Direction.UP)) {
-        }
-
-        SystemClock.sleep(TEST_DELAY_TIME_MS);
-    }
-
-    @JankTest(type=JankType.CONTENT_FRAMES, expectedFrames=MIN_DATA_SIZE)
-    public void testBrowserPageFling() throws IOException {
-        mDevice.findObject(By.res(RES_PACKAGE, "container")).fling(Direction.DOWN);
-        SystemClock.sleep(DEFAULT_ANIMATION_TIME);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void tearDown() throws Exception {
-        mDevice.unfreezeRotation();
-
-        super.tearDown();
-    }
-}
diff --git a/chromium/tests/data/heavy/index.html b/chromium/tests/data/heavy/index.html
deleted file mode 100755
index 6c47600..0000000
--- a/chromium/tests/data/heavy/index.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<html>
-  <head>
-    <style>
-@-webkit-keyframes transformations {
-  0% {-webkit-transform: translate3d(0px,0,0);}
- 50% {-webkit-transform: translate3d(30px,0,0);}
-100% {-webkit-transform: translate3d(00px,0,0);}
-}
-
-      #fixed {background-color: red; position: fixed; width: 200px; height: 400px; z-index: -1;}
-      #layer {color: white; background-color: blue; -webkit-transform: translate3d(0,0,0); position: absolute; top: 40; left: 30; width: 500px; height: 15000px;
--webkit-animation-direction: normal;
--webkit-animation-duration: 1s;
--webkit-animation-iteration-count: infinite;
--webkit-animation-name: transformations;
--webkit-animation-timing-function: ease;
-}
-
-      #layer2 {color: white; background-color: green; -webkit-transform: translate3d(0,0,0) rotate3d(0,0,1,1deg); position: absolute; top: 40; left: 120; width: 1000px; height: 15000px;}
-      #layer3 {color: white; background-color: red; -webkit-transform: translate3d(0,0,0) rotate3d(0,0,1,181deg); position: absolute; top: 40; left: 150; width: 750px; height: 15000px;}
-      #layer4 {color: white; background-color: black; -webkit-transform: translate3d(0,0,0); position: absolute; top: 40; left: 200; width: 750px; height: 15000px; opacity: 0.5;}
-    </style>
-  </head>
-
-  <body bgcolor=gray>
-    <div id="fixed"> fixed layer </div>
-    <div>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-    </div>
-    <div id="layer">
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-    </div>
-    <div id="layer2">
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-    </div>
-
-    <div id="layer3">
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-    </div>
-    <div id="layer4">
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-    </div>
-  </body>
-</html>
diff --git a/chromium/tests/data/light/index.html b/chromium/tests/data/light/index.html
deleted file mode 100755
index 128950a..0000000
--- a/chromium/tests/data/light/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<html>
-  <body bgcolor=gray>
-    <div>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-      1lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 2lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 3lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 4lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 5lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> 6lorem</br> lorem</br> lorem</br> lorem</br> lorem</br> lorem</br>
-    </div>
-  </body>
-</html>
diff --git a/chromium/tests/java/Android.mk b/chromium/tests/java/Android.mk
deleted file mode 100644
index 36f94e7..0000000
--- a/chromium/tests/java/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2014 Google Inc. All Rights Reserved.
-#
-# 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.
-
-local_target_dir := $(TARGET_OUT_DATA)/local/tmp
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE := WebViewJankTests
-
-LOCAL_JAVA_LIBRARIES := uiautomator
-LOCAL_STATIC_JAVA_LIBRARIES := webview-janktesthelper
-LOCAL_MODULE_TAGS := tests
-include $(BUILD_JAVA_LIBRARY)
-
-####
-# TODO: remove our copy of JTH prebuilt (b/13743200)
-include $(CLEAR_VARS)
-LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := webview-janktesthelper:../prebuilts/android-janktesthelper.jar
-
-include $(BUILD_MULTI_PREBUILT)
diff --git a/chromium/tests/java/src/com/android/uiautomator/platform/WebViewFlingTest.java b/chromium/tests/java/src/com/android/uiautomator/platform/WebViewFlingTest.java
deleted file mode 100644
index 42303aa..0000000
--- a/chromium/tests/java/src/com/android/uiautomator/platform/WebViewFlingTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.uiautomator.platform;
-
-import com.android.uiautomator.core.UiObjectNotFoundException;
-import com.android.uiautomator.core.UiScrollable;
-import com.android.uiautomator.core.UiSelector;
-import com.android.uiautomator.janktesthelper.JankTestBase;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Jank test for Android Webview.
- *
- * To run
- * 1) Install the test application (com.android.webview.chromium.shell)
- * 2) Place a directories containing the test pages on the test device in
- *    $EXTERNAL_STORAGE/AwJankPages. Each directory should contain an index.html
- *    file as the main file of the test page.
- * 3) Build this test and push the resulting Jar file to /data/local/tmp/WebViewJankTests.jar
- * 4) Run the test using the command:
- *    adb shell uiautomator runtest WebViewJankTests.jar
- *
- * The test will run for each of the test pages. The results will be saved on the device in
- * /data/local/tmp/jankoutput.txt.
- */
-public class WebViewFlingTest extends JankTestBase {
-
-    private static final long TEST_DELAY_TIME_MS = 2 * 1000; // 2 seconds
-    private static final long PAGE_LOAD_DELAY_TIMEOUT_MS = 10 * 1000; // 10 seconds
-    private static final long PAGE_LOAD_DELAY_TIME_MS = 20 * 1000; // 20 seconds
-    private static final int MIN_DATA_SIZE = 50;
-    private static final String AW_WINDOW_NAME =
-            "com.android.webview.chromium.shell/com.android.webview.chromium.shell.JankActivity";
-    private static final String AW_CONTAINER = "com.android.webview.chromium.shell:id/container";
-    private static final String START_CMD =
-            "am start -n com.android.webview.chromium.shell/.JankActivity -d ";
-    private UiScrollable mWebPageDisplay = null;
-
-    public void testBrowserPageFling() throws UiObjectNotFoundException, IOException {
-        String url = mParams.getString("Url");
-        File webpage = new File(url);
-        assertNotNull("No test pages", webpage);
-        runBrowserPageFling(webpage);
-    }
-
-    private void resetFlingTest() throws UiObjectNotFoundException {
-        getContainer().flingToBeginning(20);
-    }
-
-    private void loadUrl(String url) throws IOException {
-        Runtime.getRuntime().exec(START_CMD + url);
-        // Need to find a good way of detecting when the page is loaded
-        sleep(PAGE_LOAD_DELAY_TIME_MS);
-    }
-
-    private void flingForward() throws UiObjectNotFoundException {
-        getContainer().flingForward();
-    }
-
-    private UiScrollable getContainer() {
-        if (mWebPageDisplay == null) {
-            mWebPageDisplay =
-                    new UiScrollable(new UiSelector().resourceId(AW_CONTAINER).instance(0));
-            assertTrue("Failed to get web container",
-                mWebPageDisplay.waitForExists(PAGE_LOAD_DELAY_TIMEOUT_MS));
-        }
-        return mWebPageDisplay;
-    }
-
-    /**
-    * {@inheritDoc}
-    */
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        getUiDevice().setOrientationNatural();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void tearDown() throws Exception {
-        getUiDevice().unfreezeRotation();
-        super.tearDown();
-    }
-
-    private void runBrowserPageFling(File testFile) throws UiObjectNotFoundException, IOException {
-        loadUrl("file://" + testFile.getAbsolutePath());
-        for (int i = 0; i < getIteration(); i++) {
-            resetFlingTest();
-            sleep(TEST_DELAY_TIME_MS);
-            startTrace(mTestCaseName, i);
-            getSurfaceFlingerHelper().clearBuffer(AW_WINDOW_NAME);
-            flingForward();
-            sleep(DEFAULT_ANIMATION_TIME);
-            boolean result =
-                    getSurfaceFlingerHelper().dumpFrameLatency(AW_WINDOW_NAME, true);
-            assertTrue("dump frame latency failed", result);
-
-            waitForTrace();
-            assertTrue(String.format("Sample size is less than expected: %d", MIN_DATA_SIZE),
-                    validateResults(MIN_DATA_SIZE));
-            // record the result in an array
-            recordResults(mTestCaseName, i);
-        }
-        // calculate average and save the results
-        saveResults(mTestCaseName);
-    }
-}
diff --git a/chromium/tests/prebuilts/android-janktesthelper.jar b/chromium/tests/prebuilts/android-janktesthelper.jar
deleted file mode 100644
index 44e3af9..0000000
--- a/chromium/tests/prebuilts/android-janktesthelper.jar
+++ /dev/null
Binary files differ
diff --git a/chromium/tools/WebViewShell/Android.mk b/chromium/tools/WebViewShell/Android.mk
deleted file mode 100644
index 26912b1..0000000
--- a/chromium/tools/WebViewShell/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Copyright (C) 2013 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_PACKAGE_NAME := WebViewShell
-
-LOCAL_SDK_VERSION := 17
-
-include $(BUILD_PACKAGE)
diff --git a/chromium/tools/WebViewShell/AndroidManifest.xml b/chromium/tools/WebViewShell/AndroidManifest.xml
deleted file mode 100644
index 575ab1c..0000000
--- a/chromium/tools/WebViewShell/AndroidManifest.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<!--
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.webview.chromium.shell"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-    <uses-sdk android:minSdkVersion="17"
-      android:targetSdkVersion="19" />
-
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
-
-  <application
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@android:style/Theme.Light" >
-        <activity
-            android:name=".TelemetryActivity"
-            android:label="@string/title_activity_telemetry" >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-        <activity
-            android:name=".JankActivity"
-            android:label="@string/title_activity_jank"
-            android:noHistory="true">
-            <intent-filter>
-                <action android:name="android.intent.action.VIEW" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
diff --git a/chromium/tools/WebViewShell/res/drawable/ic_launcher.png b/chromium/tools/WebViewShell/res/drawable/ic_launcher.png
deleted file mode 100644
index 96a442e..0000000
--- a/chromium/tools/WebViewShell/res/drawable/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/chromium/tools/WebViewShell/res/layout/activity_telemetry.xml b/chromium/tools/WebViewShell/res/layout/activity_telemetry.xml
deleted file mode 100644
index 2ef8394..0000000
--- a/chromium/tools/WebViewShell/res/layout/activity_telemetry.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/container"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:gravity="center">
-
-    <WebView
-        android:id="@+id/webview"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</LinearLayout>
-
diff --git a/chromium/tools/WebViewShell/res/values/strings.xml b/chromium/tools/WebViewShell/res/values/strings.xml
deleted file mode 100644
index 5eed399..0000000
--- a/chromium/tools/WebViewShell/res/values/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <string name="app_name">WebView Telemetry</string>
-    <string name="title_activity_telemetry">WebView Telemetry</string>
-    <string name="title_activity_jank">WebView Jank Tester</string>
-</resources>
diff --git a/chromium/tools/WebViewShell/src/com/android/webview/chromium/shell/JankActivity.java b/chromium/tools/WebViewShell/src/com/android/webview/chromium/shell/JankActivity.java
deleted file mode 100644
index 3694ce9..0000000
--- a/chromium/tools/WebViewShell/src/com/android/webview/chromium/shell/JankActivity.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.webview.chromium.shell;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.webkit.CookieManager;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-/**
- * This activity is designed for Android Jank testing of WebView. It takes a URL as an argument, and
- * displays the page ready for the Jank tester to test scrolling etc.
- */
-public class JankActivity extends Activity {
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        getWindow().setTitle(
-                getResources().getString(R.string.title_activity_jank));
-        setContentView(R.layout.activity_telemetry);
-
-        WebView webView = (WebView) findViewById(R.id.webview);
-        CookieManager.setAcceptFileSchemeCookies(true);
-
-        webView.setWebViewClient(new WebViewClient() {
-            @Override
-            public boolean shouldOverrideUrlLoading(WebView webView, String url) {
-                return false;
-            }
-        });
-
-        String url = getUrlFromIntent(getIntent());
-        webView.loadUrl(url);
-    }
-
-    private static String getUrlFromIntent(Intent intent) {
-        return intent != null ? intent.getDataString() : null;
-    }
-
-}
diff --git a/chromium/tools/WebViewShell/src/com/android/webview/chromium/shell/TelemetryActivity.java b/chromium/tools/WebViewShell/src/com/android/webview/chromium/shell/TelemetryActivity.java
deleted file mode 100644
index d6203d0..0000000
--- a/chromium/tools/WebViewShell/src/com/android/webview/chromium/shell/TelemetryActivity.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.webview.chromium.shell;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.webkit.CookieManager;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-public class TelemetryActivity extends Activity {
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        getWindow().setTitle(
-                getResources().getString(R.string.title_activity_telemetry));
-        setContentView(R.layout.activity_telemetry);
-
-        WebView webView = (WebView) findViewById(R.id.webview);
-        CookieManager.setAcceptFileSchemeCookies(true);
-        webView.getSettings().setJavaScriptEnabled(true);
-
-        webView.setWebViewClient(new WebViewClient() {
-                @Override
-                public boolean shouldOverrideUrlLoading(WebView webView, String url) {
-                    return false;
-                }
-        });
-
-        webView.loadUrl("about:blank");
-    }
-}
diff --git a/chromium/tools/merge_common.py b/chromium/tools/merge_common.py
index 40907de..634e19c 100644
--- a/chromium/tools/merge_common.py
+++ b/chromium/tools/merge_common.py
@@ -37,6 +37,7 @@
     'sdch/open-vcdiff',
     'testing/gtest',
     'third_party/angle',
+    'third_party/boringssl/src',
     'third_party/brotli/src',
     'third_party/eyesfree/src/android/java/src/com/googlecode/eyesfree/braille',
     'third_party/freetype',
@@ -44,6 +45,7 @@
     'third_party/leveldatabase/src',
     'third_party/libaddressinput/src',
     'third_party/libjingle/source/talk',
+    'third_party/libjpeg_turbo',
     'third_party/libphonenumber/src/phonenumbers',
     'third_party/libphonenumber/src/resources',
     'third_party/libsrtp',
@@ -51,7 +53,6 @@
     'third_party/libyuv',
     'third_party/mesa/src',
     'third_party/openmax_dl',
-    'third_party/openssl',
     'third_party/opus/src',
     'third_party/ots',
     'third_party/sfntly/cpp/src',
@@ -72,7 +73,8 @@
                         THIRD_PARTY_PROJECTS_WITH_FULL_HISTORY)
 
 ALL_PROJECTS = ['.'] + THIRD_PARTY_PROJECTS
-
+assert(set(ALL_PROJECTS) ==
+       set(PROJECTS_WITH_FLAT_HISTORY + PROJECTS_WITH_FULL_HISTORY))
 
 # Directories to be removed when flattening history.
 PRUNE_WHEN_FLATTENING = {
@@ -111,6 +113,11 @@
   """A merge error that can potentially be resolved by trying again later."""
 
 
+def Abbrev(commitish):
+  """Returns the abbrev commitish for a given Git SHA."""
+  return commitish[:12]
+
+
 def GetCommandStdout(args, cwd=REPOSITORY_ROOT, ignore_errors=False):
   """Gets stdout from runnng the specified shell command.
 
@@ -122,15 +129,16 @@
     cwd: The working directory to use. Defaults to REPOSITORY_ROOT.
     ignore_errors: Ignore the command's return code and stderr.
   Returns:
-    stdout from running the command.
+    A concatenation of stdout + stderr from running the command.
   Raises:
     CommandError: if the command exited with a nonzero status.
   """
   p = subprocess.Popen(args=args, cwd=cwd, stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE)
   stdout, stderr = p.communicate()
+  output = stdout + ('\n===STDERR===\n' if stderr and stdout else '') + stderr
   if p.returncode == 0 or ignore_errors:
-    return stdout
+    return output
   else:
     raise CommandError(p.returncode, ' '.join(args), cwd, stdout, stderr)
 
diff --git a/chromium/tools/merge_from_chromium.py b/chromium/tools/merge_from_chromium.py
index 6a7a67c..3145387 100755
--- a/chromium/tools/merge_from_chromium.py
+++ b/chromium/tools/merge_from_chromium.py
@@ -16,13 +16,11 @@
 
 """Merge Chromium into the Android tree."""
 
-import contextlib
 import logging
 import optparse
 import os
 import re
 import sys
-import urllib2
 
 import merge_common
 
@@ -53,12 +51,12 @@
 
 
 def _ParseDEPS(deps_content):
-  """Parses the .DEPS.git file from Chromium and returns its contents.
+  """Parses the DEPS file from Chromium and returns its contents.
 
   Args:
-    deps_content: The contents of the .DEPS.git file as text.
+    deps_content: The contents of the DEPS file as text.
   Returns:
-    A dictionary of the contents of .DEPS.git at the specified revision
+    A dictionary of the contents of DEPS at the specified revision
   """
 
   class FromImpl(object):
@@ -71,6 +69,7 @@
       return 'From("%s")' % self.module_name
 
   class _VarImpl(object):
+
     def __init__(self, custom_vars, local_scope):
       self._custom_vars = custom_vars
       self._local_scope = local_scope
@@ -86,20 +85,20 @@
   tmp_locals = {}
   var = _VarImpl({}, tmp_locals)
   tmp_globals = {'From': FromImpl, 'Var': var.Lookup, 'deps_os': {}}
-  exec(deps_content) in tmp_globals, tmp_locals
+  exec(deps_content) in tmp_globals, tmp_locals  # pylint: disable=W0122
   return tmp_locals
 
 
 def _GetProjectMergeInfo(projects, deps_vars):
-  """Gets the git URL and SHA1 for each project based on .DEPS.git.
+  """Gets the git URL and SHA1 for each project based on DEPS.
 
   Args:
     projects: The list of projects to consider.
-    deps_vars: The dictionary of dependencies from .DEPS.git.
+    deps_vars: The dictionary of dependencies from DEPS.
   Returns:
     A dictionary from project to git URL and SHA1 - 'path: (url, sha1)'
   Raises:
-    TemporaryMergeError: if a project to be merged is not found in .DEPS.git.
+    TemporaryMergeError: if a project to be merged is not found in DEPS.
   """
   deps_fallback_order = [
       deps_vars['deps'],
@@ -109,7 +108,7 @@
   result = {}
   for path in projects:
     for deps in deps_fallback_order:
-      if len(path) > 0:
+      if path:
         upstream_path = os.path.join('src', path)
       else:
         upstream_path = 'src'
@@ -118,7 +117,7 @@
         break
     else:
       raise merge_common.TemporaryMergeError(
-          'Could not find .DEPS.git entry for project %s. This probably '
+          'Could not find DEPS entry for project %s. This probably '
           'means that the project list in merge_from_chromium.py needs to be '
           'updated.' % path)
     match = re.match('(.*?)@(.*)', url_plus_sha1)
@@ -132,7 +131,7 @@
 def _MergeProjects(version, root_sha1, target, unattended, buildspec_url):
   """Merges each required Chromium project into the Android repository.
 
-  .DEPS.git is consulted to determine which revision each project must be merged
+  DEPS is consulted to determine which revision each project must be merged
   at. Only a whitelist of required projects are merged.
 
   Args:
@@ -141,6 +140,9 @@
     target: The target branch to merge to.
     unattended: Run in unattended mode.
     buildspec_url: URL for buildspec repository, when merging a branch.
+  Returns:
+    The abbrev sha1 merged. It will be either |root_sha1| itself (when merging
+    chromium trunk) or the upstream sha1 of the release.
   Raises:
     TemporaryMergeError: If incompatibly licensed code is left after pruning.
   """
@@ -155,8 +157,10 @@
 
   logging.debug('Parsing DEPS ...')
   if root_sha1:
-    deps_content = _ReadGitFile(root_sha1, '.DEPS.git')
+    deps_content = _ReadGitFile(root_sha1, 'DEPS')
   else:
+    # TODO(primiano): At some point the release branches will use DEPS as well,
+    # instead of .DEPS.git. Rename below when that day will come.
     deps_content = _ReadGitFile('FETCH_HEAD',
                                 'releases/' + version + '/.DEPS.git',
                                 buildspec_url,
@@ -204,15 +208,21 @@
   if not root_sha1:
     merge_info = _GetProjectMergeInfo([''], deps_vars)
     url = merge_info['']['url']
-    root_sha1 = merge_info['']['sha1']
-    merge_common.GetCommandStdout(['git', 'fetch', url, root_sha1])
-  logging.debug('Merging Chromium at %s ...', root_sha1)
+    merged_sha1 = merge_info['']['sha1']
+    merge_common.GetCommandStdout(['git', 'fetch', url, merged_sha1])
+    merged_sha1 = merge_common.Abbrev(merged_sha1)
+    merge_msg_version = '%s (%s)' % (version, merged_sha1)
+  else:
+    merge_msg_version = root_sha1
+    merged_sha1 = root_sha1
+
+  logging.debug('Merging Chromium at %s ...', merged_sha1)
   # Merge conflicts make git merge return 1, so ignore errors
-  merge_common.GetCommandStdout(['git', 'merge', '--no-commit', root_sha1],
+  merge_common.GetCommandStdout(['git', 'merge', '--no-commit', merged_sha1],
                                 ignore_errors=True)
   merge_common.CheckNoConflictsAndCommitMerge(
-      'Merge Chromium at %s (%s)\n\n%s'
-      % (version, root_sha1, AUTOGEN_MESSAGE), unattended=unattended)
+      'Merge Chromium at %s\n\n%s'
+      % (merge_msg_version, AUTOGEN_MESSAGE), unattended=unattended)
 
   logging.debug('Getting directories to exclude ...')
 
@@ -222,9 +232,9 @@
   sys.path.append(os.path.join(merge_common.REPOSITORY_ROOT, 'android_webview',
                                'tools'))
   sys.dont_write_bytecode = True
-  global webview_licenses
-  import webview_licenses
-  import known_issues
+  global webview_licenses  # pylint: disable=W0602
+  import webview_licenses  # pylint: disable=W0621,W0612,C6204
+  import known_issues  # pylint: disable=C6204
 
   for path, exclude_list in known_issues.KNOWN_INCOMPATIBLE.iteritems():
     logging.debug('  %s', '\n  '.join(os.path.join(path, x) for x in
@@ -236,6 +246,8 @@
       merge_common.GetCommandStdout(['git', 'commit', '-m',
                                      'Exclude unwanted directories'],
                                     cwd=dest_dir)
+  assert(root_sha1 is None or root_sha1 == merged_sha1)
+  return merged_sha1
 
 
 def _CheckLicenses():
@@ -331,19 +343,19 @@
         % (version, AUTOGEN_MESSAGE)])
 
 
-def _GenerateLastChange(version):
+def _GenerateLastChange(version, root_sha1):
   """Write a build/util/LASTCHANGE file containing the current revision.
 
   The revision number is compiled into the binary at build time from this file.
 
   Args:
     version: The version to mention in generated commit messages.
+    root_sha1: The SHA1 of the main project (before the merge).
   """
   logging.debug('Updating LASTCHANGE ...')
-  svn_revision, sha1 = _GetSVNRevisionAndSHA1('HEAD', 'HEAD')
   with open(os.path.join(merge_common.REPOSITORY_ROOT, 'build/util/LASTCHANGE'),
             'w') as f:
-    f.write('LASTCHANGE=%s\n' % svn_revision)
+    f.write('LASTCHANGE=%s\n' % merge_common.Abbrev(root_sha1))
   merge_common.GetCommandStdout(['git', 'add', '-f', 'build/util/LASTCHANGE'])
   logging.debug('Updating LASTCHANGE.blink ...')
   with open(os.path.join(merge_common.REPOSITORY_ROOT,
@@ -358,27 +370,13 @@
         % (version, AUTOGEN_MESSAGE)])
 
 
-def GetLKGR():
-  """Fetch the last known good release from Chromium's dashboard.
-
-  Returns:
-    The last known good SVN revision.
-  """
-  with contextlib.closing(
-      urllib2.urlopen('https://chromium-status.appspot.com/lkgr')) as lkgr:
-    return int(lkgr.read())
-
-
 def GetHEAD():
-  """Fetch the latest HEAD revision from the git mirror of the Chromium svn
-  repo.
+  """Fetch the latest HEAD revision from the Chromium Git mirror.
 
   Returns:
-    The latest HEAD SVN revision.
+    The latest HEAD revision (A Git abbrev SHA1).
   """
-  (svn_revision, root_sha1) = _GetSVNRevisionAndSHA1(SRC_GIT_BRANCH,
-                                                     'HEAD')
-  return int(svn_revision)
+  return _GetGitAbbrevSHA1(SRC_GIT_BRANCH, 'HEAD')
 
 
 def _ParseSvnRevisionFromGitCommitMessage(commit_message):
@@ -386,60 +384,53 @@
                    flags=re.MULTILINE).group(1)
 
 
-def _GetSVNRevisionFromSha(sha1):
-  commit = merge_common.GetCommandStdout([
-      'git', 'show', '--format=%H%n%b', sha1])
-  return _ParseSvnRevisionFromGitCommitMessage(commit)
+def _GetGitAbbrevSHA1(git_branch, revision):
+  """Returns an abbrev. SHA for the given revision (or branch, if HEAD)."""
+  assert revision
+  logging.debug('Getting Git revision for %s ...', revision)
 
+  upstream = git_branch if revision == 'HEAD' else revision
 
-def _GetSVNRevisionAndSHA1(git_branch, svn_revision):
-  logging.debug('Getting SVN revision and SHA1 ...')
+  # Make sure the remote and the branch exist locally.
+  try:
+    merge_common.GetCommandStdout([
+        'git', 'show-ref', '--verify', '--quiet', git_branch])
+  except merge_common.CommandError:
+    raise merge_common.TemporaryMergeError(
+        'Cannot find the branch %s. Have you sync\'d master-chromium in this '
+        'checkout?' % git_branch)
 
-  if svn_revision == 'HEAD':
-    # Just use the latest commit.
-    commit = merge_common.GetCommandStdout([
-        'git', 'log', '-n1', '--grep=git-svn-id:', '--format=%H%n%b',
-        git_branch])
-    sha1 = commit.split()[0]
-    svn_revision = _ParseSvnRevisionFromGitCommitMessage(commit)
-    return (svn_revision, sha1)
+  # Make sure the |upstream| Git object has been mirrored.
+  try:
+    merge_common.GetCommandStdout([
+        'git', 'merge-base', '--is-ancestor', upstream, git_branch])
+  except merge_common.CommandError:
+    raise merge_common.TemporaryMergeError(
+        'Upstream object (%s) not reachable from %s' % (upstream, git_branch))
 
-  if svn_revision is None:
-    # Fetch LKGR from upstream.
-    svn_revision = GetLKGR()
-  output = merge_common.GetCommandStdout([
-      'git', 'log', '--grep=git-svn-id: .*@%s' % svn_revision,
-      '--format=%H', git_branch])
-  if not output:
-    raise merge_common.TemporaryMergeError('Revision %s not found in git repo.'
-                                           % svn_revision)
-  # The log grep will sometimes match reverts/reapplies of commits. We take the
-  # oldest (last) match because the first time it appears in history is
-  # overwhelmingly likely to be the correct commit.
-  sha1 = output.split()[-1]
-  return (svn_revision, sha1)
+  abbrev_sha = merge_common.Abbrev(merge_common.GetCommandStdout(
+      ['git', 'rev-list', '--max-count=1', upstream]).split()[0])
+  return abbrev_sha
 
 
 def _GetBlinkRevision():
-  commit = merge_common.GetCommandStdout([
-      'git', 'log', '-n1', '--grep=git-svn-id:', '--format=%H%n%b'],
+  # TODO(primiano): Switch to Git as soon as Blink gets migrated as well.
+  commit = merge_common.GetCommandStdout(
+      ['git', 'log', '-n1', '--grep=git-svn-id:', '--format=%H%n%b'],
       cwd=os.path.join(merge_common.REPOSITORY_ROOT, 'third_party', 'WebKit'))
   return _ParseSvnRevisionFromGitCommitMessage(commit)
 
 
-def Snapshot(svn_revision, root_sha1, release, target, unattended,
-             buildspec_url):
+def Snapshot(root_sha1, release, target, unattended, buildspec_url):
   """Takes a snapshot of the Chromium tree and merges it into Android.
 
   Android makefiles and a top-level NOTICE file are generated and committed
   after the merge.
 
   Args:
-    svn_revision: The SVN revision in the Chromium repository to merge from.
-    root_sha1: The sha1 in the Chromium git mirror to merge from.
+    root_sha1: The abbrev sha1 in the Chromium git mirror to merge from.
     release: The Chromium release version to merge from (e.g. "30.0.1599.20").
-             Only one of svn_revision, root_sha1 and release should be
-             specified.
+             Only one of root_sha1 and release should be specified.
     target: The target branch to merge to.
     unattended: Run in unattended mode.
     buildspec_url: URL for buildspec repository, used when merging a release.
@@ -447,29 +438,25 @@
   Returns:
     True if new commits were merged; False if no new commits were present.
   """
-  if svn_revision:
-    svn_revision, root_sha1 = _GetSVNRevisionAndSHA1(SRC_GIT_BRANCH,
-                                                     svn_revision)
-  elif root_sha1:
-    svn_revision = _GetSVNRevisionFromSha(root_sha1)
-
-  if svn_revision and root_sha1:
-    version = svn_revision
-    if not merge_common.GetCommandStdout(['git', 'rev-list', '-1',
-                                          'HEAD..' + root_sha1]):
-      logging.info('No new commits to merge at %s (%s)',
-                   svn_revision, root_sha1)
-      return False
-  elif release:
-    version = release
+  if release:
     root_sha1 = None
+    version = release
   else:
-    raise merge_common.MergeError('No merge source specified')
+    root_sha1 = _GetGitAbbrevSHA1(SRC_GIT_BRANCH, root_sha1)
+    version = root_sha1
+
+  assert (root_sha1 is not None and len(root_sha1) > 6) or version == release
+
+  if root_sha1 and not merge_common.GetCommandStdout(
+      ['git', 'rev-list', '-1', 'HEAD..' + root_sha1]):
+    logging.info('No new commits to merge at %s (%s)', version, root_sha1)
+    return False
 
   logging.info('Snapshotting Chromium at %s (%s)', version, root_sha1)
 
   # 1. Merge, accounting for excluded directories
-  _MergeProjects(version, root_sha1, target, unattended, buildspec_url)
+  merged_sha1 = _MergeProjects(version, root_sha1, target, unattended,
+                               buildspec_url)
 
   # 2. Generate Android makefiles
   _GenerateMakefiles(version, unattended)
@@ -481,7 +468,7 @@
   _GenerateNoticeFile(version)
 
   # 5. Generate LASTCHANGE file
-  _GenerateLastChange(version)
+  _GenerateLastChange(version, merged_sha1)
 
   return True
 
@@ -498,7 +485,7 @@
   if target == 'master-chromium':
     refspecs.insert(0, '+%s:master-chromium-merge' % src)
   for refspec in refspecs:
-    logging.debug('Pushing to server (%s) ...' % refspec)
+    logging.debug('Pushing to server (%s) ...', refspec)
     for path in merge_common.ALL_PROJECTS:
       if path in merge_common.PROJECTS_WITH_FLAT_HISTORY:
         remote = 'history'
@@ -513,29 +500,21 @@
 def main():
   parser = optparse.OptionParser(usage='%prog [options]')
   parser.epilog = ('Takes a snapshot of the Chromium tree at the specified '
-                   'Chromium SVN revision and merges it into this repository. '
+                   'Chromium Git revision and merges it into this repository. '
                    'Paths marked as excluded for license reasons are removed '
                    'as part of the merge. Also generates Android makefiles and '
                    'generates a top-level NOTICE file suitable for use in the '
                    'Android build.')
   parser.add_option(
-      '', '--svn_revision',
-      default=None,
-      help=('Merge to the specified chromium SVN revision, rather than using '
-            'the current LKGR. Can also pass HEAD to merge from tip of tree. '
-            'Only one of svn_revision, sha1 and release should be specified'))
-  parser.add_option(
       '', '--sha1',
-      default=None,
-      help=('Merge to the specified chromium sha1 revision from ' + SRC_GIT_BRANCH
-            + ' branch, rather than using the current LKGR. Only one of'
-            'svn_revision, sha1 and release should be specified.'))
+      default='HEAD',
+      help=('Merge to the specified chromium sha1 revision from ' +
+            SRC_GIT_BRANCH + ' branch. Default is HEAD, to merge from ToT.'))
   parser.add_option(
       '', '--release',
       default=None,
-      help=('Merge to the specified chromium release buildspec (e.g. '
-            '"30.0.1599.20"). Only one of svn_revision, sha1 and release '
-            'should be specified.'))
+      help=('Merge to the specified chromium release buildspec (e.g., "30.0.'
+            '1599.20"). Only one of --sha1 and --release should be specified'))
   parser.add_option(
       '', '--buildspec_url',
       default=None,
@@ -548,11 +527,7 @@
       '', '--push',
       default=False, action='store_true',
       help=('Push the result of a previous merge to the server. Note '
-            'svn_revision must be given.'))
-  parser.add_option(
-      '', '--get_lkgr',
-      default=False, action='store_true',
-      help=('Just print the current LKGR on stdout and exit.'))
+            '--sha1 must be given.'))
   parser.add_option(
       '', '--get_head',
       default=False, action='store_true',
@@ -574,25 +549,30 @@
     print >>sys.stderr, 'You need to run the Android envsetup.sh and lunch.'
     return 1
 
+  if os.environ.get('GYP_DEFINES'):
+    print >>sys.stderr, (
+        'The environment is defining GYP_DEFINES (=%s). It will affect the '
+        ' generated makefiles.' % os.environ['GYP_DEFINES'])
+    if not options.unattended and raw_input('Continue? [y/N]') != 'y':
+      return 1
+
   logging.basicConfig(format='%(message)s', level=logging.DEBUG,
                       stream=sys.stdout)
 
-  if options.get_lkgr:
-    print GetLKGR()
-  elif options.get_head:
+  if options.get_head:
     logging.disable(logging.CRITICAL)  # Prevent log messages
     print GetHEAD()
   elif options.push:
     if options.release:
       Push(options.release, options.target)
-    elif options.svn_revision:
-      Push(options.svn_revision, options.target)
+    elif options.sha1:
+      Push(options.sha1, options.target)
     else:
       print >>sys.stderr, 'You need to pass the version to push.'
       return 1
   else:
-    if not Snapshot(options.svn_revision, options.sha1, options.release,
-                    options.target, options.unattended, options.buildspec_url):
+    if not Snapshot(options.sha1, options.release, options.target,
+                    options.unattended, options.buildspec_url):
       return options.no_changes_exit
 
   return 0
diff --git a/chromium/tools/merge_to_android.py b/chromium/tools/merge_to_android.py
new file mode 100755
index 0000000..9a2e78d
--- /dev/null
+++ b/chromium/tools/merge_to_android.py
@@ -0,0 +1,394 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2012 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.
+
+"""Merge master-chromium to master within the Android tree."""
+
+import logging
+import optparse
+import os
+import re
+import shutil
+import subprocess
+import sys
+
+import merge_common
+
+
+AUTOGEN_MESSAGE = 'This commit was generated by merge_to_master.py.'
+WEBVIEW_PROJECT = 'frameworks/webview'
+
+
+def _GetAbsPath(project):
+  """Returns the full path to a given project (either Chromium or Android)."""
+  if project in merge_common.ALL_PROJECTS:
+    abs_path = os.path.join(merge_common.REPOSITORY_ROOT, project)
+  else:
+    abs_path = os.path.join(os.environ['ANDROID_BUILD_TOP'], project)
+  if not os.path.exists(abs_path):
+    raise merge_common.MergeError('Cannot find path ' + abs_path)
+  return abs_path
+
+
+def _CheckoutSingleProject(project, target_branch):
+  """Checks out the tip of the target_branch into a local branch (merge-to-XXX).
+
+  Args:
+    project: a Chromium project (., third_party/foo) or frameworks/webview.
+    target_branch: name of the target branch (in the goog remote).
+  """
+  dest_dir = _GetAbsPath(project)
+  tracking_branch = 'goog/' + target_branch
+  logging.debug('Check out %-45s at %-16s', project, tracking_branch)
+  merge_common.GetCommandStdout(['git', 'remote', 'update', 'goog'],
+                                cwd=dest_dir)
+  merge_common.GetCommandStdout(['git', 'checkout',
+                                 '-b', 'merge-to-' + target_branch,
+                                 '-t', tracking_branch], cwd=dest_dir)
+
+
+def _FetchSingleProject(project, remote, remote_ref):
+  """Fetches a remote ref for the given project and returns the fetched SHA.
+
+  Args:
+    project: a Chromium project (., third_party/foo) or frameworks/webview.
+    remote: Git remote name (goog for most projects, history for squashed ones).
+    remote_ref: the remote ref to fetch (e.g., refs/archive/chromium-XXX).
+
+  Returns:
+    The SHA1 of the FETCH_HEAD.
+  """
+  dest_dir = _GetAbsPath(project)
+  logging.debug('Fetch     %-45s %s:%s', project, remote, remote_ref)
+  merge_common.GetCommandStdout(['git', 'fetch', remote, remote_ref],
+                                cwd=dest_dir)
+  return merge_common.GetCommandStdout(['git', 'rev-parse', 'FETCH_HEAD'],
+                                       cwd=dest_dir).strip()
+
+
+def _MergeSingleProject(project, merge_sha, revision, target_branch, flatten):
+  """Merges a single project at a given SHA.
+
+  Args:
+    project: a Chromium project (., third_party/foo) or frameworks/webview.
+    merge_sha: the SHA to merge.
+    revision: Abbrev. commitish in the main Chromium repository.
+    target_branch: name of the target branch.
+    flatten: True: squash history while merging; False: perform a normal merge.
+  """
+  dest_dir = _GetAbsPath(project)
+  if flatten:
+    # Make the previous merges into grafts so we can do a correct merge.
+    old_sha = merge_common.GetCommandStdout(['git', 'rev-parse', 'HEAD'],
+                                            cwd=dest_dir).strip()
+    merge_log = os.path.join(dest_dir, '.merged-revisions')
+    if os.path.exists(merge_log):
+      shutil.copyfile(merge_log,
+                      os.path.join(dest_dir, '.git', 'info', 'grafts'))
+
+  # Early out if there is nothing to merge.
+  if not merge_common.GetCommandStdout(['git', 'rev-list', '-1',
+                                        'HEAD..' + merge_sha], cwd=dest_dir):
+    logging.debug('No new commits to merge in project %s', project)
+    return
+
+  logging.debug('Merging project %s (flatten: %s)...', project, flatten)
+  merge_cmd = ['git', 'merge', '--no-commit']
+  merge_cmd += ['--squash'] if flatten else ['--no-ff']
+  merge_cmd += [merge_sha]
+  # Merge conflicts cause 'git merge' to return 1, so ignore errors
+  merge_common.GetCommandStdout(merge_cmd, cwd=dest_dir, ignore_errors=True)
+
+  if flatten:
+    dirs_to_prune = merge_common.PRUNE_WHEN_FLATTENING.get(project, [])
+    if dirs_to_prune:
+      merge_common.GetCommandStdout(['git', 'rm', '--ignore-unmatch', '-rf'] +
+                                    dirs_to_prune, cwd=dest_dir)
+
+  if project in merge_common.ALL_PROJECTS:
+    commit_msg = 'Merge from Chromium at DEPS revision %s' % revision
+  else:
+    commit_msg = 'Merge master-chromium into %s at %s' % (target_branch,
+                                                          revision)
+  commit_msg += '\n\n' + AUTOGEN_MESSAGE
+  merge_common.CheckNoConflictsAndCommitMerge(commit_msg, cwd=dest_dir)
+
+  if flatten:
+    # Generate the new grafts file and commit it on top of the merge.
+    new_sha = merge_common.GetCommandStdout(['git', 'rev-parse', 'HEAD'],
+                                            cwd=dest_dir).strip()
+    with open(merge_log, 'a+') as f:
+      f.write('%s %s %s\n' % (new_sha, old_sha, merge_sha))
+    merge_common.GetCommandStdout(['git', 'add', '.merged-revisions'],
+                                  cwd=dest_dir)
+    merge_common.GetCommandStdout(
+        ['git', 'commit', '-m',
+         'Record Chromium merge at DEPS revision %s\n\n%s' %
+         (revision, AUTOGEN_MESSAGE)], cwd=dest_dir)
+
+
+def _IsAncestor(ref1, ref2, cwd):
+  """Checks whether ref1 is a ancestor of ref2 in the given Git repo."""
+  cmd = ['git', 'merge-base', '--is-ancestor', ref1, ref2]
+  ret = subprocess.call(cmd, cwd=cwd)
+  if ret == 0:
+    return True
+  elif ret == 1:
+    return False
+  else:
+    raise merge_common.CommandError(ret, ' '.join(cmd), cwd, 'N/A', 'N/A')
+
+
+def _MergeChromiumProjects(revision, target_branch, repo_shas=None,
+                           force=False):
+  """Merges the Chromium projects from master-chromium to target_branch.
+
+  The larger projects' histories are flattened in the process.
+  When repo_shas != None, it checks that the SHAs of the projects in the
+  archive match exactly the SHAs of the projects in repo.prop.
+
+  Args:
+    revision: Abbrev. commitish in the main Chromium repository.
+    target_branch: target branch name to merge and push to.
+    repo_shas: optional dict. of expected revisions (only for --repo-prop).
+    force: True: merge anyways using the SHAs from repo.prop; False: bail out if
+                 projects mismatch (archive vs repo.prop).
+  """
+  # Sync and checkout ToT for all projects (creating the merge-to-XXX branch)
+  # and fetch the archive snapshot.
+  fetched_shas = {}
+  remote_ref = 'refs/archive/chromium-%s' % revision
+  for project in merge_common.PROJECTS_WITH_FLAT_HISTORY:
+    _CheckoutSingleProject(project, target_branch)
+    fetched_shas[project] = _FetchSingleProject(project, 'history', remote_ref)
+  for project in merge_common.PROJECTS_WITH_FULL_HISTORY:
+    _CheckoutSingleProject(project, target_branch)
+    fetched_shas[project] = _FetchSingleProject(project, 'goog', remote_ref)
+
+  if repo_shas:
+    project_shas_mismatch = False
+    for project, merge_sha in fetched_shas.items():  # the dict can be modified.
+      expected_sha = repo_shas.get(project)
+      if expected_sha != merge_sha:
+        logging.warn('The SHA for project %s specified in the repo.prop (%s) '
+                     'and the one in the archive (%s) differ.',
+                     project, expected_sha, merge_sha)
+        dest_dir = _GetAbsPath(project)
+        if expected_sha is None:
+          reason = 'cannot find a SHA in the repo.pro for %s' % project
+        elif _IsAncestor(merge_sha, expected_sha, cwd=dest_dir):
+          reason = 'the SHA in repo.prop is ahead of the SHA in the archive. '
+          log_cmd = ['git', 'log', '--oneline', '--graph', '--max-count=10',
+                     '%s..%s' % (merge_sha, expected_sha)]
+          log_cmd_output = merge_common.GetCommandStdout(log_cmd, cwd=dest_dir)
+          reason += 'showing partial log (%s): \n %s' % (' '.join(log_cmd),
+                                                         log_cmd_output)
+        elif _IsAncestor(expected_sha, merge_sha, cwd=dest_dir):
+          reason = 'The SHA is already merged in the archive'
+        else:
+          reason = 'The project history diverged. Consult your Git historian.'
+
+        project_shas_mismatch = True
+        if force:
+          logging.debug('Merging the SHA in repo.prop anyways (due to --force)')
+          fetched_shas[project] = expected_sha
+        else:
+          logging.debug('Reason: %s', reason)
+    if not force and project_shas_mismatch:
+      raise merge_common.MergeError(
+          'The revision of some projects in the archive is different from the '
+          'one provided in build.prop. See the log for more details. Re-run '
+          'with --force to continue.')
+
+  for project in merge_common.PROJECTS_WITH_FLAT_HISTORY:
+    _MergeSingleProject(project, fetched_shas[project], revision, target_branch,
+                        flatten=True)
+  for project in merge_common.PROJECTS_WITH_FULL_HISTORY:
+    _MergeSingleProject(project, fetched_shas[project], revision, target_branch,
+                        flatten=False)
+
+
+def _GetNearestUpstreamAbbrevSHA(reference='history/master-chromium'):
+  """Returns the abbrev. upstream SHA which closest to the given reference."""
+  logging.debug('Getting upstream SHA for %s...', reference)
+  merge_common.GetCommandStdout(['git', 'remote', 'update', 'history'])
+  upstream_commit = merge_common.Abbrev(merge_common.GetCommandStdout([
+      'git', 'merge-base', 'history/upstream-master', reference]))
+
+  # Pedantic check: look for the existence of a merge commit which contains the
+  # |upstream_commit| in its message and is its children.
+  merge_parents = merge_common.GetCommandStdout([
+      'git', 'rev-list', reference, '--grep', upstream_commit, '--merges',
+      '--parents', '-1'])
+  if upstream_commit not in merge_parents:
+    raise merge_common.MergeError(
+        'Found upstream commit %s, but the merge child (%s) could not be found '
+        'or is not a parent of the upstream SHA')
+  logging.debug('Found nearest Chromium revision %s', upstream_commit)
+  return upstream_commit
+
+
+def _MergeWithRepoProp(repo_prop_file, target_branch, force):
+  """Performs a merge using a repo.prop file (from Android build waterfall).
+
+  This does NOT merge (unless forced with force=True) the pinned
+  revisions in repo.prop, as a repo.prop can snapshot an intermediate state
+  (between two automerger cycles). Instead, this looks up the archived snapshot
+  (generated by the chromium->master-chromium auto-merger) which is closest to
+  the given repo.prop (following the main Chromium project) and merges that one.
+  If the projects revisions don't match, it fails with detailed error messages.
+
+  Args:
+    repo_prop_file: Path to a downloaded repo.prop file.
+    target_branch: name of the target branch to merget to.
+    force: ignores the aforementioned check and merged anyways.
+  """
+  chromium_sha = None
+  webview_sha = None
+  repo_shas = {}  # 'project/path' -> 'sha'
+  with open(repo_prop_file) as prop:
+    for line in prop:
+      repo, sha = line.split()
+      # Translate the Android repo paths into the relative project paths used in
+      # merge_common (e.g., platform/external/chromium_org/foo -> foo).
+      m = (
+          re.match(r'^platform/(frameworks/.+)$', repo) or
+          re.match(r'^platform/external/chromium_org/?(.*?)(-history)?$', repo))
+      if m:
+        project = m.group(1) if m.group(1) else '.'  # '.' = Main project.
+        repo_shas[project] = sha
+
+  chromium_sha = repo_shas.get('.')
+  webview_sha = repo_shas.get(WEBVIEW_PROJECT)
+  if not chromium_sha or not webview_sha:
+    raise merge_common.MergeError('SHAs for projects not found; '
+                                  'invalid build.prop?')
+
+  # Check that the revisions in repo.prop and the on in the archive match.
+  archived_chromium_revision = _GetNearestUpstreamAbbrevSHA(chromium_sha)
+  logging.info('Merging Chromium at %s and WebView at %s',
+               archived_chromium_revision, webview_sha)
+  _MergeChromiumProjects(archived_chromium_revision, target_branch, repo_shas,
+                         force)
+
+  _CheckoutSingleProject(WEBVIEW_PROJECT, target_branch)
+  _MergeSingleProject(WEBVIEW_PROJECT, webview_sha,
+                      archived_chromium_revision, target_branch, flatten=False)
+
+
+def Push(target_branch):
+  """Push the finished snapshot to the Android repository.
+
+  Creates first a CL for frameworks/webview (if the merge-to-XXX branch exists)
+  then wait for user confirmation and pushes the Chromium merges. This is to
+  give an opportunity to get a +2 for  frameworks/webview and then push both
+  frameworks/webview and the Chromium projects atomically(ish).
+
+  Args:
+    target_branch: name of the target branch (in the goog remote).
+  """
+  merge_branch = 'merge-to-%s' % target_branch
+
+  # Create a Gerrit CL for the frameworks/webview project (if needed).
+  dest_dir = _GetAbsPath(WEBVIEW_PROJECT)
+  did_upload_webview_cl = False
+  if merge_common.GetCommandStdout(['git', 'branch', '--list', merge_branch],
+                                   cwd=dest_dir):
+    # Check that there was actually something to merge.
+    merge_range = 'goog/%s..%s' % (target_branch, merge_branch)
+    if merge_common.GetCommandStdout(['git', 'rev-list', '-1', merge_range],
+                                     cwd=dest_dir):
+      logging.info('Uploading a merge CL for %s...', WEBVIEW_PROJECT)
+      refspec = '%s:refs/for/%s' % (merge_branch, target_branch)
+      upload = merge_common.GetCommandStdout(['git', 'push', 'goog', refspec],
+                                             cwd=dest_dir)
+      logging.info(upload)
+      did_upload_webview_cl = True
+
+  prompt_msg = 'About push the Chromium projects merge. '
+  if not did_upload_webview_cl:
+    logging.info('No merge CL needed for %s.', WEBVIEW_PROJECT)
+  else:
+    prompt_msg += ('At this point you should have the CL +2-ed and merge it '
+                   'together with this push.')
+  prompt_msg += '\nPress "y" to continue: '
+  if raw_input(prompt_msg) != 'y':
+    logging.warn('Push aborted by the user!')
+    return
+
+  logging.debug('Pushing Chromium projects to %s ...', target_branch)
+  refspec = '%s:%s' % (merge_branch, target_branch)
+  for path in merge_common.ALL_PROJECTS:
+    logging.debug('Pushing %s', path)
+    dest_dir = _GetAbsPath(path)
+    # Delete the graft before pushing otherwise git will attempt to push all the
+    # grafted-in objects to the server as well as the ones we want.
+    graftfile = os.path.join(dest_dir, '.git', 'info', 'grafts')
+    if os.path.exists(graftfile):
+      os.remove(graftfile)
+    merge_common.GetCommandStdout(['git', 'push', 'goog', refspec],
+                                  cwd=dest_dir)
+
+
+def main():
+  parser = optparse.OptionParser(usage='%prog [options]')
+  parser.epilog = ('Takes the current master-chromium branch of the Chromium '
+                   'projects in Android and merges them into master to publish '
+                   'them.')
+  parser.add_option(
+      '', '--revision',
+      default=None,
+      help=('Merge to the specified archived master-chromium revision (abbrev. '
+            'SHA or release version) rather than using HEAD. e.g., '
+            '--revision=a1b2c3d4e5f6 or --revision=38.0.2125.24'))
+  parser.add_option(
+      '', '--repo-prop',
+      default=None, metavar='FILE',
+      help=('Merge to the revisions specified in this repo.prop file.'))
+  parser.add_option(
+      '', '--force',
+      default=False, action='store_true',
+      help=('Skip history checks and merged anyways (only for --repo-prop).'))
+  parser.add_option(
+      '', '--push',
+      default=False, action='store_true',
+      help=('Push the result of a previous merge to the server.'))
+  parser.add_option(
+      '', '--target',
+      default='master', metavar='BRANCH',
+      help=('Target branch to push to. Defaults to master.'))
+  (options, args) = parser.parse_args()
+  if args:
+    parser.print_help()
+    return 1
+
+  logging.basicConfig(format='%(message)s', level=logging.DEBUG,
+                      stream=sys.stdout)
+
+  if options.push:
+    Push(options.target)
+  elif options.repo_prop:
+    _MergeWithRepoProp(os.path.expanduser(options.repo_prop),
+                       options.target, options.force)
+  elif options.revision:
+    _MergeChromiumProjects(options.revision, options.target)
+  else:
+    first_upstream_sha = _GetNearestUpstreamAbbrevSHA()
+    _MergeChromiumProjects(first_upstream_sha, options.target)
+
+  return 0
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/chromium/tools/merge_to_master.py b/chromium/tools/merge_to_master.py
deleted file mode 100755
index 9f8e07a..0000000
--- a/chromium/tools/merge_to_master.py
+++ /dev/null
@@ -1,225 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2012 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.
-
-"""Merge master-chromium to master within the Android tree."""
-
-import logging
-import optparse
-import os
-import re
-import shutil
-import sys
-
-import merge_common
-
-
-AUTOGEN_MESSAGE = 'This commit was generated by merge_to_master.py.'
-
-
-def _MergeProjects(svn_revision, target):
-  """Merges the Chromium projects from master-chromium to target.
-
-  The larger projects' histories are flattened in the process.
-
-  Args:
-    svn_revision: The SVN revision for the main Chromium repository
-  """
-  for path in merge_common.PROJECTS_WITH_FLAT_HISTORY:
-    dest_dir = os.path.join(merge_common.REPOSITORY_ROOT, path)
-    merge_common.GetCommandStdout(['git', 'remote', 'update',
-                                   'goog', 'history'], cwd=dest_dir)
-    merge_common.GetCommandStdout(['git', 'checkout',
-                                   '-b', 'merge-to-' + target,
-                                   '-t', 'goog/' + target], cwd=dest_dir)
-    merge_common.GetCommandStdout(['git', 'fetch', 'history',
-                                   'refs/archive/chromium-%s' % svn_revision],
-                                  cwd=dest_dir)
-    merge_sha1 = merge_common.GetCommandStdout(['git', 'rev-parse',
-                                                'FETCH_HEAD'],
-                                               cwd=dest_dir).strip()
-    old_sha1 = merge_common.GetCommandStdout(['git', 'rev-parse', 'HEAD'],
-                                             cwd=dest_dir).strip()
-    # Make the previous merges into grafts so we can do a correct merge.
-    merge_log = os.path.join(dest_dir, '.merged-revisions')
-    if os.path.exists(merge_log):
-      shutil.copyfile(merge_log,
-                      os.path.join(dest_dir, '.git', 'info', 'grafts'))
-    if merge_common.GetCommandStdout(['git', 'rev-list', '-1',
-                                      'HEAD..' + merge_sha1], cwd=dest_dir):
-      logging.debug('Merging project %s ...', path)
-      # Merge conflicts cause 'git merge' to return 1, so ignore errors
-      merge_common.GetCommandStdout(['git', 'merge', '--no-commit', '--squash',
-                                     merge_sha1],
-                                    cwd=dest_dir, ignore_errors=True)
-      dirs_to_prune = merge_common.PRUNE_WHEN_FLATTENING.get(path, [])
-      if dirs_to_prune:
-        merge_common.GetCommandStdout(['git', 'rm', '--ignore-unmatch', '-rf'] +
-                                      dirs_to_prune, cwd=dest_dir)
-      merge_common.CheckNoConflictsAndCommitMerge(
-          'Merge from Chromium at DEPS revision %s\n\n%s' %
-          (svn_revision, AUTOGEN_MESSAGE), cwd=dest_dir)
-      new_sha1 = merge_common.GetCommandStdout(['git', 'rev-parse', 'HEAD'],
-                                               cwd=dest_dir).strip()
-      with open(merge_log, 'a+') as f:
-        f.write('%s %s %s\n' % (new_sha1, old_sha1, merge_sha1))
-      merge_common.GetCommandStdout(['git', 'add', '.merged-revisions'],
-                                    cwd=dest_dir)
-      merge_common.GetCommandStdout(
-          ['git', 'commit', '-m',
-           'Record Chromium merge at DEPS revision %s\n\n%s' %
-           (svn_revision, AUTOGEN_MESSAGE)], cwd=dest_dir)
-    else:
-      logging.debug('No new commits to merge in project %s', path)
-
-  for path in merge_common.PROJECTS_WITH_FULL_HISTORY:
-    dest_dir = os.path.join(merge_common.REPOSITORY_ROOT, path)
-    merge_common.GetCommandStdout(['git', 'remote', 'update', 'goog'],
-                                  cwd=dest_dir)
-    merge_common.GetCommandStdout(['git', 'checkout',
-                                   '-b', 'merge-to-' + target,
-                                   '-t', 'goog/' + target], cwd=dest_dir)
-    merge_common.GetCommandStdout(['git', 'fetch', 'goog',
-                                   'refs/archive/chromium-%s' % svn_revision],
-                                  cwd=dest_dir)
-    if merge_common.GetCommandStdout(['git', 'rev-list', '-1',
-                                      'HEAD..FETCH_HEAD'],
-                                     cwd=dest_dir):
-      logging.debug('Merging project %s ...', path)
-      # Merge conflicts cause 'git merge' to return 1, so ignore errors
-      merge_common.GetCommandStdout(['git', 'merge', '--no-commit', '--no-ff',
-                                     'FETCH_HEAD'],
-                                    cwd=dest_dir, ignore_errors=True)
-      merge_common.CheckNoConflictsAndCommitMerge(
-          'Merge from Chromium at DEPS revision %s\n\n%s' %
-          (svn_revision, AUTOGEN_MESSAGE), cwd=dest_dir)
-    else:
-      logging.debug('No new commits to merge in project %s', path)
-
-
-def _GetSVNRevision(commitish='history/master-chromium'):
-  logging.debug('Getting SVN revision ...')
-  commit = merge_common.GetCommandStdout([
-      'git', 'log', '-n1', '--grep=git-svn-id:', '--format=%H%n%b', commitish])
-  svn_revision = re.search(r'^git-svn-id: .*@([0-9]+)', commit,
-                           flags=re.MULTILINE).group(1)
-  return svn_revision
-
-
-def _MergeWithRepoProp(repo_prop_file, target):
-  chromium_sha = None
-  webview_sha = None
-  with open(repo_prop_file) as prop:
-    for line in prop:
-      project, sha = line.split()
-      if project == 'platform/external/chromium_org-history':
-        chromium_sha = sha
-      elif project == 'platform/frameworks/webview':
-        webview_sha = sha
-  if not chromium_sha or not webview_sha:
-    logging.error('SHA1s for projects not found; invalid build.prop?')
-    return 1
-  chromium_revision = _GetSVNRevision(chromium_sha)
-  logging.info('Merging Chromium at r%s and WebView at %s', chromium_revision,
-               webview_sha)
-  _MergeProjects(chromium_revision, target)
-
-  dest_dir = os.path.join(os.environ['ANDROID_BUILD_TOP'], 'frameworks/webview')
-  merge_common.GetCommandStdout(['git', 'remote', 'update', 'goog'],
-                                cwd=dest_dir)
-  merge_common.GetCommandStdout(['git', 'checkout',
-                                 '-b', 'merge-to-' + target,
-                                 '-t', 'goog/' + target], cwd=dest_dir)
-  if merge_common.GetCommandStdout(['git', 'rev-list', '-1',
-                                    'HEAD..' + webview_sha], cwd=dest_dir):
-    logging.debug('Creating merge for framework...')
-    # Merge conflicts cause 'git merge' to return 1, so ignore errors
-    merge_common.GetCommandStdout(['git', 'merge', '--no-commit', '--no-ff',
-                                   webview_sha], cwd=dest_dir,
-                                  ignore_errors=True)
-    merge_common.CheckNoConflictsAndCommitMerge(
-        'Merge master-chromium into %s at r%s\n\n%s' %
-        (target, chromium_revision, AUTOGEN_MESSAGE), cwd=dest_dir)
-    upload = merge_common.GetCommandStdout(['git', 'push', 'goog',
-                                            'HEAD:refs/for/' + target],
-                                           cwd=dest_dir)
-    logging.info(upload)
-  else:
-    logging.debug('No new commits to merge in framework')
-  return 0
-
-
-def Push(target):
-  """Push the finished snapshot to the Android repository."""
-  logging.debug('Pushing to server ...')
-  refspec = 'merge-to-%s:%s' % (target, target)
-  for path in merge_common.ALL_PROJECTS:
-    logging.debug('Pushing %s', path)
-    dest_dir = os.path.join(merge_common.REPOSITORY_ROOT, path)
-    # Delete the graft before pushing otherwise git will attempt to push all the
-    # grafted-in objects to the server as well as the ones we want.
-    graftfile = os.path.join(dest_dir, '.git', 'info', 'grafts')
-    if os.path.exists(graftfile):
-      os.remove(graftfile)
-    merge_common.GetCommandStdout(['git', 'push', 'goog', refspec],
-                                  cwd=dest_dir)
-
-
-
-def main():
-  parser = optparse.OptionParser(usage='%prog [options]')
-  parser.epilog = ('Takes the current master-chromium branch of the Chromium '
-                   'projects in Android and merges them into master to publish '
-                   'them.')
-  parser.add_option(
-      '', '--svn_revision', '--release',
-      default=None,
-      help=('Merge to the specified archived master-chromium SVN revision,'
-            'rather than using HEAD.'))
-  parser.add_option(
-      '', '--repo-prop',
-      default=None, metavar='FILE',
-      help=('Merge to the revisions specified in this repo.prop file.'))
-  parser.add_option(
-      '', '--push',
-      default=False, action='store_true',
-      help=('Push the result of a previous merge to the server.'))
-  parser.add_option(
-      '', '--target',
-      default='master', metavar='BRANCH',
-      help=('Target branch to push to. Defaults to master.'))
-  (options, args) = parser.parse_args()
-  if args:
-    parser.print_help()
-    return 1
-
-  logging.basicConfig(format='%(message)s', level=logging.DEBUG,
-                      stream=sys.stdout)
-
-  if options.push:
-    Push(options.target)
-  elif options.repo_prop:
-    return _MergeWithRepoProp(os.path.expanduser(options.repo_prop),
-                              options.target)
-  elif options.svn_revision:
-    _MergeProjects(options.svn_revision, options.target)
-  else:
-    svn_revision = _GetSVNRevision()
-    _MergeProjects(svn_revision, options.target)
-
-  return 0
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/chromium/version.mk b/chromium/version.mk
index 1dd4d97..fe4b6ae 100644
--- a/chromium/version.mk
+++ b/chromium/version.mk
@@ -34,7 +34,7 @@
 #        and running them in emulation.
 
 # TODO(torne): get this from Chromium automatically.
-version_milestone := 37
+version_milestone := 40
 version_offset_milestone := $(shell echo $(version_milestone) \
                               | awk '{print $$1 - 36}')
 
diff --git a/nullwebview/java/com/android/webview/nullwebview/NullWebViewFactoryProvider.java b/nullwebview/java/com/android/webview/nullwebview/NullWebViewFactoryProvider.java
index 2f993cc..f157a95 100644
--- a/nullwebview/java/com/android/webview/nullwebview/NullWebViewFactoryProvider.java
+++ b/nullwebview/java/com/android/webview/nullwebview/NullWebViewFactoryProvider.java
@@ -23,12 +23,13 @@
 import android.webkit.WebStorage;
 import android.webkit.WebView;
 import android.webkit.WebViewDatabase;
+import android.webkit.WebViewDelegate;
 import android.webkit.WebViewFactoryProvider;
 import android.webkit.WebViewProvider;
 
 public class NullWebViewFactoryProvider implements WebViewFactoryProvider {
 
-    public NullWebViewFactoryProvider() {
+    public NullWebViewFactoryProvider(WebViewDelegate delegate) {
     }
 
     @Override