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

Unified Diff: chrome/browser/content_settings/permission_queue_controller.cc

Issue 1158813002: Use RenderFrameHost for ::RequestPermission() and ::CancelPermission(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: build fixes Created 5 years, 7 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/content_settings/permission_queue_controller.cc
diff --git a/chrome/browser/content_settings/permission_queue_controller.cc b/chrome/browser/content_settings/permission_queue_controller.cc
index c0a65315e584df05c66fa566b6b243405dd6a081..10cf79b7b0e9b3aa10153ae49b6e14499cd5c520 100644
--- a/chrome/browser/content_settings/permission_queue_controller.cc
+++ b/chrome/browser/content_settings/permission_queue_controller.cc
@@ -31,13 +31,23 @@
namespace {
InfoBarService* GetInfoBarService(const PermissionRequestID& id) {
- content::WebContents* web_contents =
- tab_util::GetWebContentsByID(id.render_process_id(), id.render_view_id());
+ content::WebContents* web_contents = tab_util::GetWebContentsByFrameID(
+ id.render_process_id(), id.render_frame_id());
return web_contents ? InfoBarService::FromWebContents(web_contents) : NULL;
}
+bool ArePermissionRequestsForSameTab(
+ const PermissionRequestID& request,
+ const PermissionRequestID& other_request) {
+ content::WebContents* web_contents = tab_util::GetWebContentsByFrameID(
+ request.render_process_id(), request.render_frame_id());
+ content::WebContents* other_web_contents = tab_util::GetWebContentsByFrameID(
+ other_request.render_process_id(), other_request.render_frame_id());
+
+ return web_contents == other_web_contents;
}
+} // anonymous namespace
class PermissionQueueController::PendingInfobarRequest {
public:
@@ -171,13 +181,15 @@ void PermissionQueueController::CancelInfoBarRequest(
for (PendingInfobarRequests::iterator i(pending_infobar_requests_.begin());
i != pending_infobar_requests_.end(); ++i) {
- if (i->id().Equals(id)) {
- if (i->has_infobar())
- GetInfoBarService(id)->RemoveInfoBar(i->infobar());
- else
- pending_infobar_requests_.erase(i);
- return;
- }
+ if (!i->id().Equals(id))
+ continue;
+
+ InfoBarService* infobar_service = GetInfoBarService(id);
+ if (infobar_service && i->has_infobar())
+ infobar_service->RemoveInfoBar(i->infobar());
+ else
+ pending_infobar_requests_.erase(i);
+ return;
}
}
@@ -287,7 +299,7 @@ bool PermissionQueueController::AlreadyShowingInfoBarForTab(
for (PendingInfobarRequests::const_iterator i(
pending_infobar_requests_.begin());
i != pending_infobar_requests_.end(); ++i) {
- if (i->id().IsForSameTabAs(id) && i->has_infobar())
+ if (ArePermissionRequestsForSameTab(i->id(), id) && i->has_infobar())
return true;
}
return false;
@@ -314,7 +326,7 @@ void PermissionQueueController::ShowQueuedInfoBarForTab(
for (PendingInfobarRequests::iterator i = pending_infobar_requests_.begin();
i != pending_infobar_requests_.end(); ++i) {
- if (i->id().IsForSameTabAs(id) && !i->has_infobar()) {
+ if (ArePermissionRequestsForSameTab(i->id(), id) && !i->has_infobar()) {
RegisterForInfoBarNotifications(infobar_service);
i->CreateInfoBar(
this, profile_->GetPrefs()->GetString(prefs::kAcceptLanguages));
@@ -329,7 +341,7 @@ void PermissionQueueController::ClearPendingInfobarRequestsForTab(
const PermissionRequestID& id) {
for (PendingInfobarRequests::iterator i = pending_infobar_requests_.begin();
i != pending_infobar_requests_.end(); ) {
- if (i->id().IsForSameTabAs(id)) {
+ if (ArePermissionRequestsForSameTab(i->id(), id)) {
DCHECK(!i->has_infobar());
i = pending_infobar_requests_.erase(i);
} else {

Powered by Google App Engine
This is Rietveld 408576698