summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit/WebSettings.java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
commitd83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/java/android/webkit/WebSettings.java
parent076357b8567458d4b6dfdcf839ef751634cd2bfb (diff)
downloadframeworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/webkit/WebSettings.java')
-rw-r--r--core/java/android/webkit/WebSettings.java1112
1 files changed, 0 insertions, 1112 deletions
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
deleted file mode 100644
index 4e2b2ab..0000000
--- a/core/java/android/webkit/WebSettings.java
+++ /dev/null
@@ -1,1112 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.webkit;
-
-import android.content.Context;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.Checkin;
-
-import java.lang.SecurityException;
-import android.content.pm.PackageManager;
-
-import java.util.Locale;
-
-/**
- * Manages settings state for a WebView. When a WebView is first created, it
- * obtains a set of default settings. These default settings will be returned
- * from any getter call. A WebSettings object obtained from
- * WebView.getSettings() is tied to the life of the WebView. If a WebView has
- * been destroyed, any method call on WebSettings will throw an
- * IllegalStateException.
- */
-public class WebSettings {
- /**
- * Enum for controlling the layout of html.
- * NORMAL means no rendering changes.
- * SINGLE_COLUMN moves all content into one column that is the width of the
- * view.
- * NARROW_COLUMNS makes all columns no wider than the screen if possible.
- */
- // XXX: These must match LayoutAlgorithm in Settings.h in WebCore.
- public enum LayoutAlgorithm {
- NORMAL,
- SINGLE_COLUMN,
- NARROW_COLUMNS
- }
-
- /**
- * Enum for specifying the text size.
- * SMALLEST is 50%
- * SMALLER is 75%
- * NORMAL is 100%
- * LARGER is 150%
- * LARGEST is 200%
- */
- public enum TextSize {
- SMALLEST(50),
- SMALLER(75),
- NORMAL(100),
- LARGER(150),
- LARGEST(200);
- TextSize(int size) {
- value = size;
- }
- int value;
- }
-
- /**
- * Default cache usage pattern Use with {@link #setCacheMode}.
- */
- public static final int LOAD_DEFAULT = -1;
-
- /**
- * Normal cache usage pattern Use with {@link #setCacheMode}.
- */
- public static final int LOAD_NORMAL = 0;
-
- /**
- * Use cache if content is there, even if expired (eg, history nav)
- * If it is not in the cache, load from network.
- * Use with {@link #setCacheMode}.
- */
- public static final int LOAD_CACHE_ELSE_NETWORK = 1;
-
- /**
- * Don't use the cache, load from network
- * Use with {@link #setCacheMode}.
- */
- public static final int LOAD_NO_CACHE = 2;
-
- /**
- * Don't use the network, load from cache only.
- * Use with {@link #setCacheMode}.
- */
- public static final int LOAD_CACHE_ONLY = 3;
-
- public enum RenderPriority {
- NORMAL,
- HIGH,
- LOW
- }
-
- // BrowserFrame used to access the native frame pointer.
- private BrowserFrame mBrowserFrame;
- // Flag to prevent multiple SYNC messages at one time.
- private boolean mSyncPending = false;
- // Custom handler that queues messages until the WebCore thread is active.
- private final EventHandler mEventHandler;
- // Private settings so we don't have to go into native code to
- // retrieve the values. After setXXX, postSync() needs to be called.
- // XXX: The default values need to match those in WebSettings.cpp
- private LayoutAlgorithm mLayoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS;
- private Context mContext;
- private TextSize mTextSize = TextSize.NORMAL;
- 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";
- private String mDefaultTextEncoding = "Latin-1";
- private String mUserAgent;
- private boolean mUseDefaultUserAgent;
- private String mAcceptLanguage;
- private String mPluginsPath = "";
- private int mMinimumFontSize = 8;
- private int mMinimumLogicalFontSize = 8;
- private int mDefaultFontSize = 16;
- private int mDefaultFixedFontSize = 13;
- private boolean mLoadsImagesAutomatically = true;
- private boolean mBlockNetworkImage = false;
- private boolean mBlockNetworkLoads = false;
- private boolean mJavaScriptEnabled = false;
- private boolean mPluginsEnabled = false;
- private boolean mJavaScriptCanOpenWindowsAutomatically = false;
- private boolean mUseDoubleTree = false;
- private boolean mUseWideViewport = false;
- private boolean mSupportMultipleWindows = false;
- private boolean mShrinksStandaloneImagesToFit = false;
- // Don't need to synchronize the get/set methods as they
- // are basic types, also none of these values are used in
- // native WebCore code.
- private RenderPriority mRenderPriority = RenderPriority.NORMAL;
- private int mOverrideCacheMode = LOAD_DEFAULT;
- private boolean mSaveFormData = true;
- private boolean mSavePassword = true;
- private boolean mLightTouchEnabled = false;
- private boolean mNeedInitialFocus = true;
- private boolean mNavDump = false;
- private boolean mSupportZoom = true;
- private boolean mAllowFileAccess = true;
-
- // Class to handle messages before WebCore is ready.
- private class EventHandler {
- // Message id for syncing
- static final int SYNC = 0;
- // Message id for setting priority
- static final int PRIORITY = 1;
- // Actual WebCore thread handler
- private Handler mHandler;
-
- private synchronized void createHandler() {
- // as mRenderPriority can be set before thread is running, sync up
- setRenderPriority();
-
- // create a new handler
- mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case SYNC:
- synchronized (WebSettings.this) {
- if (mBrowserFrame.mNativeFrame != 0) {
- nativeSync(mBrowserFrame.mNativeFrame);
- }
- mSyncPending = false;
- }
- break;
-
- case PRIORITY: {
- setRenderPriority();
- break;
- }
- }
- }
- };
- }
-
- private void setRenderPriority() {
- synchronized (WebSettings.this) {
- if (mRenderPriority == RenderPriority.NORMAL) {
- android.os.Process.setThreadPriority(
- android.os.Process.THREAD_PRIORITY_DEFAULT);
- } else if (mRenderPriority == RenderPriority.HIGH) {
- android.os.Process.setThreadPriority(
- android.os.Process.THREAD_PRIORITY_FOREGROUND +
- android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE);
- } else if (mRenderPriority == RenderPriority.LOW) {
- android.os.Process.setThreadPriority(
- android.os.Process.THREAD_PRIORITY_BACKGROUND);
- }
- }
- }
-
- /**
- * Send a message to the private queue or handler.
- */
- private synchronized boolean sendMessage(Message msg) {
- if (mHandler != null) {
- mHandler.sendMessage(msg);
- return true;
- } else {
- return false;
- }
- }
- }
-
- // User agent strings.
- private static final String DESKTOP_USERAGENT =
- "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en)"
- + " AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2"
- + " Safari/525.20.1";
- private static final String IPHONE_USERAGENT =
- "Mozilla/5.0 (iPhone; U; CPU iPhone 2_1 like Mac OS X; en)"
- + " AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2"
- + " Mobile/5F136 Safari/525.20.1";
- private static Locale sLocale;
- private static Object sLockForLocaleSettings;
-
- /**
- * Package constructor to prevent clients from creating a new settings
- * instance.
- */
- WebSettings(Context context) {
- mEventHandler = new EventHandler();
- mContext = context;
-
- if (sLockForLocaleSettings == null) {
- sLockForLocaleSettings = new Object();
- sLocale = Locale.getDefault();
- }
- mAcceptLanguage = getCurrentAcceptLanguage();
- mUserAgent = getCurrentUserAgent();
- mUseDefaultUserAgent = true;
-
- verifyNetworkAccess();
- }
-
- /**
- * Looks at sLocale and returns current AcceptLanguage String.
- * @return Current AcceptLanguage String.
- */
- private String getCurrentAcceptLanguage() {
- Locale locale;
- synchronized(sLockForLocaleSettings) {
- locale = sLocale;
- }
- StringBuffer buffer = new StringBuffer();
- final String language = locale.getLanguage();
- if (language != null) {
- buffer.append(language);
- final String country = locale.getCountry();
- if (country != null) {
- buffer.append("-");
- buffer.append(country);
- }
- }
- if (!locale.equals(Locale.US)) {
- buffer.append(", ");
- java.util.Locale us = Locale.US;
- if (us.getLanguage() != null) {
- buffer.append(us.getLanguage());
- final String country = us.getCountry();
- if (country != null) {
- buffer.append("-");
- buffer.append(country);
- }
- }
- }
-
- return buffer.toString();
- }
-
- /**
- * Looks at sLocale and mContext and returns current UserAgent String.
- * @return Current UserAgent String.
- */
- private synchronized String getCurrentUserAgent() {
- Locale locale;
- synchronized(sLockForLocaleSettings) {
- locale = sLocale;
- }
- StringBuffer buffer = new StringBuffer();
- // Add version
- final String version = Build.VERSION.RELEASE;
- if (version.length() > 0) {
- buffer.append(version);
- } else {
- // default to "1.0"
- buffer.append("1.0");
- }
- buffer.append("; ");
- final String language = locale.getLanguage();
- if (language != null) {
- buffer.append(language.toLowerCase());
- final String country = locale.getCountry();
- if (country != null) {
- buffer.append("-");
- buffer.append(country.toLowerCase());
- }
- } else {
- // default to "en"
- buffer.append("en");
- }
-
- final String model = Build.MODEL;
- if (model.length() > 0) {
- buffer.append("; ");
- buffer.append(model);
- }
- final String id = Build.ID;
- if (id.length() > 0) {
- buffer.append(" Build/");
- buffer.append(id);
- }
- final String base = mContext.getResources().getText(
- com.android.internal.R.string.web_user_agent).toString();
- return String.format(base, buffer);
- }
-
- /**
- * Enables dumping the pages navigation cache to a text file.
- */
- public void setNavDump(boolean enabled) {
- mNavDump = enabled;
- }
-
- /**
- * Returns true if dumping the navigation cache is enabled.
- */
- public boolean getNavDump() {
- return mNavDump;
- }
-
- /**
- * Set whether the WebView supports zoom
- */
- public void setSupportZoom(boolean support) {
- mSupportZoom = support;
- }
-
- /**
- * Returns whether the WebView supports zoom
- */
- public boolean supportZoom() {
- return mSupportZoom;
- }
-
- /**
- * Enable or disable file access within WebView. File access is enabled by
- * default.
- */
- public void setAllowFileAccess(boolean allow) {
- mAllowFileAccess = allow;
- }
-
- /**
- * Returns true if this WebView supports file access.
- */
- public boolean getAllowFileAccess() {
- return mAllowFileAccess;
- }
-
- /**
- * Store whether the WebView is saving form data.
- */
- public void setSaveFormData(boolean save) {
- mSaveFormData = save;
- }
-
- /**
- * Return whether the WebView is saving form data.
- */
- public boolean getSaveFormData() {
- return mSaveFormData;
- }
-
- /**
- * Store whether the WebView is saving password.
- */
- public void setSavePassword(boolean save) {
- mSavePassword = save;
- }
-
- /**
- * Return whether the WebView is saving password.
- */
- public boolean getSavePassword() {
- return mSavePassword;
- }
-
- /**
- * Set the text size of the page.
- * @param t A TextSize value for increasing or decreasing the text.
- * @see WebSettings.TextSize
- */
- public synchronized void setTextSize(TextSize t) {
- if (WebView.mLogEvent && mTextSize != t ) {
- Checkin.updateStats(mContext.getContentResolver(),
- Checkin.Stats.Tag.BROWSER_TEXT_SIZE_CHANGE, 1, 0.0);
- }
- mTextSize = t;
- postSync();
- }
-
- /**
- * Get the text size of the page.
- * @return A TextSize enum value describing the text size.
- * @see WebSettings.TextSize
- */
- public synchronized TextSize getTextSize() {
- return mTextSize;
- }
-
- /**
- * Enables using light touches to make a selection and activate mouseovers.
- */
- public void setLightTouchEnabled(boolean enabled) {
- mLightTouchEnabled = enabled;
- }
-
- /**
- * Returns true if light touches are enabled.
- */
- public boolean getLightTouchEnabled() {
- return mLightTouchEnabled;
- }
-
- /**
- * Tell the WebView to use the double tree rendering algorithm.
- * @param use True if the WebView is to use double tree rendering, false
- * otherwise.
- */
- public synchronized void setUseDoubleTree(boolean use) {
- if (mUseDoubleTree != use) {
- mUseDoubleTree = use;
- postSync();
- }
- }
-
- /**
- * Return true if the WebView is using the double tree rendering algorithm.
- * @return True if the WebView is using the double tree rendering
- * algorithm.
- */
- public synchronized boolean getUseDoubleTree() {
- return mUseDoubleTree;
- }
-
- /**
- * Tell the WebView about user-agent string.
- * @param ua 0 if the WebView should use an Android user-agent string,
- * 1 if the WebView should use a desktop user-agent string.
- *
- * @deprecated Please use setUserAgentString instead.
- */
- @Deprecated
- public synchronized void setUserAgent(int ua) {
- String uaString = null;
- if (ua == 1) {
- if (DESKTOP_USERAGENT.equals(mUserAgent)) {
- return; // do nothing
- } else {
- uaString = DESKTOP_USERAGENT;
- }
- } else if (ua == 2) {
- if (IPHONE_USERAGENT.equals(mUserAgent)) {
- return; // do nothing
- } else {
- uaString = IPHONE_USERAGENT;
- }
- } else if (ua != 0) {
- return; // do nothing
- }
- setUserAgentString(uaString);
- }
-
- /**
- * Return user-agent as int
- * @return int 0 if the WebView is using an Android user-agent string.
- * 1 if the WebView is using a desktop user-agent string.
- * -1 if the WebView is using user defined user-agent string.
- *
- * @deprecated Please use getUserAgentString instead.
- */
- @Deprecated
- public synchronized int getUserAgent() {
- if (DESKTOP_USERAGENT.equals(mUserAgent)) {
- return 1;
- } else if (IPHONE_USERAGENT.equals(mUserAgent)) {
- return 2;
- } else if (mUseDefaultUserAgent) {
- return 0;
- }
- return -1;
- }
-
- /**
- * Tell the WebView to use the wide viewport
- */
- public synchronized void setUseWideViewPort(boolean use) {
- if (mUseWideViewport != use) {
- mUseWideViewport = use;
- postSync();
- }
- }
-
- /**
- * @return True if the WebView is using a wide viewport
- */
- public synchronized boolean getUseWideViewPort() {
- return mUseWideViewport;
- }
-
- /**
- * Tell the WebView whether it supports multiple windows. TRUE means
- * that {@link WebChromeClient#onCreateWindow(WebView, boolean,
- * boolean, Message)} is implemented by the host application.
- */
- public synchronized void setSupportMultipleWindows(boolean support) {
- if (mSupportMultipleWindows != support) {
- mSupportMultipleWindows = support;
- postSync();
- }
- }
-
- /**
- * @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 synchronized boolean supportMultipleWindows() {
- return mSupportMultipleWindows;
- }
-
- /**
- * Set the underlying layout algorithm. This will cause a relayout of the
- * WebView.
- * @param l A LayoutAlgorithm enum specifying the algorithm to use.
- * @see WebSettings.LayoutAlgorithm
- */
- public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) {
- // XXX: This will only be affective if libwebcore was built with
- // ANDROID_LAYOUT defined.
- if (mLayoutAlgorithm != l) {
- mLayoutAlgorithm = l;
- postSync();
- }
- }
-
- /**
- * Return the current layout algorithm.
- * @return LayoutAlgorithm enum value describing the layout algorithm
- * being used.
- * @see WebSettings.LayoutAlgorithm
- */
- public synchronized LayoutAlgorithm getLayoutAlgorithm() {
- return mLayoutAlgorithm;
- }
-
- /**
- * Set the standard font family name.
- * @param font A font family name.
- */
- public synchronized void setStandardFontFamily(String font) {
- if (font != null && !font.equals(mStandardFontFamily)) {
- mStandardFontFamily = font;
- postSync();
- }
- }
-
- /**
- * Get the standard font family name.
- * @return The standard font family name as a string.
- */
- public synchronized String getStandardFontFamily() {
- return mStandardFontFamily;
- }
-
- /**
- * Set the fixed font family name.
- * @param font A font family name.
- */
- public synchronized void setFixedFontFamily(String font) {
- if (font != null && !font.equals(mFixedFontFamily)) {
- mFixedFontFamily = font;
- postSync();
- }
- }
-
- /**
- * Get the fixed font family name.
- * @return The fixed font family name as a string.
- */
- public synchronized String getFixedFontFamily() {
- return mFixedFontFamily;
- }
-
- /**
- * Set the sans-serif font family name.
- * @param font A font family name.
- */
- public synchronized void setSansSerifFontFamily(String font) {
- if (font != null && !font.equals(mSansSerifFontFamily)) {
- mSansSerifFontFamily = font;
- postSync();
- }
- }
-
- /**
- * Get the sans-serif font family name.
- * @return The sans-serif font family name as a string.
- */
- public synchronized String getSansSerifFontFamily() {
- return mSansSerifFontFamily;
- }
-
- /**
- * Set the serif font family name.
- * @param font A font family name.
- */
- public synchronized void setSerifFontFamily(String font) {
- if (font != null && !font.equals(mSerifFontFamily)) {
- mSerifFontFamily = font;
- postSync();
- }
- }
-
- /**
- * Get the serif font family name.
- * @return The serif font family name as a string.
- */
- public synchronized String getSerifFontFamily() {
- return mSerifFontFamily;
- }
-
- /**
- * Set the cursive font family name.
- * @param font A font family name.
- */
- public synchronized void setCursiveFontFamily(String font) {
- if (font != null && !font.equals(mCursiveFontFamily)) {
- mCursiveFontFamily = font;
- postSync();
- }
- }
-
- /**
- * Get the cursive font family name.
- * @return The cursive font family name as a string.
- */
- public synchronized String getCursiveFontFamily() {
- return mCursiveFontFamily;
- }
-
- /**
- * Set the fantasy font family name.
- * @param font A font family name.
- */
- public synchronized void setFantasyFontFamily(String font) {
- if (font != null && !font.equals(mFantasyFontFamily)) {
- mFantasyFontFamily = font;
- postSync();
- }
- }
-
- /**
- * Get the fantasy font family name.
- * @return The fantasy font family name as a string.
- */
- public synchronized String getFantasyFontFamily() {
- 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 synchronized void setMinimumFontSize(int size) {
- size = pin(size);
- if (mMinimumFontSize != size) {
- mMinimumFontSize = size;
- postSync();
- }
- }
-
- /**
- * Get the minimum font size.
- * @return A non-negative integer between 1 and 72.
- */
- public synchronized int getMinimumFontSize() {
- 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 synchronized void setMinimumLogicalFontSize(int size) {
- size = pin(size);
- if (mMinimumLogicalFontSize != size) {
- mMinimumLogicalFontSize = size;
- postSync();
- }
- }
-
- /**
- * Get the minimum logical font size.
- * @return A non-negative integer between 1 and 72.
- */
- public synchronized int getMinimumLogicalFontSize() {
- 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 synchronized void setDefaultFontSize(int size) {
- size = pin(size);
- if (mDefaultFontSize != size) {
- mDefaultFontSize = size;
- postSync();
- }
- }
-
- /**
- * Get the default font size.
- * @return A non-negative integer between 1 and 72.
- */
- public synchronized int getDefaultFontSize() {
- 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 synchronized void setDefaultFixedFontSize(int size) {
- size = pin(size);
- if (mDefaultFixedFontSize != size) {
- mDefaultFixedFontSize = size;
- postSync();
- }
- }
-
- /**
- * Get the default fixed font size.
- * @return A non-negative integer between 1 and 72.
- */
- public synchronized int getDefaultFixedFontSize() {
- return mDefaultFixedFontSize;
- }
-
- /**
- * Tell the WebView to load image resources automatically.
- * @param flag True if the WebView should load images automatically.
- */
- public synchronized void setLoadsImagesAutomatically(boolean flag) {
- if (mLoadsImagesAutomatically != flag) {
- mLoadsImagesAutomatically = flag;
- postSync();
- }
- }
-
- /**
- * Return true if the WebView will load image resources automatically.
- * @return True if the WebView loads images automatically.
- */
- public synchronized boolean getLoadsImagesAutomatically() {
- return mLoadsImagesAutomatically;
- }
-
- /**
- * Tell the WebView to block network image. This is only checked when
- * getLoadsImagesAutomatically() is true.
- * @param flag True if the WebView should block network image
- */
- public synchronized void setBlockNetworkImage(boolean flag) {
- if (mBlockNetworkImage != flag) {
- mBlockNetworkImage = flag;
- postSync();
- }
- }
-
- /**
- * Return true if the WebView will block network image.
- * @return True if the WebView blocks network image.
- */
- public synchronized boolean getBlockNetworkImage() {
- return mBlockNetworkImage;
- }
-
- /**
- * @hide
- * Tell the WebView to block all network load requests.
- * @param flag True if the WebView should block all network loads
- */
- public synchronized void setBlockNetworkLoads(boolean flag) {
- if (mBlockNetworkLoads != flag) {
- mBlockNetworkLoads = flag;
- verifyNetworkAccess();
- }
- }
-
- /**
- * @hide
- * Return true if the WebView will block all network loads.
- * @return True if the WebView blocks all network loads.
- */
- public synchronized boolean getBlockNetworkLoads() {
- return mBlockNetworkLoads;
- }
-
-
- private void verifyNetworkAccess() {
- if (!mBlockNetworkLoads) {
- if (mContext.checkPermission("android.permission.INTERNET",
- android.os.Process.myPid(), 0) !=
- PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException
- ("Permission denied - " +
- "application missing INTERNET permission");
- }
- }
- }
-
- /**
- * Tell the WebView to enable javascript execution.
- * @param flag True if the WebView should execute javascript.
- */
- public synchronized void setJavaScriptEnabled(boolean flag) {
- if (mJavaScriptEnabled != flag) {
- mJavaScriptEnabled = flag;
- postSync();
- }
- }
-
- /**
- * Tell the WebView to enable plugins.
- * @param flag True if the WebView should load plugins.
- */
- public synchronized void setPluginsEnabled(boolean flag) {
- if (mPluginsEnabled != flag) {
- mPluginsEnabled = flag;
- postSync();
- }
- }
-
- /**
- * Set a custom path to plugins used by the WebView. The client
- * must ensure it exists before this call.
- * @param pluginsPath String path to the directory containing plugins.
- */
- public synchronized void setPluginsPath(String pluginsPath) {
- if (pluginsPath != null && !pluginsPath.equals(mPluginsPath)) {
- mPluginsPath = pluginsPath;
- postSync();
- }
- }
-
- /**
- * Return true if javascript is enabled.
- * @return True if javascript is enabled.
- */
- public synchronized boolean getJavaScriptEnabled() {
- return mJavaScriptEnabled;
- }
-
- /**
- * Return true if plugins are enabled.
- * @return True if plugins are enabled.
- */
- public synchronized boolean getPluginsEnabled() {
- return mPluginsEnabled;
- }
-
- /**
- * Return the current path used for plugins in the WebView.
- * @return The string path to the WebView plugins.
- */
- public synchronized String getPluginsPath() {
- return mPluginsPath;
- }
-
- /**
- * Tell javascript to open windows automatically. This applies to the
- * javascript function window.open().
- * @param flag True if javascript can open windows automatically.
- */
- public synchronized void setJavaScriptCanOpenWindowsAutomatically(
- boolean flag) {
- if (mJavaScriptCanOpenWindowsAutomatically != flag) {
- mJavaScriptCanOpenWindowsAutomatically = flag;
- postSync();
- }
- }
-
- /**
- * Return true if javascript can open windows automatically.
- * @return True if javascript can open windows automatically during
- * window.open().
- */
- public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() {
- return mJavaScriptCanOpenWindowsAutomatically;
- }
-
- /**
- * Set the default text encoding name to use when decoding html pages.
- * @param encoding The text encoding name.
- */
- public synchronized void setDefaultTextEncodingName(String encoding) {
- if (encoding != null && !encoding.equals(mDefaultTextEncoding)) {
- mDefaultTextEncoding = encoding;
- postSync();
- }
- }
-
- /**
- * Get the default text encoding name.
- * @return The default text encoding name as a string.
- */
- public synchronized String getDefaultTextEncodingName() {
- return mDefaultTextEncoding;
- }
-
- /**
- * 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 synchronized void setUserAgentString(String ua) {
- if (ua == null || ua.length() == 0) {
- synchronized(sLockForLocaleSettings) {
- Locale currentLocale = Locale.getDefault();
- if (!sLocale.equals(currentLocale)) {
- sLocale = currentLocale;
- mAcceptLanguage = getCurrentAcceptLanguage();
- }
- }
- ua = getCurrentUserAgent();
- mUseDefaultUserAgent = true;
- } else {
- mUseDefaultUserAgent = false;
- }
-
- if (!ua.equals(mUserAgent)) {
- mUserAgent = ua;
- postSync();
- }
- }
-
- /**
- * Return the WebView's user-agent string.
- */
- public synchronized String getUserAgentString() {
- if (DESKTOP_USERAGENT.equals(mUserAgent) ||
- IPHONE_USERAGENT.equals(mUserAgent) ||
- !mUseDefaultUserAgent) {
- return mUserAgent;
- }
-
- boolean doPostSync = false;
- synchronized(sLockForLocaleSettings) {
- Locale currentLocale = Locale.getDefault();
- if (!sLocale.equals(currentLocale)) {
- sLocale = currentLocale;
- mUserAgent = getCurrentUserAgent();
- mAcceptLanguage = getCurrentAcceptLanguage();
- doPostSync = true;
- }
- }
- if (doPostSync) {
- postSync();
- }
- return mUserAgent;
- }
-
- /* package api to grab the Accept Language string. */
- /*package*/ synchronized String getAcceptLanguage() {
- synchronized(sLockForLocaleSettings) {
- Locale currentLocale = Locale.getDefault();
- if (!sLocale.equals(currentLocale)) {
- sLocale = currentLocale;
- mAcceptLanguage = getCurrentAcceptLanguage();
- }
- }
- return mAcceptLanguage;
- }
-
- /**
- * Tell the WebView whether it needs to set a node to have focus when
- * {@link WebView#requestFocus(int, android.graphics.Rect)} is called.
- *
- * @param flag
- */
- public void setNeedInitialFocus(boolean flag) {
- if (mNeedInitialFocus != flag) {
- mNeedInitialFocus = flag;
- }
- }
-
- /* Package api to get the choice whether it needs to set initial focus. */
- /* package */ boolean getNeedInitialFocus() {
- return mNeedInitialFocus;
- }
-
- /**
- * Set the priority of the Render thread. Unlike the other settings, this
- * one only needs to be called once per process.
- *
- * @param priority RenderPriority, can be normal, high or low.
- */
- public synchronized void setRenderPriority(RenderPriority priority) {
- if (mRenderPriority != priority) {
- mRenderPriority = priority;
- mEventHandler.sendMessage(Message.obtain(null,
- EventHandler.PRIORITY));
- }
- }
-
- /**
- * Override the way the cache is used. The way the cache is used is based
- * on the navigation option. For a normal page load, the cache is checked
- * and content is re-validated as needed. When navigating back, content is
- * not revalidated, instead the content is just pulled from the cache.
- * This function allows the client to override this behavior.
- * @param mode One of the LOAD_ values.
- */
- public void setCacheMode(int mode) {
- if (mode != mOverrideCacheMode) {
- mOverrideCacheMode = mode;
- }
- }
-
- /**
- * Return the current setting for overriding the cache mode. For a full
- * description, see the {@link #setCacheMode(int)} function.
- */
- public int getCacheMode() {
- return mOverrideCacheMode;
- }
-
- /**
- * If set, webkit alternately shrinks and expands images viewed outside
- * of an HTML page to fit the screen. This conflicts with attempts by
- * the UI to zoom in and out of an image, so it is set false by default.
- * @param shrink Set true to let webkit shrink the standalone image to fit.
- * {@hide}
- */
- public void setShrinksStandaloneImagesToFit(boolean shrink) {
- if (mShrinksStandaloneImagesToFit != shrink) {
- mShrinksStandaloneImagesToFit = shrink;
- postSync();
- }
- }
-
- /**
- * Transfer messages from the queue to the new WebCoreThread. Called from
- * WebCore thread.
- */
- /*package*/
- synchronized void syncSettingsAndCreateHandler(BrowserFrame frame) {
- mBrowserFrame = frame;
- if (android.util.Config.DEBUG) {
- junit.framework.Assert.assertTrue(frame.mNativeFrame != 0);
- }
- nativeSync(frame.mNativeFrame);
- mSyncPending = false;
- mEventHandler.createHandler();
- }
-
- private int pin(int size) {
- // FIXME: 72 is just an arbitrary max text size value.
- if (size < 1) {
- return 1;
- } else if (size > 72) {
- return 72;
- }
- return size;
- }
-
- /* Post a SYNC message to handle syncing the native settings. */
- private synchronized void postSync() {
- // Only post if a sync is not pending
- if (!mSyncPending) {
- mSyncPending = mEventHandler.sendMessage(
- Message.obtain(null, EventHandler.SYNC));
- }
- }
-
- // Synchronize the native and java settings.
- private native void nativeSync(int nativeFrame);
-}