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

Unified Diff: chrome/browser/geolocation/geolocation_permission_context_android.h

Issue 2742373003: Limit the amount the Location Settings Dialog will be shown to users. (Closed)
Patch Set: Nit Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/geolocation/geolocation_permission_context_android.h
diff --git a/chrome/browser/geolocation/geolocation_permission_context_android.h b/chrome/browser/geolocation/geolocation_permission_context_android.h
index 9df171370b7d335f9d5fa771adf72d1b754398d2..d4b718fcad0f562203c83d732745819ab4958c36 100644
--- a/chrome/browser/geolocation/geolocation_permission_context_android.h
+++ b/chrome/browser/geolocation/geolocation_permission_context_android.h
@@ -24,6 +24,7 @@
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
#include "chrome/browser/android/location_settings.h"
#include "chrome/browser/geolocation/geolocation_permission_context.h"
#include "components/location/android/location_settings_dialog_context.h"
@@ -39,10 +40,13 @@ class InfoBar;
class GURL;
class PermissionRequestID;
+class PrefRegistrySimple;
class GeolocationPermissionContextAndroid
: public GeolocationPermissionContext {
public:
+ static void RegisterProfilePrefs(PrefRegistrySimple* registry);
+
explicit GeolocationPermissionContextAndroid(Profile* profile);
~GeolocationPermissionContextAndroid() override;
@@ -56,6 +60,9 @@ class GeolocationPermissionContextAndroid
private:
friend class GeolocationPermissionContextTests;
+ static void AddDayOffsetForTesting(int days);
+ static void SetDSEOriginForTesting(const char* dse_origin);
+
// GeolocationPermissionContext:
void RequestPermission(
content::WebContents* web_contents,
@@ -65,6 +72,10 @@ class GeolocationPermissionContextAndroid
const BrowserPermissionCallback& callback) override;
void CancelPermissionRequest(content::WebContents* web_contents,
const PermissionRequestID& id) override;
+ void UserMadePermissionDecision(const PermissionRequestID& id,
+ const GURL& requesting_origin,
+ const GURL& embedding_origin,
+ ContentSetting content_setting) override;
void NotifyPermissionSet(const PermissionRequestID& id,
const GURL& requesting_origin,
const GURL& embedding_origin,
@@ -76,12 +87,22 @@ class GeolocationPermissionContextAndroid
const GURL& requesting_origin,
const GURL& embedding_origin) const override;
+ // Functions to handle back off for showing the Location Settings Dialog.
+ std::string LocationSettingsBackOffLevelPref(
Bernhard Bauer 2017/03/16 16:19:35 Nit: From the name it's not totally clear to me wh
benwells 2017/03/22 06:17:25 Done.
+ const GURL& requesting_origin) const;
+ std::string LocationSettingsNextShowPref(const GURL& requesting_origin) const;
+ bool IsInLocationSettingsBackOff(const GURL& requesting_origin) const;
+ void ResetLocationSettingsBackOff(const GURL& requesting_origin);
+ void UpdateLocationSettingsBackOff(const GURL& requesting_origin);
+
+ // Returns whether location access is possible for the given origin. Ignores
+ // Location Settings Dialog backoff, as the backoff is ignored if the user
+ // will be prompted for permission.
bool IsLocationAccessPossible(content::WebContents* web_contents,
const GURL& requesting_origin,
bool user_gesture);
- LocationSettingsDialogContext GetLocationSettingsDialogContext(
- const GURL& requesting_origin) const;
+ bool IsRequestingOriginDSE(const GURL& requesting_origin) const;
void HandleUpdateAndroidPermissions(const PermissionRequestID& id,
const GURL& requesting_frame_origin,
@@ -94,7 +115,8 @@ class GeolocationPermissionContextAndroid
// be shown, any gesture requirements for the origin are met, and the dialog
// is not being suppressed for backoff.
bool CanShowLocationSettingsDialog(const GURL& requesting_origin,
- bool user_gesture) const;
+ bool user_gesture,
+ bool ignore_backoff) const;
void OnLocationSettingsDialogShown(
const PermissionRequestID& id,

Powered by Google App Engine
This is Rietveld 408576698