Merge "Don't restore all tabs for phone"
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index f330cd5..32db550 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -959,6 +959,7 @@
             long root = mAccountAdapter.getItem(position).rootFolderId;
             if (root != mRootFolder) {
                 onRootFolderFound(root);
+                mFolderAdapter.clearRecentFolder();
             }
         }
     }
diff --git a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
index 67563c0..f86c9c6 100644
--- a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
+++ b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
@@ -154,4 +154,10 @@
         notifyDataSetChanged();
     }
 
+    public void clearRecentFolder() {
+        if (mIncludesRecentFolder) {
+            mIncludesRecentFolder = false;
+            notifyDataSetChanged();
+        }
+    }
 }
diff --git a/tests/src/com/android/browser/PopularUrlsTest.java b/tests/src/com/android/browser/PopularUrlsTest.java
index f1ab71b..cbe8324 100644
--- a/tests/src/com/android/browser/PopularUrlsTest.java
+++ b/tests/src/com/android/browser/PopularUrlsTest.java
@@ -21,6 +21,7 @@
 import android.net.Uri;
 import android.net.http.SslError;
 import android.os.Environment;
+import android.provider.Browser;
 import android.test.ActivityInstrumentationTestCase2;
 import android.text.TextUtils;
 import android.util.Log;
@@ -458,7 +459,7 @@
 
         while (mStatus.getIteration() < loopCount) {
             if (clearCache) {
-                webView.clearCache(true);
+                clearCacheUiThread(webView, true);
             }
             while(iterator.hasNext()) {
                 page = iterator.next();
@@ -467,6 +468,8 @@
                 Log.i(TAG, "start: " + page);
                 Uri uri = Uri.parse(page);
                 final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+                intent.putExtra(Browser.EXTRA_APPLICATION_ID,
+                    getInstrumentation().getTargetContext().getPackageName());
 
                 long startTime = System.currentTimeMillis();
                 resetForNewPage();
@@ -480,7 +483,7 @@
                 waitForLoad();
                 long stopTime = System.currentTimeMillis();
 
-                String url = webView.getUrl();
+                String url = getUrlUiThread(webView);
                 Log.i(TAG, "finish: " + url);
 
                 if (writer != null) {
@@ -534,4 +537,44 @@
             }
         }
     }
+
+    private void clearCacheUiThread(final WebView webView, final boolean includeDiskFiles) {
+        Runnable runner = new Runnable() {
+
+            @Override
+            public void run() {
+                webView.clearCache(includeDiskFiles);
+            }
+        };
+        getInstrumentation().runOnMainSync(runner);
+    }
+
+    private String getUrlUiThread(final WebView webView) {
+        WebViewUrlGetter urlGetter = new WebViewUrlGetter(webView);
+        getInstrumentation().runOnMainSync(urlGetter);
+        return urlGetter.getUrl();
+    }
+
+    private class WebViewUrlGetter implements Runnable {
+
+        private WebView mWebView;
+        private String mUrl;
+
+        public WebViewUrlGetter(WebView webView) {
+            mWebView = webView;
+        }
+
+        @Override
+        public void run() {
+                mUrl = null;
+                mUrl = mWebView.getUrl();
+        }
+
+        public String getUrl() {
+            if (mUrl != null) {
+                return mUrl;
+            } else
+                throw new IllegalStateException("url has not been fetched yet");
+        }
+    }
 }