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

Side by Side Diff: chrome/browser/extensions/api/messaging/incognito_connectability.cc

Issue 922953002: Minor infobar cleanup. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resync Created 5 years, 10 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/extensions/api/messaging/incognito_connectability.h" 5 #include "chrome/browser/extensions/api/messaging/incognito_connectability.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 19 matching lines...) Expand all
30 30
31 class IncognitoConnectabilityInfoBarDelegate : public ConfirmInfoBarDelegate { 31 class IncognitoConnectabilityInfoBarDelegate : public ConfirmInfoBarDelegate {
32 public: 32 public:
33 typedef base::Callback<void( 33 typedef base::Callback<void(
34 IncognitoConnectability::ScopedAlertTracker::Mode)> InfoBarCallback; 34 IncognitoConnectability::ScopedAlertTracker::Mode)> InfoBarCallback;
35 35
36 // Creates a confirmation infobar and delegate and adds the infobar to 36 // Creates a confirmation infobar and delegate and adds the infobar to
37 // |infobar_service|. 37 // |infobar_service|.
38 static InfoBar* Create(InfoBarManager* infobar_manager, 38 static InfoBar* Create(InfoBarManager* infobar_manager,
39 const base::string16& message, 39 const base::string16& message,
40 const InfoBarCallback& callback) { 40 const InfoBarCallback& callback);
41 return infobar_manager->AddInfoBar(infobar_manager->CreateConfirmInfoBar(
42 scoped_ptr<ConfirmInfoBarDelegate>(
43 new IncognitoConnectabilityInfoBarDelegate(message, callback))));
44 }
45 41
46 // Set the infobar answered so that the callback is not executed when the 42 // Marks the infobar as answered so that the callback is not executed when the
47 // delegate is destroyed. 43 // delegate is destroyed.
48 void SetAnswered() { answered_ = true; } 44 void set_answered() { answered_ = true; }
49 45
50 private: 46 private:
51 IncognitoConnectabilityInfoBarDelegate(const base::string16& message, 47 IncognitoConnectabilityInfoBarDelegate(const base::string16& message,
52 const InfoBarCallback& callback) 48 const InfoBarCallback& callback);
53 : message_(message), answered_(false), callback_(callback) {} 49 ~IncognitoConnectabilityInfoBarDelegate() override;
54
55 ~IncognitoConnectabilityInfoBarDelegate() override {
56 if (!answered_) {
57 // The infobar has closed without the user expressing an explicit
58 // preference. The current request should be denied but further requests
59 // should show an interactive prompt.
60 callback_.Run(IncognitoConnectability::ScopedAlertTracker::INTERACTIVE);
61 }
62 }
63 50
64 // ConfirmInfoBarDelegate: 51 // ConfirmInfoBarDelegate:
65 base::string16 GetMessageText() const override { return message_; } 52 Type GetInfoBarType() const override;
66 base::string16 GetButtonLabel(InfoBarButton button) const override { 53 base::string16 GetMessageText() const override;
67 return l10n_util::GetStringUTF16( 54 base::string16 GetButtonLabel(InfoBarButton button) const override;
68 (button == BUTTON_OK) ? IDS_PERMISSION_ALLOW : IDS_PERMISSION_DENY); 55 bool Accept() override;
69 } 56 bool Cancel() override;
70
71 bool Accept() override {
72 callback_.Run(IncognitoConnectability::ScopedAlertTracker::ALWAYS_ALLOW);
73 answered_ = true;
74 return true;
75 }
76 bool Cancel() override {
77 callback_.Run(IncognitoConnectability::ScopedAlertTracker::ALWAYS_DENY);
78 answered_ = true;
79 return true;
80 }
81
82 // InfoBarDelegate:
83 Type GetInfoBarType() const override { return PAGE_ACTION_TYPE; }
84 57
85 base::string16 message_; 58 base::string16 message_;
86 bool answered_; 59 bool answered_;
87 InfoBarCallback callback_; 60 InfoBarCallback callback_;
88 }; 61 };
89 62
63 // static
64 InfoBar* IncognitoConnectabilityInfoBarDelegate::Create(
65 InfoBarManager* infobar_manager,
66 const base::string16& message,
67 const IncognitoConnectabilityInfoBarDelegate::InfoBarCallback& callback) {
68 return infobar_manager->AddInfoBar(infobar_manager->CreateConfirmInfoBar(
69 scoped_ptr<ConfirmInfoBarDelegate>(
70 new IncognitoConnectabilityInfoBarDelegate(message, callback))));
71 }
72
73 IncognitoConnectabilityInfoBarDelegate::IncognitoConnectabilityInfoBarDelegate(
74 const base::string16& message,
75 const InfoBarCallback& callback)
76 : message_(message), answered_(false), callback_(callback) {
77 }
78
79 IncognitoConnectabilityInfoBarDelegate::
80 ~IncognitoConnectabilityInfoBarDelegate() {
81 if (!answered_) {
82 // The infobar has closed without the user expressing an explicit
83 // preference. The current request should be denied but further requests
84 // should show an interactive prompt.
85 callback_.Run(IncognitoConnectability::ScopedAlertTracker::INTERACTIVE);
86 }
87 }
88
89 infobars::InfoBarDelegate::Type
90 IncognitoConnectabilityInfoBarDelegate::GetInfoBarType() const {
91 return PAGE_ACTION_TYPE;
92 }
93
94 base::string16 IncognitoConnectabilityInfoBarDelegate::GetMessageText() const {
95 return message_;
96 }
97
98 base::string16 IncognitoConnectabilityInfoBarDelegate::GetButtonLabel(
99 InfoBarButton button) const {
100 return l10n_util::GetStringUTF16(
101 (button == BUTTON_OK) ? IDS_PERMISSION_ALLOW : IDS_PERMISSION_DENY);
102 }
103
104 bool IncognitoConnectabilityInfoBarDelegate::Accept() {
105 callback_.Run(IncognitoConnectability::ScopedAlertTracker::ALWAYS_ALLOW);
106 answered_ = true;
107 return true;
108 }
109
110 bool IncognitoConnectabilityInfoBarDelegate::Cancel() {
111 callback_.Run(IncognitoConnectability::ScopedAlertTracker::ALWAYS_DENY);
112 answered_ = true;
113 return true;
114 }
115
90 } // namespace 116 } // namespace
91 117
92 IncognitoConnectability::ScopedAlertTracker::ScopedAlertTracker(Mode mode) 118 IncognitoConnectability::ScopedAlertTracker::ScopedAlertTracker(Mode mode)
93 : last_checked_invocation_count_(g_alert_count) { 119 : last_checked_invocation_count_(g_alert_count) {
94 DCHECK_EQ(INTERACTIVE, g_alert_mode); 120 DCHECK_EQ(INTERACTIVE, g_alert_mode);
95 DCHECK_NE(INTERACTIVE, mode); 121 DCHECK_NE(INTERACTIVE, mode);
96 g_alert_mode = mode; 122 g_alert_mode = mode;
97 } 123 }
98 124
99 IncognitoConnectability::ScopedAlertTracker::~ScopedAlertTracker() { 125 IncognitoConnectability::ScopedAlertTracker::~ScopedAlertTracker() {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 // other infobars and answer all the callbacks. 250 // other infobars and answer all the callbacks.
225 for (const auto& map_entry : pending_origin) { 251 for (const auto& map_entry : pending_origin) {
226 InfoBarManager* other_infobar_manager = map_entry.first; 252 InfoBarManager* other_infobar_manager = map_entry.first;
227 const TabContext& other_tab_context = map_entry.second; 253 const TabContext& other_tab_context = map_entry.second;
228 if (other_infobar_manager != infobar_manager) { 254 if (other_infobar_manager != infobar_manager) {
229 // Disarm the delegate so that it doesn't think the infobar has been 255 // Disarm the delegate so that it doesn't think the infobar has been
230 // dismissed. 256 // dismissed.
231 IncognitoConnectabilityInfoBarDelegate* delegate = 257 IncognitoConnectabilityInfoBarDelegate* delegate =
232 static_cast<IncognitoConnectabilityInfoBarDelegate*>( 258 static_cast<IncognitoConnectabilityInfoBarDelegate*>(
233 other_tab_context.infobar->delegate()); 259 other_tab_context.infobar->delegate());
234 delegate->SetAnswered(); 260 delegate->set_answered();
235 other_infobar_manager->RemoveInfoBar(other_tab_context.infobar); 261 other_infobar_manager->RemoveInfoBar(other_tab_context.infobar);
236 } 262 }
237 callbacks.insert(callbacks.end(), other_tab_context.callbacks.begin(), 263 callbacks.insert(callbacks.end(), other_tab_context.callbacks.begin(),
238 other_tab_context.callbacks.end()); 264 other_tab_context.callbacks.end());
239 } 265 }
240 pending_origins_.erase(make_pair(extension_id, origin)); 266 pending_origins_.erase(make_pair(extension_id, origin));
241 } 267 }
242 268
243 DCHECK(!callbacks.empty()); 269 DCHECK(!callbacks.empty());
244 for (const auto& callback : callbacks) { 270 for (const auto& callback : callbacks) {
(...skipping 13 matching lines...) Expand all
258 BrowserContextKeyedAPIFactory<IncognitoConnectability> > g_factory = 284 BrowserContextKeyedAPIFactory<IncognitoConnectability> > g_factory =
259 LAZY_INSTANCE_INITIALIZER; 285 LAZY_INSTANCE_INITIALIZER;
260 286
261 // static 287 // static
262 BrowserContextKeyedAPIFactory<IncognitoConnectability>* 288 BrowserContextKeyedAPIFactory<IncognitoConnectability>*
263 IncognitoConnectability::GetFactoryInstance() { 289 IncognitoConnectability::GetFactoryInstance() {
264 return g_factory.Pointer(); 290 return g_factory.Pointer();
265 } 291 }
266 292
267 } // namespace extensions 293 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/debugger/debugger_api.cc ('k') | chrome/browser/extensions/theme_installed_infobar_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698