Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(574)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ContentSettings.java

Issue 14840011: [Android] Move zoom controls management into WebView (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use an interface and an inline stub, as discussed offline Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/ContentSettings.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentSettings.java b/content/public/android/java/src/org/chromium/content/browser/ContentSettings.java
index df03f00bee64c1b59b3b3002c62b4b981341c0fe..399c98ef1f3163d253cc47e358b18d3bd7acc1d9 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentSettings.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentSettings.java
@@ -4,78 +4,25 @@
package org.chromium.content.browser;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import org.chromium.base.ThreadUtils;
-import java.util.concurrent.Callable;
-
/**
* Manages settings state for a ContentView. A ContentSettings instance is obtained
- * from ContentView.getContentSettings(). If ContentView is used in the
- * ContentView.PERSONALITY_VIEW role, all settings are read / write. If ContentView
- * is in the ContentView.PERSONALITY_CHROME role, setting can only be read.
+ * from ContentView.getContentSettings().
joth 2013/05/03 19:32:43 ContentViewCore.get... (I'd rather we point folks
mnaganov (inactive) 2013/05/07 09:55:44 Done.
*/
@JNINamespace("content")
public class ContentSettings {
private static final String TAG = "ContentSettings";
- // This class must be created on the UI thread. Afterwards, it can be
- // used from any thread. Internally, the class uses a message queue
- // to call native code on the UI thread only.
-
// The native side of this object. Ownership is retained native-side by the WebContents
// instance that backs the associated ContentViewCore.
private int mNativeContentSettings = 0;
private ContentViewCore mContentViewCore;
- // Custom handler that queues messages to call native code on the UI thread.
- private final EventHandler mEventHandler;
-
- // Protects access to settings fields.
- private final Object mContentSettingsLock = new Object();
-
- private boolean mSupportZoom = true;
- private boolean mBuiltInZoomControls = false;
- private boolean mDisplayZoomControls = true;
-
- // Class to handle messages to be processed on the UI thread.
- private class EventHandler {
- // Message id for updating multi-touch zoom state in the view
- private static final int UPDATE_MULTI_TOUCH = 2;
- // Actual UI thread handler
- private Handler mHandler;
-
- EventHandler() {
- if (mContentViewCore.isPersonalityView()) {
- mHandler = new Handler(Looper.getMainLooper()) {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case UPDATE_MULTI_TOUCH:
- if (mContentViewCore.isAlive()) {
- mContentViewCore.updateMultiTouchZoomSupport();
- }
- break;
- }
- }
- };
- }
- }
-
- private void sendUpdateMultiTouchMessageLocked() {
- assert Thread.holdsLock(mContentSettingsLock);
- if (mNativeContentSettings == 0) return;
- mHandler.sendMessage(Message.obtain(null, UPDATE_MULTI_TOUCH));
- }
- }
-
/**
* Package constructor to prevent clients from creating a new settings
* instance. Must be called on the UI thread.
@@ -85,12 +32,6 @@ public class ContentSettings {
mContentViewCore = contentViewCore;
mNativeContentSettings = nativeInit(nativeContentView);
assert mNativeContentSettings != 0;
-
- mEventHandler = new EventHandler();
- if (!mContentViewCore.isPersonalityView()) {
- mBuiltInZoomControls = true;
- mDisplayZoomControls = false;
- }
}
/**
@@ -104,126 +45,14 @@ public class ContentSettings {
}
/**
- * Sets whether the WebView should support zooming using its on-screen zoom
- * controls and gestures. The particular zoom mechanisms that should be used
- * can be set with {@link #setBuiltInZoomControls}. This setting does not
- * affect zooming performed using the {@link WebView#zoomIn()} and
- * {@link WebView#zoomOut()} methods. The default is true.
- *
- * @param support whether the WebView should support zoom
- */
- public void setSupportZoom(boolean support) {
- synchronized (mContentSettingsLock) {
- mSupportZoom = support;
- mEventHandler.sendUpdateMultiTouchMessageLocked();
- }
- }
-
- /**
- * Gets whether the WebView supports zoom.
- *
- * @return true if the WebView supports zoom
- * @see #setSupportZoom
- */
- public boolean supportZoom() {
- return mSupportZoom;
- }
-
- /**
- * Sets whether the WebView should use its built-in zoom mechanisms. The
- * built-in zoom mechanisms comprise on-screen zoom controls, which are
- * displayed over the WebView's content, and the use of a pinch gesture to
- * control zooming. Whether or not these on-screen controls are displayed
- * can be set with {@link #setDisplayZoomControls}. The default is false,
- * due to compatibility reasons.
- * <p>
- * The built-in mechanisms are the only currently supported zoom
- * mechanisms, so it is recommended that this setting is always enabled.
- * In other words, there is no point of calling this method other than
- * with the 'true' parameter.
- *
- * @param enabled whether the WebView should use its built-in zoom mechanisms
- */
- public void setBuiltInZoomControls(boolean enabled) {
- synchronized (mContentSettingsLock) {
- mBuiltInZoomControls = enabled;
- mEventHandler.sendUpdateMultiTouchMessageLocked();
- }
- }
-
- /**
- * Gets whether the zoom mechanisms built into WebView are being used.
- *
- * @return true if the zoom mechanisms built into WebView are being used
- * @see #setBuiltInZoomControls
- */
- public boolean getBuiltInZoomControls() {
- return mBuiltInZoomControls;
- }
-
- /**
- * Sets whether the WebView should display on-screen zoom controls when
- * using the built-in zoom mechanisms. See {@link #setBuiltInZoomControls}.
- * The default is true.
- *
- * @param enabled whether the WebView should display on-screen zoom controls
- */
- public void setDisplayZoomControls(boolean enabled) {
- synchronized (mContentSettingsLock) {
- mDisplayZoomControls = enabled;
- mEventHandler.sendUpdateMultiTouchMessageLocked();
- }
- }
-
- /**
- * Gets whether the WebView displays on-screen zoom controls when using
- * the built-in zoom mechanisms.
- *
- * @return true if the WebView displays on-screen zoom controls when using
- * the built-in zoom mechanisms
- * @see #setDisplayZoomControls
- */
- public boolean getDisplayZoomControls() {
- return mDisplayZoomControls;
- }
-
- boolean supportsMultiTouchZoom() {
- return mSupportZoom && mBuiltInZoomControls;
- }
-
- boolean shouldDisplayZoomControls() {
- return supportsMultiTouchZoom() && mDisplayZoomControls;
- }
-
- /**
- * Return true if JavaScript is enabled.
+ * Return true if JavaScript is enabled. Must be called on the UI thread.
*
* @return True if JavaScript is enabled.
*/
public boolean getJavaScriptEnabled() {
- return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() {
- @Override
- public Boolean call() {
- if (mNativeContentSettings != 0) {
- return nativeGetJavaScriptEnabled(mNativeContentSettings);
- } else {
- return false;
- }
- }
- });
- }
-
- /**
- * Sets the settings in this object to those from another
- * ContentSettings.
- * Required by WebView when we swap a in a new ContentViewCore
- * to an existing AwContents (i.e. to support displaying popup
- * windows in an already created WebView)
- */
- public void initFrom(ContentSettings settings) {
- setSupportZoom(settings.supportZoom());
- setBuiltInZoomControls(settings.getBuiltInZoomControls());
- setDisplayZoomControls(settings.getDisplayZoomControls());
+ ThreadUtils.assertOnUiThread();
+ return mNativeContentSettings != 0 ?
+ nativeGetJavaScriptEnabled(mNativeContentSettings) : false;
}
// Initialize the ContentSettings native side.

Powered by Google App Engine
This is Rietveld 408576698