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

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

Issue 2952003003: Log site engagement scores for permission actions (Closed)
Patch Set: use histogram_functions Created 3 years, 5 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_request_manager.cc
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc
index 678c50aaa8e7b08794bf46c73d80abd639cf6379..782fdc2e4bc6a94d53fe2de62dbb5012ed2008a9 100644
--- a/chrome/browser/permissions/permission_request_manager.cc
+++ b/chrome/browser/permissions/permission_request_manager.cc
@@ -31,7 +31,8 @@ class CancelledRequest : public PermissionRequest {
message_(cancelled->GetMessageText()),
#endif
message_fragment_(cancelled->GetMessageTextFragment()),
- origin_(cancelled->GetOrigin()) {
+ origin_(cancelled->GetOrigin()),
+ request_type_(cancelled->GetPermissionRequestType()) {
}
~CancelledRequest() override {}
@@ -51,6 +52,10 @@ class CancelledRequest : public PermissionRequest {
void RequestFinished() override { delete this; }
+ PermissionRequestType GetPermissionRequestType() const override {
+ return request_type_;
+ }
+
private:
IconId icon_;
#if defined(OS_ANDROID)
@@ -58,6 +63,7 @@ class CancelledRequest : public PermissionRequest {
#endif
base::string16 message_fragment_;
GURL origin_;
+ PermissionRequestType request_type_;
};
bool IsMessageTextEqual(PermissionRequest* a,
@@ -187,35 +193,23 @@ void PermissionRequestManager::CancelRequest(PermissionRequest* request) {
}
}
- std::vector<PermissionRequest*>::iterator requests_iter;
- for (requests_iter = requests_.begin(); requests_iter != requests_.end();
- requests_iter++) {
- if (*requests_iter != request)
- continue;
+ if (!requests_.empty() && requests_[0] == request) {
+ // Grouped (mic+camera) requests are currently never cancelled.
+ // TODO(timloh): We should fix this at some point.
+ DCHECK_EQ(static_cast<size_t>(1), requests_.size());
- // We can simply erase the current entry in the request table if we aren't
- // showing the dialog (because we switched tabs with an active prompt), or
- // if we are showing it and it can accept the update.
+ // We can finalize the prompt if we aren't showing the dialog (because we
+ // switched tabs with an active prompt), or if we are showing it and it
+ // can accept the update.
if (!view_ || view_->CanAcceptRequestUpdate()) {
- // TODO(timloh): We should fix this at some point.
- // Grouped (mic+camera) requests are currently never cancelled.
- DCHECK_EQ(static_cast<size_t>(1), requests_.size());
-
- if (view_)
- DeleteBubble();
-
- RequestFinishedIncludingDuplicates(*requests_iter);
- requests_.erase(requests_iter);
-
- DequeueRequestsAndShowBubble();
+ FinalizeBubble(PermissionAction::IGNORED);
return;
}
// Cancel the existing request and replace it with a dummy.
- PermissionRequest* cancelled_request =
- new CancelledRequest(*requests_iter);
- RequestFinishedIncludingDuplicates(*requests_iter);
- *requests_iter = cancelled_request;
+ PermissionRequest* cancelled_request = new CancelledRequest(request);
+ RequestFinishedIncludingDuplicates(request);
+ requests_[0] = cancelled_request;
return;
}
@@ -329,26 +323,24 @@ void PermissionRequestManager::TogglePersist(bool new_value) {
}
void PermissionRequestManager::Accept() {
- PermissionUmaUtil::PermissionPromptAccepted(requests_);
-
+ DCHECK(view_);
std::vector<PermissionRequest*>::iterator requests_iter;
for (requests_iter = requests_.begin(); requests_iter != requests_.end();
requests_iter++) {
PermissionGrantedIncludingDuplicates(*requests_iter);
}
- FinalizeBubble();
+ FinalizeBubble(PermissionAction::GRANTED);
}
void PermissionRequestManager::Deny() {
- PermissionUmaUtil::PermissionPromptDenied(requests_);
-
+ DCHECK(view_);
std::vector<PermissionRequest*>::iterator requests_iter;
for (requests_iter = requests_.begin();
requests_iter != requests_.end();
requests_iter++) {
PermissionDeniedIncludingDuplicates(*requests_iter);
}
- FinalizeBubble();
+ FinalizeBubble(PermissionAction::DENIED);
}
void PermissionRequestManager::Closing() {
@@ -357,13 +349,15 @@ void PermissionRequestManager::Closing() {
if (!view_)
return;
#endif
+
+ DCHECK(view_);
std::vector<PermissionRequest*>::iterator requests_iter;
for (requests_iter = requests_.begin();
requests_iter != requests_.end();
requests_iter++) {
CancelledIncludingDuplicates(*requests_iter);
}
- FinalizeBubble();
+ FinalizeBubble(PermissionAction::DISMISSED);
}
void PermissionRequestManager::ScheduleShowBubble() {
@@ -419,11 +413,15 @@ void PermissionRequestManager::DeleteBubble() {
view_.reset();
}
-void PermissionRequestManager::FinalizeBubble() {
- DCHECK(view_);
+void PermissionRequestManager::FinalizeBubble(
+ PermissionAction permission_action) {
DCHECK(!requests_.empty());
- DeleteBubble();
+ if (view_)
+ DeleteBubble();
+
+ PermissionUmaUtil::PermissionPromptResolved(requests_, web_contents(),
+ permission_action);
std::vector<PermissionRequest*>::iterator requests_iter;
for (requests_iter = requests_.begin();
@@ -446,7 +444,7 @@ void PermissionRequestManager::CleanUpRequests() {
queued_requests_.clear();
if (view_)
- FinalizeBubble();
+ FinalizeBubble(PermissionAction::IGNORED);
}
PermissionRequest* PermissionRequestManager::GetExistingRequest(

Powered by Google App Engine
This is Rietveld 408576698