1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.android_webview; 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochimport android.content.Context; 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.content.pm.PackageManager; 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import android.os.Handler; 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import android.os.Message; 111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)import android.os.Process; 12558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochimport android.provider.Settings; 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import android.util.Log; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.WebSettings; 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.webkit.WebSettings.PluginState; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import org.chromium.base.CalledByNative; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.base.JNINamespace; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.base.ThreadUtils; 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.base.VisibleForTesting; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Stores Android WebView specific settings that does not need to be synced to WebKit. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use {@link org.chromium.content.browser.ContentSettings} for WebKit settings. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Methods in this class can be called from any thread, including threads created by 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the client of WebView. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)@JNINamespace("android_webview") 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public class AwSettings { 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This enum corresponds to WebSettings.LayoutAlgorithm. We use our own to be 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // able to extend it. 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public enum LayoutAlgorithm { 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NORMAL, 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SINGLE_COLUMN, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NARROW_COLUMNS, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TEXT_AUTOSIZING, 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // These constants must be kept in sync with the Android framework, defined in WebSettimgs. 410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch @VisibleForTesting 420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public static final int MIXED_CONTENT_ALWAYS_ALLOW = 0; 430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch @VisibleForTesting 440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public static final int MIXED_CONTENT_NEVER_ALLOW = 1; 450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch @VisibleForTesting 460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public static final int MIXED_CONTENT_COMPATIBILITY_MODE = 2; 470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private static final String TAG = "AwSettings"; 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This class must be created on the UI thread. Afterwards, it can be 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // used from any thread. Internally, the class uses a message queue 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // to call native code on the UI thread only. 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Values passed in on construction. 557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private final boolean mHasInternetPermission; 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private ZoomSupportChangeListener mZoomChangeListener; 581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private double mDIPScale = 1.0; 597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Lock to protect all settings. 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private final Object mAwSettingsLock = new Object(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private LayoutAlgorithm mLayoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private int mTextSizePercent = 100; 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mStandardFontFamily = "sans-serif"; 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mFixedFontFamily = "monospace"; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mSansSerifFontFamily = "sans-serif"; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mSerifFontFamily = "serif"; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mCursiveFontFamily = "cursive"; 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mFantasyFontFamily = "fantasy"; 714ccfafb49a467adf7819cc5933ef036c1ee41c10mkosiba private String mDefaultTextEncoding = "UTF-8"; 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mUserAgent; 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private int mMinimumFontSize = 8; 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private int mMinimumLogicalFontSize = 8; 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private int mDefaultFontSize = 16; 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private int mDefaultFixedFontSize = 13; 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mLoadsImagesAutomatically = true; 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mImagesEnabled = true; 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mJavaScriptEnabled = false; 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mAllowUniversalAccessFromFileURLs = false; 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mAllowFileAccessFromFileURLs = false; 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mJavaScriptCanOpenWindowsAutomatically = false; 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mSupportMultipleWindows = false; 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private PluginState mPluginState = PluginState.OFF; 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mAppCacheEnabled = false; 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mDomStorageEnabled = false; 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mDatabaseEnabled = false; 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mUseWideViewport = false; 896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private boolean mZeroLayoutHeightDisablesViewportQuirk = false; 906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private boolean mForceZeroLayoutHeight = false; 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mLoadWithOverviewMode = false; 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private boolean mMediaPlaybackRequiresUserGesture = true; 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private String mDefaultVideoPosterURL; 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private float mInitialPageScalePercent = 0; 951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private boolean mSpatialNavigationEnabled; // Default depends on device features. 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private boolean mEnableSupportedHardwareAcceleratedFeatures = false; 970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private int mMixedContentMode = MIXED_CONTENT_NEVER_ALLOW; 985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private boolean mVideoOverlayForEmbeddedVideoEnabled = false; 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 100cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Although this bit is stored on AwSettings it is actually controlled via the CookieManager. 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private boolean mAcceptThirdPartyCookies = false; 102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private final boolean mSupportLegacyQuirks; 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 105558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch private final boolean mPasswordEchoEnabled; 106558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Not accessed by the native side. 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private boolean mBlockNetworkLoads; // Default depends on permission of embedding APK. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private boolean mAllowContentUrlAccess = true; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private boolean mAllowFileUrlAccess = true; 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private int mCacheMode = WebSettings.LOAD_DEFAULT; 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private boolean mShouldFocusFirstNode = true; 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private boolean mGeolocationEnabled = true; 11490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private boolean mAutoCompleteEnabled = true; 1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private boolean mFullscreenSupported = false; 116b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean mSupportZoom = true; 117b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean mBuiltInZoomControls = false; 118b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean mDisplayZoomControls = true; 1197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static class LazyDefaultUserAgent{ 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Lazy Holder pattern 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private static final String sInstance = nativeGetDefaultUserAgent(); 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Protects access to settings global fields. 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private static final Object sGlobalContentSettingsLock = new Object(); 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // For compatibility with the legacy WebView, we can only enable AppCache when the path is 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // provided. However, we don't use the path, so we just check if we have received it from the 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // client. 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private static boolean sAppCachePathIsSet = false; 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // The native side of this object. It's lifetime is bounded by the WebContent it is attached to. 133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private long mNativeAwSettings = 0; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Custom handler that queues messages to call native code on the UI thread. 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private final EventHandler mEventHandler; 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private static final int MINIMUM_FONT_SIZE = 1; 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private static final int MAXIMUM_FONT_SIZE = 72; 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Class to handle messages to be processed on the UI thread. 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private class EventHandler { 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Message id for running a Runnable with mAwSettingsLock held. 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private static final int RUN_RUNNABLE_BLOCKING = 0; 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Actual UI thread handler 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private Handler mHandler; 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Synchronization flag. 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private boolean mSynchronizationPending = false; 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EventHandler() { 1511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void bindUiThread() { 1541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (mHandler != null) return; 1551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mHandler = new Handler(ThreadUtils.getUiThreadLooper()) { 156a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void handleMessage(Message msg) { 158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) switch (msg.what) { 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case RUN_RUNNABLE_BLOCKING: 160a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) synchronized (mAwSettingsLock) { 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (mNativeAwSettings != 0) { 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ((Runnable) msg.obj).run(); 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mSynchronizationPending = false; 165a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) mAwSettingsLock.notifyAll(); 166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) break; 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 169a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 170a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) }; 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void runOnUiThreadBlockingAndLocked(Runnable r) { 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (mHandler == null) return; 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (ThreadUtils.runningOnUiThread()) { 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) r.run(); 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else { 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert !mSynchronizationPending; 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mSynchronizationPending = true; 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mHandler.sendMessage(Message.obtain(null, RUN_RUNNABLE_BLOCKING, r)); 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) try { 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) while (mSynchronizationPending) { 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mAwSettingsLock.wait(); 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } catch (InterruptedException e) { 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Log.e(TAG, "Interrupted waiting a Runnable to complete", e); 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mSynchronizationPending = false; 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void maybePostOnUiThread(Runnable r) { 1941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (mHandler != null) { 1951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mHandler.post(r); 1961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void updateWebkitPreferencesLocked() { 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) runOnUiThreadBlockingAndLocked(new Runnable() { 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) @Override 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public void run() { 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) updateWebkitPreferencesOnUiThreadLocked(); 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 2055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }); 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) interface ZoomSupportChangeListener { 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public void onGestureZoomSupportChanged( 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) boolean supportsDoubleTapZoom, boolean supportsMultiTouchZoom); 2127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public AwSettings(Context context, 2157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) boolean isAccessFromFileURLsGrantedByDefault, 2163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) boolean supportsLegacyQuirks) { 2171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) boolean hasInternetPermission = context.checkPermission( 2181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) android.Manifest.permission.INTERNET, 2191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) Process.myPid(), 2201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) Process.myUid()) == PackageManager.PERMISSION_GRANTED; 2217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) synchronized (mAwSettingsLock) { 2227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) mHasInternetPermission = hasInternetPermission; 2237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) mBlockNetworkLoads = !hasInternetPermission; 2241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mEventHandler = new EventHandler(); 2257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (isAccessFromFileURLsGrantedByDefault) { 2267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) mAllowUniversalAccessFromFileURLs = true; 2277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) mAllowFileAccessFromFileURLs = true; 2287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 229b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 2307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) mUserAgent = LazyDefaultUserAgent.sInstance; 2311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 2321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Best-guess a sensible initial value based on the features supported on the device. 2331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mSpatialNavigationEnabled = !context.getPackageManager().hasSystemFeature( 2341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) PackageManager.FEATURE_TOUCHSCREEN); 235558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 236558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Respect the system setting for password echoing. 237558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mPasswordEchoEnabled = Settings.System.getInt(context.getContentResolver(), 238558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch Settings.System.TEXT_SHOW_PASSWORD, 1) == 1; 239a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 240a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // By default, scale the text size by the system font scale factor. Embedders 241a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // may override this by invoking setTextZoom(). 242a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mTextSizePercent *= context.getResources().getConfiguration().fontScale; 2433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 24458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) mSupportLegacyQuirks = supportsLegacyQuirks; 245b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 2467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Defer initializing the native side until a native WebContents instance is set. 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) @CalledByNative 250a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private void nativeAwSettingsGone(long nativeAwSettings) { 2517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) assert mNativeAwSettings != 0 && mNativeAwSettings == nativeAwSettings; 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mNativeAwSettings = 0; 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 255b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 256b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private double getDIPScaleLocked() { 2575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 258b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDIPScale; 259b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 260b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 2611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void setDIPScale(double dipScale) { 2621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) synchronized (mAwSettingsLock) { 2631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mDIPScale = dipScale; 2641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // TODO(joth): This should also be synced over to native side, but right now 2651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // the setDIPScale call is always followed by a setWebContents() which covers this. 2661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 2671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 2681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 2691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void setZoomListener(ZoomSupportChangeListener zoomChangeListener) { 2701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) synchronized (mAwSettingsLock) { 2711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mZoomChangeListener = zoomChangeListener; 2721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 2731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 2741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 275effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void setWebContents(long nativeWebContents) { 276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 2777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (mNativeAwSettings != 0) { 2787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) nativeDestroy(mNativeAwSettings); 2797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) assert mNativeAwSettings == 0; // nativeAwSettingsGone should have been called. 2807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 2817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (nativeWebContents != 0) { 2821e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mEventHandler.bindUiThread(); 2837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) mNativeAwSettings = nativeInit(nativeWebContents); 28446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) updateEverythingLocked(); 2857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private void updateEverythingLocked() { 29046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 29146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) assert mNativeAwSettings != 0; 29246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) nativeUpdateEverythingLocked(mNativeAwSettings); 29346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) onGestureZoomSupportChanged( 29446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) supportsDoubleTapZoomLocked(), supportsMultiTouchZoomLocked()); 29546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 29646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See {@link android.webkit.WebSettings#setBlockNetworkLoads}. 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setBlockNetworkLoads(boolean flag) { 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) synchronized (mAwSettingsLock) { 3027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (!flag && !mHasInternetPermission) { 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) throw new SecurityException("Permission denied - " + 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "application missing INTERNET permission"); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mBlockNetworkLoads = flag; 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See {@link android.webkit.WebSettings#getBlockNetworkLoads}. 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean getBlockNetworkLoads() { 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) synchronized (mAwSettingsLock) { 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mBlockNetworkLoads; 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 320cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Enable/disable third party cookies for an AwContents 321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param accept true if we should accept third party cookies 322cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 323cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public void setAcceptThirdPartyCookies(boolean accept) { 324cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) synchronized (mAwSettingsLock) { 325cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (mAcceptThirdPartyCookies != accept) { 326cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) mAcceptThirdPartyCookies = accept; 327cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 328cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 329cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 330cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 331cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 332cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Return whether third party cookies are enabled for an AwContents 333cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return true if accept third party cookies 334cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 335cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public boolean getAcceptThirdPartyCookies() { 336cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) synchronized (mAwSettingsLock) { 337cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return mAcceptThirdPartyCookies; 338cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 339cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 340cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 341cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See {@link android.webkit.WebSettings#setAllowFileAccess}. 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setAllowFileAccess(boolean allow) { 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) synchronized (mAwSettingsLock) { 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (mAllowFileUrlAccess != allow) { 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mAllowFileUrlAccess = allow; 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See {@link android.webkit.WebSettings#getAllowFileAccess}. 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean getAllowFileAccess() { 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) synchronized (mAwSettingsLock) { 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mAllowFileUrlAccess; 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See {@link android.webkit.WebSettings#setAllowContentAccess}. 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setAllowContentAccess(boolean allow) { 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) synchronized (mAwSettingsLock) { 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (mAllowContentUrlAccess != allow) { 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mAllowContentUrlAccess = allow; 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See {@link android.webkit.WebSettings#getAllowContentAccess}. 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean getAllowContentAccess() { 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) synchronized (mAwSettingsLock) { 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mAllowContentUrlAccess; 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See {@link android.webkit.WebSettings#setCacheMode}. 3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void setCacheMode(int mode) { 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) synchronized (mAwSettingsLock) { 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (mCacheMode != mode) { 3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mCacheMode = mode; 3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See {@link android.webkit.WebSettings#getCacheMode}. 3942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public int getCacheMode() { 3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) synchronized (mAwSettingsLock) { 3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mCacheMode; 3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See {@link android.webkit.WebSettings#setNeedInitialFocus}. 4032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void setShouldFocusFirstNode(boolean flag) { 4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) synchronized (mAwSettingsLock) { 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mShouldFocusFirstNode = flag; 4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 411c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebView#setInitialScale}. 4122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 4132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void setInitialPageScale(final float scaleInPercent) { 414c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 415c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mInitialPageScalePercent != scaleInPercent) { 416c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mInitialPageScalePercent = scaleInPercent; 4175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mEventHandler.runOnUiThreadBlockingAndLocked(new Runnable() { 418c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 419c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void run() { 420010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (mNativeAwSettings != 0) { 421010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) nativeUpdateInitialPageScaleLocked(mNativeAwSettings); 422010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }); 4252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 426c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 4272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 429b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 430b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private float getInitialPageScalePercentLocked() { 4315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 432b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mInitialPageScalePercent; 433b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 434b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 4351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void setSpatialNavigationEnabled(boolean enable) { 4361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) synchronized (mAwSettingsLock) { 4371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (mSpatialNavigationEnabled != enable) { 4381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mSpatialNavigationEnabled = enable; 4391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 4401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 4411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 4421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 4431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 4441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) @CalledByNative 4451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private boolean getSpatialNavigationLocked() { 4465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 4471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return mSpatialNavigationEnabled; 4481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 4491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 4505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void setEnableSupportedHardwareAcceleratedFeatures(boolean enable) { 4515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) synchronized (mAwSettingsLock) { 4525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (mEnableSupportedHardwareAcceleratedFeatures != enable) { 4535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mEnableSupportedHardwareAcceleratedFeatures = enable; 4545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 4555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 4565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 4575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 4585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) @CalledByNative 4605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private boolean getEnableSupportedHardwareAcceleratedFeaturesLocked() { 4615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 4625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return mEnableSupportedHardwareAcceleratedFeatures; 4635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 4645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public void setFullscreenSupported(boolean supported) { 4666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) synchronized (mAwSettingsLock) { 4676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (mFullscreenSupported != supported) { 4686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) mFullscreenSupported = supported; 4696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 4706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 4716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 4726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 4736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) @CalledByNative 4756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private boolean getFullscreenSupportedLocked() { 4766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 4776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return mFullscreenSupported; 4786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 4796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See {@link android.webkit.WebSettings#setNeedInitialFocus}. 4822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public boolean shouldFocusFirstNode() { 484a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) synchronized (mAwSettingsLock) { 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mShouldFocusFirstNode; 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 4902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See {@link android.webkit.WebSettings#setGeolocationEnabled}. 4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 4922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void setGeolocationEnabled(boolean flag) { 4932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) synchronized (mAwSettingsLock) { 4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (mGeolocationEnabled != flag) { 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mGeolocationEnabled = flag; 4962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return Returns if geolocation is currently enabled. 5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 5032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) boolean getGeolocationEnabled() { 5042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) synchronized (mAwSettingsLock) { 5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mGeolocationEnabled; 5062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 509c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 51090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * See {@link android.webkit.WebSettings#setSaveFormData}. 51190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 51290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public void setSaveFormData(final boolean enable) { 51390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) synchronized (mAwSettingsLock) { 51490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (mAutoCompleteEnabled != enable) { 51590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) mAutoCompleteEnabled = enable; 5165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mEventHandler.runOnUiThreadBlockingAndLocked(new Runnable() { 51790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) @Override 51890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public void run() { 519010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (mNativeAwSettings != 0) { 520010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) nativeUpdateFormDataPreferencesLocked(mNativeAwSettings); 521010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 52290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 52390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }); 52490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 52590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 52690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 52790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 52890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) /** 52990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * See {@link android.webkit.WebSettings#getSaveFormData}. 53090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 53190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public boolean getSaveFormData() { 53290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) synchronized (mAwSettingsLock) { 53390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return getSaveFormDataLocked(); 53490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 53590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 53690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 53790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) @CalledByNative 53890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private boolean getSaveFormDataLocked() { 5395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 54090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return mAutoCompleteEnabled; 54190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 54290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 54390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) /** 544c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @returns the default User-Agent used by each ContentViewCore instance, i.e. unless 545c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * overridden by {@link #setUserAgentString()} 546c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 547c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public static String getDefaultUserAgent() { 548c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return LazyDefaultUserAgent.sInstance; 549c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 550c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 551c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 552c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setUserAgentString}. 553c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 554c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setUserAgentString(String ua) { 555c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 556c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) final String oldUserAgent = mUserAgent; 557c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (ua == null || ua.length() == 0) { 558c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mUserAgent = LazyDefaultUserAgent.sInstance; 559c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 560c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mUserAgent = ua; 561c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 562c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!oldUserAgent.equals(mUserAgent)) { 5635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mEventHandler.runOnUiThreadBlockingAndLocked(new Runnable() { 564c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 565c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void run() { 566010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (mNativeAwSettings != 0) { 567010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) nativeUpdateUserAgentLocked(mNativeAwSettings); 568010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 569c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 570c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }); 571c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 572c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 573c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 574c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 575c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 576c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getUserAgentString}. 577c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 578c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getUserAgentString() { 579c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 5805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getUserAgentLocked(); 581c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 582c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 583c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 584b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 585b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getUserAgentLocked() { 5865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 587b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mUserAgent; 588b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 589b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 590c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 591c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setLoadWithOverviewMode}. 592c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 593c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setLoadWithOverviewMode(boolean overview) { 594c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 595c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mLoadWithOverviewMode != overview) { 596c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mLoadWithOverviewMode = overview; 5975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mEventHandler.runOnUiThreadBlockingAndLocked(new Runnable() { 598c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 599c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void run() { 600010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (mNativeAwSettings != 0) { 601010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) updateWebkitPreferencesOnUiThreadLocked(); 602010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) nativeResetScrollAndScaleState(mNativeAwSettings); 603010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 604c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 605c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }); 606c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 607c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 608c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 609c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 610c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 611c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getLoadWithOverviewMode}. 612c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 613c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getLoadWithOverviewMode() { 614c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 6155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getLoadWithOverviewModeLocked(); 616c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 617c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 618c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 619b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 620b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getLoadWithOverviewModeLocked() { 6215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 622b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mLoadWithOverviewMode; 623b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 624b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 625c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 626c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setTextZoom}. 627c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 628c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setTextZoom(final int textZoom) { 629c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 630a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (mTextSizePercent != textZoom) { 631a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mTextSizePercent = textZoom; 632c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 633c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 634c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 635c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 636c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 637c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 638c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getTextZoom}. 639c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 640c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public int getTextZoom() { 641c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 6425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getTextSizePercentLocked(); 643c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 644c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 645c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 646b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 647b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private int getTextSizePercentLocked() { 6485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 649b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mTextSizePercent; 650b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 651b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 652c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 653c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setStandardFontFamily}. 654c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 655c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setStandardFontFamily(String font) { 656c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 657c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (font != null && !mStandardFontFamily.equals(font)) { 658c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mStandardFontFamily = font; 659c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 660c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 661c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 662c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 663c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 664c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 665c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getStandardFontFamily}. 666c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 667c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getStandardFontFamily() { 668c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 6695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getStandardFontFamilyLocked(); 670c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 671c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 672c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 673b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 674b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getStandardFontFamilyLocked() { 6755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 676b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mStandardFontFamily; 677b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 678b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 679c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 680c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setFixedFontFamily}. 681c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 682c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setFixedFontFamily(String font) { 683c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 684c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (font != null && !mFixedFontFamily.equals(font)) { 685c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mFixedFontFamily = font; 686c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 687c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 688c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 689c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 690c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 691c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 692c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getFixedFontFamily}. 693c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 694c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getFixedFontFamily() { 695c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 6965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getFixedFontFamilyLocked(); 697c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 698c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 699c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 700b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 701b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getFixedFontFamilyLocked() { 7025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 703b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mFixedFontFamily; 704b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 705b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 706c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 707c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setSansSerifFontFamily}. 708c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 709c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setSansSerifFontFamily(String font) { 710c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 711c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (font != null && !mSansSerifFontFamily.equals(font)) { 712c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mSansSerifFontFamily = font; 713c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 714c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 715c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 716c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 717c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 718c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 719c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getSansSerifFontFamily}. 720c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 721c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getSansSerifFontFamily() { 722c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 7235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getSansSerifFontFamilyLocked(); 724c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 725c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 726c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 727b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 728b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getSansSerifFontFamilyLocked() { 7295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 730b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mSansSerifFontFamily; 731b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 732b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 733c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 734c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setSerifFontFamily}. 735c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 736c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setSerifFontFamily(String font) { 737c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 738c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (font != null && !mSerifFontFamily.equals(font)) { 739c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mSerifFontFamily = font; 740c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 741c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 742c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 743c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 744c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 745c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 746c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getSerifFontFamily}. 747c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 748c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getSerifFontFamily() { 749c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 7505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getSerifFontFamilyLocked(); 751c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 752c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 753c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 754b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 755b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getSerifFontFamilyLocked() { 7565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 757b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mSerifFontFamily; 758b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 759b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 760c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 761c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setCursiveFontFamily}. 762c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 763c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setCursiveFontFamily(String font) { 764c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 765c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (font != null && !mCursiveFontFamily.equals(font)) { 766c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mCursiveFontFamily = font; 767c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 768c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 769c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 770c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 771c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 772c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 773c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getCursiveFontFamily}. 774c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 775c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getCursiveFontFamily() { 776c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 7775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getCursiveFontFamilyLocked(); 778c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 779c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 780c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 781b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 782b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getCursiveFontFamilyLocked() { 7835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 784b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mCursiveFontFamily; 785b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 786b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 787c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 788c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setFantasyFontFamily}. 789c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 790c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setFantasyFontFamily(String font) { 791c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 792c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (font != null && !mFantasyFontFamily.equals(font)) { 793c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mFantasyFontFamily = font; 794c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 795c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 796c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 797c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 798c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 799c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 800c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getFantasyFontFamily}. 801c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 802c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getFantasyFontFamily() { 803c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 8045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getFantasyFontFamilyLocked(); 805c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 806c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 807c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 808b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 809b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getFantasyFontFamilyLocked() { 8105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 811b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mFantasyFontFamily; 812b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 813b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 814c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 815c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setMinimumFontSize}. 816c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 817c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setMinimumFontSize(int size) { 818c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 819c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size = clipFontSize(size); 820c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mMinimumFontSize != size) { 821c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mMinimumFontSize = size; 822c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 823c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 824c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 825c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 826c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 827c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 828c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getMinimumFontSize}. 829c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 830c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public int getMinimumFontSize() { 831c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 8325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getMinimumFontSizeLocked(); 833c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 834c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 835c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 836b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 837b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private int getMinimumFontSizeLocked() { 8385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 839b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mMinimumFontSize; 840b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 841b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 842c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 843c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setMinimumLogicalFontSize}. 844c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 845c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setMinimumLogicalFontSize(int size) { 846c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 847c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size = clipFontSize(size); 848c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mMinimumLogicalFontSize != size) { 849c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mMinimumLogicalFontSize = size; 850c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 851c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 852c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 853c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 854c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 855c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 856c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getMinimumLogicalFontSize}. 857c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 858c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public int getMinimumLogicalFontSize() { 859c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 8605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getMinimumLogicalFontSizeLocked(); 861c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 862c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 863c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 864b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 865b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private int getMinimumLogicalFontSizeLocked() { 8665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 867b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mMinimumLogicalFontSize; 868b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 869b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 870c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 871c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setDefaultFontSize}. 872c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 873c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setDefaultFontSize(int size) { 874c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 875c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size = clipFontSize(size); 876c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mDefaultFontSize != size) { 877c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mDefaultFontSize = size; 878c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 879c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 880c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 881c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 882c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 883c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 884c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getDefaultFontSize}. 885c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 886c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public int getDefaultFontSize() { 887c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 8885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getDefaultFontSizeLocked(); 889c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 890c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 891c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 892b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 893b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private int getDefaultFontSizeLocked() { 8945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 895b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDefaultFontSize; 896b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 897b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 898c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 899c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setDefaultFixedFontSize}. 900c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 901c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setDefaultFixedFontSize(int size) { 902c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 903c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size = clipFontSize(size); 904c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mDefaultFixedFontSize != size) { 905c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mDefaultFixedFontSize = size; 906c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 907c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 908c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 909c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 910c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 911c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 912c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getDefaultFixedFontSize}. 913c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 914c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public int getDefaultFixedFontSize() { 915c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 9165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getDefaultFixedFontSizeLocked(); 917c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 918c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 919c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 920b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 921b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private int getDefaultFixedFontSizeLocked() { 9225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 923b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDefaultFixedFontSize; 924b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 925b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 926c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 927c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setJavaScriptEnabled}. 928c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 929c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setJavaScriptEnabled(boolean flag) { 930c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 931c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mJavaScriptEnabled != flag) { 932c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mJavaScriptEnabled = flag; 933c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 934c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 935c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 936c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 937c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 938c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 939c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setAllowUniversalAccessFromFileURLs}. 940c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 941c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setAllowUniversalAccessFromFileURLs(boolean flag) { 942c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 943c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mAllowUniversalAccessFromFileURLs != flag) { 944c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mAllowUniversalAccessFromFileURLs = flag; 945c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 946c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 947c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 948c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 949c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 950c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 951c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setAllowFileAccessFromFileURLs}. 952c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 953c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setAllowFileAccessFromFileURLs(boolean flag) { 954c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 955c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mAllowFileAccessFromFileURLs != flag) { 956c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mAllowFileAccessFromFileURLs = flag; 957c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 958c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 959c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 960c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 961c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 962c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 963c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setLoadsImagesAutomatically}. 964c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 965c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setLoadsImagesAutomatically(boolean flag) { 966c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 967c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mLoadsImagesAutomatically != flag) { 968c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mLoadsImagesAutomatically = flag; 969c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 970c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 971c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 972c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 973c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 974c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 975c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getLoadsImagesAutomatically}. 976c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 977c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getLoadsImagesAutomatically() { 978c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 9795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getLoadsImagesAutomaticallyLocked(); 980c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 981c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 982c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 983b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 984b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getLoadsImagesAutomaticallyLocked() { 9855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 986b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mLoadsImagesAutomatically; 987b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 988b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 989c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 990c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setImagesEnabled}. 991c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 992c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setImagesEnabled(boolean flag) { 993c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 994c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mImagesEnabled != flag) { 995c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mImagesEnabled = flag; 996c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 997c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 998c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 999c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1000c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1001c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1002c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getImagesEnabled}. 1003c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1004c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getImagesEnabled() { 1005c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1006c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mImagesEnabled; 1007c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1008c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1009c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1010b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1011b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getImagesEnabledLocked() { 10125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1013b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mImagesEnabled; 1014b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1015b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1016c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1017c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getJavaScriptEnabled}. 1018c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1019c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getJavaScriptEnabled() { 1020c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1021c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mJavaScriptEnabled; 1022c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1023c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1024c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1025b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1026b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getJavaScriptEnabledLocked() { 10275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1028b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mJavaScriptEnabled; 1029b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1030b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1031c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1032c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getAllowUniversalAccessFromFileURLs}. 1033c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1034c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getAllowUniversalAccessFromFileURLs() { 1035c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 10365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getAllowUniversalAccessFromFileURLsLocked(); 1037c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1038c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1039c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1040b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1041b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getAllowUniversalAccessFromFileURLsLocked() { 10425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1043b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mAllowUniversalAccessFromFileURLs; 1044b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1045b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1046c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1047c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getAllowFileAccessFromFileURLs}. 1048c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1049c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getAllowFileAccessFromFileURLs() { 1050c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 10515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getAllowFileAccessFromFileURLsLocked(); 1052c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1053c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1054c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1055b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1056b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getAllowFileAccessFromFileURLsLocked() { 10575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1058b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mAllowFileAccessFromFileURLs; 1059b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1060b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1061c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1062c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setPluginsEnabled}. 1063c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1064c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setPluginsEnabled(boolean flag) { 1065c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) setPluginState(flag ? PluginState.ON : PluginState.OFF); 1066c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1067c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1068c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1069c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setPluginState}. 1070c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1071c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setPluginState(PluginState state) { 1072c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1073c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mPluginState != state) { 1074c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mPluginState = state; 1075c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1076c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1077c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1078c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1079c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1080c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1081c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getPluginsEnabled}. 1082c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1083c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getPluginsEnabled() { 1084c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1085c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mPluginState == PluginState.ON; 1086c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1087c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1088c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1089c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1090c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Return true if plugins are disabled. 1091c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @return True if plugins are disabled. 1092c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1093c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @CalledByNative 1094b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getPluginsDisabledLocked() { 10955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1096c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mPluginState == PluginState.OFF; 1097c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1098c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1099c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getPluginState}. 1101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public PluginState getPluginState() { 1103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mPluginState; 1105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setJavaScriptCanOpenWindowsAutomatically}. 1111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setJavaScriptCanOpenWindowsAutomatically(boolean flag) { 1113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mJavaScriptCanOpenWindowsAutomatically != flag) { 1115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mJavaScriptCanOpenWindowsAutomatically = flag; 1116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getJavaScriptCanOpenWindowsAutomatically}. 1123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getJavaScriptCanOpenWindowsAutomatically() { 1125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 11265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getJavaScriptCanOpenWindowsAutomaticallyLocked(); 1127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1130b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1131b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getJavaScriptCanOpenWindowsAutomaticallyLocked() { 11325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1133b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mJavaScriptCanOpenWindowsAutomatically; 1134b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1135b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setLayoutAlgorithm}. 1138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setLayoutAlgorithm(LayoutAlgorithm l) { 1140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mLayoutAlgorithm != l) { 1142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mLayoutAlgorithm = l; 1143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getLayoutAlgorithm}. 1150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public LayoutAlgorithm getLayoutAlgorithm() { 1152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mLayoutAlgorithm; 1154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Gets whether Text Auto-sizing layout algorithm is enabled. 1159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * 1160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @return true if Text Auto-sizing layout algorithm is enabled 1161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @CalledByNative 1163b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getTextAutosizingEnabledLocked() { 11645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mLayoutAlgorithm == LayoutAlgorithm.TEXT_AUTOSIZING; 1166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setSupportMultipleWindows}. 1170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setSupportMultipleWindows(boolean support) { 1172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mSupportMultipleWindows != support) { 1174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mSupportMultipleWindows = support; 1175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#supportMultipleWindows}. 1182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean supportMultipleWindows() { 1184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mSupportMultipleWindows; 1186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1189b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1190b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getSupportMultipleWindowsLocked() { 11915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1192b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mSupportMultipleWindows; 1193b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1194b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1195b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 119658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private boolean getSupportLegacyQuirksLocked() { 11975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 119858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return mSupportLegacyQuirks; 1199b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1200b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setUseWideViewPort}. 1203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setUseWideViewPort(boolean use) { 1205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mUseWideViewport != use) { 1207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mUseWideViewport = use; 12085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) onGestureZoomSupportChanged( 12095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) supportsDoubleTapZoomLocked(), supportsMultiTouchZoomLocked()); 1210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getUseWideViewPort}. 1217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getUseWideViewPort() { 1219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 12205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getUseWideViewportLocked(); 1221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1224b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1225b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getUseWideViewportLocked() { 12265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1227b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mUseWideViewport; 1228b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1229b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 12306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public void setZeroLayoutHeightDisablesViewportQuirk(boolean enabled) { 12316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) synchronized (mAwSettingsLock) { 12326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (mZeroLayoutHeightDisablesViewportQuirk != enabled) { 12336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) mZeroLayoutHeightDisablesViewportQuirk = enabled; 12346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 12356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 12396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public boolean getZeroLayoutHeightDisablesViewportQuirk() { 12406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) synchronized (mAwSettingsLock) { 12416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return getZeroLayoutHeightDisablesViewportQuirkLocked(); 12426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 12456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) @CalledByNative 12466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private boolean getZeroLayoutHeightDisablesViewportQuirkLocked() { 12476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 12486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return mZeroLayoutHeightDisablesViewportQuirk; 12496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 12516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public void setForceZeroLayoutHeight(boolean enabled) { 12526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) synchronized (mAwSettingsLock) { 12536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (mForceZeroLayoutHeight != enabled) { 12546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) mForceZeroLayoutHeight = enabled; 12556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 12566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 12606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public boolean getForceZeroLayoutHeight() { 12616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) synchronized (mAwSettingsLock) { 12626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return getForceZeroLayoutHeightLocked(); 12636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 12666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) @CalledByNative 12676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private boolean getForceZeroLayoutHeightLocked() { 12686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 12696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return mForceZeroLayoutHeight; 12706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 12716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1272558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch @CalledByNative 12731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private boolean getPasswordEchoEnabledLocked() { 12745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1275558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return mPasswordEchoEnabled; 1276558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 1277558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1278c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1279c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setAppCacheEnabled}. 1280c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1281c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setAppCacheEnabled(boolean flag) { 1282c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mAppCacheEnabled != flag) { 1284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mAppCacheEnabled = flag; 1285c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1290c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setAppCachePath}. 1292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setAppCachePath(String path) { 1294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) boolean needToSync = false; 1295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (sGlobalContentSettingsLock) { 1296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // AppCachePath can only be set once. 1297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!sAppCachePathIsSet && path != null && !path.isEmpty()) { 1298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sAppCachePathIsSet = true; 1299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) needToSync = true; 1300c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // The obvious problem here is that other WebViews will not be updated, 1303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // until they execute synchronization from Java to the native side. 1304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // But this is the same behaviour as it was in the legacy WebView. 1305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (needToSync) { 1306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Gets whether Application Cache is enabled. 1314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * 1315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @return true if Application Cache is enabled 1316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @CalledByNative 1318b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getAppCacheEnabledLocked() { 13195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!mAppCacheEnabled) { 1321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return false; 1322c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (sGlobalContentSettingsLock) { 1324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return sAppCachePathIsSet; 1325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1326c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setDomStorageEnabled}. 1330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setDomStorageEnabled(boolean flag) { 1332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mDomStorageEnabled != flag) { 1334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mDomStorageEnabled = flag; 1335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1339c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getDomStorageEnabled}. 1342c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1343c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getDomStorageEnabled() { 1344a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) synchronized (mAwSettingsLock) { 1345a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return mDomStorageEnabled; 1346a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 1347c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1349b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1350b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getDomStorageEnabledLocked() { 13515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1352b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDomStorageEnabled; 1353b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1354b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1355c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setDatabaseEnabled}. 1357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setDatabaseEnabled(boolean flag) { 1359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1360c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mDatabaseEnabled != flag) { 1361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mDatabaseEnabled = flag; 1362c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1363c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1364c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1366c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1368c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getDatabaseEnabled}. 1369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getDatabaseEnabled() { 1371a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) synchronized (mAwSettingsLock) { 1372a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return mDatabaseEnabled; 1373a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 1374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1375c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1376b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1377b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getDatabaseEnabledLocked() { 13785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1379b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDatabaseEnabled; 1380b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1381b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setDefaultTextEncodingName}. 1384c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setDefaultTextEncodingName(String encoding) { 1386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (encoding != null && !mDefaultTextEncoding.equals(encoding)) { 1388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mDefaultTextEncoding = encoding; 1389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1390c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1392c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1393c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1395c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getDefaultTextEncodingName}. 1396c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1397c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getDefaultTextEncodingName() { 1398c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 13995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getDefaultTextEncodingLocked(); 1400c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1401c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1402c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1403b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1404b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getDefaultTextEncodingLocked() { 14055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1406b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDefaultTextEncoding; 1407b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1408b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1410c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setMediaPlaybackRequiresUserGesture}. 1411c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setMediaPlaybackRequiresUserGesture(boolean require) { 1413c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1414c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mMediaPlaybackRequiresUserGesture != require) { 1415c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mMediaPlaybackRequiresUserGesture = require; 1416c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1417c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1418c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1419c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1420c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1422c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getMediaPlaybackRequiresUserGesture}. 1423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean getMediaPlaybackRequiresUserGesture() { 1425c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 14265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getMediaPlaybackRequiresUserGestureLocked(); 1427c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1428c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1429c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1430b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1431b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private boolean getMediaPlaybackRequiresUserGestureLocked() { 14325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1433b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mMediaPlaybackRequiresUserGesture; 1434b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1435b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#setDefaultVideoPosterURL}. 1438c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1439c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void setDefaultVideoPosterURL(String url) { 1440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 1441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (mDefaultVideoPosterURL != null && !mDefaultVideoPosterURL.equals(url) || 1442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mDefaultVideoPosterURL == null && url != null) { 1443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mDefaultVideoPosterURL = url; 1444c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mEventHandler.updateWebkitPreferencesLocked(); 1445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1447c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 1450c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * See {@link android.webkit.WebSettings#getDefaultVideoPosterURL}. 1451c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1452c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public String getDefaultVideoPosterURL() { 1453c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) synchronized (mAwSettingsLock) { 14545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getDefaultVideoPosterURLLocked(); 1455c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1456c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1457c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1458b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1459b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private String getDefaultVideoPosterURLLocked() { 14605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1461b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDefaultVideoPosterURL; 1462b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1463b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 14645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private void onGestureZoomSupportChanged( 14655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) final boolean supportsDoubleTapZoom, final boolean supportsMultiTouchZoom) { 14667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Always post asynchronously here, to avoid doubling back onto the caller. 14671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mEventHandler.maybePostOnUiThread(new Runnable() { 1468b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @Override 1469b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public void run() { 14701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) synchronized (mAwSettingsLock) { 14711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (mZoomChangeListener != null) { 14725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) mZoomChangeListener.onGestureZoomSupportChanged( 14735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) supportsDoubleTapZoom, supportsMultiTouchZoom); 14741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 14751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1476b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1477b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) }); 1478b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1479b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1480b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) /** 1481b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * See {@link android.webkit.WebSettings#setSupportZoom}. 1482b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 1483b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public void setSupportZoom(boolean support) { 1484b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 1485b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) if (mSupportZoom != support) { 1486b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) mSupportZoom = support; 14875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) onGestureZoomSupportChanged( 14885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) supportsDoubleTapZoomLocked(), supportsMultiTouchZoomLocked()); 1489b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1490b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1491b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1492b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1493b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) /** 1494b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * See {@link android.webkit.WebSettings#supportZoom}. 1495b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 1496b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public boolean supportZoom() { 1497b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 1498b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mSupportZoom; 1499b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1500b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1501b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1502b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) /** 1503b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * See {@link android.webkit.WebSettings#setBuiltInZoomControls}. 1504b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 1505b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public void setBuiltInZoomControls(boolean enabled) { 1506b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 1507b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) if (mBuiltInZoomControls != enabled) { 1508b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) mBuiltInZoomControls = enabled; 15095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) onGestureZoomSupportChanged( 15105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) supportsDoubleTapZoomLocked(), supportsMultiTouchZoomLocked()); 1511b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1512b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1513b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1514b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1515b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) /** 1516b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * See {@link android.webkit.WebSettings#getBuiltInZoomControls}. 1517b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 1518b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public boolean getBuiltInZoomControls() { 1519b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 1520b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mBuiltInZoomControls; 1521b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1522b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1523b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1524b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) /** 1525b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * See {@link android.webkit.WebSettings#setDisplayZoomControls}. 1526b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 1527b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public void setDisplayZoomControls(boolean enabled) { 1528b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 1529b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) mDisplayZoomControls = enabled; 1530b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1531b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1532b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1533b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) /** 1534b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * See {@link android.webkit.WebSettings#getDisplayZoomControls}. 1535b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 1536b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public boolean getDisplayZoomControls() { 1537b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 1538b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mDisplayZoomControls; 1539b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1540b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1541b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 15420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public void setMixedContentMode(int mode) { 15430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch synchronized (mAwSettingsLock) { 15440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (mMixedContentMode != mode) { 15450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch mMixedContentMode = mode; 15460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch mEventHandler.updateWebkitPreferencesLocked(); 15470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 15480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 15490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 15500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 15510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public int getMixedContentMode() { 15520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch synchronized (mAwSettingsLock) { 15530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return mMixedContentMode; 15540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 15550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 15560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 15570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch @CalledByNative 15580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private boolean getAllowRunningInsecureContentLocked() { 15590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch assert Thread.holdsLock(mAwSettingsLock); 15600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return mMixedContentMode == MIXED_CONTENT_ALWAYS_ALLOW; 15610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 15620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 15630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch @CalledByNative 15640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private boolean getAllowDisplayingInsecureContentLocked() { 15650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch assert Thread.holdsLock(mAwSettingsLock); 15660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return mMixedContentMode == MIXED_CONTENT_ALWAYS_ALLOW || 15670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch mMixedContentMode == MIXED_CONTENT_COMPATIBILITY_MODE; 15680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 15690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 15705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu /** 15715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu * Sets whether to use the video overlay for the embedded video. 15725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu * @param flag whether to enable the video overlay for the embedded video. 15735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu */ 15745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public void setVideoOverlayForEmbeddedVideoEnabled(final boolean enabled) { 15755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu synchronized (mAwSettingsLock) { 15765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (mVideoOverlayForEmbeddedVideoEnabled != enabled) { 15775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu mVideoOverlayForEmbeddedVideoEnabled = enabled; 15785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu mEventHandler.runOnUiThreadBlockingAndLocked(new Runnable() { 15795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu @Override 15805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public void run() { 1581010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (mNativeAwSettings != 0) { 1582010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) nativeUpdateRendererPreferencesLocked(mNativeAwSettings); 1583010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 15845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 15855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu }); 15865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 15875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 15885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 15895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 15905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu /** 15915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu * Gets whether to use the video overlay for the embedded video. 15925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu * @return true if the WebView enables the video overlay for the embedded video. 15935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu */ 15945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public boolean getVideoOverlayForEmbeddedVideoEnabled() { 15955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu synchronized (mAwSettingsLock) { 15965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return getVideoOverlayForEmbeddedVideoEnabledLocked(); 15975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 15985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 15995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 16005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu @CalledByNative 16015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private boolean getVideoOverlayForEmbeddedVideoEnabledLocked() { 16025c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu assert Thread.holdsLock(mAwSettingsLock); 16035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return mVideoOverlayForEmbeddedVideoEnabled; 16045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 16055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 16065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) @CalledByNative 16075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private boolean supportsDoubleTapZoomLocked() { 16085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 16095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return mSupportZoom && mBuiltInZoomControls && mUseWideViewport; 16105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 16115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 16125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private boolean supportsMultiTouchZoomLocked() { 16137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) assert Thread.holdsLock(mAwSettingsLock); 1614b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return mSupportZoom && mBuiltInZoomControls; 1615b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1616b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 16175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) boolean supportsMultiTouchZoom() { 1618b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 16195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return supportsMultiTouchZoomLocked(); 1620b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1621b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1622b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1623b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) boolean shouldDisplayZoomControls() { 1624b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 16255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return supportsMultiTouchZoomLocked() && mDisplayZoomControls; 1626b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1627b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1628b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1629c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private int clipFontSize(int size) { 1630c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (size < MINIMUM_FONT_SIZE) { 1631c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return MINIMUM_FONT_SIZE; 1632c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else if (size > MAXIMUM_FONT_SIZE) { 1633c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return MAXIMUM_FONT_SIZE; 1634c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1635c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return size; 1636c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1637c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1638b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) @CalledByNative 1639b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private void updateEverything() { 1640b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) synchronized (mAwSettingsLock) { 164146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) updateEverythingLocked(); 1642b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1643b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1644b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 16455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) @CalledByNative 16465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private void populateWebPreferences(long webPrefsPtr) { 16475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) synchronized (mAwSettingsLock) { 1648010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) assert mNativeAwSettings != 0; 16495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) nativePopulateWebPreferencesLocked(mNativeAwSettings, webPrefsPtr); 1650c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 16512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 16522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private void updateWebkitPreferencesOnUiThreadLocked() { 16545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert mEventHandler.mHandler != null; 16555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ThreadUtils.assertOnUiThread(); 1656010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (mNativeAwSettings != 0) { 1657010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) nativeUpdateWebkitPreferencesLocked(mNativeAwSettings); 1658010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 16595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 16605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1661a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native long nativeInit(long webContentsPtr); 16622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1663a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeDestroy(long nativeAwSettings); 16642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private native void nativePopulateWebPreferencesLocked(long nativeAwSettings, long webPrefsPtr); 16665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1667a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeResetScrollAndScaleState(long nativeAwSettings); 16682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1669a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeUpdateEverythingLocked(long nativeAwSettings); 1670c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1671a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeUpdateInitialPageScaleLocked(long nativeAwSettings); 1672c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1673a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeUpdateUserAgentLocked(long nativeAwSettings); 16742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1675a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeUpdateWebkitPreferencesLocked(long nativeAwSettings); 16762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1677c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private static native String nativeGetDefaultUserAgent(); 167890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1679a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeUpdateFormDataPreferencesLocked(long nativeAwSettings); 16805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 16815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private native void nativeUpdateRendererPreferencesLocked(long nativeAwSettings); 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1683