10c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project/* 235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck * Copyright (C) 2011 The Android Open Source Project 30c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * 40c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 50c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * you may not use this file except in compliance with the License. 60c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * You may obtain a copy of the License at 70c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * 80c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 90c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * 100c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 110c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 120c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * See the License for the specific language governing permissions and 140c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * limitations under the License. 150c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project */ 160c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 170c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectpackage com.android.browser; 180c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 199804c433f5c73877e3b529eeee0e60d5395014e7Grace Klobaimport android.app.ActivityManager; 200c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.content.ContentResolver; 210c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.content.Context; 220c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.content.SharedPreferences; 231da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reckimport android.content.SharedPreferences.Editor; 24812d2d690ffa918a6e9f43da0967e43657ef817cJohn Reckimport android.content.SharedPreferences.OnSharedPreferenceChangeListener; 2596497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Leaseimport android.net.ConnectivityManager; 2696497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Leaseimport android.net.NetworkInfo; 27f48314fcba4d6ddda8abf2e30f94112542363ca5John Reckimport android.os.Build; 2823da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdochimport android.os.Message; 290cb8189efd19242f4b2962378bf32de122dafde0Ben Murdochimport android.preference.PreferenceManager; 300cb8189efd19242f4b2962378bf32de122dafde0Ben Murdochimport android.provider.Browser; 31825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwoodimport android.provider.Settings; 325ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reckimport android.util.DisplayMetrics; 330c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.webkit.CookieManager; 34f344d03c0b01d30575ba1ddd1ed340705c6f5a97Steve Blockimport android.webkit.GeolocationPermissions; 350c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.webkit.WebIconDatabase; 360c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.webkit.WebSettings; 3735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckimport android.webkit.WebSettings.LayoutAlgorithm; 3835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckimport android.webkit.WebSettings.PluginState; 3935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckimport android.webkit.WebSettings.TextSize; 4035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckimport android.webkit.WebSettings.ZoomDensity; 414d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixonimport android.webkit.WebSettingsClassic; 424d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixonimport android.webkit.WebSettingsClassic.AutoFillProfile; 4378a98e459323f938e97789a6131beddbebb459ceNicolas Roardimport android.webkit.WebStorage; 44812d2d690ffa918a6e9f43da0967e43657ef817cJohn Reckimport android.webkit.WebView; 45812d2d690ffa918a6e9f43da0967e43657ef817cJohn Reckimport android.webkit.WebViewDatabase; 460c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 474650033a3790598316d01deef8f52d0bf39d5837John Reckimport com.android.browser.homepages.HomeProvider; 484650033a3790598316d01deef8f52d0bf39d5837John Reckimport com.android.browser.provider.BrowserProvider; 494650033a3790598316d01deef8f52d0bf39d5837John Reckimport com.android.browser.search.SearchEngine; 504650033a3790598316d01deef8f52d0bf39d5837John Reckimport com.android.browser.search.SearchEngines; 514650033a3790598316d01deef8f52d0bf39d5837John Reck 5235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckimport java.lang.ref.WeakReference; 5335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckimport java.util.Iterator; 5435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckimport java.util.LinkedList; 55b8b2af8be793c442add61afbe852d55ef978361cJohn Reckimport java.util.WeakHashMap; 560c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 5735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck/** 5835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck * Class for managing settings 590c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project */ 6035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reckpublic class BrowserSettings implements OnSharedPreferenceChangeListener, 6135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck PreferenceKeys { 62376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb 6335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // TODO: Do something with this UserAgent stuff 647fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (X11; " + 657fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck "Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) " + 667fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck "Chrome/11.0.696.34 Safari/534.24"; 670c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 680c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project private static final String IPHONE_USERAGENT = "Mozilla/5.0 (iPhone; U; " + 6935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck "CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 " + 7035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck "(KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"; 71f6915fbb568e513a1968f6a4311559b5c832064dBart Sears 72f6915fbb568e513a1968f6a4311559b5c832064dBart Sears private static final String IPAD_USERAGENT = "Mozilla/5.0 (iPad; U; " + 7335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck "CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 " + 7435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck "(KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"; 75f6915fbb568e513a1968f6a4311559b5c832064dBart Sears 76f6915fbb568e513a1968f6a4311559b5c832064dBart Sears private static final String FROYO_USERAGENT = "Mozilla/5.0 (Linux; U; " + 7735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck "Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 " + 7835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck "(KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; 790c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 807fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck private static final String HONEYCOMB_USERAGENT = "Mozilla/5.0 (Linux; U; " + 817fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck "Android 3.1; en-us; Xoom Build/HMJ25) AppleWebKit/534.13 " + 827fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck "(KHTML, like Gecko) Version/4.0 Safari/534.13"; 837fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck 8435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private static final String USER_AGENTS[] = { null, 8535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck DESKTOP_USERAGENT, 8635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck IPHONE_USERAGENT, 8735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck IPAD_USERAGENT, 887fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck FROYO_USERAGENT, 897fd1e8f86ead29d4cfad3d16e54f4427ac7bf39fJohn Reck HONEYCOMB_USERAGENT, 9035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck }; 910c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 928fc22a1c7846b4c7c7b74d1ec59ffc59c2695c15John Reck // The minimum min font size 938fc22a1c7846b4c7c7b74d1ec59ffc59c2695c15John Reck // Aka, the lower bounds for the min font size range 948fc22a1c7846b4c7c7b74d1ec59ffc59c2695c15John Reck // which is 1:5..24 958fc22a1c7846b4c7c7b74d1ec59ffc59c2695c15John Reck private static final int MIN_FONT_SIZE_OFFSET = 5; 967dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck // The initial value in the text zoom range 977dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck // This is what represents 100% in the SeekBarPreference range 987dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck private static final int TEXT_ZOOM_START_VAL = 10; 997dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck // The size of a single step in the text zoom range, in percent 1007dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck private static final int TEXT_ZOOM_STEP = 5; 10167f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware // The initial value in the double tap zoom range 10267f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware // This is what represents 100% in the SeekBarPreference range 10367f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware private static final int DOUBLE_TAP_ZOOM_START_VAL = 5; 10467f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware // The size of a single step in the double tap zoom range, in percent 10567f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware private static final int DOUBLE_TAP_ZOOM_STEP = 5; 1068fc22a1c7846b4c7c7b74d1ec59ffc59c2695c15John Reck 10735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private static BrowserSettings sInstance; 10863bb687da46c285f6a71ff47c9f00e46111ffec2John Reck 10935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private Context mContext; 11035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private SharedPreferences mPrefs; 11135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private LinkedList<WeakReference<WebSettings>> mManagedSettings; 1128233facddcc51865d612a919d450db6954aa48e3Michael Kolb private Controller mController; 11335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private WebStorageSizeManager mWebStorageSizeManager; 11435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private AutofillHandler mAutofillHandler; 115b8b2af8be793c442add61afbe852d55ef978361cJohn Reck private WeakHashMap<WebSettings, String> mCustomUserAgents; 116aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch private static boolean sInitialized = false; 117c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck private boolean mNeedsSharedSync = true; 1185ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reck private float mFontSizeMult = 1.0f; 11978a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck 12096497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease // Current state of network-dependent settings 12196497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease private boolean mLinkPrefetchAllowed = true; 12296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 12378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck // Cached values 12478a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck private int mPageCacheCapacity = 1; 12578a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck private String mAppCachePath; 1260c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 12735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // Cached settings 12835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private SearchEngine mSearchEngine; 1290c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 130aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch private static String sFactoryResetUrl; 131aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch 13235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public static void initialize(final Context context) { 13335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck sInstance = new BrowserSettings(context); 13435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 1350c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 13635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public static BrowserSettings getInstance() { 13735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return sInstance; 13835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 139ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch 14035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private BrowserSettings(Context context) { 141914c5591baeb86bf30a5bc28930071442a822d60Ben Murdoch mContext = context.getApplicationContext(); 14235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); 14335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mAutofillHandler = new AutofillHandler(mContext); 14435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mManagedSettings = new LinkedList<WeakReference<WebSettings>>(); 145b8b2af8be793c442add61afbe852d55ef978361cJohn Reck mCustomUserAgents = new WeakHashMap<WebSettings, String>(); 14635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mAutofillHandler.asyncLoadFromDb(); 147cadae72b6309303bc7b22e85181222b73e176c32John Reck BackgroundHandler.execute(mSetup); 148ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch } 149ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch 15035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void setController(Controller controller) { 15135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mController = controller; 152c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck if (sInitialized) { 153c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck syncSharedSettings(); 154c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck } 15535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 1560c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 15735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void startManagingSettings(WebSettings settings) { 1584d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixon WebSettingsClassic settingsClassic = (WebSettingsClassic) settings; 159c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck if (mNeedsSharedSync) { 160c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck syncSharedSettings(); 161c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck } 16235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck synchronized (mManagedSettings) { 1634d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixon syncStaticSettings(settingsClassic); 1644d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixon syncSetting(settingsClassic); 16535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mManagedSettings.add(new WeakReference<WebSettings>(settings)); 1660c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 1670c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 1680c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 169d1d87315942218816a509798a299612ed674c21cJohn Reck public void stopManagingSettings(WebSettings settings) { 170d1d87315942218816a509798a299612ed674c21cJohn Reck Iterator<WeakReference<WebSettings>> iter = mManagedSettings.iterator(); 171d1d87315942218816a509798a299612ed674c21cJohn Reck while (iter.hasNext()) { 172d1d87315942218816a509798a299612ed674c21cJohn Reck WeakReference<WebSettings> ref = iter.next(); 173d1d87315942218816a509798a299612ed674c21cJohn Reck if (ref.get() == settings) { 174d1d87315942218816a509798a299612ed674c21cJohn Reck iter.remove(); 175d1d87315942218816a509798a299612ed674c21cJohn Reck return; 176d1d87315942218816a509798a299612ed674c21cJohn Reck } 177d1d87315942218816a509798a299612ed674c21cJohn Reck } 178d1d87315942218816a509798a299612ed674c21cJohn Reck } 179d1d87315942218816a509798a299612ed674c21cJohn Reck 180cadae72b6309303bc7b22e85181222b73e176c32John Reck private Runnable mSetup = new Runnable() { 18178a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck 18278a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck @Override 18378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck public void run() { 1845ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reck DisplayMetrics metrics = mContext.getResources().getDisplayMetrics(); 1855ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reck mFontSizeMult = metrics.scaledDensity / metrics.density; 18678a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck // the cost of one cached page is ~3M (measured using nytimes.com). For 18778a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck // low end devices, we only cache one page. For high end devices, we try 18878a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck // to cache more pages, currently choose 5. 18978a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck if (ActivityManager.staticGetMemoryClass() > 16) { 19078a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck mPageCacheCapacity = 5; 19178a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 19278a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck mWebStorageSizeManager = new WebStorageSizeManager(mContext, 19378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck new WebStorageSizeManager.StatFsDiskInfo(getAppCachePath()), 19478a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck new WebStorageSizeManager.WebKitAppCacheInfo(getAppCachePath())); 195276b1353fdc33cc91cfcd5c79f77b6857543859dJohn Reck // Workaround b/5254577 196276b1353fdc33cc91cfcd5c79f77b6857543859dJohn Reck mPrefs.registerOnSharedPreferenceChangeListener(BrowserSettings.this); 19778a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck if (Build.VERSION.CODENAME.equals("REL")) { 19878a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck // This is a release build, always startup with debug disabled 19978a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck setDebugEnabled(false); 20078a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 20178a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck if (mPrefs.contains(PREF_TEXT_SIZE)) { 20278a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck /* 20378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck * Update from TextSize enum to zoom percent 20478a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck * SMALLEST is 50% 20578a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck * SMALLER is 75% 20678a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck * NORMAL is 100% 20778a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck * LARGER is 150% 20878a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck * LARGEST is 200% 20978a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck */ 21078a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck switch (getTextSize()) { 21178a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck case SMALLEST: 21278a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck setTextZoom(50); 21378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck break; 21478a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck case SMALLER: 21578a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck setTextZoom(75); 21678a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck break; 21778a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck case LARGER: 21878a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck setTextZoom(150); 21978a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck break; 22078a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck case LARGEST: 22178a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck setTextZoom(200); 22278a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck break; 22378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 22478a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck mPrefs.edit().remove(PREF_TEXT_SIZE).apply(); 22578a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 226aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch 227aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch sFactoryResetUrl = mContext.getResources().getString(R.string.homepage_base); 228aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch if (sFactoryResetUrl.indexOf("{CID}") != -1) { 229aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch sFactoryResetUrl = sFactoryResetUrl.replace("{CID}", 230aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch BrowserProvider.getClientId(mContext.getContentResolver())); 231aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch } 232aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch 233aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch synchronized (BrowserSettings.class) { 234aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch sInitialized = true; 235aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch BrowserSettings.class.notifyAll(); 23678a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 23778a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 23878a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck }; 23978a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck 240aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch private static void requireInitialization() { 241aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch synchronized (BrowserSettings.class) { 242aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch while (!sInitialized) { 24378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck try { 244aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch BrowserSettings.class.wait(); 24578a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } catch (InterruptedException e) { 24678a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 24778a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 24878a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 24978a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 25078a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck 2510c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project /** 25235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck * Syncs all the settings that have a Preference UI 2530c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project */ 2544d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixon private void syncSetting(WebSettingsClassic settings) { 25535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setGeolocationEnabled(enableGeolocation()); 25635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setJavaScriptEnabled(enableJavascript()); 25735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setLightTouchEnabled(enableLightTouch()); 25835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setNavDump(enableNavDump()); 25931adf671737521438499be855043296f33e1c3a6Derek Sollenberger settings.setHardwareAccelSkiaEnabled(isSkiaHardwareAccelerated()); 26035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setShowVisualIndicator(enableVisualIndicator()); 26135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setDefaultTextEncodingName(getDefaultTextEncoding()); 26235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setDefaultZoom(getDefaultZoom()); 26335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setMinimumFontSize(getMinimumFontSize()); 26435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setMinimumLogicalFontSize(getMinimumFontSize()); 26592f25f806c50bb08de80e1e6741b9852e105b8d9John Reck settings.setForceUserScalable(forceEnableUserScalable()); 26635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setPluginState(getPluginState()); 2677dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck settings.setTextZoom(getTextZoom()); 26867f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware settings.setDoubleTapZoom(getDoubleTapZoom()); 26935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setAutoFillEnabled(isAutofillEnabled()); 27035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setLayoutAlgorithm(getLayoutAlgorithm()); 271dc657fa17179878ecf536ad1cb6e8891c4aab29eSteve Block settings.setJavaScriptCanOpenWindowsAutomatically(!blockPopupWindows()); 27235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setLoadsImagesAutomatically(loadImages()); 27335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setLoadWithOverviewMode(loadPageInOverviewMode()); 27435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setSavePassword(rememberPasswords()); 27535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setSaveFormData(saveFormdata()); 27635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setUseWideViewPort(isWideViewport()); 27735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setAutoFillProfile(getAutoFillProfile()); 278b8b2af8be793c442add61afbe852d55ef978361cJohn Reck 279b8b2af8be793c442add61afbe852d55ef978361cJohn Reck String ua = mCustomUserAgents.get(settings); 2804650033a3790598316d01deef8f52d0bf39d5837John Reck if (ua != null) { 281b8b2af8be793c442add61afbe852d55ef978361cJohn Reck settings.setUserAgentString(ua); 282b8b2af8be793c442add61afbe852d55ef978361cJohn Reck } else { 283b8b2af8be793c442add61afbe852d55ef978361cJohn Reck settings.setUserAgentString(USER_AGENTS[getUserAgent()]); 284b8b2af8be793c442add61afbe852d55ef978361cJohn Reck } 2852fd9d0e1db6c2f3bb364f651ef3b32189b7ef77dJohn Reck 286ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck boolean useInverted = useInvertedRendering(); 287eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck settings.setProperty(WebViewProperties.gfxInvertedScreen, 288ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck useInverted ? "true" : "false"); 289ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck if (useInverted) { 290ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck settings.setProperty(WebViewProperties.gfxInvertedScreenContrast, 291ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck Float.toString(getInvertedContrast())); 292ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck } 29385de57ad68c831729ebc46b87548ddb1e92ab6a5Teng-Hui Zhu 294ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck if (isDebugEnabled()) { 295ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck settings.setProperty(WebViewProperties.gfxEnableCpuUploadPath, 296ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck enableCpuUploadPath() ? "true" : "false"); 297ea17e784b39f50160eb92487f4b166a8fd98e8c2John Reck } 29896497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 29996497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease settings.setLinkPrefetchEnabled(mLinkPrefetchAllowed); 300ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch } 301dd4f4297c08803b238af28dddb373a1aea06cc1eRamanan Rajeswaran 30235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck /** 30335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck * Syncs all the settings that have no UI 30435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck * These cannot change, so we only need to set them once per WebSettings 30535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck */ 3064d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixon private void syncStaticSettings(WebSettingsClassic settings) { 30735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setDefaultFontSize(16); 30835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setDefaultFixedFontSize(13); 30935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setPageCacheCapacity(getPageCacheCapacity()); 31035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 31135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // WebView inside Browser doesn't want initial focus to be set. 31235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setNeedInitialFocus(false); 31335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // Browser supports multiple windows 31435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setSupportMultipleWindows(true); 31535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // enable smooth transition for better performance during panning or 31635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // zooming 31735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setEnableSmoothTransition(true); 318164f74e38918ea01a5f631a7cf4d807d397c6a51Teng-Hui Zhu // WebView should be preserving the memory as much as possible. 319164f74e38918ea01a5f631a7cf4d807d397c6a51Teng-Hui Zhu // However, apps like browser wish to turn on the performance mode which 320164f74e38918ea01a5f631a7cf4d807d397c6a51Teng-Hui Zhu // would require more memory. 321164f74e38918ea01a5f631a7cf4d807d397c6a51Teng-Hui Zhu // TODO: We need to dynamically allocate/deallocate temporary memory for 322164f74e38918ea01a5f631a7cf4d807d397c6a51Teng-Hui Zhu // apps which are trying to use minimal memory. Currently, double 323164f74e38918ea01a5f631a7cf4d807d397c6a51Teng-Hui Zhu // buffering is always turned on, which is unnecessary. 324164f74e38918ea01a5f631a7cf4d807d397c6a51Teng-Hui Zhu settings.setProperty(WebViewProperties.gfxUseMinimalMemory, "false"); 32535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // disable content url access 32635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setAllowContentAccess(false); 32735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 32835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // HTML5 API flags 32935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setAppCacheEnabled(true); 33035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setDatabaseEnabled(true); 33135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setDomStorageEnabled(true); 33235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setWorkersEnabled(true); // This only affects V8. 3339804c433f5c73877e3b529eeee0e60d5395014e7Grace Kloba 33435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // HTML5 configuration parametersettings. 33578a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck settings.setAppCacheMaxSize(getWebStorageSizeManager().getAppCacheMaxSize()); 33635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setAppCachePath(getAppCachePath()); 33735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setDatabasePath(mContext.getDir("databases", 0).getPath()); 33835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck settings.setGeolocationDatabasePath(mContext.getDir("geolocation", 0).getPath()); 33937bf04438f6dcf781fe560b0c0c7cfa798e154c7Selim Gurun // origin policy for file access 34037bf04438f6dcf781fe560b0c0c7cfa798e154c7Selim Gurun settings.setAllowUniversalAccessFromFileURLs(false); 34137bf04438f6dcf781fe560b0c0c7cfa798e154c7Selim Gurun settings.setAllowFileAccessFromFileURLs(false); 34235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 34335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 34435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private void syncSharedSettings() { 345c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck mNeedsSharedSync = false; 34635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck CookieManager.getInstance().setAcceptCookie(acceptCookies()); 34735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (mController != null) { 34835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mController.setShouldShowErrorConsole(enableJavascriptConsole()); 3490cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch } 35035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 3510cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch 35235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private void syncManagedSettings() { 35335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck syncSharedSettings(); 35435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck synchronized (mManagedSettings) { 35535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck Iterator<WeakReference<WebSettings>> iter = mManagedSettings.iterator(); 35635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck while (iter.hasNext()) { 35735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck WeakReference<WebSettings> ref = iter.next(); 3584d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixon WebSettingsClassic settings = (WebSettingsClassic)ref.get(); 35935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (settings == null) { 36035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck iter.remove(); 36135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck continue; 36235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 36335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck syncSetting(settings); 364ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch } 36535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 36635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 367ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch 36835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck @Override 36935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void onSharedPreferenceChanged( 37035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck SharedPreferences sharedPreferences, String key) { 37135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck syncManagedSettings(); 37235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (PREF_SEARCH_ENGINE.equals(key)) { 37335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck updateSearchEngine(false); 37496497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } else if (PREF_FULLSCREEN.equals(key)) { 37547ed4b883a66e08240066e0bd0aa66d1571005b3Magnus Hallqvist if (mController != null && mController.getUi() != null) { 376c38c604eca3bd0620cd9284187aace78455e723dMichael Kolb mController.getUi().setFullscreen(useFullscreen()); 377c38c604eca3bd0620cd9284187aace78455e723dMichael Kolb } 3780241e7556501caae1f57d2bdf3677d7e4a619eb0Michael Kolb } else if (PREF_ENABLE_QUICK_CONTROLS.equals(key)) { 37947ed4b883a66e08240066e0bd0aa66d1571005b3Magnus Hallqvist if (mController != null && mController.getUi() != null) { 3800241e7556501caae1f57d2bdf3677d7e4a619eb0Michael Kolb mController.getUi().setUseQuickControls(sharedPreferences.getBoolean(key, false)); 3810241e7556501caae1f57d2bdf3677d7e4a619eb0Michael Kolb } 38296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } else if (PREF_LINK_PREFETCH.equals(key)) { 38396497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease updateConnectionType(); 384c38c604eca3bd0620cd9284187aace78455e723dMichael Kolb } 38535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 38635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 387961d35d6e9cd58d930d8572b91d7e0c9f928f1e8John Reck public static String getFactoryResetHomeUrl(Context context) { 388aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch requireInitialization(); 389aaa1f375bc9d6a6a175819fac34d39202f69a166Ben Murdoch return sFactoryResetUrl; 39035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 39135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 39235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public LayoutAlgorithm getLayoutAlgorithm() { 39335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck LayoutAlgorithm layoutAlgorithm = LayoutAlgorithm.NORMAL; 39435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (autofitPages()) { 39535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck layoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS; 39635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 39735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (isDebugEnabled()) { 39835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (isSmallScreen()) { 39935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck layoutAlgorithm = LayoutAlgorithm.SINGLE_COLUMN; 400ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch } else { 40135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (isNormalLayout()) { 40235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck layoutAlgorithm = LayoutAlgorithm.NORMAL; 40335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } else { 40435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck layoutAlgorithm = LayoutAlgorithm.NARROW_COLUMNS; 40535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 406ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch } 40735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 40835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return layoutAlgorithm; 40935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 410ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch 41135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public int getPageCacheCapacity() { 41278a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck requireInitialization(); 41378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck return mPageCacheCapacity; 41435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 415ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch 41635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public WebStorageSizeManager getWebStorageSizeManager() { 41778a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck requireInitialization(); 41835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mWebStorageSizeManager; 41935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 420ef67165a877b1cd17d4afc6e2e17caa97fc399f2Ben Murdoch 42135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private String getAppCachePath() { 42278a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck if (mAppCachePath == null) { 42378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck mAppCachePath = mContext.getDir("appcache", 0).getPath(); 42478a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck } 42578a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck return mAppCachePath; 4260c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 4270c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 42835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck private void updateSearchEngine(boolean force) { 42935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck String searchEngineName = getSearchEngineName(); 43035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (force || mSearchEngine == null || 43135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck !mSearchEngine.getName().equals(searchEngineName)) { 43235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mSearchEngine = SearchEngines.get(mContext, searchEngineName); 4335119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath } 4345119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath } 4355119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath 43635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public SearchEngine getSearchEngine() { 43735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (mSearchEngine == null) { 43835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck updateSearchEngine(false); 4390c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 44035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mSearchEngine; 44135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 442ffa561e00d3934de9451bf599a2d4f355a33041bDerek Sollenberger 44335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean isDebugEnabled() { 444c477e71ec9b3b65d6ef633d4e536ae6cc19dd0f9John Reck requireInitialization(); 44535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_DEBUG_MENU, false); 44635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 447ffa561e00d3934de9451bf599a2d4f355a33041bDerek Sollenberger 44835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void setDebugEnabled(boolean value) { 4491da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reck Editor edit = mPrefs.edit(); 4501da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reck edit.putBoolean(PREF_DEBUG_MENU, value); 4511da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reck if (!value) { 4521da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reck // Reset to "safe" value 4531da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reck edit.putBoolean(PREF_ENABLE_HARDWARE_ACCEL_SKIA, false); 4541da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reck } 4551da8188e950f6e68e1edd44fb5b5dbfc8cc2c349John Reck edit.apply(); 45635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 457bff2d603c022691237c31d9a57ad8c217c6e7e11Ben Murdoch 45835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void clearCache() { 45935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck WebIconDatabase.getInstance().removeAllIcons(); 46035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (mController != null) { 46135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck WebView current = mController.getCurrentWebView(); 46235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (current != null) { 46335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck current.clearCache(true); 46435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 46535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 46635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 467d9ee1391cac980768fe1364fa5b26f6f0c9c6068Grace Kloba 46835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void clearCookies() { 46935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck CookieManager.getInstance().removeAllCookie(); 47035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 471f344d03c0b01d30575ba1ddd1ed340705c6f5a97Steve Block 47235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void clearHistory() { 47335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck ContentResolver resolver = mContext.getContentResolver(); 47435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck Browser.clearHistory(resolver); 47535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck Browser.clearSearches(resolver); 4760c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 4770c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 47835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void clearFormData() { 47935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck WebViewDatabase.getInstance(mContext).clearFormData(); 48035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (mController!= null) { 48135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck WebView currentTopView = mController.getCurrentTopWebView(); 48235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (currentTopView != null) { 48335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck currentTopView.clearFormData(); 48435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 485bafe58a83ade9cfa5c91e7033fae2d08a64603e8John Reck } 4860c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 4870c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 48835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void clearPasswords() { 48935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck WebViewDatabase db = WebViewDatabase.getInstance(mContext); 49035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck db.clearUsernamePassword(); 49135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck db.clearHttpAuthUsernamePassword(); 492d69f51ddd5b6c28c9d16725e65facaf830d650e1Bjorn Bringert } 493d69f51ddd5b6c28c9d16725e65facaf830d650e1Bjorn Bringert 49435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void clearDatabases() { 49535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck WebStorage.getInstance().deleteAllData(); 496b3c02da4553b1a629b16377970fdabae28394c94Feng Qian } 497b3c02da4553b1a629b16377970fdabae28394c94Feng Qian 49835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void clearLocationAccess() { 49935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck GeolocationPermissions.getInstance().clearAll(); 50079e82b7ba72a7278911edf0dd7b03c65c4ec0e9dAndrei Popescu } 50179e82b7ba72a7278911edf0dd7b03c65c4ec0e9dAndrei Popescu 50235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void resetDefaultPreferences() { 503bd3151980baf8a7d3a13f735f4a7f2001d397e72John Reck // Preserve autologin setting 504bd3151980baf8a7d3a13f735f4a7f2001d397e72John Reck long gal = mPrefs.getLong(GoogleAccountLogin.PREF_AUTOLOGIN_TIME, -1); 505bd3151980baf8a7d3a13f735f4a7f2001d397e72John Reck mPrefs.edit() 506bd3151980baf8a7d3a13f735f4a7f2001d397e72John Reck .clear() 507bd3151980baf8a7d3a13f735f4a7f2001d397e72John Reck .putLong(GoogleAccountLogin.PREF_AUTOLOGIN_TIME, gal) 508bd3151980baf8a7d3a13f735f4a7f2001d397e72John Reck .apply(); 509c885a24c145c085a2507f3ce39ce80ab1773956eBjörn Isaksson resetCachedValues(); 51035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck syncManagedSettings(); 5110c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 5120c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 513c885a24c145c085a2507f3ce39ce80ab1773956eBjörn Isaksson private void resetCachedValues() { 514c885a24c145c085a2507f3ce39ce80ab1773956eBjörn Isaksson updateSearchEngine(false); 515c885a24c145c085a2507f3ce39ce80ab1773956eBjörn Isaksson } 516c885a24c145c085a2507f3ce39ce80ab1773956eBjörn Isaksson 51735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public AutoFillProfile getAutoFillProfile() { 51835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mAutofillHandler.getAutoFillProfile(); 5190c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 5200c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 52135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void setAutoFillProfile(AutoFillProfile profile, Message msg) { 52235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mAutofillHandler.setAutoFillProfile(profile, msg); 523273330a8027dafbd742ba2ebcdaf875e273afb06Ben Murdoch // Auto-fill will reuse the same profile ID when making edits to the profile, 524273330a8027dafbd742ba2ebcdaf875e273afb06Ben Murdoch // so we need to force a settings sync (otherwise the SharedPreferences 525273330a8027dafbd742ba2ebcdaf875e273afb06Ben Murdoch // manager will optimise out the call to onSharedPreferenceChanged(), as 526273330a8027dafbd742ba2ebcdaf875e273afb06Ben Murdoch // it thinks nothing has changed). 527273330a8027dafbd742ba2ebcdaf875e273afb06Ben Murdoch syncManagedSettings(); 52840badf29facf6b5ca894a092062cc27897d2b434John Reck } 52940badf29facf6b5ca894a092062cc27897d2b434John Reck 53035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void toggleDebugSettings() { 53135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck setDebugEnabled(!isDebugEnabled()); 5322f83068b9e8835f97010bc2ee1d77f3a13827ae4Grace Kloba } 5332f83068b9e8835f97010bc2ee1d77f3a13827ae4Grace Kloba 534b8b2af8be793c442add61afbe852d55ef978361cJohn Reck public boolean hasDesktopUseragent(WebView view) { 535b8b2af8be793c442add61afbe852d55ef978361cJohn Reck return view != null && mCustomUserAgents.get(view.getSettings()) != null; 536b8b2af8be793c442add61afbe852d55ef978361cJohn Reck } 537b8b2af8be793c442add61afbe852d55ef978361cJohn Reck 538b8b2af8be793c442add61afbe852d55ef978361cJohn Reck public void toggleDesktopUseragent(WebView view) { 539b0a86db3bfa39863977efd3bac5c9bf527d224aaJohn Reck if (view == null) { 540b0a86db3bfa39863977efd3bac5c9bf527d224aaJohn Reck return; 541b0a86db3bfa39863977efd3bac5c9bf527d224aaJohn Reck } 542b8b2af8be793c442add61afbe852d55ef978361cJohn Reck WebSettings settings = view.getSettings(); 543b8b2af8be793c442add61afbe852d55ef978361cJohn Reck if (mCustomUserAgents.get(settings) != null) { 544b8b2af8be793c442add61afbe852d55ef978361cJohn Reck mCustomUserAgents.remove(settings); 545b8b2af8be793c442add61afbe852d55ef978361cJohn Reck settings.setUserAgentString(USER_AGENTS[getUserAgent()]); 546b8b2af8be793c442add61afbe852d55ef978361cJohn Reck } else { 547b8b2af8be793c442add61afbe852d55ef978361cJohn Reck mCustomUserAgents.put(settings, DESKTOP_USERAGENT); 548b8b2af8be793c442add61afbe852d55ef978361cJohn Reck settings.setUserAgentString(DESKTOP_USERAGENT); 549b8b2af8be793c442add61afbe852d55ef978361cJohn Reck } 550b8b2af8be793c442add61afbe852d55ef978361cJohn Reck } 551b8b2af8be793c442add61afbe852d55ef978361cJohn Reck 5527dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck public static int getAdjustedMinimumFontSize(int rawValue) { 5537dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck rawValue++; // Preference starts at 0, min font at 1 5547dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck if (rawValue > 1) { 5557dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck rawValue += (MIN_FONT_SIZE_OFFSET - 2); 5567dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck } 5577dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck return rawValue; 5587dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck } 5597dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 5605ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reck public int getAdjustedTextZoom(int rawValue) { 5617dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck rawValue = (rawValue - TEXT_ZOOM_START_VAL) * TEXT_ZOOM_STEP; 5625ba3c76b201c4448de4b520f2aee2e7d99fc712dJohn Reck return (int) ((rawValue + 100) * mFontSizeMult); 5637dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck } 5647dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 5657dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck static int getRawTextZoom(int percent) { 5667dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck return (percent - 100) / TEXT_ZOOM_STEP + TEXT_ZOOM_START_VAL; 5677dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck } 5687dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 56967f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware public int getAdjustedDoubleTapZoom(int rawValue) { 57067f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware rawValue = (rawValue - DOUBLE_TAP_ZOOM_START_VAL) * DOUBLE_TAP_ZOOM_STEP; 57167f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware return (int) ((rawValue + 100) * mFontSizeMult); 57267f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware } 57367f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware 57467f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware static int getRawDoubleTapZoom(int percent) { 57567f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware return (percent - 100) / DOUBLE_TAP_ZOOM_STEP + DOUBLE_TAP_ZOOM_START_VAL; 57667f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware } 57767f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware 578cadae72b6309303bc7b22e85181222b73e176c32John Reck public SharedPreferences getPreferences() { 579cadae72b6309303bc7b22e85181222b73e176c32John Reck return mPrefs; 580cadae72b6309303bc7b22e85181222b73e176c32John Reck } 581cadae72b6309303bc7b22e85181222b73e176c32John Reck 58296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease // update connectivity-dependent options 58396497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease public void updateConnectionType() { 58496497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease ConnectivityManager cm = (ConnectivityManager) 58596497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 58696497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease String linkPrefetchPreference = getLinkPrefetchEnabled(); 58796497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease boolean linkPrefetchAllowed = linkPrefetchPreference. 58896497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease equals(getLinkPrefetchAlwaysPreferenceString(mContext)); 58996497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease NetworkInfo ni = cm.getActiveNetworkInfo(); 59096497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease if (ni != null) { 59196497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease switch (ni.getType()) { 59296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_WIFI: 59396497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_ETHERNET: 59496497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_BLUETOOTH: 59596497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease linkPrefetchAllowed |= linkPrefetchPreference. 59696497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease equals(getLinkPrefetchOnWifiOnlyPreferenceString(mContext)); 59796497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease break; 59896497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_MOBILE: 59996497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_MOBILE_DUN: 60096497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_MOBILE_MMS: 60196497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_MOBILE_SUPL: 60296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease case ConnectivityManager.TYPE_WIMAX: 60396497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease default: 60496497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease break; 60596497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 60696497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 60796497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease if (mLinkPrefetchAllowed != linkPrefetchAllowed) { 60896497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease mLinkPrefetchAllowed = linkPrefetchAllowed; 60996497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease syncManagedSettings(); 61096497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 61196497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 61296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 61335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 61435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // getter/setters for accessibility_preferences.xml 61535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 61635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 6177dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck @Deprecated 6187dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck private TextSize getTextSize() { 61935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck String textSize = mPrefs.getString(PREF_TEXT_SIZE, "NORMAL"); 62035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return TextSize.valueOf(textSize); 6210c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 6220c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 62335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public int getMinimumFontSize() { 6248fc22a1c7846b4c7c7b74d1ec59ffc59c2695c15John Reck int minFont = mPrefs.getInt(PREF_MIN_FONT_SIZE, 0); 6257dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck return getAdjustedMinimumFontSize(minFont); 6260c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 6270c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 62892f25f806c50bb08de80e1e6741b9852e105b8d9John Reck public boolean forceEnableUserScalable() { 62992f25f806c50bb08de80e1e6741b9852e105b8d9John Reck return mPrefs.getBoolean(PREF_FORCE_USERSCALABLE, false); 63092f25f806c50bb08de80e1e6741b9852e105b8d9John Reck } 63192f25f806c50bb08de80e1e6741b9852e105b8d9John Reck 6327dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck public int getTextZoom() { 63378a6a1d7c2f5666f90222ecc28fcc26740807cb7John Reck requireInitialization(); 6347dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck int textZoom = mPrefs.getInt(PREF_TEXT_ZOOM, 10); 6357dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck return getAdjustedTextZoom(textZoom); 6367dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck } 6377dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 6387dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck public void setTextZoom(int percent) { 6397dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck mPrefs.edit().putInt(PREF_TEXT_ZOOM, getRawTextZoom(percent)).apply(); 64067f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware } 64167f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware 64267f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware public int getDoubleTapZoom() { 64367f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware requireInitialization(); 64467f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware int doubleTapZoom = mPrefs.getInt(PREF_DOUBLE_TAP_ZOOM, 5); 64567f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware return getAdjustedDoubleTapZoom(doubleTapZoom); 64667f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware } 64767f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware 64867f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware public void setDoubleTapZoom(int percent) { 64967f45c29882e5f9400a38d5387fe474a42cbb620Mangesh Ghiware mPrefs.edit().putInt(PREF_DOUBLE_TAP_ZOOM, getRawDoubleTapZoom(percent)).apply(); 6507dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck } 6517dc444b4c3b70a09a33c0892fb8677922bdf1eccJohn Reck 65235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 65335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // getter/setters for advanced_preferences.xml 65435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 65535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 65635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public String getSearchEngineName() { 65735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getString(PREF_SEARCH_ENGINE, SearchEngine.GOOGLE); 6580c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 6590c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 6608d772b03fcfd83cea6ec81c9e826f700fac88b61Michael Kolb public boolean allowAppTabs() { 6618d772b03fcfd83cea6ec81c9e826f700fac88b61Michael Kolb return mPrefs.getBoolean(PREF_ALLOW_APP_TABS, false); 6628d772b03fcfd83cea6ec81c9e826f700fac88b61Michael Kolb } 6638d772b03fcfd83cea6ec81c9e826f700fac88b61Michael Kolb 66435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean openInBackground() { 66535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_OPEN_IN_BACKGROUND, false); 6660c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 6670c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 66835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean enableJavascript() { 66935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_JAVASCRIPT, true); 6700c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 6710c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 67235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // TODO: Cache 67335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public PluginState getPluginState() { 67435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck String state = mPrefs.getString(PREF_PLUGIN_STATE, "ON"); 67535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return PluginState.valueOf(state); 676ffa561e00d3934de9451bf599a2d4f355a33041bDerek Sollenberger } 677ffa561e00d3934de9451bf599a2d4f355a33041bDerek Sollenberger 67835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // TODO: Cache 67935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public ZoomDensity getDefaultZoom() { 68035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck String zoom = mPrefs.getString(PREF_DEFAULT_ZOOM, "MEDIUM"); 68135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return ZoomDensity.valueOf(zoom); 682930ea2259874ce44b6d1916061a641340123c4e8Teng-Hui Zhu } 683930ea2259874ce44b6d1916061a641340123c4e8Teng-Hui Zhu 68435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean loadPageInOverviewMode() { 68535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_LOAD_PAGE, true); 686376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb } 687376b54116e38b3b94c4d64663d1bff38352b0e59Michael Kolb 68835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean autofitPages() { 68935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_AUTOFIT_PAGES, true); 690bafe58a83ade9cfa5c91e7033fae2d08a64603e8John Reck } 691bafe58a83ade9cfa5c91e7033fae2d08a64603e8John Reck 69235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean blockPopupWindows() { 69335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_BLOCK_POPUP_WINDOWS, true); 6945119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath } 6955119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath 69635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean loadImages() { 69735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_LOAD_IMAGES, true); 6980c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 6990c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 70035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public String getDefaultTextEncoding() { 70135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getString(PREF_DEFAULT_TEXT_ENCODING, null); 7020c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7030c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 70435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 70535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // getter/setters for general_preferences.xml 70635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 70735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 70835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public String getHomePage() { 70935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getString(PREF_HOMEPAGE, getFactoryResetHomeUrl(mContext)); 7100cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch } 7110cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch 71235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void setHomePage(String value) { 71335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mPrefs.edit().putString(PREF_HOMEPAGE, value).apply(); 7140cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch } 7150cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch 71635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean isAutofillEnabled() { 71735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_AUTOFILL_ENABLED, true); 7188029a777106fa6fb911ee1d58402b0de768a583aBen Murdoch } 7198029a777106fa6fb911ee1d58402b0de768a583aBen Murdoch 72035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public void setAutofillEnabled(boolean value) { 72135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck mPrefs.edit().putBoolean(PREF_AUTOFILL_ENABLED, value).apply(); 7226fa32ba4c6bf59a895b220f042a3977e1486ec3eBen Murdoch } 7236fa32ba4c6bf59a895b220f042a3977e1486ec3eBen Murdoch 72435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 72535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // getter/setters for debug_preferences.xml 72635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 7270c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 72835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean isHardwareAccelerated() { 729f48314fcba4d6ddda8abf2e30f94112542363ca5John Reck if (!isDebugEnabled()) { 73035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return true; 7310c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 73235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_HARDWARE_ACCEL, true); 7330c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7340c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 73531adf671737521438499be855043296f33e1c3a6Derek Sollenberger public boolean isSkiaHardwareAccelerated() { 73631adf671737521438499be855043296f33e1c3a6Derek Sollenberger if (!isDebugEnabled()) { 73731adf671737521438499be855043296f33e1c3a6Derek Sollenberger return false; 73831adf671737521438499be855043296f33e1c3a6Derek Sollenberger } 73931adf671737521438499be855043296f33e1c3a6Derek Sollenberger return mPrefs.getBoolean(PREF_ENABLE_HARDWARE_ACCEL_SKIA, false); 74031adf671737521438499be855043296f33e1c3a6Derek Sollenberger } 74131adf671737521438499be855043296f33e1c3a6Derek Sollenberger 74235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public int getUserAgent() { 743f48314fcba4d6ddda8abf2e30f94112542363ca5John Reck if (!isDebugEnabled()) { 74435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return 0; 7450c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 74635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return Integer.parseInt(mPrefs.getString(PREF_USER_AGENT, "0")); 7470c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7480c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 74935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 75035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // getter/setters for hidden_debug_preferences.xml 75135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 7525119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath 75335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean enableVisualIndicator() { 75435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 75535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return false; 7565119edd5744cfc6d3a8ed480a8853586c737bed4Narayan Kamath } 75735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_VISUAL_INDICATOR, false); 7580c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7590c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 76085de57ad68c831729ebc46b87548ddb1e92ab6a5Teng-Hui Zhu public boolean enableCpuUploadPath() { 76185de57ad68c831729ebc46b87548ddb1e92ab6a5Teng-Hui Zhu if (!isDebugEnabled()) { 762dbe001b3ce8f6d1b763caee138b8b6846176b213Teng-Hui Zhu return false; 76385de57ad68c831729ebc46b87548ddb1e92ab6a5Teng-Hui Zhu } 764dbe001b3ce8f6d1b763caee138b8b6846176b213Teng-Hui Zhu return mPrefs.getBoolean(PREF_ENABLE_CPU_UPLOAD_PATH, false); 76585de57ad68c831729ebc46b87548ddb1e92ab6a5Teng-Hui Zhu } 76685de57ad68c831729ebc46b87548ddb1e92ab6a5Teng-Hui Zhu 76735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean enableJavascriptConsole() { 76835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 76935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return false; 77035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 77135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_JAVASCRIPT_CONSOLE, true); 7720c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7730c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 77435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean isSmallScreen() { 77535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 77635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return false; 7770c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 77835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_SMALL_SCREEN, false); 7790c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7800c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 78135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean isWideViewport() { 78235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 78335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return true; 78435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 78535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_WIDE_VIEWPORT, true); 7860c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7870c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 78835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean isNormalLayout() { 78935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 79035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return false; 79135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 79235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_NORMAL_LAYOUT, false); 7930c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 7940c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 79535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean isTracing() { 79635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 79735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return false; 7980c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 79935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_TRACING, false); 8000c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 8010c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 80235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean enableLightTouch() { 80335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 80435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return false; 80535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 80635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_LIGHT_TOUCH, false); 8070c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 8080c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 80935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean enableNavDump() { 81035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 81135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return false; 81235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 81335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_NAV_DUMP, false); 814161974f7f198e1e821297ab1aa46f9f124a972edShimeng (Simon) Wang } 815161974f7f198e1e821297ab1aa46f9f124a972edShimeng (Simon) Wang 81635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public String getJsEngineFlags() { 81735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck if (!isDebugEnabled()) { 81835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return ""; 81935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 82035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getString(PREF_JS_ENGINE_FLAGS, ""); 821f344d03c0b01d30575ba1ddd1ed340705c6f5a97Steve Block } 822f344d03c0b01d30575ba1ddd1ed340705c6f5a97Steve Block 82335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 82435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // getter/setters for lab_preferences.xml 82535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 82678a98e459323f938e97789a6131beddbebb459ceNicolas Roard 82735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean useQuickControls() { 82835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_QUICK_CONTROLS, false); 829f2c5c1b555904400f4092888ae81b8ed74bfe026Grace Kloba } 830f2c5c1b555904400f4092888ae81b8ed74bfe026Grace Kloba 83135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean useMostVisitedHomepage() { 832961d35d6e9cd58d930d8572b91d7e0c9f928f1e8John Reck return HomeProvider.MOST_VISITED.equals(getHomePage()); 8330c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project } 8340c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project 835c38c604eca3bd0620cd9284187aace78455e723dMichael Kolb public boolean useFullscreen() { 836c38c604eca3bd0620cd9284187aace78455e723dMichael Kolb return mPrefs.getBoolean(PREF_FULLSCREEN, false); 837c38c604eca3bd0620cd9284187aace78455e723dMichael Kolb } 838c38c604eca3bd0620cd9284187aace78455e723dMichael Kolb 8392fd9d0e1db6c2f3bb364f651ef3b32189b7ef77dJohn Reck public boolean useInvertedRendering() { 8402fd9d0e1db6c2f3bb364f651ef3b32189b7ef77dJohn Reck return mPrefs.getBoolean(PREF_INVERTED, false); 8412fd9d0e1db6c2f3bb364f651ef3b32189b7ef77dJohn Reck } 8422fd9d0e1db6c2f3bb364f651ef3b32189b7ef77dJohn Reck 8435d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard public float getInvertedContrast() { 8445d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard return 1 + (mPrefs.getInt(PREF_INVERTED_CONTRAST, 0) / 10f); 8455d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard } 8465d513105dff9f453872be40f8bed2391396cf9c7Nicolas Roard 84735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 84835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // getter/setters for privacy_security_preferences.xml 84935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck // ----------------------------- 85023da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch 85135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean showSecurityWarnings() { 85235e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_SHOW_SECURITY_WARNINGS, true); 85323da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch } 85423da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch 85535e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean acceptCookies() { 85635e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ACCEPT_COOKIES, true); 85723da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch } 8580cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch 85935e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean saveFormdata() { 86035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_SAVE_FORMDATA, true); 86135e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck } 8620cb8189efd19242f4b2962378bf32de122dafde0Ben Murdoch 86335e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean enableGeolocation() { 86435e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_ENABLE_GEOLOCATION, true); 86523da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch } 86663bb687da46c285f6a71ff47c9f00e46111ffec2John Reck 86735e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck public boolean rememberPasswords() { 86835e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck return mPrefs.getBoolean(PREF_REMEMBER_PASSWORDS, true); 86963bb687da46c285f6a71ff47c9f00e46111ffec2John Reck } 87035e9dd6283a2d65687104eb0b3a459c02dcb150bJohn Reck 8711461244018a225006a8d4c203f9dfe294ffe94faMichael Kolb // ----------------------------- 8721461244018a225006a8d4c203f9dfe294ffe94faMichael Kolb // getter/setters for bandwidth_preferences.xml 8731461244018a225006a8d4c203f9dfe294ffe94faMichael Kolb // ----------------------------- 8741461244018a225006a8d4c203f9dfe294ffe94faMichael Kolb 875467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood public static String getPreloadOnWifiOnlyPreferenceString(Context context) { 876467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood return context.getResources().getString(R.string.pref_data_preload_value_wifi_only); 8771461244018a225006a8d4c203f9dfe294ffe94faMichael Kolb } 878467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood 879467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood public static String getPreloadAlwaysPreferenceString(Context context) { 880467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood return context.getResources().getString(R.string.pref_data_preload_value_always); 881467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood } 882467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood 883825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood private static final String DEAULT_PRELOAD_SECURE_SETTING_KEY = 884825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood "browser_default_preload_setting"; 885825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood 886825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood public String getDefaultPreloadSetting() { 887825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood String preload = Settings.Secure.getString(mContext.getContentResolver(), 888825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood DEAULT_PRELOAD_SECURE_SETTING_KEY); 889825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood if (preload == null) { 890825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood preload = mContext.getResources().getString(R.string.pref_data_preload_default_value); 891825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood } 892825fba7eb4dae7911f84d8a48a662c4cd6a4db1fMathew Inwood return preload; 893467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood } 894467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood 895467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood public String getPreloadEnabled() { 896467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood return mPrefs.getString(PREF_DATA_PRELOAD, getDefaultPreloadSetting()); 897467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood } 898467813fba07c4dcc4ce350a3d4576f5739c5c940Mathew Inwood 89996497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease public static String getLinkPrefetchOnWifiOnlyPreferenceString(Context context) { 90096497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease return context.getResources().getString(R.string.pref_link_prefetch_value_wifi_only); 90196497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 90296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 90396497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease public static String getLinkPrefetchAlwaysPreferenceString(Context context) { 90496497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease return context.getResources().getString(R.string.pref_link_prefetch_value_always); 90596497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 90696497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 90796497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease private static final String DEFAULT_LINK_PREFETCH_SECURE_SETTING_KEY = 90896497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease "browser_default_link_prefetch_setting"; 90996497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 91096497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease public String getDefaultLinkPrefetchSetting() { 91196497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease String preload = Settings.Secure.getString(mContext.getContentResolver(), 91296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease DEFAULT_LINK_PREFETCH_SECURE_SETTING_KEY); 91396497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease if (preload == null) { 91496497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease preload = mContext.getResources().getString(R.string.pref_link_prefetch_default_value); 91596497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 91696497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease return preload; 91796497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 91896497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 91996497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease public String getLinkPrefetchEnabled() { 92096497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease return mPrefs.getString(PREF_LINK_PREFETCH, getDefaultLinkPrefetchSetting()); 92196497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease } 92296497838babbaeb143b0fbc7d0de9c695e56e9f7Victoria Lease 9233636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount // ----------------------------- 9243636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount // getter/setters for browser recovery 9253636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount // ----------------------------- 9263636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount /** 9273636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * The last time browser was started. 9283636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * @return The last browser start time as System.currentTimeMillis. This 9293636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * can be 0 if this is the first time or the last tab was closed. 9303636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount */ 9313636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount public long getLastRecovered() { 9323636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount return mPrefs.getLong(KEY_LAST_RECOVERED, 0); 9333636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount } 9343636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount 9353636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount /** 9363636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * Sets the last browser start time. 9373636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * @param time The last time as System.currentTimeMillis that the browser 9383636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * was started. This should be set to 0 if the last tab is closed. 9393636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount */ 9403636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount public void setLastRecovered(long time) { 9413636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount mPrefs.edit() 9423636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount .putLong(KEY_LAST_RECOVERED, time) 9433636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount .apply(); 9443636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount } 9453636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount 9463636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount /** 9473636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * Used to determine whether or not the previous browser run crashed. Once 9483636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * the previous state has been determined, the value will be set to false 9493636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * until a pause is received. 9503636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * @return true if the last browser run was paused or false if it crashed. 9513636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount */ 9523636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount public boolean wasLastRunPaused() { 9533636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount return mPrefs.getBoolean(KEY_LAST_RUN_PAUSED, false); 9543636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount } 9553636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount 9563636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount /** 9573636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * Sets whether or not the last run was a pause or crash. 9583636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * @param isPaused Set to true When a pause is received or false after 9593636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount * resuming. 9603636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount */ 9613636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount public void setLastRunPaused(boolean isPaused) { 9623636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount mPrefs.edit() 9633636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount .putBoolean(KEY_LAST_RUN_PAUSED, isPaused) 9643636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount .apply(); 9653636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount } 9660c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project} 967