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

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

Issue 14271024: [Android WebView] Move the most of WebSettings into AwSettings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated findbugs issues 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 bd5f04a76a9eb35681c9fcf8338890a0a0bdf102..5f5578657ad68a0a824b451744fcb75161ffb243 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
@@ -22,14 +22,6 @@ import org.chromium.base.ThreadUtils;
*/
@JNINamespace("content")
public class ContentSettings {
- // This enum corresponds to WebSettings.LayoutAlgorithm. We use our own to be
- // able to extend it.
- public enum LayoutAlgorithm {
- NORMAL,
- SINGLE_COLUMN,
- NARROW_COLUMNS,
- TEXT_AUTOSIZING,
- }
private static final String TAG = "ContentSettings";
@@ -43,10 +35,6 @@ public class ContentSettings {
private ContentViewCore mContentViewCore;
- // When ContentView is used in PERSONALITY_CHROME mode, settings can't
- // be modified through the ContentSettings instance.
- private boolean mCanModifySettings;
-
// A flag to avoid sending superfluous synchronization messages.
private boolean mIsSyncMessagePending = false;
// Custom handler that queues messages to call native code on the UI thread.
@@ -55,71 +43,17 @@ public class ContentSettings {
// Protects access to settings fields.
private final Object mContentSettingsLock = new Object();
- private static final int MINIMUM_FONT_SIZE = 1;
- private static final int MAXIMUM_FONT_SIZE = 72;
-
- // Private settings so we don't have to go into native code to
- // retrieve the values. After setXXX, mEventHandler.syncSettingsLocked() needs to be called.
- //
- // TODO(mnaganov): populate with the complete set of legacy WebView settings.
- // Note: If adding a new setting to this class, make sure to add it to the initFrom()
- // method defined below.
-
- private LayoutAlgorithm mLayoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS;
- private int mTextSizePercent = 100;
- private String mStandardFontFamily = "sans-serif";
- private String mFixedFontFamily = "monospace";
- private String mSansSerifFontFamily = "sans-serif";
- private String mSerifFontFamily = "serif";
- private String mCursiveFontFamily = "cursive";
- private String mFantasyFontFamily = "fantasy";
- // FIXME: Should be obtained from Android. Problem: it is hidden.
- private String mDefaultTextEncoding = "Latin-1";
- private String mUserAgent;
- private int mMinimumFontSize = 8;
- private int mMinimumLogicalFontSize = 8;
- private int mDefaultFontSize = 16;
- private int mDefaultFixedFontSize = 13;
- private boolean mLoadsImagesAutomatically = true;
- private boolean mImagesEnabled = true;
private boolean mJavaScriptEnabled = false;
- private boolean mAllowUniversalAccessFromFileURLs = false;
- private boolean mAllowFileAccessFromFileURLs = false;
- private boolean mJavaScriptCanOpenWindowsAutomatically = false;
- private boolean mSupportMultipleWindows = false;
- private PluginState mPluginState = PluginState.OFF;
- private boolean mAppCacheEnabled = false;
- private boolean mDomStorageEnabled = false;
- private boolean mDatabaseEnabled = false;
- private boolean mUseWideViewport = false;
- private boolean mLoadWithOverviewMode = false;
- private boolean mMediaPlaybackRequiresUserGesture = true;
- private String mDefaultVideoPosterURL;
-
- private boolean mSupportDeprecatedTargetDensityDPI = false;
// Not accessed by the native side.
private boolean mSupportZoom = true;
private boolean mBuiltInZoomControls = false;
private boolean mDisplayZoomControls = true;
- static class LazyDefaultUserAgent {
- // Lazy Holder pattern
- private static final String sInstance = nativeGetDefaultUserAgent();
- }
-
- // Protects access to settings global fields.
- private static final Object sGlobalContentSettingsLock = new Object();
- // For compatibility with the legacy WebView, we can only enable AppCache when the path is
- // provided. However, we don't use the path, so we just check if we have received it from the
- // client.
- private static boolean sAppCachePathIsSet = false;
// Class to handle messages to be processed on the UI thread.
private class EventHandler {
// Message id for syncing
private static final int SYNC = 0;
- // Message id for updating user agent in the view
- private static final int UPDATE_UA = 1;
// Message id for updating multi-touch zoom state in the view
private static final int UPDATE_MULTI_TOUCH = 2;
// Actual UI thread handler
@@ -131,18 +65,6 @@ public class ContentSettings {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
- case SYNC:
- synchronized (mContentSettingsLock) {
- syncToNativeOnUiThread();
- mIsSyncMessagePending = false;
- mContentSettingsLock.notifyAll();
- }
- break;
- case UPDATE_UA:
- if (mContentViewCore.isAlive()) {
- mContentViewCore.setAllUserAgentOverridesInHistory();
- }
- break;
case UPDATE_MULTI_TOUCH:
if (mContentViewCore.isAlive()) {
mContentViewCore.updateMultiTouchZoomSupport();
@@ -169,26 +91,7 @@ public class ContentSettings {
private void syncSettingsLocked() {
assert Thread.holdsLock(mContentSettingsLock);
if (mNativeContentSettings == 0) return;
- if (mContentViewCore.isPersonalityView()) {
- if (Looper.myLooper() == mHandler.getLooper()) {
- syncToNativeOnUiThread();
- } else {
- // We're being called on a background thread, so post a message.
- if (mIsSyncMessagePending) {
- return;
- }
- mIsSyncMessagePending = true;
- mHandler.sendMessage(Message.obtain(null, SYNC));
- // When used in PERSONALITY_VIEW mode, we must block
- // until the settings have been sync'd to native to
- // ensure that they have taken effect.
- try {
- while (mIsSyncMessagePending) {
- mContentSettingsLock.wait();
- }
- } catch (InterruptedException e) {}
- }
- } else {
+ if (!mContentViewCore.isPersonalityView()) {
if (mIsSyncMessagePending) {
return;
}
@@ -197,12 +100,6 @@ public class ContentSettings {
}
}
- private void sendUpdateUaMessageLocked() {
- assert Thread.holdsLock(mContentSettingsLock);
- if (mNativeContentSettings == 0) return;
- mHandler.sendMessage(Message.obtain(null, UPDATE_UA));
- }
-
private void sendUpdateMultiTouchMessageLocked() {
assert Thread.holdsLock(mContentSettingsLock);
if (mNativeContentSettings == 0) return;
@@ -214,29 +111,14 @@ public class ContentSettings {
* Package constructor to prevent clients from creating a new settings
* instance. Must be called on the UI thread.
*/
- ContentSettings(ContentViewCore contentViewCore, int nativeContentView,
- boolean isAccessFromFileURLsGrantedByDefault) {
+ ContentSettings(ContentViewCore contentViewCore, int nativeContentView) {
ThreadUtils.assertOnUiThread();
mContentViewCore = contentViewCore;
- mCanModifySettings = mContentViewCore.isPersonalityView();
- mNativeContentSettings = nativeInit(nativeContentView, mCanModifySettings);
+ mNativeContentSettings = nativeInit(nativeContentView);
assert mNativeContentSettings != 0;
- if (isAccessFromFileURLsGrantedByDefault) {
- mAllowUniversalAccessFromFileURLs = true;
- mAllowFileAccessFromFileURLs = true;
- }
-
mEventHandler = new EventHandler();
- if (mCanModifySettings) {
- // PERSONALITY_VIEW
- mUserAgent = LazyDefaultUserAgent.sInstance;
- mSupportDeprecatedTargetDensityDPI = true;
- syncToNativeOnUiThread();
- } else {
- // PERSONALITY_CHROME
- // Chrome has zooming enabled by default. These settings are not
- // set by the native code.
+ if (!mContentViewCore.isPersonalityView()) {
mBuiltInZoomControls = true;
mDisplayZoomControls = false;
syncFromNativeOnUiThread();
@@ -254,43 +136,6 @@ public class ContentSettings {
}
/**
- * @returns the default User-Agent used by each ContentViewCore instance, i.e. unless
- * overridden by {@link #setUserAgentString()}
- */
- public static String getDefaultUserAgent() {
- return LazyDefaultUserAgent.sInstance;
- }
-
- /**
- * Set the WebView's user-agent string. If the string "ua" is null or empty,
- * it will use the system default user-agent string.
- */
- public void setUserAgentString(String ua) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- final String oldUserAgent = mUserAgent;
- if (ua == null || ua.length() == 0) {
- mUserAgent = LazyDefaultUserAgent.sInstance;
- } else {
- mUserAgent = ua;
- }
- if (!oldUserAgent.equals(mUserAgent)) {
- mEventHandler.sendUpdateUaMessageLocked();
- }
- }
- }
-
- /**
- * Gets the WebView's user-agent string.
- */
- public String getUserAgentString() {
- // TODO(mnaganov): Doesn't reflect changes made by ChromeNativePreferences.
- synchronized (mContentSettingsLock) {
- return mUserAgent;
- }
- }
-
- /**
* 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
@@ -382,418 +227,6 @@ public class ContentSettings {
return supportsMultiTouchZoom() && mDisplayZoomControls;
}
- public void setLoadWithOverviewMode(boolean overview) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mLoadWithOverviewMode != overview) {
- mLoadWithOverviewMode = overview;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- public boolean getLoadWithOverviewMode() {
- synchronized (mContentSettingsLock) {
- return mLoadWithOverviewMode;
- }
- }
-
- /**
- * Sets the text zoom of the page in percent. Default is 100.
- *
- * @param textZoom the percent value for increasing or decreasing the text
- */
- public void setTextZoom(int textZoom) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mTextSizePercent != textZoom) {
- mTextSizePercent = textZoom;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets the text zoom of the page in percent.
- *
- * @return a percent value describing the text zoom
- * @see #setTextSizeZoom
- */
- public int getTextZoom() {
- synchronized (mContentSettingsLock) {
- return mTextSizePercent;
- }
- }
-
- /**
- * Set the standard font family name.
- * @param font A font family name.
- */
- public void setStandardFontFamily(String font) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (font != null && !mStandardFontFamily.equals(font)) {
- mStandardFontFamily = font;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the standard font family name. The default is "sans-serif".
- * @return The standard font family name as a string.
- */
- public String getStandardFontFamily() {
- synchronized (mContentSettingsLock) {
- return mStandardFontFamily;
- }
- }
-
- /**
- * Set the fixed font family name.
- * @param font A font family name.
- */
- public void setFixedFontFamily(String font) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (font != null && !mFixedFontFamily.equals(font)) {
- mFixedFontFamily = font;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the fixed font family name. The default is "monospace".
- * @return The fixed font family name as a string.
- */
- public String getFixedFontFamily() {
- synchronized (mContentSettingsLock) {
- return mFixedFontFamily;
- }
- }
-
- /**
- * Set the sans-serif font family name.
- * @param font A font family name.
- */
- public void setSansSerifFontFamily(String font) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (font != null && !mSansSerifFontFamily.equals(font)) {
- mSansSerifFontFamily = font;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the sans-serif font family name.
- * @return The sans-serif font family name as a string.
- */
- public String getSansSerifFontFamily() {
- synchronized (mContentSettingsLock) {
- return mSansSerifFontFamily;
- }
- }
-
- /**
- * Set the serif font family name. The default is "sans-serif".
- * @param font A font family name.
- */
- public void setSerifFontFamily(String font) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (font != null && !mSerifFontFamily.equals(font)) {
- mSerifFontFamily = font;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the serif font family name. The default is "serif".
- * @return The serif font family name as a string.
- */
- public String getSerifFontFamily() {
- synchronized (mContentSettingsLock) {
- return mSerifFontFamily;
- }
- }
-
- /**
- * Set the cursive font family name.
- * @param font A font family name.
- */
- public void setCursiveFontFamily(String font) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (font != null && !mCursiveFontFamily.equals(font)) {
- mCursiveFontFamily = font;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the cursive font family name. The default is "cursive".
- * @return The cursive font family name as a string.
- */
- public String getCursiveFontFamily() {
- synchronized (mContentSettingsLock) {
- return mCursiveFontFamily;
- }
- }
-
- /**
- * Set the fantasy font family name.
- * @param font A font family name.
- */
- public void setFantasyFontFamily(String font) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (font != null && !mFantasyFontFamily.equals(font)) {
- mFantasyFontFamily = font;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the fantasy font family name. The default is "fantasy".
- * @return The fantasy font family name as a string.
- */
- public String getFantasyFontFamily() {
- synchronized (mContentSettingsLock) {
- return mFantasyFontFamily;
- }
- }
-
- /**
- * Set the minimum font size.
- * @param size A non-negative integer between 1 and 72.
- * Any number outside the specified range will be pinned.
- */
- public void setMinimumFontSize(int size) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- size = clipFontSize(size);
- if (mMinimumFontSize != size) {
- mMinimumFontSize = size;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the minimum font size. The default is 8.
- * @return A non-negative integer between 1 and 72.
- */
- public int getMinimumFontSize() {
- synchronized (mContentSettingsLock) {
- return mMinimumFontSize;
- }
- }
-
- /**
- * Set the minimum logical font size.
- * @param size A non-negative integer between 1 and 72.
- * Any number outside the specified range will be pinned.
- */
- public void setMinimumLogicalFontSize(int size) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- size = clipFontSize(size);
- if (mMinimumLogicalFontSize != size) {
- mMinimumLogicalFontSize = size;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the minimum logical font size. The default is 8.
- * @return A non-negative integer between 1 and 72.
- */
- public int getMinimumLogicalFontSize() {
- synchronized (mContentSettingsLock) {
- return mMinimumLogicalFontSize;
- }
- }
-
- /**
- * Set the default font size.
- * @param size A non-negative integer between 1 and 72.
- * Any number outside the specified range will be pinned.
- */
- public void setDefaultFontSize(int size) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- size = clipFontSize(size);
- if (mDefaultFontSize != size) {
- mDefaultFontSize = size;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the default font size. The default is 16.
- * @return A non-negative integer between 1 and 72.
- */
- public int getDefaultFontSize() {
- synchronized (mContentSettingsLock) {
- return mDefaultFontSize;
- }
- }
-
- /**
- * Set the default fixed font size.
- * @param size A non-negative integer between 1 and 72.
- * Any number outside the specified range will be pinned.
- */
- public void setDefaultFixedFontSize(int size) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- size = clipFontSize(size);
- if (mDefaultFixedFontSize != size) {
- mDefaultFixedFontSize = size;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the default fixed font size. The default is 16.
- * @return A non-negative integer between 1 and 72.
- */
- public int getDefaultFixedFontSize() {
- synchronized (mContentSettingsLock) {
- return mDefaultFixedFontSize;
- }
- }
-
- /**
- * Tell the WebView to enable JavaScript execution.
- *
- * @param flag True if the WebView should execute JavaScript.
- */
- public void setJavaScriptEnabled(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mJavaScriptEnabled != flag) {
- mJavaScriptEnabled = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Sets whether JavaScript running in the context of a file scheme URL
- * should be allowed to access content from any origin. This includes
- * access to content from other file scheme URLs. See
- * {@link #setAllowFileAccessFromFileURLs}. To enable the most restrictive,
- * and therefore secure policy, this setting should be disabled.
- * <p>
- * The default value is true for API level
- * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below,
- * and false for API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN}
- * and above.
- *
- * @param flag whether JavaScript running in the context of a file scheme
- * URL should be allowed to access content from any origin
- */
- public void setAllowUniversalAccessFromFileURLs(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mAllowUniversalAccessFromFileURLs != flag) {
- mAllowUniversalAccessFromFileURLs = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Sets whether JavaScript running in the context of a file scheme URL
- * should be allowed to access content from other file scheme URLs. To
- * enable the most restrictive, and therefore secure policy, this setting
- * should be disabled. Note that the value of this setting is ignored if
- * the value of {@link #getAllowUniversalAccessFromFileURLs} is true.
- * <p>
- * The default value is true for API level
- * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below,
- * and false for API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN}
- * and above.
- *
- * @param flag whether JavaScript running in the context of a file scheme
- * URL should be allowed to access content from other file
- * scheme URLs
- */
- public void setAllowFileAccessFromFileURLs(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mAllowFileAccessFromFileURLs != flag) {
- mAllowFileAccessFromFileURLs = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Tell the WebView to load image resources automatically.
- * Note that setting this flag to false this does not block image loads
- * from WebCore cache.
- * @param flag True if the WebView should load images automatically.
- */
- public void setLoadsImagesAutomatically(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mLoadsImagesAutomatically != flag) {
- mLoadsImagesAutomatically = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Return true if the WebView will load image resources automatically.
- * The default is true.
- * @return True if the WebView loads images automatically.
- */
- public boolean getLoadsImagesAutomatically() {
- synchronized (mContentSettingsLock) {
- return mLoadsImagesAutomatically;
- }
- }
-
- /**
- * Sets whether images are enabled for this WebView. Setting this from
- * false to true will reload the blocked images in place.
- * Note that unlike {@link #setLoadsImagesAutomatically}, setting this
- * flag to false this will block image loads from WebCore cache as well.
- * The default is true.
- * @param flag whether the WebView should enable images.
- */
- public void setImagesEnabled(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mImagesEnabled != flag) {
- mImagesEnabled = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets whether images are enabled for this WebView.
- * @return true if the WebView has images eanbled
- */
- public boolean getImagesEnabled() {
- synchronized (mContentSettingsLock) {
- return mImagesEnabled;
- }
- }
-
/**
* Return true if JavaScript is enabled. <b>Note: The default is false.</b>
*
@@ -806,453 +239,6 @@ public class ContentSettings {
}
/**
- * Gets whether JavaScript running in the context of a file scheme URL can
- * access content from any origin. This includes access to content from
- * other file scheme URLs.
- *
- * @return whether JavaScript running in the context of a file scheme URL
- * can access content from any origin
- * @see #setAllowUniversalAccessFromFileURLs
- */
- public boolean getAllowUniversalAccessFromFileURLs() {
- synchronized (mContentSettingsLock) {
- return mAllowUniversalAccessFromFileURLs;
- }
- }
-
- /**
- * Gets whether JavaScript running in the context of a file scheme URL can
- * access content from other file scheme URLs.
- *
- * @return whether JavaScript running in the context of a file scheme URL
- * can access content from other file scheme URLs
- * @see #setAllowFileAccessFromFileURLs
- */
- public boolean getAllowFileAccessFromFileURLs() {
- synchronized (mContentSettingsLock) {
- return mAllowFileAccessFromFileURLs;
- }
- }
-
- /**
- * Tell the WebView to enable plugins.
- * @param flag True if the WebView should load plugins.
- * @deprecated This method has been deprecated in favor of
- * {@link #setPluginState}
- */
- @Deprecated
- public void setPluginsEnabled(boolean flag) {
- assert mCanModifySettings;
- setPluginState(flag ? PluginState.ON : PluginState.OFF);
- }
-
- /**
- * Tell the WebView to enable, disable, or have plugins on demand. On
- * demand mode means that if a plugin exists that can handle the embedded
- * content, a placeholder icon will be shown instead of the plugin. When
- * the placeholder is clicked, the plugin will be enabled.
- * @param state One of the PluginState values.
- */
- public void setPluginState(PluginState state) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mPluginState != state) {
- mPluginState = state;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Return true if plugins are enabled.
- * @return True if plugins are enabled.
- * @deprecated This method has been replaced by {@link #getPluginState}
- */
- @Deprecated
- public boolean getPluginsEnabled() {
- synchronized (mContentSettingsLock) {
- return mPluginState == PluginState.ON;
- }
- }
-
- /**
- * Return true if plugins are disabled.
- * @return True if plugins are disabled.
- * @hide
- */
- @CalledByNative
- private boolean getPluginsDisabled() {
- // This should only be called from SyncToNative, which is called
- // either from the constructor, or with mContentSettingsLock being held.
- return mPluginState == PluginState.OFF;
- }
-
- /**
- * Sets if plugins are disabled.
- * @return True if plugins are disabled.
- * @hide
- */
- @CalledByNative
- private void setPluginsDisabled(boolean disabled) {
- // This should only be called from SyncFromToNative, which is called
- // either from the constructor, or with mContentSettingsLock being held.
- mPluginState = disabled ? PluginState.OFF : PluginState.ON;
- }
-
- /**
- * Return the current plugin state.
- * @return A value corresponding to the enum PluginState.
- */
- public PluginState getPluginState() {
- synchronized (mContentSettingsLock) {
- return mPluginState;
- }
- }
-
-
- /**
- * Tell javascript to open windows automatically. This applies to the
- * javascript function window.open().
- * @param flag True if javascript can open windows automatically.
- */
- public void setJavaScriptCanOpenWindowsAutomatically(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mJavaScriptCanOpenWindowsAutomatically != flag) {
- mJavaScriptCanOpenWindowsAutomatically = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Return true if javascript can open windows automatically. The default
- * is false.
- * @return True if javascript can open windows automatically during
- * window.open().
- */
- public boolean getJavaScriptCanOpenWindowsAutomatically() {
- synchronized (mContentSettingsLock) {
- return mJavaScriptCanOpenWindowsAutomatically;
- }
- }
-
- /**
- * Sets the underlying layout algorithm. The default is
- * {@link LayoutAlgorithm#NARROW_COLUMNS}.
- *
- * @param l the layout algorithm to use, as a {@link LayoutAlgorithm} value
- */
- public void setLayoutAlgorithm(LayoutAlgorithm l) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mLayoutAlgorithm != l) {
- mLayoutAlgorithm = l;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets the current layout algorithm.
- *
- * @return the layout algorithm in use, as a {@link LayoutAlgorithm} value
- * @see #setLayoutAlgorithm
- */
- public LayoutAlgorithm getLayoutAlgorithm() {
- synchronized (mContentSettingsLock) {
- return mLayoutAlgorithm;
- }
- }
-
- /**
- * Sets whether Text Auto-sizing layout algorithm is enabled.
- *
- * @param enabled whether Text Auto-sizing layout algorithm is enabled
- * @hide
- */
- @CalledByNative
- private void setTextAutosizingEnabled(boolean enabled) {
- // This should only be called from SyncFromNative, which is called
- // either from the constructor, or with mContentSettingsLock being held.
- mLayoutAlgorithm = enabled ?
- LayoutAlgorithm.TEXT_AUTOSIZING : LayoutAlgorithm.NARROW_COLUMNS;
- }
-
- /**
- * Gets whether Text Auto-sizing layout algorithm is enabled.
- *
- * @return true if Text Auto-sizing layout algorithm is enabled
- * @hide
- */
- @CalledByNative
- private boolean getTextAutosizingEnabled() {
- return mLayoutAlgorithm == LayoutAlgorithm.TEXT_AUTOSIZING;
- }
-
- /**
- * Tells the WebView whether it supports multiple windows. True means
- * that {@link WebChromeClient#onCreateWindow(WebView, boolean,
- * boolean, Message)} is implemented by the host application.
- */
- public void setSupportMultipleWindows(boolean support) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mSupportMultipleWindows != support) {
- mSupportMultipleWindows = support;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets whether the WebView is supporting multiple windows.
- *
- * @return true if the WebView is supporting multiple windows. This means
- * that {@link WebChromeClient#onCreateWindow(WebView, boolean,
- * boolean, Message)} is implemented by the host application.
- */
- public boolean supportMultipleWindows() {
- synchronized (mContentSettingsLock) {
- return mSupportMultipleWindows;
- }
- }
-
- /**
- * Sets whether the WebView should enable support for the &quot;viewport&quot;
- * HTML meta tag or should use a wide viewport.
- * When the value of the setting is false, the layout width is always set to the
- * width of the WebView control in device-independent (CSS) pixels.
- * When the value is true and the page contains the viewport meta tag, the value
- * of the width specified in the tag is used. If the page does not contain the tag or
- * does not provide a width, then a wide viewport will be used.
- *
- * @param use whether to enable support for the viewport meta tag
- */
- public void setUseWideViewPort(boolean use) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mUseWideViewport != use) {
- mUseWideViewport = use;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets whether the WebView supports the &quot;viewport&quot;
- * HTML meta tag or will use a wide viewport.
- *
- * @return true if the WebView supports the viewport meta tag
- * @see #setUseWideViewPort
- */
- public boolean getUseWideViewPort() {
- synchronized (mContentSettingsLock) {
- return mUseWideViewport;
- }
- }
-
- /**
- * Sets whether the Application Caches API should be enabled. The default
- * is false. Note that in order for the Application Caches API to be
- * enabled, a non-empty database path must also be supplied to
- * {@link #setAppCachePath} (this is done for compatibility with the
- * legacy implementation).
- *
- * @param flag true if the WebView should enable Application Caches
- */
- public void setAppCacheEnabled(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mAppCacheEnabled != flag) {
- mAppCacheEnabled = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Sets the path to the Application Caches files. In order for the
- * Application Caches API to be enabled, this method must be called with a
- * non-empty path. This method should only be called once: repeated calls
- * are ignored.
- *
- * @param path a non empty-string
- */
- public void setAppCachePath(String path) {
- assert mCanModifySettings;
- boolean needToSync = false;
- synchronized (sGlobalContentSettingsLock) {
- // AppCachePath can only be set once.
- if (!sAppCachePathIsSet && path != null && !path.isEmpty()) {
- sAppCachePathIsSet = true;
- needToSync = true;
- }
- }
- // The obvious problem here is that other WebViews will not be updated,
- // until they execute synchronization from Java to the native side.
- // But this is the same behaviour as it was in the legacy WebView.
- if (needToSync) {
- synchronized (mContentSettingsLock) {
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets whether Application Cache is enabled.
- *
- * @return true if Application Cache is enabled
- * @hide
- */
- @CalledByNative
- private boolean getAppCacheEnabled() {
- // This should only be called from SyncToNative, which is called
- // either from the constructor, or with mContentSettingsLock being held.
- if (!mAppCacheEnabled) {
- return false;
- }
- synchronized (sGlobalContentSettingsLock) {
- return sAppCachePathIsSet;
- }
- }
-
- /**
- * Sets whether the DOM storage API is enabled. The default value is false.
- *
- * @param flag true if the ContentView should use the DOM storage API
- */
- public void setDomStorageEnabled(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mDomStorageEnabled != flag) {
- mDomStorageEnabled = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets whether the DOM Storage APIs are enabled.
- *
- * @return true if the DOM Storage APIs are enabled
- * @see #setDomStorageEnabled
- */
- public boolean getDomStorageEnabled() {
- synchronized (mContentSettingsLock) {
- return mDomStorageEnabled;
- }
- }
-
- /**
- * Sets whether the WebSQL storage API is enabled. The default value is false.
- *
- * @param flag true if the ContentView should use the WebSQL storage API
- */
- public void setDatabaseEnabled(boolean flag) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mDatabaseEnabled != flag) {
- mDatabaseEnabled = flag;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Gets whether the WebSQL Storage APIs are enabled.
- *
- * @return true if the WebSQL Storage APIs are enabled
- * @see #setDatabaseEnabled
- */
- public boolean getDatabaseEnabled() {
- synchronized (mContentSettingsLock) {
- return mDatabaseEnabled;
- }
- }
-
- /**
- * Set the default text encoding name to use when decoding html pages.
- * @param encoding The text encoding name.
- */
- public void setDefaultTextEncodingName(String encoding) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (encoding != null && !mDefaultTextEncoding.equals(encoding)) {
- mDefaultTextEncoding = encoding;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the default text encoding name. The default is "Latin-1".
- * @return The default text encoding name as a string.
- */
- public String getDefaultTextEncodingName() {
- synchronized (mContentSettingsLock) {
- return mDefaultTextEncoding;
- }
- }
-
- /**
- * Set whether the user gesture is required for media playback.
- * @param require true if the user gesture is required.
- */
- public void setMediaPlaybackRequiresUserGesture(boolean require) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mMediaPlaybackRequiresUserGesture != require) {
- mMediaPlaybackRequiresUserGesture = require;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get whether the user gesture is required for Media Playback.
- * @return true if the user gesture is required.
- */
- public boolean getMediaPlaybackRequiresUserGesture() {
- synchronized (mContentSettingsLock) {
- return mMediaPlaybackRequiresUserGesture;
- }
- }
-
- /**
- * Set the default video poster URL.
- * @param url The url of default video poster.
- */
- public void setDefaultVideoPosterURL(String url) {
- assert mCanModifySettings;
- synchronized (mContentSettingsLock) {
- if (mDefaultVideoPosterURL != null && !mDefaultVideoPosterURL.equals(url) ||
- mDefaultVideoPosterURL == null && url != null) {
- mDefaultVideoPosterURL = url;
- mEventHandler.syncSettingsLocked();
- }
- }
- }
-
- /**
- * Get the default video poster URL.
- */
- public String getDefaultVideoPosterURL() {
- synchronized (mContentSettingsLock) {
- return mDefaultVideoPosterURL;
- }
- }
-
- private int clipFontSize(int size) {
- if (size < MINIMUM_FONT_SIZE) {
- return MINIMUM_FONT_SIZE;
- } else if (size > MAXIMUM_FONT_SIZE) {
- return MAXIMUM_FONT_SIZE;
- }
- return size;
- }
-
- /**
* Sets the settings in this object to those from another
* ContentSettings.
* Required by WebView when we swap a in a new ContentViewCore
@@ -1260,69 +246,23 @@ public class ContentSettings {
* windows in an already created WebView)
*/
public void initFrom(ContentSettings settings) {
- setLayoutAlgorithm(settings.getLayoutAlgorithm());
- setLoadWithOverviewMode(settings.getLoadWithOverviewMode());
- setTextZoom(settings.getTextZoom());
- setStandardFontFamily(settings.getStandardFontFamily());
- setFixedFontFamily(settings.getFixedFontFamily());
- setSansSerifFontFamily(settings.getSansSerifFontFamily());
- setSerifFontFamily(settings.getSerifFontFamily());
- setCursiveFontFamily(settings.getCursiveFontFamily());
- setFantasyFontFamily(settings.getFantasyFontFamily());
- setDefaultTextEncodingName(settings.getDefaultTextEncodingName());
- setUserAgentString(settings.getUserAgentString());
- setMinimumFontSize(settings.getMinimumFontSize());
- setMinimumLogicalFontSize(settings.getMinimumLogicalFontSize());
- setDefaultFontSize(settings.getDefaultFontSize());
- setDefaultFixedFontSize(settings.getDefaultFixedFontSize());
- setLoadsImagesAutomatically(settings.getLoadsImagesAutomatically());
- setImagesEnabled(settings.getImagesEnabled());
- setJavaScriptEnabled(settings.getJavaScriptEnabled());
- setAllowUniversalAccessFromFileURLs(settings.getAllowUniversalAccessFromFileURLs());
- setAllowFileAccessFromFileURLs(settings.getAllowFileAccessFromFileURLs());
- setJavaScriptCanOpenWindowsAutomatically(
- settings.getJavaScriptCanOpenWindowsAutomatically());
- setSupportMultipleWindows(settings.supportMultipleWindows());
- setPluginState(settings.getPluginState());
- setAppCacheEnabled(settings.mAppCacheEnabled);
- setDomStorageEnabled(settings.getDomStorageEnabled());
- setDatabaseEnabled(settings.getDatabaseEnabled());
setSupportZoom(settings.supportZoom());
setBuiltInZoomControls(settings.getBuiltInZoomControls());
setDisplayZoomControls(settings.getDisplayZoomControls());
- setMediaPlaybackRequiresUserGesture(settings.getMediaPlaybackRequiresUserGesture());
- setDefaultVideoPosterURL(settings.getDefaultVideoPosterURL());
}
- /**
- * Synchronize java side and native side settings. When ContentView
- * is running in PERSONALITY_VIEW mode, this needs to be done after
- * any java side setting is changed to sync them to native. In
- * PERSONALITY_CHROME mode, this needs to be called whenever native
- * settings are changed to sync them to java.
- */
void syncSettings() {
synchronized (mContentSettingsLock) {
mEventHandler.syncSettingsLocked();
}
}
- void syncToNativeOnUiThread() {
- if (mNativeContentSettings != 0) nativeSyncToNative(mNativeContentSettings);
- }
-
void syncFromNativeOnUiThread() {
if (mNativeContentSettings != 0) nativeSyncFromNative(mNativeContentSettings);
}
// Initialize the ContentSettings native side.
- private native int nativeInit(int contentViewPtr, boolean isMasterMode);
-
- private static native String nativeGetDefaultUserAgent();
+ private native int nativeInit(int contentViewPtr);
- // Synchronize Java settings from native settings.
private native void nativeSyncFromNative(int nativeContentSettings);
-
- // Synchronize native settings from Java settings.
- private native void nativeSyncToNative(int nativeContentSettings);
}

Powered by Google App Engine
This is Rietveld 408576698