summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/browser/BaseUi.java4
-rw-r--r--src/com/android/browser/BrowserSettings.java59
-rw-r--r--src/com/android/browser/BrowserWebView.java32
-rw-r--r--src/com/android/browser/ComboViewActivity.java12
-rw-r--r--src/com/android/browser/Controller.java21
-rw-r--r--src/com/android/browser/IntentHandler.java2
-rw-r--r--src/com/android/browser/NetworkStateHandler.java2
-rw-r--r--src/com/android/browser/PageDialogsHandler.java5
-rw-r--r--src/com/android/browser/Tab.java7
-rw-r--r--src/com/android/browser/TitleBar.java1
-rw-r--r--src/com/android/browser/XLargeUi.java2
-rw-r--r--src/com/android/browser/preferences/InvertedContrastPreview.java3
12 files changed, 104 insertions, 46 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index b766fb95..3ba3182c 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -423,9 +423,9 @@ public abstract class BaseUi implements UI {
.findViewById(R.id.subwindow_close);
final WebView cancelSubView = subView;
cancel.setOnClickListener(new OnClickListener() {
+ @Override
public void onClick(View v) {
- WebViewClassic.fromWebView(cancelSubView).getWebChromeClient().onCloseWindow(
- cancelSubView);
+ ((BrowserWebView) cancelSubView).getWebChromeClient().onCloseWindow(cancelSubView);
}
});
tab.setSubWebView(subView);
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 4555c18b..95afa71c 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -155,13 +155,14 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
}
public void startManagingSettings(WebSettings settings) {
- WebSettingsClassic settingsClassic = (WebSettingsClassic) settings;
+
if (mNeedsSharedSync) {
syncSharedSettings();
}
+
synchronized (mManagedSettings) {
- syncStaticSettings(settingsClassic);
- syncSetting(settingsClassic);
+ syncStaticSettings(settings);
+ syncSetting(settings);
mManagedSettings.add(new WeakReference<WebSettings>(settings));
}
}
@@ -251,22 +252,17 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
/**
* Syncs all the settings that have a Preference UI
*/
- private void syncSetting(WebSettingsClassic settings) {
+ private void syncSetting(WebSettings settings) {
settings.setGeolocationEnabled(enableGeolocation());
settings.setJavaScriptEnabled(enableJavascript());
settings.setLightTouchEnabled(enableLightTouch());
settings.setNavDump(enableNavDump());
- settings.setHardwareAccelSkiaEnabled(isSkiaHardwareAccelerated());
- settings.setShowVisualIndicator(enableVisualIndicator());
settings.setDefaultTextEncodingName(getDefaultTextEncoding());
settings.setDefaultZoom(getDefaultZoom());
settings.setMinimumFontSize(getMinimumFontSize());
settings.setMinimumLogicalFontSize(getMinimumFontSize());
- settings.setForceUserScalable(forceEnableUserScalable());
settings.setPluginState(getPluginState());
settings.setTextZoom(getTextZoom());
- settings.setDoubleTapZoom(getDoubleTapZoom());
- settings.setAutoFillEnabled(isAutofillEnabled());
settings.setLayoutAlgorithm(getLayoutAlgorithm());
settings.setJavaScriptCanOpenWindowsAutomatically(!blockPopupWindows());
settings.setLoadsImagesAutomatically(loadImages());
@@ -274,7 +270,6 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
settings.setSavePassword(rememberPasswords());
settings.setSaveFormData(saveFormdata());
settings.setUseWideViewPort(isWideViewport());
- settings.setAutoFillProfile(getAutoFillProfile());
String ua = mCustomUserAgents.get(settings);
if (ua != null) {
@@ -283,30 +278,39 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
settings.setUserAgentString(USER_AGENTS[getUserAgent()]);
}
+ if (!(settings instanceof WebSettingsClassic)) return;
+
+ WebSettingsClassic settingsClassic = (WebSettingsClassic) settings;
+ settingsClassic.setHardwareAccelSkiaEnabled(isSkiaHardwareAccelerated());
+ settingsClassic.setShowVisualIndicator(enableVisualIndicator());
+ settingsClassic.setForceUserScalable(forceEnableUserScalable());
+ settingsClassic.setDoubleTapZoom(getDoubleTapZoom());
+ settingsClassic.setAutoFillEnabled(isAutofillEnabled());
+ settingsClassic.setAutoFillProfile(getAutoFillProfile());
+
boolean useInverted = useInvertedRendering();
- settings.setProperty(WebViewProperties.gfxInvertedScreen,
+ settingsClassic.setProperty(WebViewProperties.gfxInvertedScreen,
useInverted ? "true" : "false");
if (useInverted) {
- settings.setProperty(WebViewProperties.gfxInvertedScreenContrast,
+ settingsClassic.setProperty(WebViewProperties.gfxInvertedScreenContrast,
Float.toString(getInvertedContrast()));
}
if (isDebugEnabled()) {
- settings.setProperty(WebViewProperties.gfxEnableCpuUploadPath,
+ settingsClassic.setProperty(WebViewProperties.gfxEnableCpuUploadPath,
enableCpuUploadPath() ? "true" : "false");
}
- settings.setLinkPrefetchEnabled(mLinkPrefetchAllowed);
+ settingsClassic.setLinkPrefetchEnabled(mLinkPrefetchAllowed);
}
/**
* Syncs all the settings that have no UI
* These cannot change, so we only need to set them once per WebSettings
*/
- private void syncStaticSettings(WebSettingsClassic settings) {
+ private void syncStaticSettings(WebSettings settings) {
settings.setDefaultFontSize(16);
settings.setDefaultFixedFontSize(13);
- settings.setPageCacheCapacity(getPageCacheCapacity());
// WebView inside Browser doesn't want initial focus to be set.
settings.setNeedInitialFocus(false);
@@ -315,13 +319,6 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
// enable smooth transition for better performance during panning or
// zooming
settings.setEnableSmoothTransition(true);
- // WebView should be preserving the memory as much as possible.
- // However, apps like browser wish to turn on the performance mode which
- // would require more memory.
- // TODO: We need to dynamically allocate/deallocate temporary memory for
- // apps which are trying to use minimal memory. Currently, double
- // buffering is always turned on, which is unnecessary.
- settings.setProperty(WebViewProperties.gfxUseMinimalMemory, "false");
// disable content url access
settings.setAllowContentAccess(false);
@@ -329,7 +326,6 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
settings.setAppCacheEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDomStorageEnabled(true);
- settings.setWorkersEnabled(true); // This only affects V8.
// HTML5 configuration parametersettings.
settings.setAppCacheMaxSize(getWebStorageSizeManager().getAppCacheMaxSize());
@@ -339,6 +335,19 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
// origin policy for file access
settings.setAllowUniversalAccessFromFileURLs(false);
settings.setAllowFileAccessFromFileURLs(false);
+
+ if (!(settings instanceof WebSettingsClassic)) return;
+
+ WebSettingsClassic settingsClassic = (WebSettingsClassic) settings;
+ settingsClassic.setPageCacheCapacity(getPageCacheCapacity());
+ // WebView should be preserving the memory as much as possible.
+ // However, apps like browser wish to turn on the performance mode which
+ // would require more memory.
+ // TODO: We need to dynamically allocate/deallocate temporary memory for
+ // apps which are trying to use minimal memory. Currently, double
+ // buffering is always turned on, which is unnecessary.
+ settingsClassic.setProperty(WebViewProperties.gfxUseMinimalMemory, "false");
+ settingsClassic.setWorkersEnabled(true); // This only affects V8.
}
private void syncSharedSettings() {
@@ -355,7 +364,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
Iterator<WeakReference<WebSettings>> iter = mManagedSettings.iterator();
while (iter.hasNext()) {
WeakReference<WebSettings> ref = iter.next();
- WebSettingsClassic settings = (WebSettingsClassic)ref.get();
+ WebSettings settings = 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 12d511f7..99e05875 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -20,8 +20,12 @@ import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
+import android.webkit.WebChromeClient;
+import android.webkit.WebStorage;
+import android.webkit.WebStorageClassic;
import android.webkit.WebView;
import android.webkit.WebViewClassic;
+import android.webkit.WebViewClient;
import java.util.Map;
@@ -37,6 +41,8 @@ public class BrowserWebView extends WebView implements WebViewClassic.TitleBarDe
private boolean mBackgroundRemoved = false;
private TitleBar mTitleBar;
private OnScrollChangedListener mOnScrollChangedListener;
+ private WebChromeClient mWebChromeClient;
+ private WebViewClient mWebViewClient;
/**
* @param context
@@ -74,6 +80,31 @@ public class BrowserWebView extends WebView implements WebViewClassic.TitleBarDe
super(context);
}
+ public static boolean isClassic() {
+ // Using WebStorage for convenience of access in a static method.
+ return WebStorage.getInstance() instanceof WebStorageClassic;
+ }
+
+ @Override
+ public void setWebChromeClient(WebChromeClient client) {
+ mWebChromeClient = client;
+ super.setWebChromeClient(client);
+ }
+
+ public WebChromeClient getWebChromeClient() {
+ return mWebChromeClient;
+ }
+
+ @Override
+ public void setWebViewClient(WebViewClient client) {
+ mWebViewClient = client;
+ super.setWebViewClient(client);
+ }
+
+ public WebViewClient getWebViewClient() {
+ return mWebViewClient;
+ }
+
public void setTitleBar(TitleBar title) {
mTitleBar = title;
}
@@ -87,6 +118,7 @@ public class BrowserWebView extends WebView implements WebViewClassic.TitleBarDe
// From TitleBarDelegate
@Override
public void onSetEmbeddedTitleBar(final View title) {
+ // TODO: Remove this method; it is never invoked.
}
public boolean hasTitleBar() {
diff --git a/src/com/android/browser/ComboViewActivity.java b/src/com/android/browser/ComboViewActivity.java
index 2d382cb3..91d574e1 100644
--- a/src/com/android/browser/ComboViewActivity.java
+++ b/src/com/android/browser/ComboViewActivity.java
@@ -71,10 +71,14 @@ public class ComboViewActivity extends Activity implements CombinedBookmarksCall
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_bookmarks),
BrowserBookmarksPage.class, args);
- mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_history),
- BrowserHistoryPage.class, args);
- mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_snapshots),
- BrowserSnapshotPage.class, args);
+ if (BrowserWebView.isClassic()) {
+ // TODO: history page should be able to work in Classic mode, but there's some
+ // provider name conflict. (Snapshot would never work in that mode though).
+ mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_history),
+ BrowserHistoryPage.class, args);
+ mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_snapshots),
+ BrowserSnapshotPage.class, args);
+ }
if (savedInstanceState != null) {
bar.setSelectedNavigationItem(
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index caea83e7..7b7fcd48 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -260,7 +260,7 @@ public class Controller
@Override
public void start(final Intent intent) {
- WebViewClassic.setShouldMonitorWebCoreThread();
+ if (BrowserWebView.isClassic()) WebViewClassic.setShouldMonitorWebCoreThread();
// mCrashRecoverHandler has any previously saved state.
mCrashRecoveryHandler.startRecovery(intent);
}
@@ -356,7 +356,7 @@ public class Controller
}
// Read JavaScript flags if it exists.
String jsFlags = getSettings().getJsEngineFlags();
- if (jsFlags.trim().length() != 0) {
+ if (jsFlags.trim().length() != 0 && BrowserWebView.isClassic()) {
WebViewClassic.fromWebView(getCurrentWebView()).setJsFlags(jsFlags);
}
if (intent != null
@@ -1196,7 +1196,12 @@ public class Controller
long id = intent.getLongExtra(
ComboViewActivity.EXTRA_OPEN_SNAPSHOT, -1);
if (id >= 0) {
- createNewSnapshotTab(id, true);
+ if (BrowserWebView.isClassic()) {
+ createNewSnapshotTab(id, true);
+ } else {
+ Toast.makeText(mActivity, "Snapshot Tab requires WebViewClassic",
+ Toast.LENGTH_LONG).show();
+ }
}
}
break;
@@ -2257,7 +2262,9 @@ public class Controller
}
public SelectText(WebView webView) {
- mWebView = WebViewClassic.fromWebView(webView);
+ if (BrowserWebView.isClassic()) {
+ mWebView = WebViewClassic.fromWebView(webView);
+ }
}
}
@@ -2545,7 +2552,7 @@ public class Controller
// In case the user enters nothing.
if (url != null && url.length() != 0 && tab != null && view != null) {
url = UrlUtils.smartUrlFilter(url);
- if (!WebViewClassic.fromWebView(view).getWebViewClient().
+ if (!((BrowserWebView) view).getWebViewClient().
shouldOverrideUrlLoading(view, url)) {
loadUrl(tab, url);
}
@@ -2738,14 +2745,14 @@ public class Controller
}
break;
case KeyEvent.KEYCODE_A:
- if (ctrl) {
+ if (ctrl && BrowserWebView.isClassic()) {
WebViewClassic.fromWebView(webView).selectAll();
return true;
}
break;
// case KeyEvent.KEYCODE_B: // menu
case KeyEvent.KEYCODE_C:
- if (ctrl) {
+ if (ctrl && BrowserWebView.isClassic()) {
WebViewClassic.fromWebView(webView).copySelection();
return true;
}
diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java
index f0998a44..45520d65 100644
--- a/src/com/android/browser/IntentHandler.java
+++ b/src/com/android/browser/IntentHandler.java
@@ -172,7 +172,7 @@ public class IntentHandler {
}
}
} else {
- if (!urlData.isEmpty()
+ if (BrowserWebView.isClassic() && !urlData.isEmpty()
&& urlData.mUrl.startsWith("about:debug")) {
if ("about:debug.dom".equals(urlData.mUrl)) {
current.getWebViewClassic().dumpDomTree(false);
diff --git a/src/com/android/browser/NetworkStateHandler.java b/src/com/android/browser/NetworkStateHandler.java
index 4480664f..9201f0f2 100644
--- a/src/com/android/browser/NetworkStateHandler.java
+++ b/src/com/android/browser/NetworkStateHandler.java
@@ -114,7 +114,7 @@ public class NetworkStateHandler {
private void sendNetworkType(String type, String subtype) {
WebView w = mController.getCurrentWebView();
- if (w != null) {
+ if (w != null && BrowserWebView.isClassic()) {
WebViewClassic.fromWebView(w).setNetworkType(type, subtype);
}
}
diff --git a/src/com/android/browser/PageDialogsHandler.java b/src/com/android/browser/PageDialogsHandler.java
index 3ed1004d..dba52893 100644
--- a/src/com/android/browser/PageDialogsHandler.java
+++ b/src/com/android/browser/PageDialogsHandler.java
@@ -27,7 +27,6 @@ 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;
@@ -298,7 +297,7 @@ public class PageDialogsHandler {
mSSLCertificateOnErrorHandler = null;
mSSLCertificateOnErrorError = null;
- WebViewClassic.fromWebView(view).getWebViewClient().
+ ((BrowserWebView) view).getWebViewClient().
onReceivedSslError(view, handler, error);
}
})
@@ -326,7 +325,7 @@ public class PageDialogsHandler {
mSSLCertificateOnErrorHandler = null;
mSSLCertificateOnErrorError = null;
- WebViewClassic.fromWebView(view).getWebViewClient().
+ ((BrowserWebView) view).getWebViewClient().
onReceivedSslError(view, handler, error);
}
})
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index b5000c2c..e3a03337 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -1293,7 +1293,9 @@ 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);
- getWebViewClassic().setWebBackForwardListClient(mWebBackForwardListClient);
+ if (BrowserWebView.isClassic()) {
+ getWebViewClassic().setWebBackForwardListClient(mWebBackForwardListClient);
+ }
TabControl tc = mWebViewController.getTabControl();
if (tc != null && tc.getOnThumbnailUpdatedListener() != null) {
mMainView.setPictureListener(this);
@@ -1535,6 +1537,9 @@ class Tab implements PictureListener {
* @return The main WebView of this tab.
*/
WebViewClassic getWebViewClassic() {
+ if (!BrowserWebView.isClassic()) {
+ return null;
+ }
return WebViewClassic.fromWebView(mMainView);
}
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 874296a4..a0cc857d 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -122,6 +122,7 @@ public class TitleBar extends RelativeLayout {
boolean isFixed = !mUseQuickControls
&& !mContext.getResources().getBoolean(R.bool.hide_title);
isFixed |= mAccessibilityManager.isEnabled();
+ isFixed |= !BrowserWebView.isClassic();
// If getParent() returns null, we are initializing
ViewGroup parent = (ViewGroup)getParent();
if (mIsFixedTitleBar == isFixed && parent != null) return;
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 3b8245a2..df7a586e 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -117,7 +117,7 @@ public class XLargeUi extends BaseUi {
void stopWebViewScrolling() {
BrowserWebView web = (BrowserWebView) mUiController.getCurrentWebView();
- if (web != null) {
+ if (web != null && BrowserWebView.isClassic()) {
WebViewClassic.fromWebView(web).stopScroll();
}
}
diff --git a/src/com/android/browser/preferences/InvertedContrastPreview.java b/src/com/android/browser/preferences/InvertedContrastPreview.java
index ed6eadf3..2b8ad473 100644
--- a/src/com/android/browser/preferences/InvertedContrastPreview.java
+++ b/src/com/android/browser/preferences/InvertedContrastPreview.java
@@ -23,6 +23,7 @@ import android.webkit.WebSettingsClassic;
import android.webkit.WebViewClassic;
import com.android.browser.BrowserSettings;
+import com.android.browser.BrowserWebView;
import com.android.browser.WebViewProperties;
public class InvertedContrastPreview extends WebViewPreview {
@@ -75,7 +76,7 @@ public class InvertedContrastPreview extends WebViewPreview {
@Override
protected void updatePreview(boolean forceReload) {
- if (mWebView == null) return;
+ if (mWebView == null || !BrowserWebView.isClassic()) return;
WebSettingsClassic ws = WebViewClassic.fromWebView(mWebView).getSettings();
BrowserSettings bs = BrowserSettings.getInstance();