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

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: 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..a257ab538f04a52921444c50a7f5a8586df5ceef 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 GURL& dse_origin);
+
// GeolocationPermissionContext:
void RequestPermission(
content::WebContents* web_contents,
@@ -65,6 +72,13 @@ class GeolocationPermissionContextAndroid
const BrowserPermissionCallback& callback) override;
void CancelPermissionRequest(content::WebContents* web_contents,
const PermissionRequestID& id) override;
+ void PermissionDecided(const PermissionRequestID& id,
+ const GURL& requesting_origin,
+ const GURL& embedding_origin,
+ bool user_gesture,
+ const BrowserPermissionCallback& callback,
+ bool persist,
+ ContentSetting content_setting) override;
void NotifyPermissionSet(const PermissionRequestID& id,
const GURL& requesting_origin,
const GURL& embedding_origin,
@@ -76,6 +90,14 @@ 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(
+ 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 SetLocationSettingsBackOff(const GURL& requesting_origin);
+
bool IsLocationAccessPossible(content::WebContents* web_contents,
raymes 2017/03/15 04:28:25 nit: We might want to explain in a comment somewhe
benwells 2017/03/15 23:10:49 Done.
const GURL& requesting_origin,
bool user_gesture);
@@ -94,7 +116,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