WebSettings.java revision adcd2ed8d24deddee528e96260d0ed673eeb261c
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; 2054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Build; 2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Handler; 2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.Message; 23f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport java.lang.SecurityException; 24f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport android.content.pm.PackageManager; 2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 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 } 7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 7154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 7254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Default cache usage pattern Use with {@link #setCacheMode}. 7354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 7454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_DEFAULT = -1; 7554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 7654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 7754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Normal cache usage pattern Use with {@link #setCacheMode}. 7854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 7954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_NORMAL = 0; 8054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 8154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 8254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use cache if content is there, even if expired (eg, history nav) 8354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * If it is not in the cache, load from network. 8454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 8654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_CACHE_ELSE_NETWORK = 1; 8754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 8854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Don't use the cache, load from network 9054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 9154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_NO_CACHE = 2; 9354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Don't use the network, load from cache only. 9654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Use with {@link #setCacheMode}. 9754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int LOAD_CACHE_ONLY = 3; 9954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 10054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public enum RenderPriority { 10154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project NORMAL, 10254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project HIGH, 10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LOW 10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // BrowserFrame used to access the native frame pointer. 10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private BrowserFrame mBrowserFrame; 10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Flag to prevent multiple SYNC messages at one time. 10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSyncPending = false; 11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Custom handler that queues messages until the WebCore thread is active. 11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private final EventHandler mEventHandler; 112adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 11354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Private settings so we don't have to go into native code to 11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // retrieve the values. After setXXX, postSync() needs to be called. 115adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // 116adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // The default values need to match those in WebSettings.cpp 117adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // If the defaults change, please also update the JavaDocs so developers 118adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn // know what they are. 11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private LayoutAlgorithm mLayoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS; 120f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private Context mContext; 12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private TextSize mTextSize = TextSize.NORMAL; 12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mStandardFontFamily = "sans-serif"; 12354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFixedFontFamily = "monospace"; 12454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSansSerifFontFamily = "sans-serif"; 12554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mSerifFontFamily = "serif"; 12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mCursiveFontFamily = "cursive"; 12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mFantasyFontFamily = "fantasy"; 12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mDefaultTextEncoding = "Latin-1"; 129f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mUserAgent; 130f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mUseDefaultUserAgent; 131f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String mAcceptLanguage; 13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private String mPluginsPath = ""; 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumFontSize = 8; 13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mMinimumLogicalFontSize = 8; 13554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFontSize = 16; 13654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mDefaultFixedFontSize = 13; 13754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLoadsImagesAutomatically = true; 13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mBlockNetworkImage = false; 139f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mBlockNetworkLoads = false; 14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptEnabled = false; 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mPluginsEnabled = false; 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mJavaScriptCanOpenWindowsAutomatically = false; 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseDoubleTree = false; 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mUseWideViewport = false; 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportMultipleWindows = false; 146f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mShrinksStandaloneImagesToFit = false; 14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Don't need to synchronize the get/set methods as they 14854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // are basic types, also none of these values are used in 14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // native WebCore code. 15054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private RenderPriority mRenderPriority = RenderPriority.NORMAL; 15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int mOverrideCacheMode = LOAD_DEFAULT; 15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSaveFormData = true; 15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSavePassword = true; 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mLightTouchEnabled = false; 15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNeedInitialFocus = true; 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mNavDump = false; 15754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private boolean mSupportZoom = true; 158f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private boolean mAllowFileAccess = true; 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Class to handle messages before WebCore is ready. 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private class EventHandler { 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for syncing 16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int SYNC = 0; 16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Message id for setting priority 16554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project static final int PRIORITY = 1; 16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Actual WebCore thread handler 16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Handler mHandler; 16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 16954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void createHandler() { 17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // as mRenderPriority can be set before thread is running, sync up 17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // create a new handler 17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler = new Handler() { 17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void handleMessage(Message msg) { 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project switch (msg.what) { 17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case SYNC: 17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBrowserFrame.mNativeFrame != 0) { 18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(mBrowserFrame.mNativeFrame); 18254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PRIORITY: { 18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project setRenderPriority(); 18954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 19054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 19154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 19354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project }; 19454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 19554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void setRenderPriority() { 19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized (WebSettings.this) { 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority == RenderPriority.NORMAL) { 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_DEFAULT); 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.HIGH) { 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_FOREGROUND + 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE); 20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (mRenderPriority == RenderPriority.LOW) { 20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.setThreadPriority( 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project android.os.Process.THREAD_PRIORITY_BACKGROUND); 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Send a message to the private queue or handler. 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized boolean sendMessage(Message msg) { 21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mHandler != null) { 21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mHandler.sendMessage(msg); 21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return true; 21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return false; 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // User agent strings. 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String DESKTOP_USERAGENT = 227f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en)" 228f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2" 229f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " Safari/525.20.1"; 230f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static final String IPHONE_USERAGENT = 231f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Mozilla/5.0 (iPhone; U; CPU iPhone 2_1 like Mac OS X; en)" 232f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2" 233f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " Mobile/5F136 Safari/525.20.1"; 234f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Locale sLocale; 235f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static Object sLockForLocaleSettings; 236f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 23754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 23854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Package constructor to prevent clients from creating a new settings 23954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * instance. 24054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 241f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project WebSettings(Context context) { 242f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mEventHandler = new EventHandler(); 243f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mContext = context; 244f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 245f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (sLockForLocaleSettings == null) { 246f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLockForLocaleSettings = new Object(); 247f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = Locale.getDefault(); 248f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 249f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 250f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 251f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 252f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 253f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project verifyNetworkAccess(); 254f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 255f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 256f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 257f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and returns current AcceptLanguage String. 258f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current AcceptLanguage String. 259f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 260f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private String getCurrentAcceptLanguage() { 261f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 262f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 263f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 264f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 265f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project StringBuffer buffer = new StringBuffer(); 266f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String language = locale.getLanguage(); 267f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (language != null) { 268f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(language); 269f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = locale.getCountry(); 270f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (country != null) { 271f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 272f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country); 27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 274f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 275f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!locale.equals(Locale.US)) { 276f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(", "); 277f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project java.util.Locale us = Locale.US; 278f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (us.getLanguage() != null) { 279f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(us.getLanguage()); 280f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = us.getCountry(); 28154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (country != null) { 282f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 283f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country); 28454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 28554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 286f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 287f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 288f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return buffer.toString(); 289f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 290f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 291f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 292f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Looks at sLocale and mContext and returns current UserAgent String. 293f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return Current UserAgent String. 294f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 295f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private synchronized String getCurrentUserAgent() { 296f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale locale; 297f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 298f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project locale = sLocale; 299f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 300f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project StringBuffer buffer = new StringBuffer(); 301f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Add version 302f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String version = Build.VERSION.RELEASE; 303f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (version.length() > 0) { 304f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(version); 305f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 306f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "1.0" 307f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("1.0"); 308f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 309f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("; "); 310f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String language = locale.getLanguage(); 311f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (language != null) { 312f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(language.toLowerCase()); 313f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String country = locale.getCountry(); 314f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (country != null) { 315f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("-"); 316f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(country.toLowerCase()); 31754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 318f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 319f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // default to "en" 320f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("en"); 32154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 322f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 323f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String device = Build.DEVICE; 324f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (device.length() > 0) { 325f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append("; "); 326f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project buffer.append(device); 327f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 328f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project final String base = mContext.getResources().getText( 329f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project com.android.internal.R.string.web_user_agent).toString(); 330f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return String.format(base, buffer); 33154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 332f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 33354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 33454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables dumping the pages navigation cache to a text file. 33554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 33654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNavDump(boolean enabled) { 33754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNavDump = enabled; 33854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 33954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 34054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 34154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if dumping the navigation cache is enabled. 34254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 34354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getNavDump() { 34454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNavDump; 34554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 34654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 34754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 34854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set whether the WebView supports zoom 34954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 35054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSupportZoom(boolean support) { 35154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportZoom = support; 35254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 35354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 35454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 35554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns whether the WebView supports zoom 35654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 35754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean supportZoom() { 35854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportZoom; 35954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 36054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 36154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 362f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Enable or disable file access within WebView. File access is enabled by 363f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * default. 364f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 365f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setAllowFileAccess(boolean allow) { 366f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAllowFileAccess = allow; 367f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 368f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 369f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 370f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Returns true if this WebView supports file access. 371f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 372f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public boolean getAllowFileAccess() { 373f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAllowFileAccess; 374f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 375f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 376f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 37754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving form data. 37854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 37954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSaveFormData(boolean save) { 38054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSaveFormData = save; 38154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 38254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 38354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 38454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving form data. 38554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 38654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSaveFormData() { 38754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSaveFormData; 38854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 38954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 39054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 39154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Store whether the WebView is saving password. 39254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 39354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setSavePassword(boolean save) { 39454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSavePassword = save; 39554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 39654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 39754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 39854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return whether the WebView is saving password. 39954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 40054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getSavePassword() { 40154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSavePassword; 40254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 40354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 40454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 40554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the text size of the page. 40654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param t A TextSize value for increasing or decreasing the text. 40754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 40854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 40954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setTextSize(TextSize t) { 41054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mTextSize = t; 41154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 41254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 41354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 41454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 41554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the text size of the page. 41654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A TextSize enum value describing the text size. 41754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.TextSize 41854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 41954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized TextSize getTextSize() { 42054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mTextSize; 42154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 42254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 42354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 42454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Enables using light touches to make a selection and activate mouseovers. 42554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 42654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setLightTouchEnabled(boolean enabled) { 42754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLightTouchEnabled = enabled; 42854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 42954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 43154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Returns true if light touches are enabled. 43254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 43354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public boolean getLightTouchEnabled() { 43454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLightTouchEnabled; 43554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 43654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 438adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 439adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 44054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 441adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 44254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseDoubleTree(boolean use) { 443adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return; 44454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 44554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 44654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 447adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * @deprecated This setting controlled a rendering optimization 448adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * that is no longer present. Setting it now has no effect. 44954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 450adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn @Deprecated 45154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseDoubleTree() { 452adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn return false; 45354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 45454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 45654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView about user-agent string. 45754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param ua 0 if the WebView should use an Android user-agent string, 45854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView should use a desktop user-agent string. 459f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 460f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use setUserAgentString instead. 46154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 462f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 46354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUserAgent(int ua) { 464f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String uaString = null; 465f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == 1) { 466f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 467f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 468f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 469f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = DESKTOP_USERAGENT; 470f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 471f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua == 2) { 472f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (IPHONE_USERAGENT.equals(mUserAgent)) { 473f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 474f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 475f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project uaString = IPHONE_USERAGENT; 476f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 477f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (ua != 0) { 478f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return; // do nothing 47954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 480f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project setUserAgentString(uaString); 48154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 48454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return user-agent as int 48554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return int 0 if the WebView is using an Android user-agent string. 48654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1 if the WebView is using a desktop user-agent string. 487f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * -1 if the WebView is using user defined user-agent string. 488f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 489f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @deprecated Please use getUserAgentString instead. 49054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 491f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Deprecated 49254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getUserAgent() { 49354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent)) { 49454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 49554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (IPHONE_USERAGENT.equals(mUserAgent)) { 49654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 2; 497f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else if (mUseDefaultUserAgent) { 498f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return 0; 49954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 500f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return -1; 50154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 50254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 50354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 50454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to use the wide viewport 50554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 50654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setUseWideViewPort(boolean use) { 50754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mUseWideViewport != use) { 50854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mUseWideViewport = use; 50954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 51054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 51154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 51254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 51454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is using a wide viewport 51554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 51654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getUseWideViewPort() { 51754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUseWideViewport; 51854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 51954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 52054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 52154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it supports multiple windows. TRUE means 52254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 52354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 52454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 52554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSupportMultipleWindows(boolean support) { 52654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mSupportMultipleWindows != support) { 52754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSupportMultipleWindows = support; 52854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 52954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 53054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 53154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 53254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 53354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView is supporting multiple windows. This means 53454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that {@link WebChromeClient#onCreateWindow(WebView, boolean, 53554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * boolean, Message)} is implemented by the host application. 53654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 53754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean supportMultipleWindows() { 53854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSupportMultipleWindows; 53954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 54054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 54154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 54254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the underlying layout algorithm. This will cause a relayout of the 54354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebView. 54454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param l A LayoutAlgorithm enum specifying the algorithm to use. 54554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 54654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 54754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) { 54854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // XXX: This will only be affective if libwebcore was built with 54954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // ANDROID_LAYOUT defined. 55054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLayoutAlgorithm != l) { 55154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLayoutAlgorithm = l; 55254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 55354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 557adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return the current layout algorithm. The default is NARROW_COLUMNS. 55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return LayoutAlgorithm enum value describing the layout algorithm 55954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * being used. 56054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @see WebSettings.LayoutAlgorithm 56154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized LayoutAlgorithm getLayoutAlgorithm() { 56354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLayoutAlgorithm; 56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 56554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 56754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the standard font family name. 56854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 56954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 57054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setStandardFontFamily(String font) { 57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mStandardFontFamily)) { 57254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mStandardFontFamily = font; 57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 57454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 57654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 578adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the standard font family name. The default is "sans-serif". 57954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The standard font family name as a string. 58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 58154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getStandardFontFamily() { 58254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mStandardFontFamily; 58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 58454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 58554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 58654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fixed font family name. 58754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 58854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 58954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFixedFontFamily(String font) { 59054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFixedFontFamily)) { 59154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFixedFontFamily = font; 59254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 59354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 59454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 59554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 597adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fixed font family name. The default is "monospace". 59854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fixed font family name as a string. 59954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 60054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFixedFontFamily() { 60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFixedFontFamily; 60254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 60354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 60454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 60554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the sans-serif font family name. 60654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 60754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 60854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSansSerifFontFamily(String font) { 60954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSansSerifFontFamily)) { 61054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSansSerifFontFamily = font; 61154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 61254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 61354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 61454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 61554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 61654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Get the sans-serif font family name. 61754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The sans-serif font family name as a string. 61854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 61954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSansSerifFontFamily() { 62054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSansSerifFontFamily; 62154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 62254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 624adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Set the serif font family name. The default is "sans-serif". 62554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setSerifFontFamily(String font) { 62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mSerifFontFamily)) { 62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSerifFontFamily = font; 63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 635adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the serif font family name. The default is "serif". 63654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The serif font family name as a string. 63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getSerifFontFamily() { 63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mSerifFontFamily; 64054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 64154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 64354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the cursive font family name. 64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 64554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setCursiveFontFamily(String font) { 64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mCursiveFontFamily)) { 64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mCursiveFontFamily = font; 64954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 65054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 654adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the cursive font family name. The default is "cursive". 65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The cursive font family name as a string. 65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 65754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getCursiveFontFamily() { 65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mCursiveFontFamily; 65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 66254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the fantasy font family name. 66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param font A font family name. 66454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setFantasyFontFamily(String font) { 66654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (font != null && !font.equals(mFantasyFontFamily)) { 66754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mFantasyFontFamily = font; 66854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 66954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 67254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 673adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the fantasy font family name. The default is "fantasy". 67454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The fantasy font family name as a string. 67554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 67654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getFantasyFontFamily() { 67754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mFantasyFontFamily; 67854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 68054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 68154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum font size. 68254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 68354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 68454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 68554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumFontSize(int size) { 68654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 68754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumFontSize != size) { 68854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumFontSize = size; 68954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 69054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 69154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 69254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 69354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 694adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum font size. The default is 8. 69554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 69654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumFontSize() { 69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumFontSize; 69954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 70254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the minimum logical font size. 70354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setMinimumLogicalFontSize(int size) { 70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mMinimumLogicalFontSize != size) { 70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mMinimumLogicalFontSize = size; 71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 715adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the minimum logical font size. The default is 8. 71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getMinimumLogicalFontSize() { 71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mMinimumLogicalFontSize; 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default font size. 72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFontSize(int size) { 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFontSize != size) { 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFontSize = size; 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 736adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default font size. The default is 16. 73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFontSize() { 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFontSize; 74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default fixed font size. 74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param size A non-negative integer between 1 and 72. 74654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Any number outside the specified range will be pinned. 74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultFixedFontSize(int size) { 74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size = pin(size); 75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mDefaultFixedFontSize != size) { 75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultFixedFontSize = size; 75254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 757adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default fixed font size. The default is 16. 75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return A non-negative integer between 1 and 72. 75954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized int getDefaultFixedFontSize() { 76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultFixedFontSize; 76254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to load image resources automatically. 76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load images automatically. 76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setLoadsImagesAutomatically(boolean flag) { 76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mLoadsImagesAutomatically != flag) { 77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mLoadsImagesAutomatically = flag; 77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if the WebView will load image resources automatically. 777adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * The default is true. 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView loads images automatically. 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getLoadsImagesAutomatically() { 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mLoadsImagesAutomatically; 78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to block network image. This is only checked when 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * getLoadsImagesAutomatically() is true. 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should block network image 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setBlockNetworkImage(boolean flag) { 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mBlockNetworkImage != flag) { 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBlockNetworkImage = flag; 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 797adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if the WebView will block network image. The default is false. 79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if the WebView blocks network image. 79954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getBlockNetworkImage() { 80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mBlockNetworkImage; 80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 803adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 804f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 805f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @hide 806adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Tell the WebView to block all network load requests. 807f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @param flag True if the WebView should block all network loads 808f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 809f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setBlockNetworkLoads(boolean flag) { 810f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mBlockNetworkLoads != flag) { 811f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mBlockNetworkLoads = flag; 812f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project verifyNetworkAccess(); 813f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 814f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 815f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 816f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 817f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @hide 818f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Return true if the WebView will block all network loads. 819adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * The default is false. 820f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @return True if the WebView blocks all network loads. 821f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 822f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized boolean getBlockNetworkLoads() { 823f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mBlockNetworkLoads; 824f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 825adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 826adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn 827f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void verifyNetworkAccess() { 828f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!mBlockNetworkLoads) { 829f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mContext.checkPermission("android.permission.INTERNET", 830f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project android.os.Process.myPid(), 0) != 831f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project PackageManager.PERMISSION_GRANTED) { 832f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new SecurityException 833f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ("Permission denied - " + 834f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "application missing INTERNET permission"); 835f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 836f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 837f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable javascript execution. 84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should execute javascript. 84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptEnabled(boolean flag) { 84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptEnabled != flag) { 84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptEnabled = flag; 84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView to enable plugins. 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if the WebView should load plugins. 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsEnabled(boolean flag) { 85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mPluginsEnabled != flag) { 85654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mPluginsEnabled = flag; 85754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 85854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 86254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set a custom path to plugins used by the WebView. The client 86354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * must ensure it exists before this call. 86454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param pluginsPath String path to the directory containing plugins. 86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setPluginsPath(String pluginsPath) { 86754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (pluginsPath != null && !pluginsPath.equals(mPluginsPath)) { 86854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mPluginsPath = pluginsPath; 86954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 87054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 87254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 87354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 874adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript is enabled. <b>Note: The default is false.</b> 87554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript is enabled. 87654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 87754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptEnabled() { 87854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptEnabled; 87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 88154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return true if plugins are enabled. 88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if plugins are enabled. 88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getPluginsEnabled() { 88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mPluginsEnabled; 88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return the current path used for plugins in the WebView. 89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The string path to the WebView plugins. 89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 89354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getPluginsPath() { 89454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mPluginsPath; 89554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 89754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 89854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell javascript to open windows automatically. This applies to the 89954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * javascript function window.open(). 90054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag True if javascript can open windows automatically. 90154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 90254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setJavaScriptCanOpenWindowsAutomatically( 90354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project boolean flag) { 90454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mJavaScriptCanOpenWindowsAutomatically != flag) { 90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mJavaScriptCanOpenWindowsAutomatically = flag; 90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 911adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Return true if javascript can open windows automatically. The default 912adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * is false. 91354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return True if javascript can open windows automatically during 91454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * window.open(). 91554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 91654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() { 91754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mJavaScriptCanOpenWindowsAutomatically; 91854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 92054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 92154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the default text encoding name to use when decoding html pages. 92254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param encoding The text encoding name. 92354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 92454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setDefaultTextEncodingName(String encoding) { 92554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (encoding != null && !encoding.equals(mDefaultTextEncoding)) { 92654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mDefaultTextEncoding = encoding; 92754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project postSync(); 92854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 92954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 93054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 93154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 932adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * Get the default text encoding name. The default is "Latin-1". 93354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return The default text encoding name as a string. 93454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 93554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized String getDefaultTextEncodingName() { 93654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mDefaultTextEncoding; 93754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 93854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 939f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 940f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Set the WebView's user-agent string. If the string "ua" is null or empty, 941f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * it will use the system default user-agent string. 942f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 943f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized void setUserAgentString(String ua) { 944f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (ua == null || ua.length() == 0) { 945f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 946f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 947f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 948f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 949f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 950f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 951f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 952f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ua = getCurrentUserAgent(); 953f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = true; 954f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } else { 955f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUseDefaultUserAgent = false; 956f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 957f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 958f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!ua.equals(mUserAgent)) { 959f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = ua; 960f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 961f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 962f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 963f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 964f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 965f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Return the WebView's user-agent string. 966f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 967f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public synchronized String getUserAgentString() { 968f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (DESKTOP_USERAGENT.equals(mUserAgent) || 969f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project IPHONE_USERAGENT.equals(mUserAgent) || 970f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project !mUseDefaultUserAgent) { 971f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mUserAgent; 972f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 973f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 974f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project boolean doPostSync = false; 975f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 976f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 977f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 978f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 979f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mUserAgent = getCurrentUserAgent(); 980f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 981f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project doPostSync = true; 982f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 983f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 984f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (doPostSync) { 985f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 986f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 98754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mUserAgent; 98854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 98954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 990f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /* package api to grab the Accept Language string. */ 991f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /*package*/ synchronized String getAcceptLanguage() { 992f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project synchronized(sLockForLocaleSettings) { 993f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Locale currentLocale = Locale.getDefault(); 994f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (!sLocale.equals(currentLocale)) { 995f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project sLocale = currentLocale; 996f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mAcceptLanguage = getCurrentAcceptLanguage(); 997f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 998f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 999f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project return mAcceptLanguage; 1000f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1001f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 100254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 100354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Tell the WebView whether it needs to set a node to have focus when 100454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link WebView#requestFocus(int, android.graphics.Rect)} is called. 100554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 100654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param flag 100754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 100854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setNeedInitialFocus(boolean flag) { 100954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mNeedInitialFocus != flag) { 101054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mNeedInitialFocus = flag; 101154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 101254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 101354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 101454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Package api to get the choice whether it needs to set initial focus. */ 101554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* package */ boolean getNeedInitialFocus() { 101654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mNeedInitialFocus; 101754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 101854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 101954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 102054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the priority of the Render thread. Unlike the other settings, this 1021adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * one only needs to be called once per process. The default is NORMAL. 1022adcd2ed8d24deddee528e96260d0ed673eeb261cMike Hearn * 102354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param priority RenderPriority, can be normal, high or low. 102454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 102554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public synchronized void setRenderPriority(RenderPriority priority) { 102654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mRenderPriority != priority) { 102754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mRenderPriority = priority; 102854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.sendMessage(Message.obtain(null, 102954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project EventHandler.PRIORITY)); 103054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 103154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 103254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 103354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 103454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Override the way the cache is used. The way the cache is used is based 103554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * on the navigation option. For a normal page load, the cache is checked 103654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * and content is re-validated as needed. When navigating back, content is 103754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * not revalidated, instead the content is just pulled from the cache. 103854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This function allows the client to override this behavior. 103954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param mode One of the LOAD_ values. 104054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 104154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void setCacheMode(int mode) { 104254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (mode != mOverrideCacheMode) { 104354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mOverrideCacheMode = mode; 104454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 104554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 104654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 104754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 104854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Return the current setting for overriding the cache mode. For a full 104954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * description, see the {@link #setCacheMode(int)} function. 105054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 105154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public int getCacheMode() { 105254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return mOverrideCacheMode; 105354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1054f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 1055f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project /** 1056f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * If set, webkit alternately shrinks and expands images viewed outside 1057f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * of an HTML page to fit the screen. This conflicts with attempts by 1058f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * the UI to zoom in and out of an image, so it is set false by default. 1059f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * @param shrink Set true to let webkit shrink the standalone image to fit. 1060f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * {@hide} 1061f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 1062f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void setShrinksStandaloneImagesToFit(boolean shrink) { 1063f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (mShrinksStandaloneImagesToFit != shrink) { 1064f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project mShrinksStandaloneImagesToFit = shrink; 1065f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project postSync(); 1066f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1067f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 106854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 106954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 107054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Transfer messages from the queue to the new WebCoreThread. Called from 107154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WebCore thread. 107254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 107354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /*package*/ 107454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project synchronized void syncSettingsAndCreateHandler(BrowserFrame frame) { 107554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mBrowserFrame = frame; 107654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (android.util.Config.DEBUG) { 107754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project junit.framework.Assert.assertTrue(frame.mNativeFrame != 0); 107854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 107954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project nativeSync(frame.mNativeFrame); 108054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = false; 108154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mEventHandler.createHandler(); 108254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 108354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 108454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private int pin(int size) { 108554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // FIXME: 72 is just an arbitrary max text size value. 108654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (size < 1) { 108754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 1; 108854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else if (size > 72) { 108954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return 72; 109054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 109154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return size; 109254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 109354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 109454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* Post a SYNC message to handle syncing the native settings. */ 109554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private synchronized void postSync() { 109654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Only post if a sync is not pending 109754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!mSyncPending) { 109854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mSyncPending = mEventHandler.sendMessage( 109954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Message.obtain(null, EventHandler.SYNC)); 110054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 110154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 110254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 110354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Synchronize the native and java settings. 110454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private native void nativeSync(int nativeFrame); 110554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 1106