From 4d2fcaba7fb8eb1723943ac9a10e76d509330bd1 Mon Sep 17 00:00:00 2001 From: Jonathan Dixon Date: Fri, 24 Feb 2012 00:13:06 +0000 Subject: Fixup browser to use WebView proxy Has to escape out to WebViewClassic whenever it needs a hidden API. Interdepends on https://android-git.corp.google.com/g/165608 Change-Id: Ic61dd7f57f75381864075605d5901f2688648cbd --- src/com/android/browser/AutoFillProfileDatabase.java | 2 +- src/com/android/browser/AutoFillSettingsFragment.java | 2 +- src/com/android/browser/AutofillHandler.java | 2 +- src/com/android/browser/BaseUi.java | 8 +++++--- src/com/android/browser/BrowserSettings.java | 14 ++++++++------ src/com/android/browser/BrowserWebView.java | 14 ++++++-------- src/com/android/browser/Controller.java | 14 ++++++++------ src/com/android/browser/IntentHandler.java | 10 +++++----- src/com/android/browser/NetworkStateHandler.java | 3 ++- src/com/android/browser/PageDialogsHandler.java | 9 +++++---- src/com/android/browser/PhoneUi.java | 7 ++++--- src/com/android/browser/PreloadedTabControl.java | 6 +++--- src/com/android/browser/SnapshotTab.java | 5 +++-- src/com/android/browser/Tab.java | 18 ++++++++++++++---- src/com/android/browser/XLargeUi.java | 9 +++++---- .../browser/preferences/InvertedContrastPreview.java | 5 +++-- tests/src/com/android/browser/PopularUrlsTest.java | 7 +++++-- 17 files changed, 79 insertions(+), 56 deletions(-) diff --git a/src/com/android/browser/AutoFillProfileDatabase.java b/src/com/android/browser/AutoFillProfileDatabase.java index 3345e925..96669268 100644 --- a/src/com/android/browser/AutoFillProfileDatabase.java +++ b/src/com/android/browser/AutoFillProfileDatabase.java @@ -22,7 +22,7 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.provider.BaseColumns; import android.util.Log; -import android.webkit.WebSettings.AutoFillProfile; +import android.webkit.WebSettingsClassic.AutoFillProfile; public class AutoFillProfileDatabase { diff --git a/src/com/android/browser/AutoFillSettingsFragment.java b/src/com/android/browser/AutoFillSettingsFragment.java index 7be657dd..68b325ea 100644 --- a/src/com/android/browser/AutoFillSettingsFragment.java +++ b/src/com/android/browser/AutoFillSettingsFragment.java @@ -32,7 +32,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.inputmethod.InputMethodManager; -import android.webkit.WebSettings.AutoFillProfile; +import android.webkit.WebSettingsClassic.AutoFillProfile; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; diff --git a/src/com/android/browser/AutofillHandler.java b/src/com/android/browser/AutofillHandler.java index be4fa9c1..99ee6a0b 100644 --- a/src/com/android/browser/AutofillHandler.java +++ b/src/com/android/browser/AutofillHandler.java @@ -26,7 +26,7 @@ import android.os.AsyncTask; import android.os.Message; import android.preference.PreferenceManager; import android.provider.ContactsContract; -import android.webkit.WebSettings.AutoFillProfile; +import android.webkit.WebSettingsClassic.AutoFillProfile; import java.util.concurrent.CountDownLatch; diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index e1d70474..ffb2928c 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -47,6 +47,7 @@ import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.webkit.WebChromeClient; import android.webkit.WebView; +import android.webkit.WebViewClassic; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.LinearLayout; @@ -344,7 +345,7 @@ public abstract class BaseUi implements UI { // Remove the container from the content and then remove the // WebView from the container. This will trigger a focus change // needed by WebView. - mainView.setEmbeddedTitleBar(null); + WebViewClassic.fromWebView(mainView).setEmbeddedTitleBar(null); FrameLayout wrapper = (FrameLayout) container.findViewById(R.id.webview_wrapper); wrapper.removeView(mainView); @@ -395,7 +396,8 @@ public abstract class BaseUi implements UI { final WebView cancelSubView = subView; cancel.setOnClickListener(new OnClickListener() { public void onClick(View v) { - cancelSubView.getWebChromeClient().onCloseWindow(cancelSubView); + WebViewClassic.fromWebView(cancelSubView).getWebChromeClient().onCloseWindow( + cancelSubView); } }); tab.setSubWebView(subView); @@ -476,7 +478,7 @@ public abstract class BaseUi implements UI { protected void setTitleGravity(int gravity) { WebView web = getWebView(); if (web != null) { - web.setTitleBarGravity(gravity); + WebViewClassic.fromWebView(web).setTitleBarGravity(gravity); } } diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index dd7bb563..4f4bb13d 100644 --- a/src/com/android/browser/BrowserSettings.java +++ b/src/com/android/browser/BrowserSettings.java @@ -32,11 +32,12 @@ import android.webkit.CookieManager; import android.webkit.GeolocationPermissions; import android.webkit.WebIconDatabase; import android.webkit.WebSettings; -import android.webkit.WebSettings.AutoFillProfile; import android.webkit.WebSettings.LayoutAlgorithm; import android.webkit.WebSettings.PluginState; import android.webkit.WebSettings.TextSize; import android.webkit.WebSettings.ZoomDensity; +import android.webkit.WebSettingsClassic; +import android.webkit.WebSettingsClassic.AutoFillProfile; import android.webkit.WebStorage; import android.webkit.WebView; import android.webkit.WebViewDatabase; @@ -149,12 +150,13 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } public void startManagingSettings(WebSettings settings) { + WebSettingsClassic settingsClassic = (WebSettingsClassic) settings; if (mNeedsSharedSync) { syncSharedSettings(); } synchronized (mManagedSettings) { - syncStaticSettings(settings); - syncSetting(settings); + syncStaticSettings(settingsClassic); + syncSetting(settingsClassic); mManagedSettings.add(new WeakReference(settings)); } } @@ -233,7 +235,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, /** * Syncs all the settings that have a Preference UI */ - private void syncSetting(WebSettings settings) { + private void syncSetting(WebSettingsClassic settings) { settings.setGeolocationEnabled(enableGeolocation()); settings.setJavaScriptEnabled(enableJavascript()); settings.setLightTouchEnabled(enableLightTouch()); @@ -283,7 +285,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, * Syncs all the settings that have no UI * These cannot change, so we only need to set them once per WebSettings */ - private void syncStaticSettings(WebSettings settings) { + private void syncStaticSettings(WebSettingsClassic settings) { settings.setDefaultFontSize(16); settings.setDefaultFixedFontSize(13); settings.setPageCacheCapacity(getPageCacheCapacity()); @@ -332,7 +334,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, Iterator> iter = mManagedSettings.iterator(); while (iter.hasNext()) { WeakReference ref = iter.next(); - WebSettings settings = ref.get(); + WebSettingsClassic settings = (WebSettingsClassic)ref.get(); if (settings == null) { iter.remove(); continue; diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java index b763cf10..7981d8ac 100644 --- a/src/com/android/browser/BrowserWebView.java +++ b/src/com/android/browser/BrowserWebView.java @@ -21,13 +21,14 @@ import android.graphics.Canvas; import android.util.AttributeSet; import android.view.View; import android.webkit.WebView; +import android.webkit.WebViewClassic; import java.util.Map; /** * Manage WebView scroll events */ -public class BrowserWebView extends WebView { +public class BrowserWebView extends WebView implements WebViewClassic.TitleBarDelegate { public interface OnScrollChangedListener { void onScrollChanged(int l, int t, int oldl, int oldt); @@ -73,18 +74,15 @@ public class BrowserWebView extends WebView { super(context); } + // From TitleBarDelegate @Override - protected int getTitleHeight() { + public int getTitleHeight() { return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0; } - void hideEmbeddedTitleBar() { - scrollBy(0, getVisibleTitleHeight()); - } - + // From TitleBarDelegate @Override - public void setEmbeddedTitleBar(final View title) { - super.setEmbeddedTitleBar(title); + public void onSetEmbeddedTitleBar(final View title) { mTitleBar = (TitleBar) title; } diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index f8811b28..923dfed0 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -76,6 +76,7 @@ import android.webkit.WebChromeClient; import android.webkit.WebIconDatabase; import android.webkit.WebSettings; import android.webkit.WebView; +import android.webkit.WebViewClassic; import android.widget.Toast; import com.android.browser.IntentHandler.UrlData; @@ -351,7 +352,7 @@ public class Controller // Read JavaScript flags if it exists. String jsFlags = getSettings().getJsEngineFlags(); if (jsFlags.trim().length() != 0) { - getCurrentWebView().setJsFlags(jsFlags); + WebViewClassic.fromWebView(getCurrentWebView()).setJsFlags(jsFlags); } if (intent != null && BrowserActivity.ACTION_SHOW_BOOKMARKS.equals(intent.getAction())) { @@ -2147,7 +2148,7 @@ public class Controller } private static class SelectText implements OnMenuItemClickListener { - private WebView mWebView; + private WebViewClassic mWebView; public boolean onMenuItemClick(MenuItem item) { if (mWebView != null) { @@ -2157,7 +2158,7 @@ public class Controller } public SelectText(WebView webView) { - mWebView = webView; + mWebView = WebViewClassic.fromWebView(webView); } } @@ -2430,7 +2431,8 @@ public class Controller // In case the user enters nothing. if (url != null && url.length() != 0 && tab != null && view != null) { url = UrlUtils.smartUrlFilter(url); - if (!view.getWebViewClient().shouldOverrideUrlLoading(view, url)) { + if (!WebViewClassic.fromWebView(view).getWebViewClient(). + shouldOverrideUrlLoading(view, url)) { loadUrl(tab, url); } } @@ -2662,14 +2664,14 @@ public class Controller break; case KeyEvent.KEYCODE_A: if (ctrl) { - webView.selectAll(); + WebViewClassic.fromWebView(webView).selectAll(); return true; } break; // case KeyEvent.KEYCODE_B: // menu case KeyEvent.KEYCODE_C: if (ctrl) { - webView.copySelection(); + WebViewClassic.fromWebView(webView).copySelection(); return true; } break; diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java index e5ddb478..ecd45452 100644 --- a/src/com/android/browser/IntentHandler.java +++ b/src/com/android/browser/IntentHandler.java @@ -197,15 +197,15 @@ public class IntentHandler { if (!urlData.isEmpty() && urlData.mUrl.startsWith("about:debug")) { if ("about:debug.dom".equals(urlData.mUrl)) { - current.getWebView().dumpDomTree(false); + current.getWebViewClassic().dumpDomTree(false); } else if ("about:debug.dom.file".equals(urlData.mUrl)) { - current.getWebView().dumpDomTree(true); + current.getWebViewClassic().dumpDomTree(true); } else if ("about:debug.render".equals(urlData.mUrl)) { - current.getWebView().dumpRenderTree(false); + current.getWebViewClassic().dumpRenderTree(false); } else if ("about:debug.render.file".equals(urlData.mUrl)) { - current.getWebView().dumpRenderTree(true); + current.getWebViewClassic().dumpRenderTree(true); } else if ("about:debug.display".equals(urlData.mUrl)) { - current.getWebView().dumpDisplayTree(); + current.getWebViewClassic().dumpDisplayTree(); } else if ("about:debug.nav".equals(urlData.mUrl)) { current.getWebView().debugDump(); } else { diff --git a/src/com/android/browser/NetworkStateHandler.java b/src/com/android/browser/NetworkStateHandler.java index 2fbd035a..4ae91ba6 100644 --- a/src/com/android/browser/NetworkStateHandler.java +++ b/src/com/android/browser/NetworkStateHandler.java @@ -24,6 +24,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.webkit.WebView; +import android.webkit.WebViewClassic; /** * Handle network state changes @@ -110,7 +111,7 @@ public class NetworkStateHandler { private void sendNetworkType(String type, String subtype) { WebView w = mController.getCurrentWebView(); if (w != null) { - w.setNetworkType(type, subtype); + WebViewClassic.fromWebView(w).setNetworkType(type, subtype); } } diff --git a/src/com/android/browser/PageDialogsHandler.java b/src/com/android/browser/PageDialogsHandler.java index 013eaf1f..19cbfcde 100644 --- a/src/com/android/browser/PageDialogsHandler.java +++ b/src/com/android/browser/PageDialogsHandler.java @@ -27,6 +27,7 @@ import android.view.View; import android.webkit.HttpAuthHandler; import android.webkit.SslErrorHandler; import android.webkit.WebView; +import android.webkit.WebViewClassic; import android.widget.LinearLayout; import android.widget.TextView; @@ -296,8 +297,8 @@ public class PageDialogsHandler { mSSLCertificateOnErrorHandler = null; mSSLCertificateOnErrorError = null; - view.getWebViewClient().onReceivedSslError( - view, handler, error); + WebViewClassic.fromWebView(view).getWebViewClient(). + onReceivedSslError(view, handler, error); } }) .setNeutralButton(R.string.page_info_view, @@ -324,8 +325,8 @@ public class PageDialogsHandler { mSSLCertificateOnErrorHandler = null; mSSLCertificateOnErrorError = null; - view.getWebViewClient().onReceivedSslError( - view, handler, error); + WebViewClassic.fromWebView(view).getWebViewClient(). + onReceivedSslError(view, handler, error); } }) .show(); diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index ee5ca408..5afb9c44 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -38,6 +38,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.webkit.WebView; +import android.webkit.WebViewClassic; import android.widget.FrameLayout; import android.widget.ImageView; @@ -169,7 +170,7 @@ public class PhoneUi extends BaseUi { } else { // check if title bar is already attached by animation if (mTitleBar.getParent() == null) { - view.setEmbeddedTitleBar(mTitleBar); + WebViewClassic.fromWebView(view).setEmbeddedTitleBar(mTitleBar); } } if (tab.isInVoiceSearchMode()) { @@ -287,7 +288,7 @@ public class PhoneUi extends BaseUi { mPieControl.attachToContainer(mContentView); WebView web = getWebView(); if (web != null) { - web.setEmbeddedTitleBar(null); + WebViewClassic.fromWebView(web).setEmbeddedTitleBar(null); } } else { if (mPieControl != null) { @@ -299,7 +300,7 @@ public class PhoneUi extends BaseUi { if ((mTitleBar != null) && (mTitleBar.getParent() != null)) { ((ViewGroup) mTitleBar.getParent()).removeView(mTitleBar); } - web.setEmbeddedTitleBar(mTitleBar); + WebViewClassic.fromWebView(web).setEmbeddedTitleBar(mTitleBar); } setTitleGravity(Gravity.NO_GRAVITY); } diff --git a/src/com/android/browser/PreloadedTabControl.java b/src/com/android/browser/PreloadedTabControl.java index 4ffe6b47..0b2956ff 100644 --- a/src/com/android/browser/PreloadedTabControl.java +++ b/src/com/android/browser/PreloadedTabControl.java @@ -62,12 +62,12 @@ public class PreloadedTabControl { } public void setQuery(String query) { - maybeSetQuery(query, mTab.getWebView().getSearchBox()); + maybeSetQuery(query, mTab.getWebViewClassic().getSearchBox()); } public boolean searchBoxSubmit(final String query, final String fallbackUrl, final Map fallbackHeaders) { - final SearchBox sb = mTab.getWebView().getSearchBox(); + final SearchBox sb = mTab.getWebViewClassic().getSearchBox(); if (sb == null) { // no searchbox, cannot submit. Fallback to regular tab creation if (LOGD_ENABLED) Log.d(LOGTAG, "No searchbox, cannot submit query"); @@ -106,7 +106,7 @@ public class PreloadedTabControl { } public void searchBoxCancel() { - SearchBox sb = mTab.getWebView().getSearchBox(); + SearchBox sb = mTab.getWebViewClassic().getSearchBox(); if (sb != null) { mLastQuery = null; sb.oncancel(new SearchBox.SearchBoxListener(){ diff --git a/src/com/android/browser/SnapshotTab.java b/src/com/android/browser/SnapshotTab.java index d9c71f03..f58f88b4 100644 --- a/src/com/android/browser/SnapshotTab.java +++ b/src/com/android/browser/SnapshotTab.java @@ -25,6 +25,7 @@ import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.webkit.WebView; +import android.webkit.WebViewClassic; import com.android.browser.provider.SnapshotProvider.Snapshots; @@ -121,7 +122,7 @@ public class SnapshotTab extends Tab { public void loadUrl(String url, Map headers) { if (!mIsLive) { mIsLive = true; - getWebView().clearViewState(); + getWebViewClassic().clearViewState(); } super.loadUrl(url, headers); } @@ -185,7 +186,7 @@ public class SnapshotTab extends Tab { mTab.mCurrentState.mFavicon = BitmapFactory .decodeByteArray(favicon, 0, favicon.length); } - WebView web = mTab.getWebView(); + WebViewClassic web = mTab.getWebViewClassic(); if (web != null) { byte[] data = result.getBlob(4); ByteArrayInputStream bis = new ByteArrayInputStream(data); diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java index b09e4239..837ca472 100644 --- a/src/com/android/browser/Tab.java +++ b/src/com/android/browser/Tab.java @@ -64,6 +64,7 @@ import android.webkit.WebHistoryItem; import android.webkit.WebResourceResponse; import android.webkit.WebStorage; import android.webkit.WebView; +import android.webkit.WebViewClassic; import android.webkit.WebView.PictureListener; import android.webkit.WebViewClient; import android.widget.CheckBox; @@ -1541,7 +1542,7 @@ class Tab implements PictureListener { // does a redirect after a period of time. The user could have // switched to another tab while waiting for the download to start. mMainView.setDownloadListener(mDownloadListener); - mMainView.setWebBackForwardListClient(mWebBackForwardListClient); + getWebViewClassic().setWebBackForwardListClient(mWebBackForwardListClient); TabControl tc = mWebViewController.getTabControl(); if (tc != null && tc.getOnThumbnailUpdatedListener() != null) { mMainView.setPictureListener(this); @@ -1565,7 +1566,7 @@ class Tab implements PictureListener { if (mMainView != null) { dismissSubWindow(); // Make sure the embedded title bar isn't still attached - mMainView.setEmbeddedTitleBar(null); + getWebViewClassic().setEmbeddedTitleBar(null); // save the WebView to call destroy() after detach it from the tab WebView webView = mMainView; setWebView(null); @@ -1778,6 +1779,15 @@ class Tab implements PictureListener { return mMainView; } + /** + * Return the underlying WebViewClassic implementation. As with getWebView, + * this maybe null for background tabs. + * @return The main WebView of this tab. + */ + WebViewClassic getWebViewClassic() { + return WebViewClassic.fromWebView(mMainView); + } + void setViewContainer(View container) { mContainer = container; } @@ -2046,7 +2056,7 @@ class Tab implements PictureListener { SnapshotByteArrayOutputStream bos = new SnapshotByteArrayOutputStream(); try { GZIPOutputStream stream = new GZIPOutputStream(bos); - if (!mMainView.saveViewState(stream)) { + if (!getWebViewClassic().saveViewState(stream)) { return null; } stream.flush(); @@ -2060,7 +2070,7 @@ class Tab implements PictureListener { values.put(Snapshots.TITLE, mCurrentState.mTitle); values.put(Snapshots.URL, mCurrentState.mUrl); values.put(Snapshots.VIEWSTATE, data); - values.put(Snapshots.BACKGROUND, mMainView.getPageBackgroundColor()); + values.put(Snapshots.BACKGROUND, getWebViewClassic().getPageBackgroundColor()); values.put(Snapshots.DATE_CREATED, System.currentTimeMillis()); values.put(Snapshots.FAVICON, compressBitmap(getFavicon())); Bitmap screenshot = Controller.createScreenshot(mMainView, diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 31430250..46149aac 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -36,6 +36,7 @@ import android.view.View; import android.view.ViewGroup; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebView; +import android.webkit.WebViewClassic; import java.util.List; @@ -93,7 +94,7 @@ public class XLargeUi extends BaseUi { mPieControl.attachToContainer(mContentView); WebView web = getWebView(); if (web != null) { - web.setEmbeddedTitleBar(null); + WebViewClassic.fromWebView(web).setEmbeddedTitleBar(null); } } else { @@ -107,7 +108,7 @@ public class XLargeUi extends BaseUi { ViewGroup p = (ViewGroup) mTitleBar.getParent(); p.removeView(mTitleBar); } - web.setEmbeddedTitleBar(mTitleBar); + WebViewClassic.fromWebView(web).setEmbeddedTitleBar(mTitleBar); } setTitleGravity(Gravity.NO_GRAVITY); } @@ -144,7 +145,7 @@ public class XLargeUi extends BaseUi { void stopWebViewScrolling() { BrowserWebView web = (BrowserWebView) mUiController.getCurrentWebView(); if (web != null) { - web.stopScroll(); + WebViewClassic.fromWebView(web).stopScroll(); } } @@ -202,7 +203,7 @@ public class XLargeUi extends BaseUi { } else { // check if title bar is already attached by animation if (mTitleBar.getParent() == null) { - view.setEmbeddedTitleBar(mTitleBar); + WebViewClassic.fromWebView(view).setEmbeddedTitleBar(mTitleBar); } } mTabBar.onSetActiveTab(tab); diff --git a/src/com/android/browser/preferences/InvertedContrastPreview.java b/src/com/android/browser/preferences/InvertedContrastPreview.java index c290daf9..ba004213 100644 --- a/src/com/android/browser/preferences/InvertedContrastPreview.java +++ b/src/com/android/browser/preferences/InvertedContrastPreview.java @@ -19,7 +19,8 @@ package com.android.browser.preferences; import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; -import android.webkit.WebSettings; +import android.webkit.WebSettingsClassic; +import android.webkit.WebViewClassic; import com.android.browser.BrowserSettings; import com.android.browser.WebViewProperties; @@ -76,7 +77,7 @@ public class InvertedContrastPreview extends WebViewPreview { protected void updatePreview() { if (mWebView == null) return; - WebSettings ws = mWebView.getSettings(); + WebSettingsClassic ws = WebViewClassic.fromWebView(mWebView).getSettings(); BrowserSettings bs = BrowserSettings.getInstance(); ws.setProperty(WebViewProperties.gfxInvertedScreen, bs.useInvertedRendering() ? "true" : "false"); diff --git a/tests/src/com/android/browser/PopularUrlsTest.java b/tests/src/com/android/browser/PopularUrlsTest.java index cbe83245..566d74b8 100644 --- a/tests/src/com/android/browser/PopularUrlsTest.java +++ b/tests/src/com/android/browser/PopularUrlsTest.java @@ -32,6 +32,7 @@ import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.SslErrorHandler; import android.webkit.WebView; +import android.webkit.WebViewClassic; import java.io.BufferedReader; import java.io.File; @@ -134,7 +135,8 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2