WebSettings.java revision a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4
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; 22a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolbimport android.content.res.Configuration; 2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Build; 2454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Handler; 2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Message; 2618e939623556928f73fcc7511c85a537929a4a7eDan Egnorimport android.util.EventLog; 27f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport java.lang.SecurityException; 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.util.Locale; 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/** 3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Manages settings state for a WebView. When a WebView is first created, it 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * obtains a set of default settings. These default settings will be returned 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * from any getter call. A WebSettings object obtained from 3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebView.getSettings() is tied to the life of the WebView. If a WebView has 3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * been destroyed, any method call on WebSettings will throw an 3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * IllegalStateException. 3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 3854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpublic class WebSettings { 3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enum for controlling the layout of html. 4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NORMAL means no rendering changes. 4254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SINGLE_COLUMN moves all content into one column that is the width of the 4354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * view. 4454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NARROW_COLUMNS makes all columns no wider than the screen if possible. 4554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // XXX: These must match LayoutAlgorithm in Settings.h in WebCore. 4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum LayoutAlgorithm { 4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL, 4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SINGLE_COLUMN, 5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NARROW_COLUMNS 5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 5254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enum for specifying the text size. 5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SMALLEST is 50% 5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SMALLER is 75% 5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NORMAL is 100% 5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * LARGER is 150% 5954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * LARGEST is 200% 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum TextSize { 6254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SMALLEST(50), 6354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SMALLER(75), 6454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL(100), 6554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LARGER(150), 6654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LARGEST(200); 6754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project TextSize(int size) { 6854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project value = size; 6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int value; 7154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 720d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 730d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 740d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Enum for specifying the WebView's desired density. 750d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * FAR makes 100% looking like in 240dpi 760d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * MEDIUM makes 100% looking like in 160dpi 770d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * CLOSE makes 100% looking like in 120dpi 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; 111a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 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 124300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott /** 125300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * The plugin state effects how plugins are treated on a page. ON means 126300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * that any object will be loaded even if a plugin does not exist to handle 127300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * the content. ON_DEMAND means that if there is a plugin installed that 128300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * can handle the content, a placeholder is shown until the user clicks on 129300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * the placeholder. Once clicked, the plugin will be enabled on the page. 130300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * OFF means that all plugins will be turned off and any fallback content 131300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * will be used. 132300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott */ 133300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott public enum PluginState { 134300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott ON, 135300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott ON_DEMAND, 136300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott OFF 137300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott } 138300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott 1390d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba // WebView associated with this WebSettings. 1400d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba private WebView mWebView; 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // BrowserFrame used to access the native frame pointer. 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private BrowserFrame mBrowserFrame; 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Flag to prevent multiple SYNC messages at one time. 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSyncPending = false; 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Custom handler that queues messages until the WebCore thread is active. 14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private final EventHandler mEventHandler; 147adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 14854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Private settings so we don't have to go into native code to 14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // retrieve the values. After setXXX, postSync() needs to be called. 150adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // 151adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // The default values need to match those in WebSettings.cpp 152adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // If the defaults change, please also update the JavaDocs so developers 153adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // know what they are. 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private LayoutAlgorithm mLayoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS; 155f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private Context mContext; 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private TextSize mTextSize = TextSize.NORMAL; 15754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mStandardFontFamily = "sans-serif"; 15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFixedFontFamily = "monospace"; 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSansSerifFontFamily = "sans-serif"; 16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSerifFontFamily = "serif"; 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mCursiveFontFamily = "cursive"; 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFantasyFontFamily = "fantasy"; 163c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa private String mDefaultTextEncoding; 164f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mUserAgent; 165f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mUseDefaultUserAgent; 166f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mAcceptLanguage; 16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumFontSize = 8; 16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumLogicalFontSize = 8; 16954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFontSize = 16; 17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFixedFontSize = 13; 171097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba private int mPageCacheCapacity = 0; 17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLoadsImagesAutomatically = true; 17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mBlockNetworkImage = false; 174c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project private boolean mBlockNetworkLoads; 17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptEnabled = false; 176300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott private PluginState mPluginState = PluginState.OFF; 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptCanOpenWindowsAutomatically = false; 17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseDoubleTree = false; 17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseWideViewport = false; 18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportMultipleWindows = false; 181f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mShrinksStandaloneImagesToFit = false; 182f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark private long mMaximumDecodedImageSize = 0; // 0 means default 183c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu // HTML5 API flags 184c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mAppCacheEnabled = false; 185c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mDatabaseEnabled = false; 186c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mDomStorageEnabled = false; 187c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private boolean mWorkersEnabled = false; // only affects V8. 18809b0ca1ceefde02b9ed50dc4dd12774ba569143fSteve Block private boolean mGeolocationEnabled = true; 1895dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter private boolean mXSSAuditorEnabled = false; 190c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu // HTML5 configuration parameters 191c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private long mAppCacheMaxSize = Long.MAX_VALUE; 192c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private String mAppCachePath = ""; 193c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu private String mDatabasePath = ""; 19418773afa64d407ebdd4bfc7bc151497d4447884dBen Murdoch // The WebCore DatabaseTracker only allows the database path to be set 19518773afa64d407ebdd4bfc7bc151497d4447884dBen Murdoch // once. Keep track of when the path has been set. 19618773afa64d407ebdd4bfc7bc151497d4447884dBen Murdoch private boolean mDatabasePathHasBeenSet = false; 1979d3273f62288fa54536a3928383588398ca2d029Steve Block private String mGeolocationDatabasePath = ""; 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Don't need to synchronize the get/set methods as they 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // are basic types, also none of these values are used in 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // native WebCore code. 2010d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba private ZoomDensity mDefaultZoom = ZoomDensity.MEDIUM; 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private RenderPriority mRenderPriority = RenderPriority.NORMAL; 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mOverrideCacheMode = LOAD_DEFAULT; 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSaveFormData = true; 20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSavePassword = true; 20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLightTouchEnabled = false; 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNeedInitialFocus = true; 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNavDump = false; 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportZoom = true; 210105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project private boolean mBuiltInZoomControls = false; 211f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mAllowFileAccess = true; 212f8d4964e45f7e671f4b333386b4269b23ced4750Cary Clark private boolean mLoadWithOverviewMode = false; 213f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba private boolean mEnableSmoothTransition = false; 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 215f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba // private WebSettings, not accessible by the host activity 21624a3ff958b87550904a71961835f6883d1411c27Grace Kloba static private int mDoubleTapToastCount = 3; 217f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 218f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba private static final String PREF_FILE = "WebViewSettings"; 219f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba private static final String DOUBLE_TAP_TOAST_COUNT = "double_tap_toast_count"; 220f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Class to handle messages before WebCore is ready. 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private class EventHandler { 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for syncing 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int SYNC = 0; 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for setting priority 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int PRIORITY = 1; 227f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba // Message id for writing double-tap toast count 228f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba static final int SET_DOUBLE_TAP_TOAST_COUNT = 2; 22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Actual WebCore thread handler 23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Handler mHandler; 23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void createHandler() { 23354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // as mRenderPriority can be set before thread is running, sync up 23454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 23554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // create a new handler 23754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler = new Handler() { 23854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 23954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void handleMessage(Message msg) { 24054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project switch (msg.what) { 24154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case SYNC: 24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBrowserFrame.mNativeFrame != 0) { 24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(mBrowserFrame.mNativeFrame); 24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PRIORITY: { 25154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 25354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 254f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 255f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba case SET_DOUBLE_TAP_TOAST_COUNT: { 256f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba SharedPreferences.Editor editor = mContext 257f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba .getSharedPreferences(PREF_FILE, 258f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba Context.MODE_PRIVATE).edit(); 259f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba editor.putInt(DOUBLE_TAP_TOAST_COUNT, 260f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba mDoubleTapToastCount); 261f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba editor.commit(); 262f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba break; 263f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project }; 26754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 26854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 26954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void setRenderPriority() { 27054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 27154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority == RenderPriority.NORMAL) { 27254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_DEFAULT); 27454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.HIGH) { 27554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 27654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_FOREGROUND + 27754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE); 27854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.LOW) { 27954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 28054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_BACKGROUND); 28154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 28254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 28354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 28454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 28654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Send a message to the private queue or handler. 28754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 28854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized boolean sendMessage(Message msg) { 28954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mHandler != null) { 29054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler.sendMessage(msg); 29154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return true; 29254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 29354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return false; 29454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 29554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 29654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 29754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 29854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // User agent strings. 29954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String DESKTOP_USERAGENT = 300b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us)" 301b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0" 302b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " Safari/530.17"; 3030e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang private static final String IPHONE_USERAGENT = 304b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us)" 305b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0" 306b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " Mobile/7A341 Safari/528.16"; 307f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Locale sLocale; 308f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Object sLockForLocaleSettings; 3090e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang 31054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 31154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Package constructor to prevent clients from creating a new settings 31254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * instance. 31354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 3140d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba WebSettings(Context context, WebView webview) { 315f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mEventHandler = new EventHandler(); 316f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mContext = context; 3170d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mWebView = webview; 318c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa mDefaultTextEncoding = context.getString(com.android.internal. 319c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa R.string.default_text_encoding); 320f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 321f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (sLockForLocaleSettings == null) { 322f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLockForLocaleSettings = new Object(); 323f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = Locale.getDefault(); 324f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 325f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 326f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 327f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 328f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 329c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project mBlockNetworkLoads = mContext.checkPermission( 330c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project "android.permission.INTERNET", android.os.Process.myPid(), 331c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project android.os.Process.myUid()) != PackageManager.PERMISSION_GRANTED; 332f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 333f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 3340e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang private static final String ACCEPT_LANG_FOR_US_LOCALE = "en-US"; 3350e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang 336f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 337f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and returns current AcceptLanguage String. 338f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current AcceptLanguage String. 339f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 340f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String getCurrentAcceptLanguage() { 341f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 342f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 343f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 344f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 3450e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang StringBuilder buffer = new StringBuilder(); 3460e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang addLocaleToHttpAcceptLanguage(buffer, locale); 3470e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang 3480e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang if (!Locale.US.equals(locale)) { 3490e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang if (buffer.length() > 0) { 3500e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang buffer.append(", "); 35154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 3520e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang buffer.append(ACCEPT_LANG_FOR_US_LOCALE); 353f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 354f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 355f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return buffer.toString(); 356f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 3570e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang 3580e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang /** 3590e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang * Convert obsolete language codes, including Hebrew/Indonesian/Yiddish, 3600e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang * to new standard. 3610e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang */ 3620e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang private static String convertObsoleteLanguageCodeToNew(String langCode) { 3630e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang if (langCode == null) { 3640e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang return null; 3650e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } 3660e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang if ("iw".equals(langCode)) { 3670e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang // Hebrew 3680e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang return "he"; 3690e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } else if ("in".equals(langCode)) { 3700e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang // Indonesian 3710e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang return "id"; 3720e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } else if ("ji".equals(langCode)) { 3730e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang // Yiddish 3740e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang return "yi"; 3750e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } 3760e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang return langCode; 3770e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } 3780e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang 3790e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang private static void addLocaleToHttpAcceptLanguage(StringBuilder builder, 3800e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang Locale locale) { 3810e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang String language = convertObsoleteLanguageCodeToNew(locale.getLanguage()); 3820e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang if (language != null) { 3830e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang builder.append(language); 3840e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang String country = locale.getCountry(); 3850e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang if (country != null) { 3860e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang builder.append("-"); 3870e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang builder.append(country); 3880e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } 3890e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } 3900e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } 3910e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang 392f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 393f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and mContext and returns current UserAgent String. 394f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current UserAgent String. 395f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 396f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private synchronized String getCurrentUserAgent() { 397f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 398f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 399f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 400f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 401f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project StringBuffer buffer = new StringBuffer(); 402f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Add version 403f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String version = Build.VERSION.RELEASE; 404f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (version.length() > 0) { 405f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(version); 406f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 407f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "1.0" 408f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("1.0"); 4090e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang } 410f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("; "); 411f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String language = locale.getLanguage(); 412f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (language != null) { 4130e4cb9d89fe58b378d94c87f182aaaef9d6a6d60Shimeng (Simon) Wang buffer.append(convertObsoleteLanguageCodeToNew(language)); 414f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = locale.getCountry(); 415f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (country != null) { 416f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 417f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country.toLowerCase()); 41854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 419f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 420f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "en" 421f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("en"); 42254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 423ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba // add the model for the release build 424ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba if ("REL".equals(Build.VERSION.CODENAME)) { 425ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba final String model = Build.MODEL; 426ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba if (model.length() > 0) { 427ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba buffer.append("; "); 428ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba buffer.append(model); 429ce761d3219d1a091e6177ff852d9f0636777f04fGrace Kloba } 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final String id = Build.ID; 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (id.length() > 0) { 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer.append(" Build/"); 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer.append(id); 435f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 436a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb String mobile = ((mContext.getResources().getConfiguration().screenLayout 437a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb & Configuration.SCREENLAYOUT_SIZE_MASK) 438a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb == Configuration.SCREENLAYOUT_SIZE_XLARGE) ? "" : "Mobile "; 439f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String base = mContext.getResources().getText( 440f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project com.android.internal.R.string.web_user_agent).toString(); 441a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb return String.format(base, buffer, mobile); 44254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 443a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 44454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 44554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables dumping the pages navigation cache to a text file. 44654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 44754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNavDump(boolean enabled) { 44854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNavDump = enabled; 44954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 45054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 45254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if dumping the navigation cache is enabled. 45354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 45454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getNavDump() { 45554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNavDump; 45654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 45754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 459178db41234abd08925fea9a4dc5180218f7da737Grace Kloba * If WebView only supports touch, a different navigation model will be 460178db41234abd08925fea9a4dc5180218f7da737Grace Kloba * applied. Otherwise, the navigation to support both touch and keyboard 461178db41234abd08925fea9a4dc5180218f7da737Grace Kloba * will be used. 462178db41234abd08925fea9a4dc5180218f7da737Grace Kloba * @hide 463178db41234abd08925fea9a4dc5180218f7da737Grace Kloba public void setSupportTouchOnly(boolean touchOnly) { 464178db41234abd08925fea9a4dc5180218f7da737Grace Kloba mSupportTounchOnly = touchOnly; 465178db41234abd08925fea9a4dc5180218f7da737Grace Kloba } 466178db41234abd08925fea9a4dc5180218f7da737Grace Kloba */ 467178db41234abd08925fea9a4dc5180218f7da737Grace Kloba 468178db41234abd08925fea9a4dc5180218f7da737Grace Kloba boolean supportTouchOnly() { 469178db41234abd08925fea9a4dc5180218f7da737Grace Kloba // for debug only, use mLightTouchEnabled for mSupportTounchOnly 470178db41234abd08925fea9a4dc5180218f7da737Grace Kloba return mLightTouchEnabled; 471178db41234abd08925fea9a4dc5180218f7da737Grace Kloba } 472178db41234abd08925fea9a4dc5180218f7da737Grace Kloba 473178db41234abd08925fea9a4dc5180218f7da737Grace Kloba /** 47454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set whether the WebView supports zoom 47554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 47654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSupportZoom(boolean support) { 47754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportZoom = support; 4783a0def280fa4f6306929910a414b41ae58a7d139Grace Kloba mWebView.updateMultiTouchSupport(mContext); 47954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 48254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns whether the WebView supports zoom 48354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 48454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean supportZoom() { 48554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportZoom; 48654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 489105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project * Sets whether the zoom mechanism built into WebView is used. 490105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project */ 491105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project public void setBuiltInZoomControls(boolean enabled) { 492105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project mBuiltInZoomControls = enabled; 4933a0def280fa4f6306929910a414b41ae58a7d139Grace Kloba mWebView.updateMultiTouchSupport(mContext); 494105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project } 495a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 496105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project /** 497105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project * Returns true if the zoom mechanism built into WebView is being used. 498105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project */ 499105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project public boolean getBuiltInZoomControls() { 500105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project return mBuiltInZoomControls; 501105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project } 502a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 503105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project /** 504f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Enable or disable file access within WebView. File access is enabled by 505f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * default. 506f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 507f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setAllowFileAccess(boolean allow) { 508f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAllowFileAccess = allow; 509f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 510f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 511f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 512f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Returns true if this WebView supports file access. 513f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 514f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public boolean getAllowFileAccess() { 515f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAllowFileAccess; 516f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 517f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 518f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 519e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba * Set whether the WebView loads a page with overview mode. 520e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba */ 521e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba public void setLoadWithOverviewMode(boolean overview) { 522e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba mLoadWithOverviewMode = overview; 523e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba } 524e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba 525e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba /** 526e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba * Returns true if this WebView loads page with overview mode 527e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba */ 528e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba public boolean getLoadWithOverviewMode() { 529e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba return mLoadWithOverviewMode; 530e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba } 531e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba 532e397a88e4fd65ee7d346f63a43e6608dba943ee9Grace Kloba /** 533f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba * Set whether the WebView will enable smooth transition while panning or 534f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba * zooming. If it is true, WebView will choose a solution to maximize the 535f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba * performance. e.g. the WebView's content may not be updated during the 536f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba * transition. If it is false, WebView will keep its fidelity. The default 537f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba * value is false. 538f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba */ 539f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba public void setEnableSmoothTransition(boolean enable) { 540f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba mEnableSmoothTransition = enable; 541f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba } 542f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba 543f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba /** 544f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba * Returns true if the WebView enables smooth transition while panning or 545f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba * zooming. 546f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba */ 547f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba public boolean enableSmoothTransition() { 548f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba return mEnableSmoothTransition; 549f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba } 550f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba 551f9b731d383790e0dfd407525efcd72bba4ee4895Grace Kloba /** 55254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving form data. 55354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 55454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSaveFormData(boolean save) { 55554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSaveFormData = save; 55654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 55954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving form data. 56054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 56154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSaveFormData() { 56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSaveFormData; 56354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 56654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving password. 56754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 56854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSavePassword(boolean save) { 56954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSavePassword = save; 57054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving password. 57454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSavePassword() { 57654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSavePassword; 57754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 57854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the text size of the page. 58154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param t A TextSize value for increasing or decreasing the text. 58254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 58454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setTextSize(TextSize t) { 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (WebView.mLogEvent && mTextSize != t ) { 58618e939623556928f73fcc7511c85a537929a4a7eDan Egnor EventLog.writeEvent(EventLogTags.BROWSER_TEXT_SIZE_CHANGE, 58718e939623556928f73fcc7511c85a537929a4a7eDan Egnor mTextSize.value, t.value); 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 58954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mTextSize = t; 59054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 59154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 59254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 59454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the text size of the page. 59554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A TextSize enum value describing the text size. 59654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 59754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 59854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized TextSize getTextSize() { 59954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mTextSize; 60054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 60254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 6030d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Set the default zoom density of the page. This should be called from UI 6040d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * thread. 6050d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @param zoom A ZoomDensity value 6060d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @see WebSettings.ZoomDensity 6070d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 6080d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public void setDefaultZoom(ZoomDensity zoom) { 6090d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba if (mDefaultZoom != zoom) { 6100d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mDefaultZoom = zoom; 6110d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mWebView.updateDefaultZoomDensity(zoom.value); 6120d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 6130d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 6140d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 6150d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 6160d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Get the default zoom density of the page. This should be called from UI 6170d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * thread. 6180d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @return A ZoomDensity value 6190d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @see WebSettings.ZoomDensity 6200d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 6210d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public ZoomDensity getDefaultZoom() { 6220d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba return mDefaultZoom; 6230d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 6240d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 6250d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables using light touches to make a selection and activate mouseovers. 62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setLightTouchEnabled(boolean enabled) { 62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLightTouchEnabled = enabled; 63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if light touches are enabled. 63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 63554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getLightTouchEnabled() { 63654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLightTouchEnabled; 63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 640adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 641adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 643adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseDoubleTree(boolean use) { 645adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return; 64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 649adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 650adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 652adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseDoubleTree() { 654adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return false; 65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 65754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView about user-agent string. 65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param ua 0 if the WebView should use an Android user-agent string, 66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView should use a desktop user-agent string. 661f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 662f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use setUserAgentString instead. 66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 664f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUserAgent(int ua) { 666f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String uaString = null; 667f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == 1) { 668f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 669f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 670f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 671f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = DESKTOP_USERAGENT; 672f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 673f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua == 2) { 674f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (IPHONE_USERAGENT.equals(mUserAgent)) { 675f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 676f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 677f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = IPHONE_USERAGENT; 678f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 679f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua != 0) { 680f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 68154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 682f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project setUserAgentString(uaString); 68354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 68454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 68554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 68654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return user-agent as int 68754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return int 0 if the WebView is using an Android user-agent string. 68854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView is using a desktop user-agent string. 689f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * -1 if the WebView is using user defined user-agent string. 690f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 691f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use getUserAgentString instead. 69254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 693f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 69454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getUserAgent() { 69554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 69654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (IPHONE_USERAGENT.equals(mUserAgent)) { 69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 2; 699f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (mUseDefaultUserAgent) { 700f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return 0; 70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 702f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return -1; 70354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to use the wide viewport 70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseWideViewPort(boolean use) { 70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mUseWideViewport != use) { 71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mUseWideViewport = use; 71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is using a wide viewport 71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseWideViewPort() { 71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUseWideViewport; 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it supports multiple windows. TRUE means 72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSupportMultipleWindows(boolean support) { 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mSupportMultipleWindows != support) { 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportMultipleWindows = support; 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is supporting multiple windows. This means 73654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean supportMultipleWindows() { 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportMultipleWindows; 74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the underlying layout algorithm. This will cause a relayout of the 74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebView. 74654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param l A LayoutAlgorithm enum specifying the algorithm to use. 74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) { 75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // XXX: This will only be affective if libwebcore was built with 75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // ANDROID_LAYOUT defined. 75254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLayoutAlgorithm != l) { 75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLayoutAlgorithm = l; 75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 759adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return the current layout algorithm. The default is NARROW_COLUMNS. 76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return LayoutAlgorithm enum value describing the layout algorithm 76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * being used. 76254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized LayoutAlgorithm getLayoutAlgorithm() { 76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLayoutAlgorithm; 76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the standard font family name. 77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setStandardFontFamily(String font) { 77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mStandardFontFamily)) { 77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mStandardFontFamily = font; 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 780adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the standard font family name. The default is "sans-serif". 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The standard font family name as a string. 78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getStandardFontFamily() { 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mStandardFontFamily; 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fixed font family name. 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFixedFontFamily(String font) { 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFixedFontFamily)) { 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFixedFontFamily = font; 79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 799adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fixed font family name. The default is "monospace". 80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fixed font family name as a string. 80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFixedFontFamily() { 80354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFixedFontFamily; 80454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 80554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 80754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the sans-serif font family name. 80854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 80954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 81054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSansSerifFontFamily(String font) { 81154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSansSerifFontFamily)) { 81254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSansSerifFontFamily = font; 81354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 81454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 81854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the sans-serif font family name. 81954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The sans-serif font family name as a string. 82054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSansSerifFontFamily() { 82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSansSerifFontFamily; 82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 826adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Set the serif font family name. The default is "sans-serif". 82754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSerifFontFamily(String font) { 83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSerifFontFamily)) { 83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSerifFontFamily = font; 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 serif font family name. The default is "serif". 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The serif font family name as a string. 83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSerifFontFamily() { 84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSerifFontFamily; 84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the cursive font family name. 84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setCursiveFontFamily(String font) { 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mCursiveFontFamily)) { 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mCursiveFontFamily = font; 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 856adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the cursive font family name. The default is "cursive". 85754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The cursive font family name as a string. 85854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getCursiveFontFamily() { 86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mCursiveFontFamily; 86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 86254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 86454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fantasy font family name. 86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 86754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFantasyFontFamily(String font) { 86854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFantasyFontFamily)) { 86954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFantasyFontFamily = font; 87054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 87154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 87454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 875adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fantasy font family name. The default is "fantasy". 87654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fantasy font family name as a string. 87754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 87854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFantasyFontFamily() { 87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFantasyFontFamily; 88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum font size. 88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumFontSize(int size) { 88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumFontSize != size) { 89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumFontSize = size; 89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 89554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 896adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum font size. The default is 8. 89754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 89854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 89954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumFontSize() { 90054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumFontSize; 90154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 90354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 90454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum logical font size. 90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumLogicalFontSize(int size) { 90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumLogicalFontSize != size) { 91154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumLogicalFontSize = size; 91254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 91354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 91654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 917adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum logical font size. The default is 8. 91854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 91954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 92054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumLogicalFontSize() { 92154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumLogicalFontSize; 92254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 92354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 92454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 92554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default font size. 92654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 92754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 92854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 92954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFontSize(int size) { 93054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 93154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFontSize != size) { 93254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFontSize = size; 93354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 93454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 93554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 93654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 93754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 938adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default font size. The default is 16. 93954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 94054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 94154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFontSize() { 94254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFontSize; 94354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 94454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 94554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 94654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default fixed font size. 94754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 94854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 94954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 95054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFixedFontSize(int size) { 95154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 95254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFixedFontSize != size) { 95354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFixedFontSize = size; 95454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 95554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 95654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 95754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 95854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 959adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default fixed font size. The default is 16. 96054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 96154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 96254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFixedFontSize() { 96354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFixedFontSize; 96454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 96554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 96654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 967097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba * Set the number of pages cached by the WebKit for the history navigation. 968097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba * @param size A non-negative integer between 0 (no cache) and 20 (max). 969097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba * @hide 970097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba */ 971097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba public synchronized void setPageCacheCapacity(int size) { 972097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba if (size < 0) size = 0; 973097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba if (size > 20) size = 20; 974097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba if (mPageCacheCapacity != size) { 975097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba mPageCacheCapacity = size; 976097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba postSync(); 977097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba } 978097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba } 979097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba 980097b1e777a2a29eef3938338cb0c355203bf1448Grace Kloba /** 98154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to load image resources automatically. 98254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load images automatically. 98354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 98454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLoadsImagesAutomatically(boolean flag) { 98554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLoadsImagesAutomatically != flag) { 98654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLoadsImagesAutomatically = flag; 98754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 98854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 98954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 99054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 99154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 99254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if the WebView will load image resources automatically. 993adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * The default is true. 99454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView loads images automatically. 99554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 99654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getLoadsImagesAutomatically() { 99754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLoadsImagesAutomatically; 99854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 99954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 100054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1001f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * Tell the WebView to block network images. This is only checked when 1002f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * {@link #getLoadsImagesAutomatically} is true. If you set the value to 1003f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * false, images will automatically be loaded. Use this api to reduce 1004f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * bandwidth only. Use {@link #setBlockNetworkLoads} if possible. 1005f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * @param flag True if the WebView should block network images. 1006f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * @see #setBlockNetworkLoads 100754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 100854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setBlockNetworkImage(boolean flag) { 100954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBlockNetworkImage != flag) { 101054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBlockNetworkImage = flag; 101154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 101254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 101354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 101454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 101554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1016f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * Return true if the WebView will block network images. The default is 1017f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * false. 1018f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * @return True if the WebView blocks network images. 101954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 102054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getBlockNetworkImage() { 102154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mBlockNetworkImage; 102254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1023adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 1024f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1025f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * Tell the WebView to block all network load requests. If you set the 1026f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * value to false, you must call {@link android.webkit.WebView#reload} to 1027f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * fetch remote resources. This flag supercedes the value passed to 1028f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * {@link #setBlockNetworkImage}. 1029f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * @param flag True if the WebView should block all network loads. 1030f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * @see android.webkit.WebView#reload 1031f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1032f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setBlockNetworkLoads(boolean flag) { 1033f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mBlockNetworkLoads != flag) { 1034f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mBlockNetworkLoads = flag; 1035f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project verifyNetworkAccess(); 1036f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1037f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1038f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1039f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1040f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * Return true if the WebView will block all network loads. The default is 1041f43113f6216efacc3957fc48d9fa1c0326faccebPatrick Scott * false. 1042f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return True if the WebView blocks all network loads. 1043f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1044f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized boolean getBlockNetworkLoads() { 1045f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mBlockNetworkLoads; 1046f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1047adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 1048adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 1049f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void verifyNetworkAccess() { 1050f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!mBlockNetworkLoads) { 1051a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb if (mContext.checkPermission("android.permission.INTERNET", 1052a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb android.os.Process.myPid(), android.os.Process.myUid()) != 1053f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project PackageManager.PERMISSION_GRANTED) { 1054f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new SecurityException 1055f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ("Permission denied - " + 1056f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "application missing INTERNET permission"); 1057f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1058f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1059f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 106054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 106154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 106254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable javascript execution. 106354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should execute javascript. 106454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 106554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptEnabled(boolean flag) { 106654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptEnabled != flag) { 106754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptEnabled = flag; 106854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 106954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 107054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 107154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 107254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 107354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable plugins. 107454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load plugins. 1075300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * @deprecated This method has been deprecated in favor of 1076300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * {@link #setPluginState} 107754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 1078a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb @Deprecated 107954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsEnabled(boolean flag) { 1080300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott setPluginState(PluginState.ON); 1081300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott } 1082300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott 1083300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott /** 1084300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * Tell the WebView to enable, disable, or have plugins on demand. On 1085300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * demand mode means that if a plugin exists that can handle the embedded 1086300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * content, a placeholder icon will be shown instead of the plugin. When 1087300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * the placeholder is clicked, the plugin will be enabled. 1088300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * @param state One of the PluginState values. 1089300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott */ 1090300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott public synchronized void setPluginState(PluginState state) { 1091300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott if (mPluginState != state) { 1092300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott mPluginState = state; 109354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 109454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 109554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 109654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 109754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1098658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba * TODO: need to add @Deprecated 109954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 110054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsPath(String pluginsPath) { 110154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 110254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 110354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 11047df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Set the path to where database storage API databases should be saved. 110518773afa64d407ebdd4bfc7bc151497d4447884dBen Murdoch * Nota that the WebCore Database Tracker only allows the path to be set once. 11067df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * This will update WebCore when the Sync runs in the C++ side. 11077df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @param databasePath String path to the directory where databases should 11087df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * be saved. May be the empty string but should never be null. 11097df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 11107df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized void setDatabasePath(String databasePath) { 111118773afa64d407ebdd4bfc7bc151497d4447884dBen Murdoch if (databasePath != null && !mDatabasePathHasBeenSet) { 11127df1985e86635af006be3dfa65987d60e290b5deBen Murdoch mDatabasePath = databasePath; 111318773afa64d407ebdd4bfc7bc151497d4447884dBen Murdoch mDatabasePathHasBeenSet = true; 11147df1985e86635af006be3dfa65987d60e290b5deBen Murdoch postSync(); 11157df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 11167df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 11177df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 11187df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 11199d3273f62288fa54536a3928383588398ca2d029Steve Block * Set the path where the Geolocation permissions database should be saved. 11209d3273f62288fa54536a3928383588398ca2d029Steve Block * This will update WebCore when the Sync runs in the C++ side. 11219d3273f62288fa54536a3928383588398ca2d029Steve Block * @param databasePath String path to the directory where the Geolocation 11229d3273f62288fa54536a3928383588398ca2d029Steve Block * permissions database should be saved. May be the empty string but 11239d3273f62288fa54536a3928383588398ca2d029Steve Block * should never be null. 11249d3273f62288fa54536a3928383588398ca2d029Steve Block */ 11259d3273f62288fa54536a3928383588398ca2d029Steve Block public synchronized void setGeolocationDatabasePath(String databasePath) { 11268f5e405f60e3816f61549783782d9bf0d9d4d199Grace Kloba if (databasePath != null 11278f5e405f60e3816f61549783782d9bf0d9d4d199Grace Kloba && !databasePath.equals(mGeolocationDatabasePath)) { 11289d3273f62288fa54536a3928383588398ca2d029Steve Block mGeolocationDatabasePath = databasePath; 11299d3273f62288fa54536a3928383588398ca2d029Steve Block postSync(); 11309d3273f62288fa54536a3928383588398ca2d029Steve Block } 11319d3273f62288fa54536a3928383588398ca2d029Steve Block } 11329d3273f62288fa54536a3928383588398ca2d029Steve Block 11339d3273f62288fa54536a3928383588398ca2d029Steve Block /** 113460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Tell the WebView to enable Application Caches API. 113560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @param flag True if the WebView should enable Application Caches. 113660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu */ 113760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu public synchronized void setAppCacheEnabled(boolean flag) { 113860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu if (mAppCacheEnabled != flag) { 113960a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu mAppCacheEnabled = flag; 114060a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu postSync(); 114160a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 114260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 114360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu 114460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu /** 114560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Set a custom path to the Application Caches files. The client 114660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * must ensure it exists before this call. 114760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @param appCachePath String path to the directory containing Application 114860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Caches files. The appCache path can be the empty string but should not 114960a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * be null. Passing null for this parameter will result in a no-op. 115060a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu */ 115160a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu public synchronized void setAppCachePath(String appCachePath) { 115260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu if (appCachePath != null && !appCachePath.equals(mAppCachePath)) { 115360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu mAppCachePath = appCachePath; 115460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu postSync(); 115560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 115660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 115760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu 115860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu /** 11591c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu * Set the maximum size for the Application Caches content. 11601c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu * @param appCacheMaxSize the maximum size in bytes. 11611c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu */ 11621c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu public synchronized void setAppCacheMaxSize(long appCacheMaxSize) { 11631c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu if (appCacheMaxSize != mAppCacheMaxSize) { 11641c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu mAppCacheMaxSize = appCacheMaxSize; 11651c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu postSync(); 11661c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu } 11671c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu } 11681c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu 11691c829208eadf175ad4600e70a14013b50a20adfeAndrei Popescu /** 11707df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Set whether the database storage API is enabled. 11717df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @param flag boolean True if the WebView should use the database storage 11727df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * API. 11737df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 11747df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized void setDatabaseEnabled(boolean flag) { 11757df1985e86635af006be3dfa65987d60e290b5deBen Murdoch if (mDatabaseEnabled != flag) { 11767df1985e86635af006be3dfa65987d60e290b5deBen Murdoch mDatabaseEnabled = flag; 11777df1985e86635af006be3dfa65987d60e290b5deBen Murdoch postSync(); 11787df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 11797df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 11807df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 11817df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 1182274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * Set whether the DOM storage API is enabled. 1183274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @param flag boolean True if the WebView should use the DOM storage 1184274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * API. 1185274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch */ 1186274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch public synchronized void setDomStorageEnabled(boolean flag) { 1187274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch if (mDomStorageEnabled != flag) { 1188274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch mDomStorageEnabled = flag; 1189274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch postSync(); 1190274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1191274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1192274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch 1193274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch /** 1194274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * Returns true if the DOM Storage API's are enabled. 1195274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @return True if the DOM Storage API's are enabled. 1196274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch */ 1197274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch public synchronized boolean getDomStorageEnabled() { 1198274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch return mDomStorageEnabled; 1199274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1200274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch 1201274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch /** 12027df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Return the path to where database storage API databases are saved for 12037df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * the current WebView. 12047df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @return the String path to the database storage API databases. 12057df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 12067df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized String getDatabasePath() { 12077df1985e86635af006be3dfa65987d60e290b5deBen Murdoch return mDatabasePath; 12087df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 12097df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 12107df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 12117df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Returns true if database storage API is enabled. 12127df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @return True if the database storage API is enabled. 12137df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 12147df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized boolean getDatabaseEnabled() { 12157df1985e86635af006be3dfa65987d60e290b5deBen Murdoch return mDatabaseEnabled; 12167df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 12177df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 12187df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 1219c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * Tell the WebView to enable WebWorkers API. 1220c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * @param flag True if the WebView should enable WebWorkers. 1221c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * Note that this flag only affects V8. JSC does not have 1222c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * an equivalent setting. 1223c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu * @hide pending api council approval 1224c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu */ 1225c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu public synchronized void setWorkersEnabled(boolean flag) { 1226c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu if (mWorkersEnabled != flag) { 1227c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu mWorkersEnabled = flag; 1228c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu postSync(); 1229c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu } 1230c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu } 1231c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu 1232c27a9acb3b7ec4d1845b623cc167e0b62b1d0585Andrei Popescu /** 123306cd751b052e65c359b16cce0570b6fab305eb89Steve Block * Sets whether Geolocation is enabled. 123406cd751b052e65c359b16cce0570b6fab305eb89Steve Block * @param flag Whether Geolocation should be enabled. 123506cd751b052e65c359b16cce0570b6fab305eb89Steve Block */ 123606cd751b052e65c359b16cce0570b6fab305eb89Steve Block public synchronized void setGeolocationEnabled(boolean flag) { 123706cd751b052e65c359b16cce0570b6fab305eb89Steve Block if (mGeolocationEnabled != flag) { 123806cd751b052e65c359b16cce0570b6fab305eb89Steve Block mGeolocationEnabled = flag; 123906cd751b052e65c359b16cce0570b6fab305eb89Steve Block postSync(); 124006cd751b052e65c359b16cce0570b6fab305eb89Steve Block } 124106cd751b052e65c359b16cce0570b6fab305eb89Steve Block } 124206cd751b052e65c359b16cce0570b6fab305eb89Steve Block 124306cd751b052e65c359b16cce0570b6fab305eb89Steve Block /** 12445dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter * Sets whether XSS Auditor is enabled. 12455dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter * @param flag Whether XSS Auditor should be enabled. 1246be1304f0c2c96be1876c2bd38d319f46e135536fElliott Slaughter * @hide Only used by LayoutTestController. 12475dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter */ 12485dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter public synchronized void setXSSAuditorEnabled(boolean flag) { 12495dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter if (mXSSAuditorEnabled != flag) { 12505dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter mXSSAuditorEnabled = flag; 12515dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter postSync(); 12525dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter } 12535dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter } 12545dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter 12555dc0c8253b368239a90d7176ff6325ae5ba371b3Elliott Slaughter /** 1256adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript is enabled. <b>Note: The default is false.</b> 125754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript is enabled. 125854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 125954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptEnabled() { 126054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptEnabled; 126154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 126254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 126354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 126454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if plugins are enabled. 126554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if plugins are enabled. 1266300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * @deprecated This method has been replaced by {@link #getPluginState} 126754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 1268a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb @Deprecated 126954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getPluginsEnabled() { 1270300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott return mPluginState == PluginState.ON; 1271300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott } 1272300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott 1273300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott /** 1274300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * Return the current plugin state. 1275300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott * @return A value corresponding to the enum PluginState. 1276300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott */ 1277300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott public synchronized PluginState getPluginState() { 1278300f2e95a4cecebb80c2c55418745df5c0c2fb6cPatrick Scott return mPluginState; 127954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 128054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 128154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1282658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba * TODO: need to add @Deprecated 128354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 128454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getPluginsPath() { 1285658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba return ""; 128654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 128754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 128854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 128954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell javascript to open windows automatically. This applies to the 129054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * javascript function window.open(). 129154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if javascript can open windows automatically. 129254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 129354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptCanOpenWindowsAutomatically( 129454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project boolean flag) { 129554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptCanOpenWindowsAutomatically != flag) { 129654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptCanOpenWindowsAutomatically = flag; 129754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 129854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 129954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 130054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 130154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1302adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript can open windows automatically. The default 1303adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * is false. 130454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript can open windows automatically during 130554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * window.open(). 130654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 130754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() { 130854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptCanOpenWindowsAutomatically; 130954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 131054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 131154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 131254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default text encoding name to use when decoding html pages. 131354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param encoding The text encoding name. 131454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 131554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultTextEncodingName(String encoding) { 131654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (encoding != null && !encoding.equals(mDefaultTextEncoding)) { 131754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultTextEncoding = encoding; 131854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 131954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 132054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 132154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 132254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1323adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default text encoding name. The default is "Latin-1". 132454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The default text encoding name as a string. 132554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 132654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getDefaultTextEncodingName() { 132754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultTextEncoding; 132854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 132954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1330f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1331f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Set the WebView's user-agent string. If the string "ua" is null or empty, 1332f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * it will use the system default user-agent string. 1333f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1334f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setUserAgentString(String ua) { 1335f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == null || ua.length() == 0) { 1336f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1337a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb Locale currentLocale = Locale.getDefault(); 1338f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1339f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1340f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1341f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1342f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1343f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ua = getCurrentUserAgent(); 1344f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 1345f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 1346f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = false; 1347f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1348f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1349f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!ua.equals(mUserAgent)) { 1350f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = ua; 1351f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1352f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1353f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1354f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1355f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1356f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Return the WebView's user-agent string. 1357f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1358f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized String getUserAgentString() { 1359f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent) || 1360f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project IPHONE_USERAGENT.equals(mUserAgent) || 1361f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project !mUseDefaultUserAgent) { 1362f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mUserAgent; 1363f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1364f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1365f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project boolean doPostSync = false; 1366f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1367f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1368f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1369f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1370f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 1371f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1372f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project doPostSync = true; 1373f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1374f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1375f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (doPostSync) { 1376f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1377f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 137854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUserAgent; 137954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 138054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1381f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /* package api to grab the Accept Language string. */ 1382f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /*package*/ synchronized String getAcceptLanguage() { 1383f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1384f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1385f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1386f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1387f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1388f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1389f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1390f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAcceptLanguage; 1391f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1392a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 139354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 139454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it needs to set a node to have focus when 139554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link WebView#requestFocus(int, android.graphics.Rect)} is called. 1396a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb * 139754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag 139854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 139954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNeedInitialFocus(boolean flag) { 140054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mNeedInitialFocus != flag) { 140154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNeedInitialFocus = flag; 140254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 140354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 140454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 140554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Package api to get the choice whether it needs to set initial focus. */ 140654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* package */ boolean getNeedInitialFocus() { 140754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNeedInitialFocus; 140854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 140954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 141054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 141154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the priority of the Render thread. Unlike the other settings, this 1412adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * one only needs to be called once per process. The default is NORMAL. 1413adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * 141454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param priority RenderPriority, can be normal, high or low. 141554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 141654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setRenderPriority(RenderPriority priority) { 141754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority != priority) { 141854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mRenderPriority = priority; 141954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.sendMessage(Message.obtain(null, 142054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project EventHandler.PRIORITY)); 142154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 142254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1423a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 142454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 142554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Override the way the cache is used. The way the cache is used is based 142654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * on the navigation option. For a normal page load, the cache is checked 142754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * and content is re-validated as needed. When navigating back, content is 142854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * not revalidated, instead the content is just pulled from the cache. 142954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This function allows the client to override this behavior. 143054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param mode One of the LOAD_ values. 143154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 143254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setCacheMode(int mode) { 143354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mode != mOverrideCacheMode) { 143454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mOverrideCacheMode = mode; 143554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 143654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1437a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 143854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 143954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return the current setting for overriding the cache mode. For a full 144054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * description, see the {@link #setCacheMode(int)} function. 144154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 144254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public int getCacheMode() { 144354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mOverrideCacheMode; 144454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1445a172e7d0d96e4a4db5e2b408e8ee3e96948df9a4Michael Kolb 1446f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1447f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * If set, webkit alternately shrinks and expands images viewed outside 1448f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * of an HTML page to fit the screen. This conflicts with attempts by 1449f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * the UI to zoom in and out of an image, so it is set false by default. 1450f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @param shrink Set true to let webkit shrink the standalone image to fit. 1451f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * {@hide} 1452f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1453f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setShrinksStandaloneImagesToFit(boolean shrink) { 1454f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mShrinksStandaloneImagesToFit != shrink) { 1455f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mShrinksStandaloneImagesToFit = shrink; 1456f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1457f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1458f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 145954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1460f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark /** 1461f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark * Specify the maximum decoded image size. The default is 1462f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark * 2 megs for small memory devices and 8 megs for large memory devices. 1463f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark * @param size The maximum decoded size, or zero to set to the default. 1464f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark * @hide pending api council approval 1465f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark */ 1466f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark public void setMaximumDecodedImageSize(long size) { 1467f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark if (mMaximumDecodedImageSize != size) { 1468f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark mMaximumDecodedImageSize = size; 1469f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark postSync(); 1470f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark } 1471f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark } 1472f0785a66f0e8447c30f47a760905bc74644f5c10Cary Clark 1473f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba int getDoubleTapToastCount() { 1474f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba return mDoubleTapToastCount; 1475f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 1476f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 1477f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba void setDoubleTapToastCount(int count) { 1478f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba if (mDoubleTapToastCount != count) { 1479f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba mDoubleTapToastCount = count; 1480f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba // write the settings in the non-UI thread 1481f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba mEventHandler.sendMessage(Message.obtain(null, 1482f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba EventHandler.SET_DOUBLE_TAP_TOAST_COUNT)); 1483f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 1484f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba } 1485f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba 148654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 148754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Transfer messages from the queue to the new WebCoreThread. Called from 148854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebCore thread. 148954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 149054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /*package*/ 149154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized void syncSettingsAndCreateHandler(BrowserFrame frame) { 149254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBrowserFrame = frame; 14932e5c150e746647a1ce5c10e1708debbf06c45ea7Derek Sollenberger if (DebugFlags.WEB_SETTINGS) { 149454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project junit.framework.Assert.assertTrue(frame.mNativeFrame != 0); 149554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1496dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu 1497f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba SharedPreferences sp = mContext.getSharedPreferences(PREF_FILE, 1498f8d8b46a2c684d51cd661a9d479dd895420a90b2Grace Kloba Context.MODE_PRIVATE); 149924a3ff958b87550904a71961835f6883d1411c27Grace Kloba if (mDoubleTapToastCount > 0) { 150024a3ff958b87550904a71961835f6883d1411c27Grace Kloba mDoubleTapToastCount = sp.getInt(DOUBLE_TAP_TOAST_COUNT, 150124a3ff958b87550904a71961835f6883d1411c27Grace Kloba mDoubleTapToastCount); 150224a3ff958b87550904a71961835f6883d1411c27Grace Kloba } 150354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(frame.mNativeFrame); 150454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 150554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.createHandler(); 150654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 150754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1508dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu /** 1509dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu * Let the Settings object know that our owner is being destroyed. 1510dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu */ 1511dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu /*package*/ 1512dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu synchronized void onDestroyed() { 1513dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu } 1514dee76be487fcdc975877f85221a693b87b9669a7Andrei Popescu 151554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int pin(int size) { 151654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // FIXME: 72 is just an arbitrary max text size value. 151754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (size < 1) { 151854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 151954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (size > 72) { 152054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 72; 152154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 152254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return size; 152354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 152454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 152554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Post a SYNC message to handle syncing the native settings. */ 152654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void postSync() { 152754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Only post if a sync is not pending 152854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!mSyncPending) { 152954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = mEventHandler.sendMessage( 153054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Message.obtain(null, EventHandler.SYNC)); 153154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 153254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 153354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 153454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Synchronize the native and java settings. 153554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private native void nativeSync(int nativeFrame); 153654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 1537