WebSettings.java revision 972acd0c339db4b6a72c307ae0a0b2b5405376db
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; 20972acd0c339db4b6a72c307ae0a0b2b5405376dbAndrei Popescuimport android.content.pm.PackageManager; 2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Build; 2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Handler; 2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Message; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.provider.Checkin; 25f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport java.lang.SecurityException; 2654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.util.Locale; 2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/** 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Manages settings state for a WebView. When a WebView is first created, it 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * obtains a set of default settings. These default settings will be returned 3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * from any getter call. A WebSettings object obtained from 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebView.getSettings() is tied to the life of the WebView. If a WebView has 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * been destroyed, any method call on WebSettings will throw an 3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * IllegalStateException. 3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpublic class WebSettings { 3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 3854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enum for controlling the layout of html. 3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NORMAL means no rendering changes. 4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SINGLE_COLUMN moves all content into one column that is the width of the 4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * view. 4254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NARROW_COLUMNS makes all columns no wider than the screen if possible. 4354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 4454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // XXX: These must match LayoutAlgorithm in Settings.h in WebCore. 4554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum LayoutAlgorithm { 4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL, 4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SINGLE_COLUMN, 4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NARROW_COLUMNS 4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 5254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enum for specifying the text size. 5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SMALLEST is 50% 5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * SMALLER is 75% 5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * NORMAL is 100% 5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * LARGER is 150% 5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * LARGEST is 200% 5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 5954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum TextSize { 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SMALLEST(50), 6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project SMALLER(75), 6254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL(100), 6354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LARGER(150), 6454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LARGEST(200); 6554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project TextSize(int size) { 6654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project value = size; 6754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 6854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int value; 6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 700d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 710d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 720d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Enum for specifying the WebView's desired density. 730d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * FAR makes 100% looking like in 240dpi 740d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * MEDIUM makes 100% looking like in 160dpi 750d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * CLOSE makes 100% looking like in 120dpi 760d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @hide Pending API council approval 770d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 780d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public enum ZoomDensity { 790d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba FAR(150), // 240dpi 800d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba MEDIUM(100), // 160dpi 810d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba CLOSE(75); // 120dpi 820d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba ZoomDensity(int size) { 830d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba value = size; 840d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 850d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba int value; 860d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 870d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 8854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Default cache usage pattern Use with {@link #setCacheMode}. 9054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_DEFAULT = -1; 9254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Normal cache usage pattern Use with {@link #setCacheMode}. 9554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_NORMAL = 0; 9754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use cache if content is there, even if expired (eg, history nav) 10054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * If it is not in the cache, load from network. 10154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 10254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_CACHE_ELSE_NETWORK = 1; 10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Don't use the cache, load from network 10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_NO_CACHE = 2; 11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 11254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Don't use the network, load from cache only. 11354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 11554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_CACHE_ONLY = 3; 11654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 11754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum RenderPriority { 11854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL, 11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project HIGH, 12054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LOW 12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1230d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba // WebView associated with this WebSettings. 1240d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba private WebView mWebView; 12554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // BrowserFrame used to access the native frame pointer. 12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private BrowserFrame mBrowserFrame; 12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Flag to prevent multiple SYNC messages at one time. 12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSyncPending = false; 12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Custom handler that queues messages until the WebCore thread is active. 13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private final EventHandler mEventHandler; 131adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Private settings so we don't have to go into native code to 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // retrieve the values. After setXXX, postSync() needs to be called. 134adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // 135adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // The default values need to match those in WebSettings.cpp 136adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // If the defaults change, please also update the JavaDocs so developers 137adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // know what they are. 13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private LayoutAlgorithm mLayoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS; 139f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private Context mContext; 14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private TextSize mTextSize = TextSize.NORMAL; 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mStandardFontFamily = "sans-serif"; 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFixedFontFamily = "monospace"; 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSansSerifFontFamily = "sans-serif"; 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSerifFontFamily = "serif"; 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mCursiveFontFamily = "cursive"; 14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFantasyFontFamily = "fantasy"; 147c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa private String mDefaultTextEncoding; 148f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mUserAgent; 149f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mUseDefaultUserAgent; 150f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mAcceptLanguage; 15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumFontSize = 8; 15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumLogicalFontSize = 8; 15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFontSize = 16; 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFixedFontSize = 13; 15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLoadsImagesAutomatically = true; 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mBlockNetworkImage = false; 157c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project private boolean mBlockNetworkLoads; 15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptEnabled = false; 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mPluginsEnabled = false; 16011e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard private long mWebStorageDefaultQuota = 0; 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptCanOpenWindowsAutomatically = false; 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseDoubleTree = false; 16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseWideViewport = false; 16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportMultipleWindows = false; 165f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mShrinksStandaloneImagesToFit = false; 16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Don't need to synchronize the get/set methods as they 16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // are basic types, also none of these values are used in 16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // native WebCore code. 1690d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba private ZoomDensity mDefaultZoom = ZoomDensity.MEDIUM; 17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private RenderPriority mRenderPriority = RenderPriority.NORMAL; 17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mOverrideCacheMode = LOAD_DEFAULT; 17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSaveFormData = true; 17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSavePassword = true; 17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLightTouchEnabled = false; 17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNeedInitialFocus = true; 17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNavDump = false; 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportZoom = true; 178105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project private boolean mBuiltInZoomControls = false; 179f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mAllowFileAccess = true; 1807df1985e86635af006be3dfa65987d60e290b5deBen Murdoch private String mDatabasePath = ""; 1817df1985e86635af006be3dfa65987d60e290b5deBen Murdoch private boolean mDatabaseEnabled = false; 18260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu private String mAppCachePath = ""; 18360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu private boolean mAppCacheEnabled = false; 184274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch private boolean mDomStorageEnabled = false; 18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Class to handle messages before WebCore is ready. 18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private class EventHandler { 18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for syncing 18954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int SYNC = 0; 19054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for setting priority 19154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int PRIORITY = 1; 19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Actual WebCore thread handler 19354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Handler mHandler; 19454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void createHandler() { 19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // as mRenderPriority can be set before thread is running, sync up 19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // create a new handler 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler = new Handler() { 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void handleMessage(Message msg) { 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project switch (msg.what) { 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case SYNC: 20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBrowserFrame.mNativeFrame != 0) { 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(mBrowserFrame.mNativeFrame); 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PRIORITY: { 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project }; 22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void setRenderPriority() { 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority == RenderPriority.NORMAL) { 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_DEFAULT); 22754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.HIGH) { 22854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_FOREGROUND + 23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE); 23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.LOW) { 23254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 23354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_BACKGROUND); 23454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 23554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 23654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 23754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 23954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Send a message to the private queue or handler. 24054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 24154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized boolean sendMessage(Message msg) { 24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mHandler != null) { 24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler.sendMessage(msg); 24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return true; 24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return false; 24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // User agent strings. 25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String DESKTOP_USERAGENT = 253b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us)" 254b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0" 255b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " Safari/530.17"; 256f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static final String IPHONE_USERAGENT = 257b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us)" 258b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0" 259b4f33445b8106f550ade837362c678cf9de2ecd2Grace Kloba + " Mobile/7A341 Safari/528.16"; 260f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Locale sLocale; 261f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Object sLockForLocaleSettings; 262f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 26354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Package constructor to prevent clients from creating a new settings 26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * instance. 26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 2670d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba WebSettings(Context context, WebView webview) { 268f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mEventHandler = new EventHandler(); 269f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mContext = context; 2700d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mWebView = webview; 271c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa mDefaultTextEncoding = context.getString(com.android.internal. 272c27d9b5341b29c1b58c882f0a04b4c519d8a9853Daisuke Miyakawa R.string.default_text_encoding); 273f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 274f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (sLockForLocaleSettings == null) { 275f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLockForLocaleSettings = new Object(); 276f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = Locale.getDefault(); 277f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 278f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 279f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 280f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 281f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 282c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project mBlockNetworkLoads = mContext.checkPermission( 283c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project "android.permission.INTERNET", android.os.Process.myPid(), 284c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project android.os.Process.myUid()) != PackageManager.PERMISSION_GRANTED; 285f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 286f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 287f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 288f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and returns current AcceptLanguage String. 289f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current AcceptLanguage String. 290f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 291f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String getCurrentAcceptLanguage() { 292f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 293f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 294f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 295f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 296f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project StringBuffer buffer = new StringBuffer(); 297f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String language = locale.getLanguage(); 298f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (language != null) { 299f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(language); 300f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = locale.getCountry(); 301f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (country != null) { 302f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 303f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country); 30454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 305f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 306f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!locale.equals(Locale.US)) { 307f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(", "); 308f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project java.util.Locale us = Locale.US; 309f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (us.getLanguage() != null) { 310f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(us.getLanguage()); 311f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = us.getCountry(); 31254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (country != null) { 313f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 314f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country); 31554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 31654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 317f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 318f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 319f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return buffer.toString(); 320f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 321f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 322f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 323f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and mContext and returns current UserAgent String. 324f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current UserAgent String. 325f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 326f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private synchronized String getCurrentUserAgent() { 327f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 328f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 329f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 330f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 331f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project StringBuffer buffer = new StringBuffer(); 332f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Add version 333f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String version = Build.VERSION.RELEASE; 334f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (version.length() > 0) { 335f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(version); 336f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 337f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "1.0" 338f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("1.0"); 339f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 340f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("; "); 341f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String language = locale.getLanguage(); 342f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (language != null) { 343f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(language.toLowerCase()); 344f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = locale.getCountry(); 345f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (country != null) { 346f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 347f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country.toLowerCase()); 34854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 349f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 350f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "en" 351f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("en"); 35254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 353f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final String model = Build.MODEL; 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (model.length() > 0) { 356f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("; "); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer.append(model); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final String id = Build.ID; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (id.length() > 0) { 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer.append(" Build/"); 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer.append(id); 363f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 364f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String base = mContext.getResources().getText( 365f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project com.android.internal.R.string.web_user_agent).toString(); 366f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return String.format(base, buffer); 36754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 368f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 36954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 37054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables dumping the pages navigation cache to a text file. 37154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 37254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNavDump(boolean enabled) { 37354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNavDump = enabled; 37454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 37554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 37654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 37754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if dumping the navigation cache is enabled. 37854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 37954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getNavDump() { 38054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNavDump; 38154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 38254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 38354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 38454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set whether the WebView supports zoom 38554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 38654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSupportZoom(boolean support) { 38754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportZoom = support; 38854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 38954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 39054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 39154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns whether the WebView supports zoom 39254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 39354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean supportZoom() { 39454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportZoom; 39554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 39654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 39754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 398105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project * Sets whether the zoom mechanism built into WebView is used. 399105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project */ 400105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project public void setBuiltInZoomControls(boolean enabled) { 401105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project mBuiltInZoomControls = enabled; 402105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project } 403105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 404105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project /** 405105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project * Returns true if the zoom mechanism built into WebView is being used. 406105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project */ 407105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project public boolean getBuiltInZoomControls() { 408105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project return mBuiltInZoomControls; 409105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project } 410105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project 411105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project /** 412f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Enable or disable file access within WebView. File access is enabled by 413f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * default. 414f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 415f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setAllowFileAccess(boolean allow) { 416f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAllowFileAccess = allow; 417f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 418f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 419f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 420f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Returns true if this WebView supports file access. 421f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 422f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public boolean getAllowFileAccess() { 423f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAllowFileAccess; 424f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 425f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 426f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 42754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving form data. 42854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 42954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSaveFormData(boolean save) { 43054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSaveFormData = save; 43154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 43254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 43454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving form data. 43554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 43654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSaveFormData() { 43754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSaveFormData; 43854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 43954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 44054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 44154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving password. 44254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 44354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSavePassword(boolean save) { 44454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSavePassword = save; 44554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 44654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 44754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 44854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving password. 44954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 45054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSavePassword() { 45154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSavePassword; 45254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 45354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 45554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the text size of the page. 45654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param t A TextSize value for increasing or decreasing the text. 45754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 45854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 45954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setTextSize(TextSize t) { 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (WebView.mLogEvent && mTextSize != t ) { 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Checkin.updateStats(mContext.getContentResolver(), 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Checkin.Stats.Tag.BROWSER_TEXT_SIZE_CHANGE, 1, 0.0); 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 46454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mTextSize = t; 46554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 46654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 46754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 46854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 46954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the text size of the page. 47054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A TextSize enum value describing the text size. 47154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 47254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 47354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized TextSize getTextSize() { 47454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mTextSize; 47554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 47654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 47754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 4780d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Set the default zoom density of the page. This should be called from UI 4790d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * thread. 4800d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @param zoom A ZoomDensity value 4810d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @see WebSettings.ZoomDensity 4820d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @hide Pending API council approval 4830d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 4840d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public void setDefaultZoom(ZoomDensity zoom) { 4850d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba if (mDefaultZoom != zoom) { 4860d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mDefaultZoom = zoom; 4870d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba mWebView.updateDefaultZoomDensity(zoom.value); 4880d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 4890d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 4900d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 4910d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 4920d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * Get the default zoom density of the page. This should be called from UI 4930d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * thread. 4940d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @return A ZoomDensity value 4950d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @see WebSettings.ZoomDensity 4960d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba * @hide Pending API council approval 4970d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba */ 4980d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba public ZoomDensity getDefaultZoom() { 4990d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba return mDefaultZoom; 5000d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba } 5010d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba 5020d8b77c2453d0e597f94e39212e4bfeed8affffaGrace Kloba /** 50354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables using light touches to make a selection and activate mouseovers. 50454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 50554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setLightTouchEnabled(boolean enabled) { 50654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLightTouchEnabled = enabled; 50754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 50854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 50954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 51054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if light touches are enabled. 51154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 51254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getLightTouchEnabled() { 51354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLightTouchEnabled; 51454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 51554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 517adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 518adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 51954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 520adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 52154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseDoubleTree(boolean use) { 522adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return; 52354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 52454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 52554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 526adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 527adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 52854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 529adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 53054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseDoubleTree() { 531adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return false; 53254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 53354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 53454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 53554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView about user-agent string. 53654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param ua 0 if the WebView should use an Android user-agent string, 53754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView should use a desktop user-agent string. 538f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 539f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use setUserAgentString instead. 54054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 541f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 54254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUserAgent(int ua) { 543f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String uaString = null; 544f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == 1) { 545f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 546f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 547f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 548f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = DESKTOP_USERAGENT; 549f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 550f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua == 2) { 551f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (IPHONE_USERAGENT.equals(mUserAgent)) { 552f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 553f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 554f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = IPHONE_USERAGENT; 555f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 556f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua != 0) { 557f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 559f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project setUserAgentString(uaString); 56054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 56154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 56354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return user-agent as int 56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return int 0 if the WebView is using an Android user-agent string. 56554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView is using a desktop user-agent string. 566f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * -1 if the WebView is using user defined user-agent string. 567f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 568f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use getUserAgentString instead. 56954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 570f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getUserAgent() { 57254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 57454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (IPHONE_USERAGENT.equals(mUserAgent)) { 57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 2; 576f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (mUseDefaultUserAgent) { 577f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return 0; 57854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 579f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return -1; 58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 58154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 58254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to use the wide viewport 58454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 58554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseWideViewPort(boolean use) { 58654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mUseWideViewport != use) { 58754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mUseWideViewport = use; 58854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 58954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 59054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 59154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 59354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is using a wide viewport 59454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 59554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseWideViewPort() { 59654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUseWideViewport; 59754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 59854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 60054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it supports multiple windows. TRUE means 60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 60254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 60354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 60454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSupportMultipleWindows(boolean support) { 60554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mSupportMultipleWindows != support) { 60654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportMultipleWindows = support; 60754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 60854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 60954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 61054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 61154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 61254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is supporting multiple windows. This means 61354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 61454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 61554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 61654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean supportMultipleWindows() { 61754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportMultipleWindows; 61854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 61954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 62154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the underlying layout algorithm. This will cause a relayout of the 62254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebView. 62354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param l A LayoutAlgorithm enum specifying the algorithm to use. 62454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 62554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) { 62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // XXX: This will only be affective if libwebcore was built with 62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // ANDROID_LAYOUT defined. 62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLayoutAlgorithm != l) { 63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLayoutAlgorithm = l; 63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 636adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return the current layout algorithm. The default is NARROW_COLUMNS. 63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return LayoutAlgorithm enum value describing the layout algorithm 63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * being used. 63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 64054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 64154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized LayoutAlgorithm getLayoutAlgorithm() { 64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLayoutAlgorithm; 64354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 64554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the standard font family name. 64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 64954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setStandardFontFamily(String font) { 65054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mStandardFontFamily)) { 65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mStandardFontFamily = font; 65254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 657adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the standard font family name. The default is "sans-serif". 65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The standard font family name as a string. 65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getStandardFontFamily() { 66154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mStandardFontFamily; 66254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fixed font family name. 66654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 66754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 66854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFixedFontFamily(String font) { 66954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFixedFontFamily)) { 67054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFixedFontFamily = font; 67154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 67254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 67554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 676adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fixed font family name. The default is "monospace". 67754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fixed font family name as a string. 67854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 67954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFixedFontFamily() { 68054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFixedFontFamily; 68154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 68254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 68354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 68454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the sans-serif font family name. 68554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 68654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 68754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSansSerifFontFamily(String font) { 68854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSansSerifFontFamily)) { 68954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSansSerifFontFamily = font; 69054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 69154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 69254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 69354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 69454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 69554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the sans-serif font family name. 69654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The sans-serif font family name as a string. 69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSansSerifFontFamily() { 69954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSansSerifFontFamily; 70054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 70254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 703adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Set the serif font family name. The default is "sans-serif". 70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSerifFontFamily(String font) { 70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSerifFontFamily)) { 70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSerifFontFamily = font; 70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 714adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the serif font family name. The default is "serif". 71554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The serif font family name as a string. 71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSerifFontFamily() { 71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSerifFontFamily; 71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the cursive font family name. 72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setCursiveFontFamily(String font) { 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mCursiveFontFamily)) { 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mCursiveFontFamily = font; 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 733adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the cursive font family name. The default is "cursive". 73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The cursive font family name as a string. 73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 73654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getCursiveFontFamily() { 73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mCursiveFontFamily; 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fantasy font family name. 74254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFantasyFontFamily(String font) { 74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFantasyFontFamily)) { 74654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFantasyFontFamily = font; 74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 752adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fantasy font family name. The default is "fantasy". 75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fantasy font family name as a string. 75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFantasyFontFamily() { 75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFantasyFontFamily; 75754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum font size. 76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 76254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumFontSize(int size) { 76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumFontSize != size) { 76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumFontSize = size; 76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 773adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum font size. The default is 8. 77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumFontSize() { 77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumFontSize; 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum logical font size. 78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumLogicalFontSize(int size) { 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumLogicalFontSize != size) { 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumLogicalFontSize = size; 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 794adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum logical font size. The default is 8. 79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 79754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumLogicalFontSize() { 79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumLogicalFontSize; 79954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default font size. 80354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 80454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 80554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 80654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFontSize(int size) { 80754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 80854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFontSize != size) { 80954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFontSize = size; 81054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 81154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 815adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default font size. The default is 16. 81654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 81754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 81854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFontSize() { 81954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFontSize; 82054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default fixed font size. 82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 82754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFixedFontSize(int size) { 82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFixedFontSize != size) { 83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFixedFontSize = size; 83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 836adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default fixed font size. The default is 16. 83754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFixedFontSize() { 84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFixedFontSize; 84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to load image resources automatically. 84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load images automatically. 84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLoadsImagesAutomatically(boolean flag) { 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLoadsImagesAutomatically != flag) { 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLoadsImagesAutomatically = flag; 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if the WebView will load image resources automatically. 856adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * The default is true. 85754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView loads images automatically. 85854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getLoadsImagesAutomatically() { 86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLoadsImagesAutomatically; 86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 86254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 86454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to block network image. This is only checked when 86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * getLoadsImagesAutomatically() is true. 86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should block network image 86754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 86854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setBlockNetworkImage(boolean flag) { 86954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBlockNetworkImage != flag) { 87054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBlockNetworkImage = flag; 87154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 87254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 87554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 876adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if the WebView will block network image. The default is false. 87754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView blocks network image. 87854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getBlockNetworkImage() { 88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mBlockNetworkImage; 88154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 882adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 883f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 884f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @hide 885adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Tell the WebView to block all network load requests. 886f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @param flag True if the WebView should block all network loads 887f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 888f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setBlockNetworkLoads(boolean flag) { 889f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mBlockNetworkLoads != flag) { 890f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mBlockNetworkLoads = flag; 891f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project verifyNetworkAccess(); 892f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 893f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 894f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 895f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 896f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @hide 897f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Return true if the WebView will block all network loads. 898adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * The default is false. 899f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return True if the WebView blocks all network loads. 900f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 901f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized boolean getBlockNetworkLoads() { 902f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mBlockNetworkLoads; 903f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 904adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 905adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 906f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void verifyNetworkAccess() { 907f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!mBlockNetworkLoads) { 908f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mContext.checkPermission("android.permission.INTERNET", 909c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project android.os.Process.myPid(), android.os.Process.myUid()) != 910f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project PackageManager.PERMISSION_GRANTED) { 911f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new SecurityException 912f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ("Permission denied - " + 913f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "application missing INTERNET permission"); 914f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 915f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 916f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 91754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 91854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 91954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable javascript execution. 92054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should execute javascript. 92154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 92254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptEnabled(boolean flag) { 92354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptEnabled != flag) { 92454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptEnabled = flag; 92554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 92654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 92754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 92854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 92954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 93054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable plugins. 93154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load plugins. 93254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 93354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsEnabled(boolean flag) { 93454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mPluginsEnabled != flag) { 93554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mPluginsEnabled = flag; 93654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 93754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 93854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 93954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 94054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 941658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba * TODO: need to add @Deprecated 94254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 94354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsPath(String pluginsPath) { 94454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 94554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 94654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 94711e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard * @hide 94811e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard * Set the default quota for WebStorage DBs 94911e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard * @param quota the default quota in bytes 95011e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard */ 95111e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard public synchronized void setWebStorageDefaultQuota(long quota) { 95211e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard if (mWebStorageDefaultQuota != quota) { 95311e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard mWebStorageDefaultQuota = quota; 95411e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard postSync(); 95511e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard } 95611e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard } 95711e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard 95811e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard /** 9597df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Set the path to where database storage API databases should be saved. 9607df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * This will update WebCore when the Sync runs in the C++ side. 9617df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @param databasePath String path to the directory where databases should 9627df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * be saved. May be the empty string but should never be null. 9637df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 9647df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized void setDatabasePath(String databasePath) { 9657df1985e86635af006be3dfa65987d60e290b5deBen Murdoch if (databasePath != null && !databasePath.equals(mDatabasePath)) { 9667df1985e86635af006be3dfa65987d60e290b5deBen Murdoch mDatabasePath = databasePath; 9677df1985e86635af006be3dfa65987d60e290b5deBen Murdoch postSync(); 9687df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 9697df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 9707df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 9717df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 97260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Tell the WebView to enable Application Caches API. 97360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @param flag True if the WebView should enable Application Caches. 97460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @hide pending api council approval 97560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu */ 97660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu public synchronized void setAppCacheEnabled(boolean flag) { 97760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu if (mAppCacheEnabled != flag) { 97860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu mAppCacheEnabled = flag; 97960a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu postSync(); 98060a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 98160a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 98260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu 98360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu /** 98460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Set a custom path to the Application Caches files. The client 98560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * must ensure it exists before this call. 98660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @param appCachePath String path to the directory containing Application 98760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * Caches files. The appCache path can be the empty string but should not 98860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * be null. Passing null for this parameter will result in a no-op. 98960a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu * @hide pending api council approval 99060a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu */ 99160a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu public synchronized void setAppCachePath(String appCachePath) { 99260a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu if (appCachePath != null && !appCachePath.equals(mAppCachePath)) { 99360a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu mAppCachePath = appCachePath; 99460a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu postSync(); 99560a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 99660a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu } 99760a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu 99860a9a7d05577a65c8904fcb5f32b6a7a10886a13Andrei Popescu /** 9997df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Set whether the database storage API is enabled. 10007df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @param flag boolean True if the WebView should use the database storage 10017df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * API. 10027df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 10037df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized void setDatabaseEnabled(boolean flag) { 10047df1985e86635af006be3dfa65987d60e290b5deBen Murdoch if (mDatabaseEnabled != flag) { 10057df1985e86635af006be3dfa65987d60e290b5deBen Murdoch mDatabaseEnabled = flag; 10067df1985e86635af006be3dfa65987d60e290b5deBen Murdoch postSync(); 10077df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10087df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10097df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 10107df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 1011274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * Set whether the DOM storage API is enabled. 1012274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @param flag boolean True if the WebView should use the DOM storage 1013274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * API. 1014274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @hide pending API council. 1015274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch */ 1016274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch public synchronized void setDomStorageEnabled(boolean flag) { 1017274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch if (mDomStorageEnabled != flag) { 1018274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch mDomStorageEnabled = flag; 1019274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch postSync(); 1020274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1021274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1022274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch 1023274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch /** 1024274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * Returns true if the DOM Storage API's are enabled. 1025274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @return True if the DOM Storage API's are enabled. 1026274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch * @hide pending API council. 1027274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch */ 1028274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch public synchronized boolean getDomStorageEnabled() { 1029274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch return mDomStorageEnabled; 1030274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch } 1031274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch 1032274680d9b8fce08f31c23dda796ecec937c942deBen Murdoch /** 10337df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Return the path to where database storage API databases are saved for 10347df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * the current WebView. 10357df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @return the String path to the database storage API databases. 10367df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 10377df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized String getDatabasePath() { 10387df1985e86635af006be3dfa65987d60e290b5deBen Murdoch return mDatabasePath; 10397df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10407df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 10417df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 10427df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * Returns true if database storage API is enabled. 10437df1985e86635af006be3dfa65987d60e290b5deBen Murdoch * @return True if the database storage API is enabled. 10447df1985e86635af006be3dfa65987d60e290b5deBen Murdoch */ 10457df1985e86635af006be3dfa65987d60e290b5deBen Murdoch public synchronized boolean getDatabaseEnabled() { 10467df1985e86635af006be3dfa65987d60e290b5deBen Murdoch return mDatabaseEnabled; 10477df1985e86635af006be3dfa65987d60e290b5deBen Murdoch } 10487df1985e86635af006be3dfa65987d60e290b5deBen Murdoch 10497df1985e86635af006be3dfa65987d60e290b5deBen Murdoch /** 1050adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript is enabled. <b>Note: The default is false.</b> 105154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript is enabled. 105254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 105354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptEnabled() { 105454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptEnabled; 105554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 105654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 105754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 105854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if plugins are enabled. 105954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if plugins are enabled. 106054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 106154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getPluginsEnabled() { 106254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mPluginsEnabled; 106354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 106454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 106554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1066658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba * TODO: need to add @Deprecated 106754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 106854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getPluginsPath() { 1069658ab7d787f64987d7c45aae08e5a12a073afe78Grace Kloba return ""; 107054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 107154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 107254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 107311e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard * @hide 107411e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard * Return the default quota for WebStorage DBs 107511e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard * @return the default quota in bytes 107611e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard */ 107711e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard public synchronized long getWebStorageDefaultQuota() { 107811e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard return mWebStorageDefaultQuota; 107911e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard } 108011e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard 108111e8fe5a7208c9cd6afc2a0373761ae506d7707fNicolas Roard /** 108254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell javascript to open windows automatically. This applies to the 108354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * javascript function window.open(). 108454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if javascript can open windows automatically. 108554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 108654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptCanOpenWindowsAutomatically( 108754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project boolean flag) { 108854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptCanOpenWindowsAutomatically != flag) { 108954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptCanOpenWindowsAutomatically = flag; 109054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 109154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 109254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 109354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 109454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1095adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript can open windows automatically. The default 1096adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * is false. 109754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript can open windows automatically during 109854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * window.open(). 109954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 110054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() { 110154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptCanOpenWindowsAutomatically; 110254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 110354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 110454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 110554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default text encoding name to use when decoding html pages. 110654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param encoding The text encoding name. 110754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 110854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultTextEncodingName(String encoding) { 110954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (encoding != null && !encoding.equals(mDefaultTextEncoding)) { 111054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultTextEncoding = encoding; 111154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 111254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 111354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 111454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 111554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 1116adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default text encoding name. The default is "Latin-1". 111754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The default text encoding name as a string. 111854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 111954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getDefaultTextEncodingName() { 112054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultTextEncoding; 112154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 112254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1123f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1124f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Set the WebView's user-agent string. If the string "ua" is null or empty, 1125f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * it will use the system default user-agent string. 1126f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1127f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setUserAgentString(String ua) { 1128f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == null || ua.length() == 0) { 1129f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1130f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1131f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1132f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1133f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1134f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1135f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1136f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ua = getCurrentUserAgent(); 1137f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 1138f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 1139f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = false; 1140f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1141f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1142f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!ua.equals(mUserAgent)) { 1143f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = ua; 1144f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1145f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1146f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1147f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1148f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1149f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Return the WebView's user-agent string. 1150f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1151f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized String getUserAgentString() { 1152f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent) || 1153f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project IPHONE_USERAGENT.equals(mUserAgent) || 1154f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project !mUseDefaultUserAgent) { 1155f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mUserAgent; 1156f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1157f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1158f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project boolean doPostSync = false; 1159f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1160f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1161f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1162f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1163f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 1164f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1165f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project doPostSync = true; 1166f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1167f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1168f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (doPostSync) { 1169f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1170f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 117154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUserAgent; 117254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 117354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1174f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /* package api to grab the Accept Language string. */ 1175f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /*package*/ synchronized String getAcceptLanguage() { 1176f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 1177f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 1178f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 1179f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 1180f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 1181f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1182f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1183f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAcceptLanguage; 1184f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1185f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 118654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 118754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it needs to set a node to have focus when 118854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link WebView#requestFocus(int, android.graphics.Rect)} is called. 118954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 119054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag 119154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 119254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNeedInitialFocus(boolean flag) { 119354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mNeedInitialFocus != flag) { 119454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNeedInitialFocus = flag; 119554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 119654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 119754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 119854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Package api to get the choice whether it needs to set initial focus. */ 119954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* package */ boolean getNeedInitialFocus() { 120054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNeedInitialFocus; 120154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 120254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 120354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 120454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the priority of the Render thread. Unlike the other settings, this 1205adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * one only needs to be called once per process. The default is NORMAL. 1206adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * 120754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param priority RenderPriority, can be normal, high or low. 120854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 120954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setRenderPriority(RenderPriority priority) { 121054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority != priority) { 121154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mRenderPriority = priority; 121254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.sendMessage(Message.obtain(null, 121354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project EventHandler.PRIORITY)); 121454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 121554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 121654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 121754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 121854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Override the way the cache is used. The way the cache is used is based 121954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * on the navigation option. For a normal page load, the cache is checked 122054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * and content is re-validated as needed. When navigating back, content is 122154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * not revalidated, instead the content is just pulled from the cache. 122254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This function allows the client to override this behavior. 122354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param mode One of the LOAD_ values. 122454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 122554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setCacheMode(int mode) { 122654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mode != mOverrideCacheMode) { 122754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mOverrideCacheMode = mode; 122854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 122954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 123054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 123154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 123254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return the current setting for overriding the cache mode. For a full 123354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * description, see the {@link #setCacheMode(int)} function. 123454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 123554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public int getCacheMode() { 123654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mOverrideCacheMode; 123754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1238f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1239f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1240f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * If set, webkit alternately shrinks and expands images viewed outside 1241f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * of an HTML page to fit the screen. This conflicts with attempts by 1242f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * the UI to zoom in and out of an image, so it is set false by default. 1243f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @param shrink Set true to let webkit shrink the standalone image to fit. 1244f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * {@hide} 1245f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1246f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setShrinksStandaloneImagesToFit(boolean shrink) { 1247f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mShrinksStandaloneImagesToFit != shrink) { 1248f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mShrinksStandaloneImagesToFit = shrink; 1249f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1250f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1251f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 125254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 125354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 125454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Transfer messages from the queue to the new WebCoreThread. Called from 125554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebCore thread. 125654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 125754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /*package*/ 125854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized void syncSettingsAndCreateHandler(BrowserFrame frame) { 125954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBrowserFrame = frame; 12602e5c150e746647a1ce5c10e1708debbf06c45ea7Derek Sollenberger if (DebugFlags.WEB_SETTINGS) { 126154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project junit.framework.Assert.assertTrue(frame.mNativeFrame != 0); 126254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 126354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(frame.mNativeFrame); 126454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 126554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.createHandler(); 126654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 126754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 126854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int pin(int size) { 126954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // FIXME: 72 is just an arbitrary max text size value. 127054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (size < 1) { 127154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 127254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (size > 72) { 127354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 72; 127454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 127554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return size; 127654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 127754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 127854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Post a SYNC message to handle syncing the native settings. */ 127954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void postSync() { 128054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Only post if a sync is not pending 128154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!mSyncPending) { 128254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = mEventHandler.sendMessage( 128354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Message.obtain(null, EventHandler.SYNC)); 128454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 128554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 128654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 128754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Synchronize the native and java settings. 128854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private native void nativeSync(int nativeFrame); 128954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 1290