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

Side by Side Diff: chrome/browser/permissions/permission_request_manager.cc

Issue 2315563002: Add PermissionPromptAndroid skeleton (Closed)
Patch Set: remove unused stuff Created 4 years, 2 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/permissions/permission_request_manager.h" 5 #include "chrome/browser/permissions/permission_request_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/feature_list.h"
10 #include "base/metrics/user_metrics_action.h" 11 #include "base/metrics/user_metrics_action.h"
11 #include "build/build_config.h" 12 #include "build/build_config.h"
12 #include "chrome/browser/permissions/permission_request.h" 13 #include "chrome/browser/permissions/permission_request.h"
13 #include "chrome/browser/permissions/permission_uma_util.h" 14 #include "chrome/browser/permissions/permission_uma_util.h"
15 #include "chrome/browser/ui/website_settings/permission_prompt.h"
16 #include "chrome/common/chrome_features.h"
14 #include "chrome/common/chrome_switches.h" 17 #include "chrome/common/chrome_switches.h"
15 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/navigation_details.h" 19 #include "content/public/browser/navigation_details.h"
17 #include "content/public/browser/user_metrics.h" 20 #include "content/public/browser/user_metrics.h"
18 #include "url/origin.h" 21 #include "url/origin.h"
19 22
20 namespace { 23 namespace {
21 24
22 class CancelledRequest : public PermissionRequest { 25 class CancelledRequest : public PermissionRequest {
23 public: 26 public:
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 void PermissionRequestManager::Observer::OnBubbleAdded() { 70 void PermissionRequestManager::Observer::OnBubbleAdded() {
68 } 71 }
69 72
70 // PermissionRequestManager ---------------------------------------------------- 73 // PermissionRequestManager ----------------------------------------------------
71 74
72 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionRequestManager); 75 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionRequestManager);
73 76
74 PermissionRequestManager::PermissionRequestManager( 77 PermissionRequestManager::PermissionRequestManager(
75 content::WebContents* web_contents) 78 content::WebContents* web_contents)
76 : content::WebContentsObserver(web_contents), 79 : content::WebContentsObserver(web_contents),
77 #if !defined(OS_ANDROID) // No bubbles in android tests.
78 view_factory_(base::Bind(&PermissionPrompt::Create)), 80 view_factory_(base::Bind(&PermissionPrompt::Create)),
79 #endif
80 view_(nullptr), 81 view_(nullptr),
81 main_frame_has_fully_loaded_(false), 82 main_frame_has_fully_loaded_(false),
82 persist_(true), 83 persist_(true),
83 auto_response_for_test_(NONE), 84 auto_response_for_test_(NONE),
84 weak_factory_(this) { 85 weak_factory_(this) {}
85 }
86 86
87 PermissionRequestManager::~PermissionRequestManager() { 87 PermissionRequestManager::~PermissionRequestManager() {
88 if (view_ != NULL) 88 if (view_ != NULL)
89 view_->SetDelegate(NULL); 89 view_->SetDelegate(NULL);
90 90
91 for (PermissionRequest* request : requests_) 91 for (PermissionRequest* request : requests_)
92 request->RequestFinished(); 92 request->RequestFinished();
93 for (PermissionRequest* request : queued_requests_) 93 for (PermissionRequest* request : queued_requests_)
94 request->RequestFinished(); 94 request->RequestFinished();
95 for (PermissionRequest* request : queued_frame_requests_) 95 for (PermissionRequest* request : queued_frame_requests_)
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 230
231 view_->SetDelegate(nullptr); 231 view_->SetDelegate(nullptr);
232 view_->Hide(); 232 view_->Hide();
233 view_.reset(); 233 view_.reset();
234 } 234 }
235 235
236 void PermissionRequestManager::DisplayPendingRequests() { 236 void PermissionRequestManager::DisplayPendingRequests() {
237 if (IsBubbleVisible()) 237 if (IsBubbleVisible())
238 return; 238 return;
239 239
240 #if defined(OS_ANDROID)
241 NOTREACHED();
242 return;
243 #else
244 view_ = view_factory_.Run(web_contents()); 240 view_ = view_factory_.Run(web_contents());
245 view_->SetDelegate(this); 241 view_->SetDelegate(this);
246 #endif
247 242
248 TriggerShowBubble(); 243 TriggerShowBubble();
249 } 244 }
250 245
251 void PermissionRequestManager::UpdateAnchorPosition() { 246 void PermissionRequestManager::UpdateAnchorPosition() {
252 if (view_) 247 if (view_)
253 view_->UpdateAnchorPosition(); 248 view_->UpdateAnchorPosition();
254 } 249 }
255 250
256 bool PermissionRequestManager::IsBubbleVisible() { 251 bool PermissionRequestManager::IsBubbleVisible() {
257 return view_ && view_->IsVisible(); 252 return view_ && view_->IsVisible();
258 } 253 }
259 254
255 // static
256 bool PermissionRequestManager::IsEnabled() {
257 #if defined(OS_ANDROID)
258 return base::FeatureList::IsEnabled(features::kUseGroupedPermissionInfobars);
259 #else
260 return true;
261 #endif
262 }
263
260 gfx::NativeWindow PermissionRequestManager::GetBubbleWindow() { 264 gfx::NativeWindow PermissionRequestManager::GetBubbleWindow() {
261 if (view_) 265 if (view_)
262 return view_->GetNativeWindow(); 266 return view_->GetNativeWindow();
263 return nullptr; 267 return nullptr;
264 } 268 }
265 269
266 void PermissionRequestManager::DidNavigateMainFrame( 270 void PermissionRequestManager::DidNavigateMainFrame(
267 const content::LoadCommittedDetails& details, 271 const content::LoadCommittedDetails& details,
268 const content::FrameNavigateParams& params) { 272 const content::FrameNavigateParams& params) {
269 if (details.is_in_page) 273 if (details.is_in_page)
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 std::vector<PermissionRequest*>::iterator requests_iter; 348 std::vector<PermissionRequest*>::iterator requests_iter;
345 for (requests_iter = requests_.begin(); 349 for (requests_iter = requests_.begin();
346 requests_iter != requests_.end(); 350 requests_iter != requests_.end();
347 requests_iter++) { 351 requests_iter++) {
348 CancelledIncludingDuplicates(*requests_iter); 352 CancelledIncludingDuplicates(*requests_iter);
349 } 353 }
350 FinalizeBubble(); 354 FinalizeBubble();
351 } 355 }
352 356
353 void PermissionRequestManager::ScheduleShowBubble() { 357 void PermissionRequestManager::ScheduleShowBubble() {
358 #if !defined(OS_ANDROID)
raymes 2016/10/19 00:25:41 Do you know why this ifdef is needed? (and the sec
lshang 2016/10/20 05:03:10 Removed. This is not needed, probably some leftove
354 // ::ScheduleShowBubble() will be called again when the main frame will be 359 // ::ScheduleShowBubble() will be called again when the main frame will be
355 // loaded. 360 // loaded.
356 if (!main_frame_has_fully_loaded_) 361 if (!main_frame_has_fully_loaded_)
357 return; 362 return;
363 #endif
358 364
359 content::BrowserThread::PostTask( 365 content::BrowserThread::PostTask(
360 content::BrowserThread::UI, 366 content::BrowserThread::UI,
361 FROM_HERE, 367 FROM_HERE,
362 base::Bind(&PermissionRequestManager::TriggerShowBubble, 368 base::Bind(&PermissionRequestManager::TriggerShowBubble,
363 weak_factory_.GetWeakPtr())); 369 weak_factory_.GetWeakPtr()));
364 } 370 }
365 371
366 void PermissionRequestManager::TriggerShowBubble() { 372 void PermissionRequestManager::TriggerShowBubble() {
367 if (!view_) 373 if (!view_)
368 return; 374 return;
369 if (IsBubbleVisible()) 375 if (IsBubbleVisible())
370 return; 376 return;
377 #if !defined(OS_ANDROID)
371 if (!main_frame_has_fully_loaded_) 378 if (!main_frame_has_fully_loaded_)
372 return; 379 return;
380 #endif
373 if (requests_.empty() && queued_requests_.empty() && 381 if (requests_.empty() && queued_requests_.empty() &&
374 queued_frame_requests_.empty()) { 382 queued_frame_requests_.empty()) {
375 return; 383 return;
376 } 384 }
377 385
378 if (requests_.empty()) { 386 if (requests_.empty()) {
379 if (queued_requests_.size()) 387 if (queued_requests_.size())
380 requests_.swap(queued_requests_); 388 requests_.swap(queued_requests_);
381 else 389 else
382 requests_.swap(queued_frame_requests_); 390 requests_.swap(queued_frame_requests_);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 case DENY_ALL: 522 case DENY_ALL:
515 Deny(); 523 Deny();
516 break; 524 break;
517 case DISMISS: 525 case DISMISS:
518 Closing(); 526 Closing();
519 break; 527 break;
520 case NONE: 528 case NONE:
521 NOTREACHED(); 529 NOTREACHED();
522 } 530 }
523 } 531 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698