diff options
author | Guang Zhu <guangzhu@google.com> | 2011-07-11 17:55:48 -0700 |
---|---|---|
committer | Guang Zhu <guangzhu@google.com> | 2011-07-11 17:55:48 -0700 |
commit | cbba1f3ecd54bda183f877a4b873ac9732d77f52 (patch) | |
tree | b91ff0bc1fe02b323cd9f979b65adc2ac0383318 | |
parent | 9bcdcf6d0310b65d6582c72d183edb3e2632f3eb (diff) | |
download | android_packages_apps_Gello-cbba1f3ecd54bda183f877a4b873ac9732d77f52.tar.gz android_packages_apps_Gello-cbba1f3ecd54bda183f877a4b873ac9732d77f52.tar.bz2 android_packages_apps_Gello-cbba1f3ecd54bda183f877a4b873ac9732d77f52.zip |
Fix the calls to WebView from non-UI thread in test app
WebView is complaining that some calls used in test app is not from
UI thread.
Change-Id: I7ef61694e3988a663eeedf03463580a93e57fe46
-rw-r--r-- | tests/src/com/android/browser/PopularUrlsTest.java | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/tests/src/com/android/browser/PopularUrlsTest.java b/tests/src/com/android/browser/PopularUrlsTest.java index f1ab71ba..85dc4a3e 100644 --- a/tests/src/com/android/browser/PopularUrlsTest.java +++ b/tests/src/com/android/browser/PopularUrlsTest.java @@ -458,7 +458,7 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2<BrowserAct while (mStatus.getIteration() < loopCount) { if (clearCache) { - webView.clearCache(true); + clearCacheUiThread(webView, true); } while(iterator.hasNext()) { page = iterator.next(); @@ -480,7 +480,7 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2<BrowserAct waitForLoad(); long stopTime = System.currentTimeMillis(); - String url = webView.getUrl(); + String url = getUrlUiThread(webView); Log.i(TAG, "finish: " + url); if (writer != null) { @@ -534,4 +534,44 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2<BrowserAct } } } + + 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"); + } + } } |