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

Unified Diff: chrome/browser/permissions/permission_context_base.cc

Issue 2315563002: Add PermissionPromptAndroid skeleton (Closed)
Patch Set: remove unused stuff Created 4 years, 2 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/permissions/permission_context_base.cc
diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc
index 85744db632eeddf5e4316084ec4f66adb5adc5da..bb08c3b2c68ebe13c2d146eda227623b394f23d4 100644
--- a/chrome/browser/permissions/permission_context_base.cc
+++ b/chrome/browser/permissions/permission_context_base.cc
@@ -15,6 +15,8 @@
#include "chrome/browser/permissions/permission_decision_auto_blocker.h"
#include "chrome/browser/permissions/permission_request.h"
#include "chrome/browser/permissions/permission_request_id.h"
+#include "chrome/browser/permissions/permission_request_impl.h"
+#include "chrome/browser/permissions/permission_request_manager.h"
#include "chrome/browser/permissions/permission_uma_util.h"
#include "chrome/browser/permissions/permission_util.h"
#include "chrome/browser/profiles/profile.h"
@@ -31,9 +33,6 @@
#if defined(OS_ANDROID)
#include "chrome/browser/permissions/permission_queue_controller.h"
-#else
-#include "chrome/browser/permissions/permission_request_impl.h"
-#include "chrome/browser/permissions/permission_request_manager.h"
#endif
// static
@@ -174,36 +173,51 @@ void PermissionContextBase::DecidePermission(
const BrowserPermissionCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-#if !defined(OS_ANDROID)
- PermissionRequestManager* permission_request_manager =
- PermissionRequestManager::FromWebContents(web_contents);
- // TODO(felt): sometimes |permission_request_manager| is null. This check is
- // meant to prevent crashes. See crbug.com/457091.
- if (!permission_request_manager)
- return;
- std::unique_ptr<PermissionRequest> request_ptr(new PermissionRequestImpl(
- requesting_origin, permission_type_, profile_, user_gesture,
- base::Bind(&PermissionContextBase::PermissionDecided,
- weak_factory_.GetWeakPtr(), id, requesting_origin,
- embedding_origin, user_gesture, callback),
- base::Bind(&PermissionContextBase::CleanUpRequest,
- weak_factory_.GetWeakPtr(), id)));
- PermissionRequest* request = request_ptr.get();
-
- bool inserted =
- pending_requests_.add(id.ToString(), std::move(request_ptr)).second;
- DCHECK(inserted) << "Duplicate id " << id.ToString();
- permission_request_manager->AddRequest(request);
-#else
- GetQueueController()->CreateInfoBarRequest(
- id, requesting_origin, embedding_origin, user_gesture,
- base::Bind(&PermissionContextBase::PermissionDecided,
- weak_factory_.GetWeakPtr(), id, requesting_origin,
- embedding_origin, user_gesture, callback,
- // the queue controller takes care of persisting the
- // permission
- false));
+ if (PermissionRequestManager::IsEnabled()) {
+ PermissionRequestManager* permission_request_manager =
+ PermissionRequestManager::FromWebContents(web_contents);
+
+#if defined(OS_ANDROID)
+ // PermissionRequestManager didn't go through tab helper and got
+ // created on Android, so create it here.
raymes 2016/10/19 00:25:41 Can we just move the creation line in https://cs.c
lshang 2016/10/20 05:03:10 Done. Moved it so that it gets created on Android
+ if (web_contents) {
+ PermissionRequestManager::CreateForWebContents(web_contents);
+ permission_request_manager =
+ PermissionRequestManager::FromWebContents(web_contents);
+ permission_request_manager->DisplayPendingRequests();
raymes 2016/10/19 00:25:41 How come this is needed? Where will it happen in t
lshang 2016/10/20 05:03:10 PermissionRequestManager::DisplayPendingRequests()
+ }
#endif
+
+ // TODO(felt): sometimes |permission_request_manager| is null. This check is
+ // meant to prevent crashes. See crbug.com/457091.
+ if (!permission_request_manager) {
+ return;
+ }
+ std::unique_ptr<PermissionRequest> request_ptr(new PermissionRequestImpl(
+ requesting_origin, permission_type_, profile_, user_gesture,
+ base::Bind(&PermissionContextBase::PermissionDecided,
+ weak_factory_.GetWeakPtr(), id, requesting_origin,
+ embedding_origin, user_gesture, callback),
+ base::Bind(&PermissionContextBase::CleanUpRequest,
+ weak_factory_.GetWeakPtr(), id)));
+ PermissionRequest* request = request_ptr.get();
+
+ bool inserted =
+ pending_requests_.add(id.ToString(), std::move(request_ptr)).second;
+ DCHECK(inserted) << "Duplicate id " << id.ToString();
+ permission_request_manager->AddRequest(request);
+ } else {
+#if defined(OS_ANDROID)
+ GetQueueController()->CreateInfoBarRequest(
+ id, requesting_origin, embedding_origin, user_gesture,
+ base::Bind(&PermissionContextBase::PermissionDecided,
+ weak_factory_.GetWeakPtr(), id, requesting_origin,
+ embedding_origin, user_gesture, callback,
+ // the queue controller takes care of persisting the
+ // permission
+ false));
+#endif
raymes 2016/10/19 00:25:41 nit: I think this should have: #else NOTREACHED();
lshang 2016/10/20 05:03:10 Done.
+ }
}
void PermissionContextBase::PermissionDecided(

Powered by Google App Engine
This is Rietveld 408576698