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

Side by Side Diff: chrome/browser/ui/website_settings/permission_bubble_manager.cc

Issue 839063003: By default, remove user gesture restriction from permission bubbles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove debugging statement Created 5 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" 5 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/metrics/user_metrics_action.h" 8 #include "base/metrics/user_metrics_action.h"
9 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" 9 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
10 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 60 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
61 switches::kDisablePermissionsBubbles)) 61 switches::kDisablePermissionsBubbles))
62 return false; 62 return false;
63 63
64 return false; 64 return false;
65 } 65 }
66 66
67 PermissionBubbleManager::PermissionBubbleManager( 67 PermissionBubbleManager::PermissionBubbleManager(
68 content::WebContents* web_contents) 68 content::WebContents* web_contents)
69 : content::WebContentsObserver(web_contents), 69 : content::WebContentsObserver(web_contents),
70 require_user_gesture_(false),
70 bubble_showing_(false), 71 bubble_showing_(false),
71 view_(NULL), 72 view_(NULL),
72 request_url_has_loaded_(false), 73 request_url_has_loaded_(false),
73 customization_mode_(false), 74 customization_mode_(false),
74 weak_factory_(this) {} 75 weak_factory_(this) {}
75 76
76 PermissionBubbleManager::~PermissionBubbleManager() { 77 PermissionBubbleManager::~PermissionBubbleManager() {
77 if (view_ != NULL) 78 if (view_ != NULL)
78 view_->SetDelegate(NULL); 79 view_->SetDelegate(NULL);
79 80
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 if (is_main_frame) { 129 if (is_main_frame) {
129 requests_.push_back(request); 130 requests_.push_back(request);
130 // TODO(gbillock): do we need to make default state a request property? 131 // TODO(gbillock): do we need to make default state a request property?
131 accept_states_.push_back(true); 132 accept_states_.push_back(true);
132 } else { 133 } else {
133 content::RecordAction( 134 content::RecordAction(
134 base::UserMetricsAction("PermissionBubbleIFrameRequestQueued")); 135 base::UserMetricsAction("PermissionBubbleIFrameRequestQueued"));
135 queued_frame_requests_.push_back(request); 136 queued_frame_requests_.push_back(request);
136 } 137 }
137 138
138 if (request->HasUserGesture()) 139 if (!require_user_gesture_ || request->HasUserGesture())
139 ScheduleShowBubble(); 140 ScheduleShowBubble();
140 } 141 }
141 142
142 void PermissionBubbleManager::CancelRequest(PermissionBubbleRequest* request) { 143 void PermissionBubbleManager::CancelRequest(PermissionBubbleRequest* request) {
143 // First look in the queued requests, where we can simply delete the request 144 // First look in the queued requests, where we can simply delete the request
144 // and go on. 145 // and go on.
145 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 146 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
146 for (requests_iter = queued_requests_.begin(); 147 for (requests_iter = queued_requests_.begin();
147 requests_iter != queued_requests_.end(); 148 requests_iter != queued_requests_.end();
148 requests_iter++) { 149 requests_iter++) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 } 196 }
196 197
197 view_ = view; 198 view_ = view;
198 if (!view) 199 if (!view)
199 return; 200 return;
200 201
201 view->SetDelegate(this); 202 view->SetDelegate(this);
202 TriggerShowBubble(); 203 TriggerShowBubble();
203 } 204 }
204 205
206 void PermissionBubbleManager::RequireUserGesture(bool required) {
207 require_user_gesture_ = required;
208 }
209
205 void PermissionBubbleManager::DocumentOnLoadCompletedInMainFrame() { 210 void PermissionBubbleManager::DocumentOnLoadCompletedInMainFrame() {
206 request_url_has_loaded_ = true; 211 request_url_has_loaded_ = true;
207 // This is scheduled because while all calls to the browser have been 212 // This is scheduled because while all calls to the browser have been
208 // issued at DOMContentLoaded, they may be bouncing around in scheduled 213 // issued at DOMContentLoaded, they may be bouncing around in scheduled
209 // callbacks finding the UI thread still. This makes sure we allow those 214 // callbacks finding the UI thread still. This makes sure we allow those
210 // scheduled calls to AddRequest to complete before we show the page-load 215 // scheduled calls to AddRequest to complete before we show the page-load
211 // permissions bubble. 216 // permissions bubble.
212 ScheduleShowBubble(); 217 ScheduleShowBubble();
213 } 218 }
214 219
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 bool PermissionBubbleManager::HasUserGestureRequest( 402 bool PermissionBubbleManager::HasUserGestureRequest(
398 const std::vector<PermissionBubbleRequest*>& queue) { 403 const std::vector<PermissionBubbleRequest*>& queue) {
399 std::vector<PermissionBubbleRequest*>::const_iterator iter; 404 std::vector<PermissionBubbleRequest*>::const_iterator iter;
400 for (iter = queue.begin(); iter != queue.end(); iter++) { 405 for (iter = queue.begin(); iter != queue.end(); iter++) {
401 if ((*iter)->HasUserGesture()) 406 if ((*iter)->HasUserGesture())
402 return true; 407 return true;
403 } 408 }
404 return false; 409 return false;
405 } 410 }
406 411
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698