geolocation_permission_context_android.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_ANDROID_H_ 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_ANDROID_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "chrome/browser/content_settings/permission_request_id.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/geolocation/geolocation_permission_context.h" 10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "url/gurl.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace content { 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class WebContents; 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GoogleLocationSettingsHelper; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Android-specific geolocation permission flow, taking into account the 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Google Location Settings, if available. 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class GeolocationPermissionContextAndroid 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) : public GeolocationPermissionContext { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) explicit GeolocationPermissionContextAndroid(Profile* profile); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch struct PermissionRequestInfo { 27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch PermissionRequestInfo(); 28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch PermissionRequestID id; 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch GURL requesting_frame; 31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch bool user_gesture; 32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch GURL embedder; 33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch }; 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) friend class GeolocationPermissionContext; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual ~GeolocationPermissionContextAndroid(); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // GeolocationPermissionContext implementation: 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DecidePermission(content::WebContents* web_contents, 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const PermissionRequestID& id, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& requesting_frame, 43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch bool user_gesture, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& embedder, 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::string& accept_button_label, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Callback<void(bool)> callback) OVERRIDE; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual void PermissionDecided(const PermissionRequestID& id, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& requesting_frame, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& embedder, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Callback<void(bool)> callback, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool allowed) OVERRIDE; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void ProceedDecidePermission(content::WebContents* web_contents, 55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch const PermissionRequestInfo& info, 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::string& accept_button_label, 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::Callback<void(bool)> callback); 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<GoogleLocationSettingsHelper> google_location_settings_helper_; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void CheckMasterLocation(content::WebContents* web_contents, 63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch const PermissionRequestInfo& info, 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::Callback<void(bool)> callback); 65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContextAndroid); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif // CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_ANDROID_H_ 70