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

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

Issue 176053002: [WebsiteSettings] Change permission bubble API to adapt to new mocks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: try 2 Created 6 years, 9 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 | Annotate | Revision Log
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 "chrome/browser/ui/website_settings/permission_bubble_request.h" 8 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
9 #include "chrome/common/chrome_switches.h" 9 #include "chrome/common/chrome_switches.h"
10 10
11 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionBubbleManager); 11 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionBubbleManager);
12 12
13 namespace { 13 namespace {
14 14
15 // This is how many ms to wait to see if there's another permission request 15 // This is how many ms to wait to see if there's another permission request
16 // we should coalesce. 16 // we should coalesce.
17 const int kPermissionsCoalesceIntervalMs = 400; 17 const int kPermissionsCoalesceIntervalMs = 400;
18 18
19 } 19 }
20 20
21 // static 21 // static
22 bool PermissionBubbleManager::Enabled() { 22 bool PermissionBubbleManager::Enabled() {
23 return CommandLine::ForCurrentProcess()->HasSwitch( 23 return CommandLine::ForCurrentProcess()->HasSwitch(
24 switches::kEnablePermissionsBubbles); 24 switches::kEnablePermissionsBubbles);
25 } 25 }
26 26
27
28
29 PermissionBubbleManager::PermissionBubbleManager(
30 content::WebContents* web_contents)
31 : content::WebContentsObserver(web_contents),
32 bubble_showing_(false),
33 view_(NULL),
34 customization_mode_(false) {
35 timer_.reset(new base::Timer(FROM_HERE,
36 base::TimeDelta::FromMilliseconds(kPermissionsCoalesceIntervalMs),
37 base::Bind(&PermissionBubbleManager::ShowBubble, base::Unretained(this)),
38 false));
39 }
40
41 PermissionBubbleManager::~PermissionBubbleManager() {
42 if (view_ != NULL)
43 view_->SetDelegate(NULL);
44
45 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
46 for (requests_iter = requests_.begin();
47 requests_iter != requests_.end();
48 requests_iter++) {
49 (*requests_iter)->RequestFinished();
50 }
51 for (requests_iter = queued_requests_.begin();
52 requests_iter != queued_requests_.end();
53 requests_iter++) {
54 (*requests_iter)->RequestFinished();
55 }
56 }
57
27 void PermissionBubbleManager::AddRequest(PermissionBubbleRequest* request) { 58 void PermissionBubbleManager::AddRequest(PermissionBubbleRequest* request) {
28 // Don't re-add an existing request. 59 // Don't re-add an existing request or one with a duplicate text request.
29 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 60 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
30 for (requests_iter = requests_.begin(); 61 for (requests_iter = requests_.begin();
31 requests_iter != requests_.end(); 62 requests_iter != requests_.end();
32 requests_iter++) { 63 requests_iter++) {
33 if (*requests_iter == request) 64 if (*requests_iter == request)
34 return; 65 return;
66 // TODO(gbillock): worry about the requesting host name as well.
67 if ((*requests_iter)->GetMessageTextFragment() ==
68 request->GetMessageTextFragment()) {
69 request->RequestFinished();
70 return;
71 }
72 }
73 for (requests_iter = queued_requests_.begin();
74 requests_iter != queued_requests_.end();
75 requests_iter++) {
76 if (*requests_iter == request)
77 return;
78 if ((*requests_iter)->GetMessageTextFragment() ==
79 request->GetMessageTextFragment()) {
80 request->RequestFinished();
81 return;
82 }
35 } 83 }
36 84
37 if (bubble_showing_) { 85 if (bubble_showing_) {
38 for (requests_iter = queued_requests_.begin();
39 requests_iter != queued_requests_.end();
40 requests_iter++) {
41 if (*requests_iter == request)
42 return;
43 }
44 queued_requests_.push_back(request); 86 queued_requests_.push_back(request);
45 return; 87 return;
46 } 88 }
47 89
48 requests_.push_back(request); 90 requests_.push_back(request);
49 // TODO(gbillock): do we need to make default state a request property? 91 // TODO(gbillock): do we need to make default state a request property?
50 accept_states_.push_back(true); 92 accept_states_.push_back(true);
51 93
52 // Start the timer when there is both a view and a request. 94 // Start the timer when there is both a view and a request.
53 if (view_ && !timer_->IsRunning()) 95 if (view_ && !timer_->IsRunning())
54 timer_->Reset(); 96 timer_->Reset();
55 } 97 }
56 98
99 void PermissionBubbleManager::CancelRequest(PermissionBubbleRequest* request) {
100 // TODO(gbillock): implement
101 NOTREACHED();
102 }
103
57 void PermissionBubbleManager::SetView(PermissionBubbleView* view) { 104 void PermissionBubbleManager::SetView(PermissionBubbleView* view) {
58 if (view == view_) 105 if (view == view_)
59 return; 106 return;
60 107
61 if (view_ != NULL) { 108 if (view_ != NULL) {
62 view_->SetDelegate(NULL); 109 view_->SetDelegate(NULL);
63 view_->Hide(); 110 view_->Hide();
64 bubble_showing_ = false; 111 bubble_showing_ = false;
65 } 112 }
66 113
67 view_ = view; 114 view_ = view;
68 if (view_) 115 if (view_)
69 view_->SetDelegate(this); 116 view_->SetDelegate(this);
70 else 117 else
71 return; 118 return;
72 119
73 // Even if there are requests queued up, add a short delay before the bubble 120 // Even if there are requests queued up, add a short delay before the bubble
74 // appears. 121 // appears.
75 if (!requests_.empty() && !timer_->IsRunning()) 122 if (!requests_.empty() && !timer_->IsRunning())
76 timer_->Reset(); 123 timer_->Reset();
77 else 124 else
78 view_->Hide(); 125 view_->Hide();
79 } 126 }
80 127
81 PermissionBubbleManager::PermissionBubbleManager(
82 content::WebContents* web_contents)
83 : content::WebContentsObserver(web_contents),
84 bubble_showing_(false),
85 view_(NULL),
86 customization_mode_(false) {
87 timer_.reset(new base::Timer(FROM_HERE,
88 base::TimeDelta::FromMilliseconds(kPermissionsCoalesceIntervalMs),
89 base::Bind(&PermissionBubbleManager::ShowBubble, base::Unretained(this)),
90 false));
91 }
92
93 PermissionBubbleManager::~PermissionBubbleManager() {
94 if (view_ != NULL) {
95 view_->SetDelegate(NULL);
96 view_->Hide();
97 bubble_showing_ = false;
98 }
99 }
100
101 void PermissionBubbleManager::DidFinishLoad( 128 void PermissionBubbleManager::DidFinishLoad(
102 int64 frame_id, 129 int64 frame_id,
103 const GURL& validated_url, 130 const GURL& validated_url,
104 bool is_main_frame, 131 bool is_main_frame,
105 content::RenderViewHost* render_view_host) { 132 content::RenderViewHost* render_view_host) {
106 // Allows extra time for additional requests to coalesce. 133 // Allows extra time for additional requests to coalesce.
107 if (timer_->IsRunning()) 134 if (timer_->IsRunning())
108 timer_->Reset(); 135 timer_->Reset();
109 } 136 }
110 137
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 timer_->Reset(); 224 timer_->Reset();
198 } 225 }
199 } 226 }
200 227
201 void PermissionBubbleManager::SetCoalesceIntervalForTesting(int interval_ms) { 228 void PermissionBubbleManager::SetCoalesceIntervalForTesting(int interval_ms) {
202 timer_.reset(new base::Timer(FROM_HERE, 229 timer_.reset(new base::Timer(FROM_HERE,
203 base::TimeDelta::FromMilliseconds(interval_ms), 230 base::TimeDelta::FromMilliseconds(interval_ms),
204 base::Bind(&PermissionBubbleManager::ShowBubble, base::Unretained(this)), 231 base::Bind(&PermissionBubbleManager::ShowBubble, base::Unretained(this)),
205 false)); 232 false));
206 } 233 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698