Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / geolocation / chrome_geolocation_permission_context_android.cc
index ec2c0f7..b8f3d01 100644 (file)
@@ -6,13 +6,17 @@
 
 #include "base/prefs/pref_service.h"
 #include "chrome/browser/android/google_location_settings_helper.h"
-#include "chrome/browser/content_settings/permission_request_id.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/pref_names.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/web_contents.h"
 
 ChromeGeolocationPermissionContextAndroid::
+PermissionRequestInfo::PermissionRequestInfo()
+    : id(0, 0, 0, 0),
+      user_gesture(false) {}
+
+ChromeGeolocationPermissionContextAndroid::
     ChromeGeolocationPermissionContextAndroid(Profile* profile)
     : ChromeGeolocationPermissionContext(profile),
       google_location_settings_helper_(
@@ -25,23 +29,19 @@ ChromeGeolocationPermissionContextAndroid::
 
 void ChromeGeolocationPermissionContextAndroid::ProceedDecidePermission(
     content::WebContents* web_contents,
-    const PermissionRequestID& id,
-    const GURL& requesting_frame,
-    const GURL& embedder,
+    const PermissionRequestInfo& info,
     const std::string& accept_button_label,
     base::Callback<void(bool)> callback) {
   // Super class implementation expects everything in UI thread instead.
   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
   ChromeGeolocationPermissionContext::DecidePermission(
-      web_contents, id, requesting_frame, embedder,
-      accept_button_label, callback);
+      web_contents, info.id, info.requesting_frame, info.user_gesture,
+      info.embedder, accept_button_label, callback);
 }
 
 void ChromeGeolocationPermissionContextAndroid::CheckMasterLocation(
     content::WebContents* web_contents,
-    const PermissionRequestID& id,
-    const GURL& requesting_frame,
-    const GURL& embedder,
+    const PermissionRequestInfo& info,
     base::Callback<void(bool)> callback) {
   // Check to see if the feature in its entirety has been disabled.
   // This must happen before other services (e.g. tabs, extensions)
@@ -68,12 +68,11 @@ void ChromeGeolocationPermissionContextAndroid::CheckMasterLocation(
         google_location_settings_helper_->GetAcceptButtonLabel(allow_label);
     ui_closure = base::Bind(
         &ChromeGeolocationPermissionContextAndroid::ProceedDecidePermission,
-        this, web_contents, id, requesting_frame, embedder,
-        accept_button_label, callback);
+        this, web_contents, info, accept_button_label, callback);
   } else {
     ui_closure = base::Bind(
         &ChromeGeolocationPermissionContextAndroid::PermissionDecided,
-        this, id, requesting_frame, embedder, callback, false);
+        this, info.id, info.requesting_frame, info.embedder, callback, false);
   }
 
   // This method is executed from the BlockingPool, post the result
@@ -86,17 +85,24 @@ void ChromeGeolocationPermissionContextAndroid::DecidePermission(
     content::WebContents* web_contents,
     const PermissionRequestID& id,
     const GURL& requesting_frame,
+    bool user_gesture,
     const GURL& embedder,
     const std::string& accept_button_label,
     base::Callback<void(bool)> callback) {
 
+  PermissionRequestInfo info;
+  info.id = id;
+  info.requesting_frame = requesting_frame;
+  info.user_gesture = user_gesture;
+  info.embedder = embedder;
+
   // Called on the UI thread. However, do the work on a separate thread
   // to avoid strict mode violation.
   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
   content::BrowserThread::PostBlockingPoolTask(FROM_HERE,
       base::Bind(
           &ChromeGeolocationPermissionContextAndroid::CheckMasterLocation,
-          this, web_contents, id, requesting_frame, embedder, callback));
+          this, web_contents, info, callback));
 }
 
 void ChromeGeolocationPermissionContextAndroid::PermissionDecided(
@@ -110,8 +116,8 @@ void ChromeGeolocationPermissionContextAndroid::PermissionDecided(
   // the infobar to go back to the 'settings' to turn it back on.
   if (allowed &&
       !google_location_settings_helper_->IsGoogleAppsLocationSettingEnabled()) {
-    QueueController()->CreateInfoBarRequest(id, requesting_frame, embedder, "",
-                                            callback);
+    QueueController()->CreateInfoBarRequest(
+        id, requesting_frame, embedder, "", callback);
     return;
   }