// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.browser.preferences.website; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import org.chromium.chrome.R; import org.chromium.chrome.browser.ContentSettingsType; import org.chromium.chrome.browser.preferences.LocationSettings; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.components.location.LocationUtils; /** * A class for dealing with the Geolocation category. */ public class LocationCategory extends SiteSettingsCategory { public LocationCategory() { super(SiteSettingsCategory.CATEGORY_DEVICE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION, ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION); } @Override protected boolean enabledGlobally() { return LocationUtils.getInstance().isSystemLocationSettingEnabled(); } @Override public boolean showPermissionBlockedMessage(Context context) { if (enabledForChrome(context) && enabledGlobally()) { return false; } // The only time we don't want to show location as blocked in system is when Chrome also // blocks Location by policy (because then turning it on in the system isn't going to // turn on location in Chrome). PrefServiceBridge prefs = PrefServiceBridge.getInstance(); if (!LocationSettings.getInstance().isChromeLocationSettingEnabled() && !prefs.isAllowLocationUserModifiable()) { return false; } return true; } @Override protected Intent getIntentToEnableOsGlobalPermission(Context context) { if (enabledGlobally()) return null; return LocationUtils.getInstance().getSystemLocationSettingsIntent(); } @Override protected String getMessageForEnablingOsGlobalPermission(Activity activity) { Resources resources = activity.getResources(); if (enabledForChrome(activity)) { return resources.getString(R.string.android_location_off_globally); } return resources.getString(R.string.android_location_also_off_globally); } }