Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(692)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/LocationSettings.java

Issue 815343005: Clean up geolocation code now that it's all upstream. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: renamed IsSystemLocationEnabled -> IsLocationEnabled Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.preferences; 5 package org.chromium.chrome.browser.preferences;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.content.Intent; 8 import android.content.Intent;
9 import android.location.LocationManager; 9 import android.location.LocationManager;
10 import android.provider.Settings; 10 import android.provider.Settings;
11 11
12 import org.chromium.base.ApplicationStatus; 12 import org.chromium.base.ApplicationStatus;
13 import org.chromium.base.CalledByNative; 13 import org.chromium.base.CalledByNative;
14 import org.chromium.base.ThreadUtils; 14 import org.chromium.base.ThreadUtils;
15 import org.chromium.base.VisibleForTesting; 15 import org.chromium.base.VisibleForTesting;
16 import org.chromium.base.annotations.SuppressFBWarnings; 16 import org.chromium.base.annotations.SuppressFBWarnings;
17 import org.chromium.chrome.browser.ChromiumApplication; 17 import org.chromium.chrome.browser.ChromiumApplication;
18 18
19 import java.util.concurrent.Callable;
20 import java.util.concurrent.ExecutionException;
21
22 /** 19 /**
23 * Provides methods for querying Android system-wide location settings as well a s Chrome's internal 20 * Provides methods for querying Android system-wide location settings as well a s Chrome's internal
24 * location setting. 21 * location setting.
22 *
23 * This class should be used only on the UI thread.
25 */ 24 */
26 public class LocationSettings { 25 public class LocationSettings {
27 26
28 private static LocationSettings sInstance; 27 private static LocationSettings sInstance;
29 28
30 protected final Context mContext; 29 protected final Context mContext;
31 30
32 /** 31 /**
33 * Don't use this; use getInstance() instead. This should be used only by th e Application inside 32 * Don't use this; use getInstance() instead. This should be used only by th e Application inside
34 * of createLocationSettings(). 33 * of createLocationSettings().
35 */ 34 */
36 public LocationSettings(Context context) { 35 public LocationSettings(Context context) {
37 mContext = context; 36 mContext = context;
38 } 37 }
39 38
40 /** 39 /**
41 * Returns the singleton instance of LocationSettings, creating it if needed . 40 * Returns the singleton instance of LocationSettings, creating it if needed .
42 */ 41 */
43 @SuppressFBWarnings("LI_LAZY_INIT_STATIC") 42 @SuppressFBWarnings("LI_LAZY_INIT_STATIC")
44 public static LocationSettings getInstance() { 43 public static LocationSettings getInstance() {
44 ThreadUtils.assertOnUiThread();
45 if (sInstance == null) { 45 if (sInstance == null) {
46 ChromiumApplication application = 46 ChromiumApplication application =
47 (ChromiumApplication) ApplicationStatus.getApplicationContex t(); 47 (ChromiumApplication) ApplicationStatus.getApplicationContex t();
48 sInstance = application.createLocationSettings(); 48 sInstance = application.createLocationSettings();
49 } 49 }
50 return sInstance; 50 return sInstance;
51 } 51 }
52 52
53 /** 53 /**
54 * Returns true if location is enabled system-wide and the Chrome location s etting is enabled. 54 * Returns true if location is enabled system-wide and the Chrome location s etting is enabled.
55 */ 55 */
56 @CalledByNative 56 @CalledByNative
57 public static boolean areAllLocationSettingsEnabled() { 57 public static boolean areAllLocationSettingsEnabled() {
58 try { 58 LocationSettings settings = LocationSettings.getInstance();
59 return ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>(){ 59 return settings.isChromeLocationSettingEnabled()
60 @Override 60 && settings.isSystemLocationSettingEnabled();
61 public Boolean call() throws Exception {
62 LocationSettings settings = LocationSettings.getInstance();
63 return settings.isChromeLocationSettingEnabled()
64 && settings.isSystemLocationSettingEnabled();
65 }
66 });
67 } catch (ExecutionException e) {
68 e.printStackTrace();
69 return false;
70 }
71 } 61 }
72 62
73 /** 63 /**
74 * Returns whether Chrome's user-configurable location setting is enabled. 64 * Returns whether Chrome's user-configurable location setting is enabled.
75 */ 65 */
76 public boolean isChromeLocationSettingEnabled() { 66 public boolean isChromeLocationSettingEnabled() {
77 return PrefServiceBridge.getInstance().isAllowLocationEnabled(); 67 return PrefServiceBridge.getInstance().isAllowLocationEnabled();
78 } 68 }
79 69
80 /** 70 /**
(...skipping 14 matching lines...) Expand all
95 Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 85 Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
96 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 86 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
97 return i; 87 return i;
98 } 88 }
99 89
100 @VisibleForTesting 90 @VisibleForTesting
101 public static void setInstanceForTesting(LocationSettings instance) { 91 public static void setInstanceForTesting(LocationSettings instance) {
102 sInstance = instance; 92 sInstance = instance;
103 } 93 }
104 } 94 }
OLDNEW
« no previous file with comments | « chrome/android/BUILD.gn ('k') | chrome/android/shell/chrome_shell_google_location_settings_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698