Index: chrome/browser/permissions/permission_request_manager.cc |
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc |
index e4d6e513bbf493801b44f5f0376f81adaf75c238..ccca826504a9bf8273d05654aaeeb4de9cd80b4f 100644 |
--- a/chrome/browser/permissions/permission_request_manager.cc |
+++ b/chrome/browser/permissions/permission_request_manager.cc |
@@ -83,6 +83,7 @@ PermissionRequestManager::PermissionRequestManager( |
#endif |
view_(nullptr), |
main_frame_has_fully_loaded_(false), |
+ persist_(true), |
auto_response_for_test_(NONE), |
weak_factory_(this) { |
} |
@@ -310,6 +311,10 @@ void PermissionRequestManager::ToggleAccept(int request_index, bool new_value) { |
accept_states_[request_index] = new_value; |
} |
+void PermissionRequestManager::TogglePersist(bool new_value) { |
+ persist_ = new_value; |
+} |
+ |
void PermissionRequestManager::Accept() { |
PermissionUmaUtil::PermissionPromptAccepted(requests_, accept_states_); |
@@ -445,19 +450,25 @@ void PermissionRequestManager::PermissionGrantedIncludingDuplicates( |
PermissionRequest* request) { |
DCHECK_EQ(request, GetExistingRequest(request)) |
<< "Only requests in [queued_[frame_]]requests_ can have duplicates"; |
+ request->set_persist(persist_); |
request->PermissionGranted(); |
auto range = duplicate_requests_.equal_range(request); |
- for (auto it = range.first; it != range.second; ++it) |
+ for (auto it = range.first; it != range.second; ++it) { |
+ it->second->set_persist(persist_); |
it->second->PermissionGranted(); |
+ } |
} |
void PermissionRequestManager::PermissionDeniedIncludingDuplicates( |
PermissionRequest* request) { |
DCHECK_EQ(request, GetExistingRequest(request)) |
<< "Only requests in [queued_[frame_]]requests_ can have duplicates"; |
+ request->set_persist(persist_); |
request->PermissionDenied(); |
auto range = duplicate_requests_.equal_range(request); |
- for (auto it = range.first; it != range.second; ++it) |
+ for (auto it = range.first; it != range.second; ++it) { |
+ it->second->set_persist(persist_); |
it->second->PermissionDenied(); |
+ } |
} |
void PermissionRequestManager::CancelledIncludingDuplicates( |
PermissionRequest* request) { |