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

Side by Side Diff: trunk/src/chrome/browser/extensions/settings_api_bubble_controller.cc

Issue 312403003: Revert 275229 "Add an extension override bubble and warning box ..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 6 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 (c) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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/extensions/settings_api_bubble_controller.h" 5 #include "chrome/browser/extensions/settings_api_bubble_controller.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "chrome/browser/extensions/extension_service.h" 8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/extensions/extension_toolbar_model.h"
10 #include "chrome/browser/extensions/settings_api_helpers.h" 9 #include "chrome/browser/extensions/settings_api_helpers.h"
11 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/startup/startup_browser_creator.h" 11 #include "chrome/browser/ui/startup/startup_browser_creator.h"
13 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h" 12 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h"
14 #include "chrome/common/url_constants.h" 13 #include "chrome/common/url_constants.h"
15 #include "extensions/browser/extension_prefs.h" 14 #include "extensions/browser/extension_prefs.h"
16 #include "extensions/browser/extension_registry.h" 15 #include "extensions/browser/extension_registry.h"
17 #include "extensions/browser/extension_system.h" 16 #include "extensions/browser/extension_system.h"
18 #include "grit/chromium_strings.h" 17 #include "grit/chromium_strings.h"
19 #include "grit/generated_resources.h" 18 #include "grit/generated_resources.h"
20 #include "ui/base/l10n/l10n_util.h" 19 #include "ui/base/l10n/l10n_util.h"
21 20
22 namespace extensions { 21 using extensions::ExtensionMessageBubbleController;
22 using extensions::SettingsApiBubbleController;
23 using extensions::SettingsOverrides;
23 24
24 namespace { 25 namespace {
25 26
26 //////////////////////////////////////////////////////////////////////////////// 27 ////////////////////////////////////////////////////////////////////////////////
27 // SettingsApiBubbleDelegate 28 // SettingsApiBubbleDelegate
28 29
29 class SettingsApiBubbleDelegate 30 class SettingsApiBubbleDelegate
30 : public ExtensionMessageBubbleController::Delegate { 31 : public extensions::ExtensionMessageBubbleController::Delegate {
31 public: 32 public:
32 explicit SettingsApiBubbleDelegate(ExtensionService* service, 33 explicit SettingsApiBubbleDelegate(ExtensionService* service,
33 Profile* profile, 34 Profile* profile,
34 SettingsApiOverrideType type); 35 extensions::SettingsApiOverrideType type);
35 virtual ~SettingsApiBubbleDelegate(); 36 virtual ~SettingsApiBubbleDelegate();
36 37
37 // ExtensionMessageBubbleController::Delegate methods. 38 // ExtensionMessageBubbleController::Delegate methods.
38 virtual bool ShouldIncludeExtension(const std::string& extension_id) OVERRIDE; 39 virtual bool ShouldIncludeExtension(const std::string& extension_id) OVERRIDE;
39 virtual void AcknowledgeExtension( 40 virtual void AcknowledgeExtension(
40 const std::string& extension_id, 41 const std::string& extension_id,
41 ExtensionMessageBubbleController::BubbleAction user_action) OVERRIDE; 42 extensions::ExtensionMessageBubbleController::BubbleAction user_action)
42 virtual void PerformAction(const ExtensionIdList& list) OVERRIDE; 43 OVERRIDE;
43 virtual void OnClose() OVERRIDE; 44 virtual void PerformAction(const extensions::ExtensionIdList& list) OVERRIDE;
44 virtual base::string16 GetTitle() const OVERRIDE; 45 virtual base::string16 GetTitle() const OVERRIDE;
45 virtual base::string16 GetMessageBody( 46 virtual base::string16 GetMessageBody() const OVERRIDE;
46 bool anchored_to_browser_action) const OVERRIDE;
47 virtual base::string16 GetOverflowText( 47 virtual base::string16 GetOverflowText(
48 const base::string16& overflow_count) const OVERRIDE; 48 const base::string16& overflow_count) const OVERRIDE;
49 virtual base::string16 GetLearnMoreLabel() const OVERRIDE; 49 virtual base::string16 GetLearnMoreLabel() const OVERRIDE;
50 virtual GURL GetLearnMoreUrl() const OVERRIDE; 50 virtual GURL GetLearnMoreUrl() const OVERRIDE;
51 virtual base::string16 GetActionButtonLabel() const OVERRIDE; 51 virtual base::string16 GetActionButtonLabel() const OVERRIDE;
52 virtual base::string16 GetDismissButtonLabel() const OVERRIDE; 52 virtual base::string16 GetDismissButtonLabel() const OVERRIDE;
53 virtual bool ShouldShowExtensionList() const OVERRIDE; 53 virtual bool ShouldShowExtensionList() const OVERRIDE;
54 virtual void LogExtensionCount(size_t count) OVERRIDE; 54 virtual void LogExtensionCount(size_t count) OVERRIDE;
55 virtual void LogAction( 55 virtual void LogAction(
56 ExtensionMessageBubbleController::BubbleAction action) OVERRIDE; 56 extensions::ExtensionMessageBubbleController::BubbleAction action)
57 OVERRIDE;
57 58
58 private: 59 private:
59 // Our extension service. Weak, not owned by us. 60 // Our extension service. Weak, not owned by us.
60 ExtensionService* service_; 61 ExtensionService* service_;
61 62
62 // A weak pointer to the profile we are associated with. Not owned by us. 63 // A weak pointer to the profile we are associated with. Not owned by us.
63 Profile* profile_; 64 Profile* profile_;
64 65
65 // The type of settings override this bubble will report on. This can be, for 66 // The type of settings override this bubble will report on. This can be, for
66 // example, a bubble to notify the user that the search engine has been 67 // example, a bubble to notify the user that the search engine has been
67 // changed by an extension (or homepage/startup pages/etc). 68 // changed by an extension (or homepage/startup pages/etc).
68 SettingsApiOverrideType type_; 69 extensions::SettingsApiOverrideType type_;
69 70
70 // The ID of the extension we are showing the bubble for. 71 // The ID of the extension we are showing the bubble for.
71 std::string extension_id_; 72 std::string extension_id_;
72 73
73 DISALLOW_COPY_AND_ASSIGN(SettingsApiBubbleDelegate); 74 DISALLOW_COPY_AND_ASSIGN(SettingsApiBubbleDelegate);
74 }; 75 };
75 76
76 SettingsApiBubbleDelegate::SettingsApiBubbleDelegate( 77 SettingsApiBubbleDelegate::SettingsApiBubbleDelegate(
77 ExtensionService* service, 78 ExtensionService* service,
78 Profile* profile, 79 Profile* profile,
79 SettingsApiOverrideType type) 80 extensions::SettingsApiOverrideType type)
80 : service_(service), profile_(profile), type_(type) {} 81 : service_(service), profile_(profile), type_(type) {}
81 82
82 SettingsApiBubbleDelegate::~SettingsApiBubbleDelegate() {} 83 SettingsApiBubbleDelegate::~SettingsApiBubbleDelegate() {}
83 84
84 bool SettingsApiBubbleDelegate::ShouldIncludeExtension( 85 bool SettingsApiBubbleDelegate::ShouldIncludeExtension(
85 const std::string& extension_id) { 86 const std::string& extension_id) {
87 using extensions::ExtensionRegistry;
86 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_); 88 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_);
87 const Extension* extension = 89 const extensions::Extension* extension =
88 registry->GetExtensionById(extension_id, ExtensionRegistry::ENABLED); 90 registry->GetExtensionById(extension_id, ExtensionRegistry::ENABLED);
89 if (!extension) 91 if (!extension)
90 return false; // The extension provided is no longer enabled. 92 return false; // The extension provided is no longer enabled.
91 93
92 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_); 94 extensions::ExtensionPrefs* prefs = extensions::ExtensionPrefs::Get(profile_);
93 if (prefs->HasSettingsApiBubbleBeenAcknowledged(extension_id)) 95 if (prefs->HasSettingsApiBubbleBeenAcknowledged(extension_id))
94 return false; 96 return false;
95 97
96 const Extension* override = NULL; 98 const extensions::Extension* override = NULL;
97 switch (type_) { 99 switch (type_) {
98 case BUBBLE_TYPE_HOME_PAGE: 100 case extensions::BUBBLE_TYPE_HOME_PAGE:
99 override = GetExtensionOverridingHomepage(profile_, NULL); 101 override = extensions::OverridesHomepage(profile_, NULL);
100 break; 102 break;
101 case BUBBLE_TYPE_STARTUP_PAGES: 103 case extensions::BUBBLE_TYPE_STARTUP_PAGES:
102 override = GetExtensionOverridingStartupPages(profile_, NULL); 104 override = extensions::OverridesStartupPages(profile_, NULL);
103 break; 105 break;
104 case BUBBLE_TYPE_SEARCH_ENGINE: 106 case extensions::BUBBLE_TYPE_SEARCH_ENGINE:
105 override = GetExtensionOverridingSearchEngine(profile_, NULL); 107 override = extensions::OverridesSearchEngine(profile_, NULL);
106 break; 108 break;
107 } 109 }
108 110
109 if (!override || override->id() != extension->id()) 111 if (!override || override->id() != extension->id())
110 return false; 112 return false;
111 113
112 extension_id_ = extension_id; 114 extension_id_ = extension_id;
113 return true; 115 return true;
114 } 116 }
115 117
116 void SettingsApiBubbleDelegate::AcknowledgeExtension( 118 void SettingsApiBubbleDelegate::AcknowledgeExtension(
117 const std::string& extension_id, 119 const std::string& extension_id,
118 ExtensionMessageBubbleController::BubbleAction user_action) { 120 ExtensionMessageBubbleController::BubbleAction user_action) {
119 if (user_action != ExtensionMessageBubbleController::ACTION_EXECUTE) { 121 if (user_action != ExtensionMessageBubbleController::ACTION_EXECUTE) {
120 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_); 122 extensions::ExtensionPrefs* prefs =
123 extensions::ExtensionPrefs::Get(profile_);
121 prefs->SetSettingsApiBubbleBeenAcknowledged(extension_id, true); 124 prefs->SetSettingsApiBubbleBeenAcknowledged(extension_id, true);
122 } 125 }
123 } 126 }
124 127
125 void SettingsApiBubbleDelegate::PerformAction(const ExtensionIdList& list) { 128 void SettingsApiBubbleDelegate::PerformAction(
129 const extensions::ExtensionIdList& list) {
126 for (size_t i = 0; i < list.size(); ++i) { 130 for (size_t i = 0; i < list.size(); ++i) {
127 service_->DisableExtension(list[i], Extension::DISABLE_USER_ACTION); 131 service_->DisableExtension(list[i],
132 extensions::Extension::DISABLE_USER_ACTION);
128 } 133 }
129 } 134 }
130 135
131 void SettingsApiBubbleDelegate::OnClose() {
132 ExtensionToolbarModel* toolbar_model = ExtensionToolbarModel::Get(profile_);
133 if (toolbar_model)
134 toolbar_model->StopHighlighting();
135 }
136
137 base::string16 SettingsApiBubbleDelegate::GetTitle() const { 136 base::string16 SettingsApiBubbleDelegate::GetTitle() const {
138 switch (type_) { 137 switch (type_) {
139 case BUBBLE_TYPE_HOME_PAGE: 138 case extensions::BUBBLE_TYPE_HOME_PAGE:
140 return l10n_util::GetStringUTF16( 139 return l10n_util::GetStringUTF16(
141 IDS_EXTENSIONS_SETTINGS_API_TITLE_HOME_PAGE_BUBBLE); 140 IDS_EXTENSIONS_SETTINGS_API_TITLE_HOME_PAGE_BUBBLE);
142 case BUBBLE_TYPE_STARTUP_PAGES: 141 case extensions::BUBBLE_TYPE_STARTUP_PAGES:
143 return l10n_util::GetStringUTF16( 142 return l10n_util::GetStringUTF16(
144 IDS_EXTENSIONS_SETTINGS_API_TITLE_STARTUP_PAGES_BUBBLE); 143 IDS_EXTENSIONS_SETTINGS_API_TITLE_STARTUP_PAGES_BUBBLE);
145 case BUBBLE_TYPE_SEARCH_ENGINE: 144 case extensions::BUBBLE_TYPE_SEARCH_ENGINE:
146 return l10n_util::GetStringUTF16( 145 return l10n_util::GetStringUTF16(
147 IDS_EXTENSIONS_SETTINGS_API_TITLE_SEARCH_ENGINE_BUBBLE); 146 IDS_EXTENSIONS_SETTINGS_API_TITLE_SEARCH_ENGINE_BUBBLE);
148 } 147 }
149 NOTREACHED(); 148 NOTREACHED();
150 return base::string16(); 149 return base::string16();
151 } 150 }
152 151
153 base::string16 SettingsApiBubbleDelegate::GetMessageBody( 152 base::string16 SettingsApiBubbleDelegate::GetMessageBody() const {
154 bool anchored_to_browser_action) const { 153 using extensions::ExtensionRegistry;
155 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_); 154 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_);
156 const Extension* extension = 155 const extensions::Extension* extension =
157 registry->GetExtensionById(extension_id_, ExtensionRegistry::ENABLED); 156 registry->GetExtensionById(extension_id_, ExtensionRegistry::ENABLED);
158 const SettingsOverrides* settings = 157 const SettingsOverrides* settings =
159 extension ? SettingsOverrides::Get(extension) : NULL; 158 extension ? SettingsOverrides::Get(extension) : NULL;
160 if (!extension || !settings) { 159 if (!extension || !settings) {
161 NOTREACHED(); 160 NOTREACHED();
162 return base::string16(); 161 return base::string16();
163 } 162 }
164 163
165 bool home_change = settings->homepage != NULL; 164 bool home_change = settings->homepage != NULL;
166 bool startup_change = !settings->startup_pages.empty(); 165 bool startup_change = !settings->startup_pages.empty();
167 bool search_change = settings->search_engine != NULL; 166 bool search_change = settings->search_engine != NULL;
168 167
169 base::string16 body; 168 base::string16 body;
170 switch (type_) { 169 switch (type_) {
171 case BUBBLE_TYPE_HOME_PAGE: 170 case extensions::BUBBLE_TYPE_HOME_PAGE:
172 body = l10n_util::GetStringUTF16( 171 body = l10n_util::GetStringUTF16(
173 IDS_EXTENSIONS_SETTINGS_API_FIRST_LINE_HOME_PAGE); 172 IDS_EXTENSIONS_SETTINGS_API_FIRST_LINE_HOME_PAGE);
174 if (startup_change && search_change) { 173 if (startup_change && search_change) {
175 body += l10n_util::GetStringUTF16( 174 body += l10n_util::GetStringUTF16(
176 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_AND_SEARCH); 175 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_AND_SEARCH);
177 } else if (startup_change) { 176 } else if (startup_change) {
178 body += l10n_util::GetStringUTF16( 177 body += l10n_util::GetStringUTF16(
179 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_PAGES); 178 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_PAGES);
180 } else if (search_change) { 179 } else if (search_change) {
181 body += l10n_util::GetStringUTF16( 180 body += l10n_util::GetStringUTF16(
182 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_SEARCH_ENGINE); 181 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_SEARCH_ENGINE);
183 } 182 }
184 break; 183 break;
185 case BUBBLE_TYPE_STARTUP_PAGES: 184 case extensions::BUBBLE_TYPE_STARTUP_PAGES:
186 body = l10n_util::GetStringUTF16( 185 body = l10n_util::GetStringUTF16(
187 IDS_EXTENSIONS_SETTINGS_API_FIRST_LINE_START_PAGES); 186 IDS_EXTENSIONS_SETTINGS_API_FIRST_LINE_START_PAGES);
188 if (home_change && search_change) { 187 if (home_change && search_change) {
189 body += l10n_util::GetStringUTF16( 188 body += l10n_util::GetStringUTF16(
190 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_HOME_AND_SEARCH); 189 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_HOME_AND_SEARCH);
191 } else if (home_change) { 190 } else if (home_change) {
192 body += l10n_util::GetStringUTF16( 191 body += l10n_util::GetStringUTF16(
193 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_HOME_PAGE); 192 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_HOME_PAGE);
194 } else if (search_change) { 193 } else if (search_change) {
195 body += l10n_util::GetStringUTF16( 194 body += l10n_util::GetStringUTF16(
196 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_SEARCH_ENGINE); 195 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_SEARCH_ENGINE);
197 } 196 }
198 break; 197 break;
199 case BUBBLE_TYPE_SEARCH_ENGINE: 198 case extensions::BUBBLE_TYPE_SEARCH_ENGINE:
200 body = l10n_util::GetStringUTF16( 199 body = l10n_util::GetStringUTF16(
201 IDS_EXTENSIONS_SETTINGS_API_FIRST_LINE_SEARCH_ENGINE); 200 IDS_EXTENSIONS_SETTINGS_API_FIRST_LINE_SEARCH_ENGINE);
202 if (startup_change && home_change) { 201 if (startup_change && home_change) {
203 body += l10n_util::GetStringUTF16( 202 body += l10n_util::GetStringUTF16(
204 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_AND_HOME); 203 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_AND_HOME);
205 } else if (startup_change) { 204 } else if (startup_change) {
206 body += l10n_util::GetStringUTF16( 205 body += l10n_util::GetStringUTF16(
207 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_PAGES); 206 IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_PAGES);
208 } else if (home_change) { 207 } else if (home_change) {
209 body += l10n_util::GetStringUTF16( 208 body += l10n_util::GetStringUTF16(
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 bool SettingsApiBubbleDelegate::ShouldShowExtensionList() const { 242 bool SettingsApiBubbleDelegate::ShouldShowExtensionList() const {
244 return false; 243 return false;
245 } 244 }
246 245
247 void SettingsApiBubbleDelegate::LogExtensionCount(size_t count) { 246 void SettingsApiBubbleDelegate::LogExtensionCount(size_t count) {
248 } 247 }
249 248
250 void SettingsApiBubbleDelegate::LogAction( 249 void SettingsApiBubbleDelegate::LogAction(
251 ExtensionMessageBubbleController::BubbleAction action) { 250 ExtensionMessageBubbleController::BubbleAction action) {
252 switch (type_) { 251 switch (type_) {
253 case BUBBLE_TYPE_HOME_PAGE: 252 case extensions::BUBBLE_TYPE_HOME_PAGE:
254 UMA_HISTOGRAM_ENUMERATION( 253 UMA_HISTOGRAM_ENUMERATION(
255 "ExtensionOverrideBubble.SettingsApiUserSelectionHomePage", 254 "ExtensionOverrideBubble.SettingsApiUserSelectionHomePage",
256 action, 255 action,
257 ExtensionMessageBubbleController::ACTION_BOUNDARY); 256 ExtensionMessageBubbleController::ACTION_BOUNDARY);
258 break; 257 break;
259 case BUBBLE_TYPE_STARTUP_PAGES: 258 case extensions::BUBBLE_TYPE_STARTUP_PAGES:
260 UMA_HISTOGRAM_ENUMERATION( 259 UMA_HISTOGRAM_ENUMERATION(
261 "ExtensionOverrideBubble.SettingsApiUserSelectionStartupPage", 260 "ExtensionOverrideBubble.SettingsApiUserSelectionStartupPage",
262 action, 261 action,
263 ExtensionMessageBubbleController::ACTION_BOUNDARY); 262 ExtensionMessageBubbleController::ACTION_BOUNDARY);
264 break; 263 break;
265 case BUBBLE_TYPE_SEARCH_ENGINE: 264 case extensions::BUBBLE_TYPE_SEARCH_ENGINE:
266 UMA_HISTOGRAM_ENUMERATION( 265 UMA_HISTOGRAM_ENUMERATION(
267 "ExtensionOverrideBubble.SettingsApiUserSelectionSearchEngine", 266 "ExtensionOverrideBubble.SettingsApiUserSelectionSearchEngine",
268 action, 267 action,
269 ExtensionMessageBubbleController::ACTION_BOUNDARY); 268 ExtensionMessageBubbleController::ACTION_BOUNDARY);
270 break; 269 break;
271 } 270 }
272 } 271 }
273 272
274 } // namespace 273 } // namespace
275 274
275 namespace extensions {
276
276 //////////////////////////////////////////////////////////////////////////////// 277 ////////////////////////////////////////////////////////////////////////////////
277 // SettingsApiBubbleController 278 // SettingsApiBubbleController
278 279
279 SettingsApiBubbleController::SettingsApiBubbleController( 280 SettingsApiBubbleController::SettingsApiBubbleController(
280 Profile* profile, 281 Profile* profile,
281 SettingsApiOverrideType type) 282 SettingsApiOverrideType type)
282 : ExtensionMessageBubbleController( 283 : ExtensionMessageBubbleController(
283 new SettingsApiBubbleDelegate( 284 new SettingsApiBubbleDelegate(
284 ExtensionSystem::Get(profile)->extension_service(), 285 ExtensionSystem::Get(profile)->extension_service(),
285 profile, 286 profile,
286 type), 287 type),
287 profile), 288 profile),
288 profile_(profile), 289 profile_(profile),
289 type_(type) {} 290 type_(type) {}
290 291
291 SettingsApiBubbleController::~SettingsApiBubbleController() {} 292 SettingsApiBubbleController::~SettingsApiBubbleController() {}
292 293
293 bool SettingsApiBubbleController::ShouldShow(const std::string& extension_id) { 294 bool SettingsApiBubbleController::ShouldShow(const std::string& extension_id) {
294 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_); 295 extensions::ExtensionPrefs* prefs = extensions::ExtensionPrefs::Get(profile_);
295 if (prefs->HasSettingsApiBubbleBeenAcknowledged(extension_id)) 296 if (prefs->HasSettingsApiBubbleBeenAcknowledged(extension_id))
296 return false; 297 return false;
297 298
298 if (!delegate()->ShouldIncludeExtension(extension_id)) 299 if (!delegate()->ShouldIncludeExtension(extension_id))
299 return false; 300 return false;
300 301
301 // If the browser is showing the 'Chrome crashed' infobar, it won't be showing 302 // If the browser is showing the 'Chrome crashed' infobar, it won't be showing
302 // the startup pages, so there's no point in showing the bubble now. 303 // the startup pages, so there's no point in showing the bubble now.
303 if (type_ == BUBBLE_TYPE_STARTUP_PAGES) 304 if (type_ == BUBBLE_TYPE_STARTUP_PAGES)
304 return profile_->GetLastSessionExitType() != Profile::EXIT_CRASHED; 305 return profile_->GetLastSessionExitType() != Profile::EXIT_CRASHED;
305 306
306 return true; 307 return true;
307 } 308 }
308 309
309 bool SettingsApiBubbleController::CloseOnDeactivate() { 310 bool SettingsApiBubbleController::CloseOnDeactivate() {
310 // Startup bubbles tend to get lost in the focus storm that happens on 311 // Startup bubbles tend to get lost in the focus storm that happens on
311 // startup. Other types should dismiss on focus loss. 312 // startup. Other types should dismiss on focus loss.
312 return type_ != BUBBLE_TYPE_STARTUP_PAGES; 313 return type_ != BUBBLE_TYPE_STARTUP_PAGES;
313 } 314 }
314 315
315 } // namespace extensions 316 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698