Skip to content

Commit

Permalink
Skip finalizing permission requests in pending queue
Browse files Browse the repository at this point in the history
Bug: 1415366

(cherry picked from commit dd59702)

Change-Id: I2bd464a202354d9941bed8498bd44b5c5ebea6de
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4271191
Commit-Queue: Thomas Nguyen <tungnh@chromium.org>
Reviewed-by: Andy Paicu <andypaicu@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1107426}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4277341
Commit-Queue: Srinivas Sista <srinivassista@chromium.org>
Owners-Override: Srinivas Sista <srinivassista@chromium.org>
Reviewed-by: Srinivas Sista <srinivassista@chromium.org>
Reviewed-by: Balazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/branch-heads/5414@{#1524}
Cr-Branched-From: 4417ee5-refs/heads/main@{#1070088}
  • Loading branch information
Thomas Nguyen authored and Chromium LUCI CQ committed Feb 21, 2023
1 parent cf06fcc commit 2bd849c
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 11 deletions.
23 changes: 15 additions & 8 deletions components/permissions/permission_request_manager.cc
Expand Up @@ -353,18 +353,24 @@ bool PermissionRequestManager::ReprioritizeCurrentRequestIfNeeded() {
return true;
}

bool PermissionRequestManager::ValidateRequest(PermissionRequest* request) {
bool PermissionRequestManager::ValidateRequest(PermissionRequest* request,
bool should_finalize) {
const auto iter = request_sources_map_.find(request);
if (iter == request_sources_map_.end())
if (iter == request_sources_map_.end()) {
return false;
}

if (!iter->second.IsSourceFrameInactiveAndDisallowActivation())
if (!iter->second.IsSourceFrameInactiveAndDisallowActivation()) {
return true;
}

if (should_finalize) {
request->Cancelled();
request->RequestFinished();
validated_requests_set_.erase(request);
request_sources_map_.erase(request);
}

request->Cancelled();
request->RequestFinished();
validated_requests_set_.erase(request);
request_sources_map_.erase(request);
return false;
}

Expand Down Expand Up @@ -732,8 +738,9 @@ void PermissionRequestManager::DequeueRequestIfNeeded() {
// not been validated" requests added to the queue could have effect to
// priority order
for (auto* request : pending_permission_requests_) {
if (ValidateRequest(request))
if (ValidateRequest(request, /* should_finalize */ false)) {
validated_requests_set_.insert(request);
}
}

if (!permission_ui_selectors_.empty()) {
Expand Down
6 changes: 3 additions & 3 deletions components/permissions/permission_request_manager.h
Expand Up @@ -267,10 +267,10 @@ class PermissionRequestManager
// Return true if we keep showing the current request, otherwise return false
bool ReprioritizeCurrentRequestIfNeeded();

// Validate the input request. If the request is invalid, cancel and remove it
// from *_map_ and *_set_.
// Validate the input request. If the request is invalid and |should_finalize|
// is set, cancel and remove it from *_map_ and *_set_.
// Return true if the request is valid, otherwise false.
bool ValidateRequest(PermissionRequest* request);
bool ValidateRequest(PermissionRequest* request, bool should_finalize = true);

// Adds `request` into `pending_permission_requests_`, and request's
// `source_frame` into `request_sources_map_`.
Expand Down

0 comments on commit 2bd849c

Please sign in to comment.