Merge changes I4ad02ee1,I1bafc79b,I2c4df95e

* changes:
  Remove deprecated WebRuntime code
  Fix DumpRenderTree2 to clear AppCache between tests
  Fix DumpRenderTree2 to wait for the WebCore thread to become ready
diff --git a/core/java/android/webruntime/WebRuntimeActivity.java b/core/java/android/webruntime/WebRuntimeActivity.java
deleted file mode 100644
index ec8c60c..0000000
--- a/core/java/android/webruntime/WebRuntimeActivity.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.webruntime;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.ComponentName;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.View;
-import android.view.Window;
-import android.webkit.GeolocationPermissions;
-import android.webkit.WebChromeClient;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-import android.widget.ImageView;
-import android.widget.Toast;
-
-import com.android.internal.R;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- * The runtime used to display installed web applications.
- * @hide
- */
-public class WebRuntimeActivity extends Activity
-{
-    private final static String LOGTAG = "WebRuntimeActivity";
-
-    private WebView mWebView;
-    private URL mBaseUrl;
-    private ImageView mSplashScreen;
-
-    public static class SensitiveFeatures {
-        // All of the sensitive features
-        private boolean mGeolocation;
-        // On Android, the Browser doesn't prompt for database access, so we don't require an
-        // explicit permission here in the WebRuntimeActivity, and there's no Android system
-        // permission required for it either.
-        //private boolean mDatabase;
-
-        public boolean getGeolocation() {
-            return mGeolocation;
-        }
-        public void setGeolocation(boolean geolocation) {
-            mGeolocation = geolocation;
-        }
-    }
-
-    /** Called when the activity is first created. */
-    @Override
-    public void onCreate(Bundle savedInstanceState)
-    {
-        super.onCreate(savedInstanceState);
-
-        // Can't get meta data using getApplicationInfo() as it doesn't pass GET_META_DATA
-        PackageManager packageManager = getPackageManager();
-        ComponentName componentName = new ComponentName(this, getClass());
-        ActivityInfo activityInfo = null;
-        try {
-            activityInfo = packageManager.getActivityInfo(componentName, PackageManager.GET_META_DATA);
-        } catch (PackageManager.NameNotFoundException e) {
-            Log.d(LOGTAG, "Failed to find component");
-            return;
-        }
-        if (activityInfo == null) {
-            Log.d(LOGTAG, "Failed to get activity info");
-            return;
-        }
-
-        Bundle metaData = activityInfo.metaData;
-        if (metaData == null) {
-            Log.d(LOGTAG, "No meta data");
-            return;
-        }
-
-        String url = metaData.getString("android.webruntime.url");
-        if (url == null) {
-            Log.d(LOGTAG, "No URL");
-            return;
-        }
-
-        try {
-            mBaseUrl = new URL(url);
-        } catch (MalformedURLException e) {
-            Log.d(LOGTAG, "Invalid URL");
-        }
-
-        // All false by default, and reading non-existent bundle properties gives false too.
-        final SensitiveFeatures sensitiveFeatures = new SensitiveFeatures();
-        sensitiveFeatures.setGeolocation(metaData.getBoolean("android.webruntime.SensitiveFeaturesGeolocation"));
-
-        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
-        setContentView(R.layout.web_runtime);
-        mWebView = (WebView) findViewById(R.id.webview);
-        mSplashScreen = (ImageView) findViewById(R.id.splashscreen);
-        mSplashScreen.setImageResource(
-                getResources().getIdentifier("splash_screen", "drawable", getPackageName()));
-        mWebView.getSettings().setJavaScriptEnabled(true);
-        mWebView.setWebViewClient(new WebViewClient() {
-            @Override
-            public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                try {
-                    URL newOrigin = new URL(url);
-                    if (areSameOrigin(mBaseUrl, newOrigin)) {
-                        // If simple same origin test passes, load in the webview.
-                        return false;
-                    }
-                } catch(MalformedURLException e) {
-                    // Don't load anything if this wasn't a proper URL.
-                    return true;
-                }
-
-                // Otherwise this is a URL that is not same origin so pass it to the
-                // Browser to load.
-                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
-                return true;
-            }
-
-            @Override
-            public void onPageFinished(WebView view, String url) {
-                if (mSplashScreen != null && mSplashScreen.getVisibility() == View.VISIBLE) {
-                    mSplashScreen.setVisibility(View.GONE);
-                    mSplashScreen = null;
-                }
-            }
-        });
-
-        // Use a custom WebChromeClient with geolocation permissions handling.
-        mWebView.setWebChromeClient(new WebChromeClient() {
-            public void onGeolocationPermissionsShowPrompt(
-                        String origin, GeolocationPermissions.Callback callback) {
-                // Allow this origin if it has Geolocation permissions, otherwise deny.
-                boolean allowed = false;
-                if (sensitiveFeatures.getGeolocation()) {
-                    try {
-                        URL originUrl = new URL(origin);
-                        allowed = areSameOrigin(mBaseUrl, originUrl);
-                    } catch(MalformedURLException e) {
-                    }
-                }
-                callback.invoke(origin, allowed, false);
-            }
-        });
-
-        // Set the DB location. Optional. Geolocation works without DBs.
-        mWebView.getSettings().setGeolocationDatabasePath(
-                getDir("geolocation", MODE_PRIVATE).getPath());
-
-        String title = metaData.getString("android.webruntime.title");
-        // We turned off the title bar to go full screen so display the
-        // webapp's title as a toast.
-        if (title != null) {
-            Toast.makeText(this, title, Toast.LENGTH_SHORT).show();
-        }
-
-        // Load the webapp's base URL.
-        mWebView.loadUrl(url);
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
-            mWebView.goBack();
-            return true;
-        }
-        return super.onKeyDown(keyCode, event);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        menu.add(0, 0, 0, "Menu item 1");
-        menu.add(0, 1, 0, "Menu item 2");
-        return true;
-    }
-
-    private static boolean areSameOrigin(URL a, URL b) {
-        int aPort = a.getPort() == -1 ? a.getDefaultPort() : a.getPort();
-        int bPort = b.getPort() == -1 ? b.getDefaultPort() : b.getPort();
-        return a.getProtocol().equals(b.getProtocol()) && aPort == bPort && a.getHost().equals(b.getHost());
-    }
-}
diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java
index c0ba9e5..30d255a 100644
--- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java
+++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java
@@ -43,9 +43,10 @@
 import android.webkit.SslErrorHandler;
 import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
+import android.webkit.WebStorage;
+import android.webkit.WebStorage.QuotaUpdater;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
-import android.webkit.WebStorage.QuotaUpdater;
 
 import java.io.File;
 import java.lang.Thread.UncaughtExceptionHandler;
@@ -327,6 +328,13 @@
         mCurrentAdditionalTextOutput = null;
 
         mCurrentWebView = createWebViewWithJavascriptInterfaces();
+        // When we create the first WebView, we need to pause to wait for the WebView thread to spin
+        // and up and for it to register its message handlers.
+        if (previousWebView == null) {
+            try {
+                Thread.currentThread().sleep(1000);
+            } catch (Exception e) {}
+        }
         setupWebView(mCurrentWebView);
 
         mEventSender.reset(mCurrentWebView);
@@ -386,6 +394,9 @@
 
         // This is asynchronous, but it gets processed by WebCore before it starts loading pages.
         mCurrentWebView.useMockDeviceOrientation();
+
+        // Must do this after setting the AppCache path.
+        WebStorage.getInstance().deleteAllData();
     }
 
     private void startTests() {