WebSettings.java revision 8f5e405f60e3816f61549783782d9bf0d9d4d199
154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/* 254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * you may not use this file except in compliance with the License. 654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * You may obtain a copy of the License at 754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * See the License for the specific language governing permissions and 1454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * limitations under the License. 1554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 1654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpackage android.webkit; 1854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Context; 20f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Klobaimport android.content.SharedPreferences; 21972acd0c339db4b6a72c307ae0a0b2b5405376dbAndrei Popescuimport android.content.pm.PackageManager; 2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Build; 2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Handler; 2454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Message; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.provider.Checkin; 26f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport java.lang.SecurityException; 2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.util.Locale; 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/** 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Manages settings state for a WebView. When a WebView is first created, it 3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * obtains a set of default settings. These default settings will be returned 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * from any getter call. A WebSettings object obtained from 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebView.getSettings() is tied to the life of the WebView. If a WebView has 3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * been destroyed, any method call on WebSettings will throw an 3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * IllegalStateException. 3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpublic class WebSettings { 3854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enum for controlling the layout of html. 4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NORMAL means no rendering changes. 4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SINGLE_COLUMN moves all content into one column that is the width of the 4254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * view. 4354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NARROW_COLUMNS makes all columns no wider than the screen if possible. 4454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 4554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // XXX: These must match LayoutAlgorithm in Settings.h in WebCore. 4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum LayoutAlgorithm { 4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL, 4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SINGLE_COLUMN, 4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NARROW_COLUMNS 5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enum for specifying the text size. 5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SMALLEST is 50% 5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SMALLER is 75% 5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NORMAL is 100% 5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * LARGER is 150% 5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * LARGEST is 200% 5954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum TextSize { 6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SMALLEST(50), 6254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SMALLER(75), 6354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL(100), 6454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LARGER(150), 6554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LARGEST(200); 6654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project TextSize(int size) { 6754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project value = size; 6854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int value; 7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 710d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 720d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 730d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Enum for specifying the WebView's desired density. 740d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * FAR makes 100% looking like in 240dpi 750d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * MEDIUM makes 100% looking like in 160dpi 760d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * CLOSE makes 100% looking like in 120dpi 770d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @hide Pending API council approval 780d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 790d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public enum ZoomDensity { 800d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba FAR(150), // 240dpi 810d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba MEDIUM(100), // 160dpi 820d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba CLOSE(75); // 120dpi 830d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba ZoomDensity(int size) { 840d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba value = size; 850d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 860d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba int value; 870d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 880d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Default cache usage pattern Use with {@link #setCacheMode}. 9154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_DEFAULT = -1; 9354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Normal cache usage pattern Use with {@link #setCacheMode}. 9654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_NORMAL = 0; 9854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 10054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use cache if content is there, even if expired (eg, history nav) 10154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * If it is not in the cache, load from network. 10254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_CACHE_ELSE_NETWORK = 1; 10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Don't use the cache, load from network 10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_NO_CACHE = 2; 11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 11254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 11354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Don't use the network, load from cache only. 11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 11554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 11654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_CACHE_ONLY = 3; 11754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 11854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum RenderPriority { 11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL, 12054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project HIGH, 12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LOW 12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 12354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1240d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba // WebView associated with this WebSettings. 1250d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba private WebView mWebView; 12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // BrowserFrame used to access the native frame pointer. 12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private BrowserFrame mBrowserFrame; 12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Flag to prevent multiple SYNC messages at one time. 12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSyncPending = false; 13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Custom handler that queues messages until the WebCore thread is active. 13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private final EventHandler mEventHandler; 132adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Private settings so we don't have to go into native code to 13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // retrieve the values. After setXXX, postSync() needs to be called. 135adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // 136adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // The default values need to match those in WebSettings.cpp 137adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // If the defaults change, please also update the JavaDocs so developers 138adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // know what they are. 13954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private LayoutAlgorithm mLayoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS; 140f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private Context mContext; 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private TextSize mTextSize = TextSize.NORMAL; 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mStandardFontFamily = "sans-serif"; 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFixedFontFamily = "monospace"; 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSansSerifFontFamily = "sans-serif"; 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSerifFontFamily = "serif"; 14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mCursiveFontFamily = "cursive"; 14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFantasyFontFamily = "fantasy"; 148c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa private String mDefaultTextEncoding; 149f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mUserAgent; 150f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mUseDefaultUserAgent; 151f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mAcceptLanguage; 15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumFontSize = 8; 15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumLogicalFontSize = 8; 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFontSize = 16; 15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFixedFontSize = 13; 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLoadsImagesAutomatically = true; 15754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mBlockNetworkImage = false; 158c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project private boolean mBlockNetworkLoads; 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptEnabled = false; 16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mPluginsEnabled = false; 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptCanOpenWindowsAutomatically = false; 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseDoubleTree = false; 16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseWideViewport = false; 16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportMultipleWindows = false; 165f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mShrinksStandaloneImagesToFit = false; 166c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu // HTML5 API flags 167c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mAppCacheEnabled = false; 168c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mDatabaseEnabled = false; 169c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mDomStorageEnabled = false; 170c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mWorkersEnabled = false; // only affects V8. 17109b0ca1ceefde02b9ed50dc4dd12774ba569143fSteve Block private boolean mGeolocationEnabled = true; 172c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu // HTML5 configuration parameters 173c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private long mAppCacheMaxSize = Long.MAX_VALUE; 174c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private String mAppCachePath = ""; 175c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private String mDatabasePath = ""; 1769d3273f62288fa54536a3928383588398ca2d029Steve Block private String mGeolocationDatabasePath = ""; 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Don't need to synchronize the get/set methods as they 17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // are basic types, also none of these values are used in 17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // native WebCore code. 1800d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba private ZoomDensity mDefaultZoom = ZoomDensity.MEDIUM; 18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private RenderPriority mRenderPriority = RenderPriority.NORMAL; 18254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mOverrideCacheMode = LOAD_DEFAULT; 18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSaveFormData = true; 18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSavePassword = true; 18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLightTouchEnabled = false; 18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNeedInitialFocus = true; 18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNavDump = false; 18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportZoom = true; 189105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project private boolean mBuiltInZoomControls = false; 190f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mAllowFileAccess = true; 191f8d4964e45f7e671f4b333386b4269b23ced4750Cary Clark private boolean mLoadWithOverviewMode = false; 19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 193f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba // private WebSettings, not accessible by the host activity 19424a3ff958b87550904a71961835f6883d1411c27Grace Kloba static private int mDoubleTapToastCount = 3; 195f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 196f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba private static final String PREF_FILE = "WebViewSettings"; 197f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba private static final String DOUBLE_TAP_TOAST_COUNT = "double_tap_toast_count"; 198f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Class to handle messages before WebCore is ready. 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private class EventHandler { 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for syncing 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int SYNC = 0; 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for setting priority 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int PRIORITY = 1; 205f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba // Message id for writing double-tap toast count 206f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba static final int SET_DOUBLE_TAP_TOAST_COUNT = 2; 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Actual WebCore thread handler 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Handler mHandler; 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void createHandler() { 21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // as mRenderPriority can be set before thread is running, sync up 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // create a new handler 21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler = new Handler() { 21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void handleMessage(Message msg) { 21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project switch (msg.what) { 21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case SYNC: 22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBrowserFrame.mNativeFrame != 0) { 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(mBrowserFrame.mNativeFrame); 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 22754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PRIORITY: { 22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 232f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 233f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba case SET_DOUBLE_TAP_TOAST_COUNT: { 234f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba SharedPreferences.Editor editor = mContext 235f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba .getSharedPreferences(PREF_FILE, 236f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba Context.MODE_PRIVATE).edit(); 237f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba editor.putInt(DOUBLE_TAP_TOAST_COUNT, 238f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba mDoubleTapToastCount); 239f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba editor.commit(); 240f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba break; 241f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project }; 24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void setRenderPriority() { 24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority == RenderPriority.NORMAL) { 25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 25154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_DEFAULT); 25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.HIGH) { 25354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 25454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_FOREGROUND + 25554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE); 25654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.LOW) { 25754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 25854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_BACKGROUND); 25954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 26054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 26154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 26254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 26354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Send a message to the private queue or handler. 26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized boolean sendMessage(Message msg) { 26754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mHandler != null) { 26854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler.sendMessage(msg); 26954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return true; 27054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 27154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return false; 27254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 27454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 27554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 27654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // User agent strings. 27754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String DESKTOP_USERAGENT = 278b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us)" 279b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0" 280b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " Safari/530.17"; 281f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static final String IPHONE_USERAGENT = 282b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us)" 283b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0" 284b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " Mobile/7A341 Safari/528.16"; 285f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Locale sLocale; 286f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Object sLockForLocaleSettings; 287f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 28854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 28954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Package constructor to prevent clients from creating a new settings 29054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * instance. 29154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 2920d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba WebSettings(Context context, WebView webview) { 293f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mEventHandler = new EventHandler(); 294f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mContext = context; 2950d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mWebView = webview; 296c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa mDefaultTextEncoding = context.getString(com.android.internal. 297c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa R.string.default_text_encoding); 298f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 299f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (sLockForLocaleSettings == null) { 300f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLockForLocaleSettings = new Object(); 301f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = Locale.getDefault(); 302f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 303f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 304f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 305f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 306f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 307c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project mBlockNetworkLoads = mContext.checkPermission( 308c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project "android.permission.INTERNET", android.os.Process.myPid(), 309c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project android.os.Process.myUid()) != PackageManager.PERMISSION_GRANTED; 310f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 311f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 312f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 313f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and returns current AcceptLanguage String. 314f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current AcceptLanguage String. 315f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 316f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String getCurrentAcceptLanguage() { 317f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 318f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 319f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 320f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 321f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project StringBuffer buffer = new StringBuffer(); 322f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String language = locale.getLanguage(); 323f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (language != null) { 324f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(language); 325f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = locale.getCountry(); 326f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (country != null) { 327f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 328f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country); 32954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 330f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 331f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!locale.equals(Locale.US)) { 332f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(", "); 333f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project java.util.Locale us = Locale.US; 334f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (us.getLanguage() != null) { 335f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(us.getLanguage()); 336f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = us.getCountry(); 33754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (country != null) { 338f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 339f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country); 34054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 34154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 342f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 343f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 344f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return buffer.toString(); 345f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 346f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 347f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 348f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and mContext and returns current UserAgent String. 349f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current UserAgent String. 350f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 351f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private synchronized String getCurrentUserAgent() { 352f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 353f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 354f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 355f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 356f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project StringBuffer buffer = new StringBuffer(); 357f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Add version 358f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String version = Build.VERSION.RELEASE; 359f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (version.length() > 0) { 360f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(version); 361f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 362f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "1.0" 363f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("1.0"); 364f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 365f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("; "); 366f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String language = locale.getLanguage(); 367f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (language != null) { 368f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(language.toLowerCase()); 369f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = locale.getCountry(); 370f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (country != null) { 371f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 372f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country.toLowerCase()); 37354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 374f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 375f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "en" 376f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("en"); 37754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 378ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba // add the model for the release build 379ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba if ("REL".equals(Build.VERSION.CODENAME)) { 380ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba final String model = Build.MODEL; 381ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba if (model.length() > 0) { 382ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba buffer.append("; "); 383ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba buffer.append(model); 384ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba } 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final String id = Build.ID; 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (id.length() > 0) { 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer.append(" Build/"); 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer.append(id); 390f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 391f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String base = mContext.getResources().getText( 392f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project com.android.internal.R.string.web_user_agent).toString(); 393f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return String.format(base, buffer); 39454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 395f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 39654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 39754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables dumping the pages navigation cache to a text file. 39854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 39954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNavDump(boolean enabled) { 40054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNavDump = enabled; 40154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 40254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 40354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 40454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if dumping the navigation cache is enabled. 40554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 40654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getNavDump() { 40754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNavDump; 40854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 40954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 41054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 41154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set whether the WebView supports zoom 41254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 41354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSupportZoom(boolean support) { 41454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportZoom = support; 41554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 41654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 41754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 41854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns whether the WebView supports zoom 41954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 42054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean supportZoom() { 42154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportZoom; 42254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 42354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 42454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 425105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project * Sets whether the zoom mechanism built into WebView is used. 426105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project */ 427105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project public void setBuiltInZoomControls(boolean enabled) { 428105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project mBuiltInZoomControls = enabled; 429105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project } 430105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 431105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project /** 432105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project * Returns true if the zoom mechanism built into WebView is being used. 433105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project */ 434105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project public boolean getBuiltInZoomControls() { 435105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project return mBuiltInZoomControls; 436105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project } 437105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 438105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project /** 439f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Enable or disable file access within WebView. File access is enabled by 440f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * default. 441f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 442f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setAllowFileAccess(boolean allow) { 443f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAllowFileAccess = allow; 444f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 445f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 446f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 447f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Returns true if this WebView supports file access. 448f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 449f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public boolean getAllowFileAccess() { 450f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAllowFileAccess; 451f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 452f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 453f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 454e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba * Set whether the WebView loads a page with overview mode. 455e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba * @hide Pending API council approval 456e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba */ 457e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba public void setLoadWithOverviewMode(boolean overview) { 458e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba mLoadWithOverviewMode = overview; 459e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba } 460e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba 461e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba /** 462e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba * Returns true if this WebView loads page with overview mode 463e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba * @hide Pending API council approval 464e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba */ 465e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba public boolean getLoadWithOverviewMode() { 466e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba return mLoadWithOverviewMode; 467e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba } 468e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba 469e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba /** 47054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving form data. 47154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 47254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSaveFormData(boolean save) { 47354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSaveFormData = save; 47454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 47554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 47654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 47754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving form data. 47854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 47954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSaveFormData() { 48054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSaveFormData; 48154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 48454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving password. 48554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 48654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSavePassword(boolean save) { 48754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSavePassword = save; 48854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 49054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 49154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving password. 49254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 49354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSavePassword() { 49454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSavePassword; 49554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 49654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 49754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 49854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the text size of the page. 49954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param t A TextSize value for increasing or decreasing the text. 50054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 50154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 50254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setTextSize(TextSize t) { 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (WebView.mLogEvent && mTextSize != t ) { 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Checkin.updateStats(mContext.getContentResolver(), 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Checkin.Stats.Tag.BROWSER_TEXT_SIZE_CHANGE, 1, 0.0); 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 50754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mTextSize = t; 50854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 50954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 51054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 51254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the text size of the page. 51354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A TextSize enum value describing the text size. 51454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 51554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 51654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized TextSize getTextSize() { 51754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mTextSize; 51854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 51954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 52054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 5210d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Set the default zoom density of the page. This should be called from UI 5220d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * thread. 5230d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @param zoom A ZoomDensity value 5240d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @see WebSettings.ZoomDensity 5250d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @hide Pending API council approval 5260d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 5270d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public void setDefaultZoom(ZoomDensity zoom) { 5280d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba if (mDefaultZoom != zoom) { 5290d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mDefaultZoom = zoom; 5300d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mWebView.updateDefaultZoomDensity(zoom.value); 5310d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 5320d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 5330d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 5340d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 5350d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Get the default zoom density of the page. This should be called from UI 5360d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * thread. 5370d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @return A ZoomDensity value 5380d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @see WebSettings.ZoomDensity 5390d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @hide Pending API council approval 5400d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 5410d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public ZoomDensity getDefaultZoom() { 5420d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba return mDefaultZoom; 5430d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 5440d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 5450d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 54654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables using light touches to make a selection and activate mouseovers. 54754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 54854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setLightTouchEnabled(boolean enabled) { 54954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLightTouchEnabled = enabled; 55054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 55354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if light touches are enabled. 55454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 55554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getLightTouchEnabled() { 55654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLightTouchEnabled; 55754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 560adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 561adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 563adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseDoubleTree(boolean use) { 565adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return; 56654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 56754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 569adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 570adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 572adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseDoubleTree() { 574adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return false; 57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 57654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 57854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView about user-agent string. 57954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param ua 0 if the WebView should use an Android user-agent string, 58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView should use a desktop user-agent string. 581f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 582f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use setUserAgentString instead. 58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 584f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 58554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUserAgent(int ua) { 586f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String uaString = null; 587f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == 1) { 588f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 589f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 590f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 591f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = DESKTOP_USERAGENT; 592f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 593f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua == 2) { 594f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (IPHONE_USERAGENT.equals(mUserAgent)) { 595f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 596f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 597f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = IPHONE_USERAGENT; 598f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 599f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua != 0) { 600f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 602f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project setUserAgentString(uaString); 60354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 60454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 60554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 60654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return user-agent as int 60754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return int 0 if the WebView is using an Android user-agent string. 60854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView is using a desktop user-agent string. 609f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * -1 if the WebView is using user defined user-agent string. 610f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 611f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use getUserAgentString instead. 61254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 613f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 61454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getUserAgent() { 61554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 61654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 61754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (IPHONE_USERAGENT.equals(mUserAgent)) { 61854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 2; 619f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (mUseDefaultUserAgent) { 620f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return 0; 62154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 622f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return -1; 62354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 62454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to use the wide viewport 62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseWideViewPort(boolean use) { 62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mUseWideViewport != use) { 63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mUseWideViewport = use; 63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 63654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is using a wide viewport 63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseWideViewPort() { 63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUseWideViewport; 64054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 64154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 64354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it supports multiple windows. TRUE means 64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 64554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSupportMultipleWindows(boolean support) { 64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mSupportMultipleWindows != support) { 64954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportMultipleWindows = support; 65054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 65454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is supporting multiple windows. This means 65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 65754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean supportMultipleWindows() { 66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportMultipleWindows; 66154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 66254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 66454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the underlying layout algorithm. This will cause a relayout of the 66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebView. 66654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param l A LayoutAlgorithm enum specifying the algorithm to use. 66754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 66854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 66954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) { 67054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // XXX: This will only be affective if libwebcore was built with 67154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // ANDROID_LAYOUT defined. 67254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLayoutAlgorithm != l) { 67354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLayoutAlgorithm = l; 67454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 67554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 67854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 679adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return the current layout algorithm. The default is NARROW_COLUMNS. 68054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return LayoutAlgorithm enum value describing the layout algorithm 68154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * being used. 68254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 68354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 68454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized LayoutAlgorithm getLayoutAlgorithm() { 68554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLayoutAlgorithm; 68654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 68754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 68854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 68954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the standard font family name. 69054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 69154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 69254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setStandardFontFamily(String font) { 69354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mStandardFontFamily)) { 69454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mStandardFontFamily = font; 69554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 69654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 69954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 700adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the standard font family name. The default is "sans-serif". 70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The standard font family name as a string. 70254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 70354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getStandardFontFamily() { 70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mStandardFontFamily; 70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fixed font family name. 70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFixedFontFamily(String font) { 71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFixedFontFamily)) { 71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFixedFontFamily = font; 71454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 71554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 719adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fixed font family name. The default is "monospace". 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fixed font family name as a string. 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFixedFontFamily() { 72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFixedFontFamily; 72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the sans-serif font family name. 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSansSerifFontFamily(String font) { 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSansSerifFontFamily)) { 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSansSerifFontFamily = font; 73354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the sans-serif font family name. 73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The sans-serif font family name as a string. 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSansSerifFontFamily() { 74254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSansSerifFontFamily; 74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 746adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Set the serif font family name. The default is "sans-serif". 74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSerifFontFamily(String font) { 75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSerifFontFamily)) { 75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSerifFontFamily = font; 75254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 757adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the serif font family name. The default is "serif". 75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The serif font family name as a string. 75954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSerifFontFamily() { 76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSerifFontFamily; 76254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the cursive font family name. 76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setCursiveFontFamily(String font) { 76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mCursiveFontFamily)) { 77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mCursiveFontFamily = font; 77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 776adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the cursive font family name. The default is "cursive". 77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The cursive font family name as a string. 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getCursiveFontFamily() { 78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mCursiveFontFamily; 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fantasy font family name. 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFantasyFontFamily(String font) { 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFantasyFontFamily)) { 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFantasyFontFamily = font; 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 795adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fantasy font family name. The default is "fantasy". 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fantasy font family name as a string. 79754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFantasyFontFamily() { 79954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFantasyFontFamily; 80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 80354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum font size. 80454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 80554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 80654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 80754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumFontSize(int size) { 80854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 80954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumFontSize != size) { 81054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumFontSize = size; 81154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 81254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 816adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum font size. The default is 8. 81754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 81854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 81954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumFontSize() { 82054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumFontSize; 82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum logical font size. 82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 82754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumLogicalFontSize(int size) { 82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumLogicalFontSize != size) { 83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumLogicalFontSize = size; 83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 83554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 837adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum logical font size. The default is 8. 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumLogicalFontSize() { 84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumLogicalFontSize; 84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default font size. 84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFontSize(int size) { 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFontSize != size) { 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFontSize = size; 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 858adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default font size. The default is 16. 85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFontSize() { 86254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFontSize; 86354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 86454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default fixed font size. 86754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 86854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 86954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 87054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFixedFontSize(int size) { 87154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 87254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFixedFontSize != size) { 87354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFixedFontSize = size; 87454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 87554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 87854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 879adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default fixed font size. The default is 16. 88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 88154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFixedFontSize() { 88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFixedFontSize; 88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to load image resources automatically. 88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load images automatically. 88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLoadsImagesAutomatically(boolean flag) { 89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLoadsImagesAutomatically != flag) { 89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLoadsImagesAutomatically = flag; 89354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 89454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 89754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 89854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if the WebView will load image resources automatically. 899adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * The default is true. 90054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView loads images automatically. 90154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 90254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getLoadsImagesAutomatically() { 90354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLoadsImagesAutomatically; 90454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to block network image. This is only checked when 90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * getLoadsImagesAutomatically() is true. 90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should block network image 91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 91154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setBlockNetworkImage(boolean flag) { 91254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBlockNetworkImage != flag) { 91354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBlockNetworkImage = flag; 91454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 91554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 91854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 919adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if the WebView will block network image. The default is false. 92054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView blocks network image. 92154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 92254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getBlockNetworkImage() { 92354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mBlockNetworkImage; 92454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 925adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 926f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 927f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @hide 928adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Tell the WebView to block all network load requests. 929f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @param flag True if the WebView should block all network loads 930f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 931f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setBlockNetworkLoads(boolean flag) { 932f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mBlockNetworkLoads != flag) { 933f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mBlockNetworkLoads = flag; 934f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project verifyNetworkAccess(); 935f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 936f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 937f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 938f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 939f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @hide 940f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Return true if the WebView will block all network loads. 941adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * The default is false. 942f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return True if the WebView blocks all network loads. 943f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 944f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized boolean getBlockNetworkLoads() { 945f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mBlockNetworkLoads; 946f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 947adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 948adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 949f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void verifyNetworkAccess() { 950f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!mBlockNetworkLoads) { 951f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mContext.checkPermission("android.permission.INTERNET", 952c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project android.os.Process.myPid(), android.os.Process.myUid()) != 953f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project PackageManager.PERMISSION_GRANTED) { 954f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new SecurityException 955f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ("Permission denied - " + 956f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "application missing INTERNET permission"); 957f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 958f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 959f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 96054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 96154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 96254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable javascript execution. 96354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should execute javascript. 96454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 96554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptEnabled(boolean flag) { 96654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptEnabled != flag) { 96754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptEnabled = flag; 96854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 96954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 97054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 97154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 97254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 97354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable plugins. 97454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load plugins. 97554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 97654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsEnabled(boolean flag) { 97754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mPluginsEnabled != flag) { 97854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mPluginsEnabled = flag; 97954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 98054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 98154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 98254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 98354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 984658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba * TODO: need to add @Deprecated 98554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 98654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsPath(String pluginsPath) { 98754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 98854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 98954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9907df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Set the path to where database storage API databases should be saved. 9917df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * This will update WebCore when the Sync runs in the C++ side. 9927df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @param databasePath String path to the directory where databases should 9937df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * be saved. May be the empty string but should never be null. 9947df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 9957df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized void setDatabasePath(String databasePath) { 9967df1985e86635af006be3dfa65987d60e290b5deBen Murdoch if (databasePath != null && !databasePath.equals(mDatabasePath)) { 9977df1985e86635af006be3dfa65987d60e290b5deBen Murdoch mDatabasePath = databasePath; 9987df1985e86635af006be3dfa65987d60e290b5deBen Murdoch postSync(); 9997df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10007df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10017df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 10027df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 10039d3273f62288fa54536a3928383588398ca2d029Steve Block * Set the path where the Geolocation permissions database should be saved. 10049d3273f62288fa54536a3928383588398ca2d029Steve Block * This will update WebCore when the Sync runs in the C++ side. 10059d3273f62288fa54536a3928383588398ca2d029Steve Block * @param databasePath String path to the directory where the Geolocation 10069d3273f62288fa54536a3928383588398ca2d029Steve Block * permissions database should be saved. May be the empty string but 10079d3273f62288fa54536a3928383588398ca2d029Steve Block * should never be null. 10089d3273f62288fa54536a3928383588398ca2d029Steve Block */ 10099d3273f62288fa54536a3928383588398ca2d029Steve Block public synchronized void setGeolocationDatabasePath(String databasePath) { 10108f5e405f60e3816f61549783782d9bf0d9d4d199Grace Kloba if (databasePath != null 10118f5e405f60e3816f61549783782d9bf0d9d4d199Grace Kloba && !databasePath.equals(mGeolocationDatabasePath)) { 10129d3273f62288fa54536a3928383588398ca2d029Steve Block mGeolocationDatabasePath = databasePath; 10139d3273f62288fa54536a3928383588398ca2d029Steve Block postSync(); 10149d3273f62288fa54536a3928383588398ca2d029Steve Block } 10159d3273f62288fa54536a3928383588398ca2d029Steve Block } 10169d3273f62288fa54536a3928383588398ca2d029Steve Block 10179d3273f62288fa54536a3928383588398ca2d029Steve Block /** 101860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Tell the WebView to enable Application Caches API. 101960a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @param flag True if the WebView should enable Application Caches. 102060a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @hide pending api council approval 102160a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu */ 102260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu public synchronized void setAppCacheEnabled(boolean flag) { 102360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu if (mAppCacheEnabled != flag) { 102460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu mAppCacheEnabled = flag; 102560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu postSync(); 102660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 102760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 102860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu 102960a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu /** 103060a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Set a custom path to the Application Caches files. The client 103160a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * must ensure it exists before this call. 103260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @param appCachePath String path to the directory containing Application 103360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Caches files. The appCache path can be the empty string but should not 103460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * be null. Passing null for this parameter will result in a no-op. 103560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @hide pending api council approval 103660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu */ 103760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu public synchronized void setAppCachePath(String appCachePath) { 103860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu if (appCachePath != null && !appCachePath.equals(mAppCachePath)) { 103960a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu mAppCachePath = appCachePath; 104060a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu postSync(); 104160a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 104260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 104360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu 104460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu /** 10451c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu * Set the maximum size for the Application Caches content. 10461c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu * @param appCacheMaxSize the maximum size in bytes. 10471c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu * 10481c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu * @hide pending api council approval 10491c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu */ 10501c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu public synchronized void setAppCacheMaxSize(long appCacheMaxSize) { 10511c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu if (appCacheMaxSize != mAppCacheMaxSize) { 10521c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu mAppCacheMaxSize = appCacheMaxSize; 10531c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu postSync(); 10541c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu } 10551c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu } 10561c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu 10571c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu /** 10587df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Set whether the database storage API is enabled. 10597df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @param flag boolean True if the WebView should use the database storage 10607df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * API. 10617df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 10627df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized void setDatabaseEnabled(boolean flag) { 10637df1985e86635af006be3dfa65987d60e290b5deBen Murdoch if (mDatabaseEnabled != flag) { 10647df1985e86635af006be3dfa65987d60e290b5deBen Murdoch mDatabaseEnabled = flag; 10657df1985e86635af006be3dfa65987d60e290b5deBen Murdoch postSync(); 10667df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10677df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10687df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 10697df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 1070274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * Set whether the DOM storage API is enabled. 1071274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @param flag boolean True if the WebView should use the DOM storage 1072274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * API. 1073274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @hide pending API council. 1074274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch */ 1075274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch public synchronized void setDomStorageEnabled(boolean flag) { 1076274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch if (mDomStorageEnabled != flag) { 1077274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch mDomStorageEnabled = flag; 1078274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch postSync(); 1079274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1080274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1081274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch 1082274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch /** 1083274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * Returns true if the DOM Storage API's are enabled. 1084274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @return True if the DOM Storage API's are enabled. 1085274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @hide pending API council. 1086274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch */ 1087274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch public synchronized boolean getDomStorageEnabled() { 1088274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch return mDomStorageEnabled; 1089274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1090274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch 1091274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch /** 10927df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Return the path to where database storage API databases are saved for 10937df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * the current WebView. 10947df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @return the String path to the database storage API databases. 10957df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 10967df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized String getDatabasePath() { 10977df1985e86635af006be3dfa65987d60e290b5deBen Murdoch return mDatabasePath; 10987df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10997df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 11007df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 11017df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Returns true if database storage API is enabled. 11027df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @return True if the database storage API is enabled. 11037df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 11047df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized boolean getDatabaseEnabled() { 11057df1985e86635af006be3dfa65987d60e290b5deBen Murdoch return mDatabaseEnabled; 11067df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 11077df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 11087df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 1109c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * Tell the WebView to enable WebWorkers API. 1110c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * @param flag True if the WebView should enable WebWorkers. 1111c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * Note that this flag only affects V8. JSC does not have 1112c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * an equivalent setting. 1113c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * @hide pending api council approval 1114c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu */ 1115c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu public synchronized void setWorkersEnabled(boolean flag) { 1116c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu if (mWorkersEnabled != flag) { 1117c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu mWorkersEnabled = flag; 1118c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu postSync(); 1119c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu } 1120c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu } 1121c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu 1122c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu /** 112306cd751b052e65c359b16cce0570b6fab305eb89Steve Block * Sets whether Geolocation is enabled. 112406cd751b052e65c359b16cce0570b6fab305eb89Steve Block * @param flag Whether Geolocation should be enabled. 112506cd751b052e65c359b16cce0570b6fab305eb89Steve Block */ 112606cd751b052e65c359b16cce0570b6fab305eb89Steve Block public synchronized void setGeolocationEnabled(boolean flag) { 112706cd751b052e65c359b16cce0570b6fab305eb89Steve Block if (mGeolocationEnabled != flag) { 112806cd751b052e65c359b16cce0570b6fab305eb89Steve Block mGeolocationEnabled = flag; 112906cd751b052e65c359b16cce0570b6fab305eb89Steve Block postSync(); 113006cd751b052e65c359b16cce0570b6fab305eb89Steve Block } 113106cd751b052e65c359b16cce0570b6fab305eb89Steve Block } 113206cd751b052e65c359b16cce0570b6fab305eb89Steve Block 113306cd751b052e65c359b16cce0570b6fab305eb89Steve Block /** 1134adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript is enabled. <b>Note: The default is false.</b> 113554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript is enabled. 113654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 113754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptEnabled() { 113854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptEnabled; 113954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 114054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 114154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 114254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if plugins are enabled. 114354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if plugins are enabled. 114454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 114554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getPluginsEnabled() { 114654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mPluginsEnabled; 114754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 114854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 114954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1150658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba * TODO: need to add @Deprecated 115154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 115254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getPluginsPath() { 1153658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba return ""; 115454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 115554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 115654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 115754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell javascript to open windows automatically. This applies to the 115854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * javascript function window.open(). 115954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if javascript can open windows automatically. 116054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 116154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptCanOpenWindowsAutomatically( 116254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project boolean flag) { 116354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptCanOpenWindowsAutomatically != flag) { 116454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptCanOpenWindowsAutomatically = flag; 116554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 116654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 116754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 116854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 116954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1170adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript can open windows automatically. The default 1171adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * is false. 117254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript can open windows automatically during 117354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * window.open(). 117454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 117554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() { 117654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptCanOpenWindowsAutomatically; 117754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 117854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 117954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 118054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default text encoding name to use when decoding html pages. 118154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param encoding The text encoding name. 118254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 118354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultTextEncodingName(String encoding) { 118454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (encoding != null && !encoding.equals(mDefaultTextEncoding)) { 118554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultTextEncoding = encoding; 118654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 118754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 118854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 118954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 119054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1191adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default text encoding name. The default is "Latin-1". 119254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The default text encoding name as a string. 119354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 119454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getDefaultTextEncodingName() { 119554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultTextEncoding; 119654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 119754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1198f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1199f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Set the WebView's user-agent string. If the string "ua" is null or empty, 1200f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * it will use the system default user-agent string. 1201f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1202f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setUserAgentString(String ua) { 1203f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == null || ua.length() == 0) { 1204f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1205f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1206f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1207f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1208f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1209f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1210f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1211f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ua = getCurrentUserAgent(); 1212f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 1213f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 1214f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = false; 1215f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1216f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1217f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!ua.equals(mUserAgent)) { 1218f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = ua; 1219f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1220f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1221f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1222f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1223f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1224f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Return the WebView's user-agent string. 1225f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1226f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized String getUserAgentString() { 1227f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent) || 1228f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project IPHONE_USERAGENT.equals(mUserAgent) || 1229f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project !mUseDefaultUserAgent) { 1230f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mUserAgent; 1231f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1232f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1233f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project boolean doPostSync = false; 1234f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1235f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1236f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1237f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1238f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 1239f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1240f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project doPostSync = true; 1241f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1242f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1243f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (doPostSync) { 1244f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1245f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 124654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUserAgent; 124754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 124854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1249f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /* package api to grab the Accept Language string. */ 1250f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /*package*/ synchronized String getAcceptLanguage() { 1251f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1252f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1253f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1254f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1255f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1256f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1257f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1258f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAcceptLanguage; 1259f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1260f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 126154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 126254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it needs to set a node to have focus when 126354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link WebView#requestFocus(int, android.graphics.Rect)} is called. 126454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 126554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag 126654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 126754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNeedInitialFocus(boolean flag) { 126854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mNeedInitialFocus != flag) { 126954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNeedInitialFocus = flag; 127054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 127154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 127254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 127354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Package api to get the choice whether it needs to set initial focus. */ 127454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* package */ boolean getNeedInitialFocus() { 127554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNeedInitialFocus; 127654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 127754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 127854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 127954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the priority of the Render thread. Unlike the other settings, this 1280adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * one only needs to be called once per process. The default is NORMAL. 1281adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * 128254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param priority RenderPriority, can be normal, high or low. 128354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 128454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setRenderPriority(RenderPriority priority) { 128554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority != priority) { 128654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mRenderPriority = priority; 128754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.sendMessage(Message.obtain(null, 128854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project EventHandler.PRIORITY)); 128954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 129054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 129154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 129254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 129354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Override the way the cache is used. The way the cache is used is based 129454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * on the navigation option. For a normal page load, the cache is checked 129554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * and content is re-validated as needed. When navigating back, content is 129654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * not revalidated, instead the content is just pulled from the cache. 129754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This function allows the client to override this behavior. 129854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param mode One of the LOAD_ values. 129954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 130054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setCacheMode(int mode) { 130154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mode != mOverrideCacheMode) { 130254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mOverrideCacheMode = mode; 130354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 130454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 130554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 130654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 130754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return the current setting for overriding the cache mode. For a full 130854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * description, see the {@link #setCacheMode(int)} function. 130954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 131054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public int getCacheMode() { 131154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mOverrideCacheMode; 131254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1313f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1314f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1315f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * If set, webkit alternately shrinks and expands images viewed outside 1316f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * of an HTML page to fit the screen. This conflicts with attempts by 1317f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * the UI to zoom in and out of an image, so it is set false by default. 1318f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @param shrink Set true to let webkit shrink the standalone image to fit. 1319f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * {@hide} 1320f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1321f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setShrinksStandaloneImagesToFit(boolean shrink) { 1322f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mShrinksStandaloneImagesToFit != shrink) { 1323f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mShrinksStandaloneImagesToFit = shrink; 1324f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1325f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1326f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 132754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1328f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba int getDoubleTapToastCount() { 1329f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba return mDoubleTapToastCount; 1330f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 1331f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 1332f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba void setDoubleTapToastCount(int count) { 1333f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba if (mDoubleTapToastCount != count) { 1334f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba mDoubleTapToastCount = count; 1335f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba // write the settings in the non-UI thread 1336f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba mEventHandler.sendMessage(Message.obtain(null, 1337f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba EventHandler.SET_DOUBLE_TAP_TOAST_COUNT)); 1338f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 1339f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 1340f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 134154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 134254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Transfer messages from the queue to the new WebCoreThread. Called from 134354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebCore thread. 134454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 134554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /*package*/ 134654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized void syncSettingsAndCreateHandler(BrowserFrame frame) { 134754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBrowserFrame = frame; 13482e5c150e746647a1ce5c10e1708debbf06c45ea7Derek Sollenberger if (DebugFlags.WEB_SETTINGS) { 134954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project junit.framework.Assert.assertTrue(frame.mNativeFrame != 0); 135054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1351dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu 1352dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu GoogleLocationSettingManager.getInstance().start(mContext); 1353dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu 1354f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba SharedPreferences sp = mContext.getSharedPreferences(PREF_FILE, 1355f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba Context.MODE_PRIVATE); 135624a3ff958b87550904a71961835f6883d1411c27Grace Kloba if (mDoubleTapToastCount > 0) { 135724a3ff958b87550904a71961835f6883d1411c27Grace Kloba mDoubleTapToastCount = sp.getInt(DOUBLE_TAP_TOAST_COUNT, 135824a3ff958b87550904a71961835f6883d1411c27Grace Kloba mDoubleTapToastCount); 135924a3ff958b87550904a71961835f6883d1411c27Grace Kloba } 136054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(frame.mNativeFrame); 136154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 136254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.createHandler(); 136354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 136454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1365dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu /** 1366dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu * Let the Settings object know that our owner is being destroyed. 1367dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu */ 1368dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu /*package*/ 1369dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu synchronized void onDestroyed() { 1370dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu GoogleLocationSettingManager.getInstance().stop(); 1371dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu } 1372dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu 137354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int pin(int size) { 137454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // FIXME: 72 is just an arbitrary max text size value. 137554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (size < 1) { 137654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 137754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (size > 72) { 137854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 72; 137954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 138054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return size; 138154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 138254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 138354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Post a SYNC message to handle syncing the native settings. */ 138454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void postSync() { 138554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Only post if a sync is not pending 138654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!mSyncPending) { 138754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = mEventHandler.sendMessage( 138854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Message.obtain(null, EventHandler.SYNC)); 138954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 139054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 139154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 139254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Synchronize the native and java settings. 139354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private native void nativeSync(int nativeFrame); 139454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 1395