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

Side by Side Diff: chrome/browser/extensions/extension_warning_set.cc

Issue 10908119: Replace chrome::NOTIFICATION_EXTENSION_WARNING_CHANGED message with observer pattern Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extension_warning_set.h" 5 #include "chrome/browser/extensions/extension_warning_set.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/extensions/extension_global_error_badge.h" 9 #include "chrome/browser/extensions/extension_global_error_badge.h"
10 #include "chrome/browser/extensions/extension_service.h" 10 #include "chrome/browser/extensions/extension_service.h"
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 !g_browser_process->profile_manager()->IsValidProfile(profile)) { 307 !g_browser_process->profile_manager()->IsValidProfile(profile)) {
308 return; 308 return;
309 } 309 }
310 310
311 extensions::ExtensionWarningService* warning_service = 311 extensions::ExtensionWarningService* warning_service =
312 extensions::ExtensionSystem::Get(profile)->warning_service(); 312 extensions::ExtensionSystem::Get(profile)->warning_service();
313 313
314 warning_service->AddWarnings(warnings.Pass()); 314 warning_service->AddWarnings(warnings.Pass());
315 } 315 }
316 316
317 void ExtensionWarningService::AddObserver(
318 ExtensionWarningService::Observer* observer) {
319 observer_list_.AddObserver(observer);
320 }
321
322 void ExtensionWarningService::RemoveObserver(
323 ExtensionWarningService::Observer* observer) {
324 observer_list_.RemoveObserver(observer);
325 }
326
317 void ExtensionWarningService::SuppressBadgeForCurrentWarnings() { 327 void ExtensionWarningService::SuppressBadgeForCurrentWarnings() {
318 DCHECK(CalledOnValidThread()); 328 DCHECK(CalledOnValidThread());
319 badge_suppressions_.insert(warnings_.begin(), warnings_.end()); 329 badge_suppressions_.insert(warnings_.begin(), warnings_.end());
320 UpdateWarningBadge(); 330 UpdateWarningBadge();
321 } 331 }
322 332
323 void ExtensionWarningService::NotifyWarningsChanged() { 333 void ExtensionWarningService::NotifyWarningsChanged() {
324 DCHECK(CalledOnValidThread()); 334 DCHECK(CalledOnValidThread());
325 content::NotificationService::current()->Notify( 335 FOR_EACH_OBSERVER(Observer, observer_list_, ExtensionWarningsChanged());
326 chrome::NOTIFICATION_EXTENSION_WARNING_CHANGED,
327 content::Source<Profile>(profile_),
328 content::NotificationService::NoDetails());
329 } 336 }
330 337
331 void ExtensionWarningService::UpdateWarningBadge() { 338 void ExtensionWarningService::UpdateWarningBadge() {
332 DCHECK(CalledOnValidThread()); 339 DCHECK(CalledOnValidThread());
333 // We need a badge if a warning exists that has not been suppressed. 340 // We need a badge if a warning exists that has not been suppressed.
334 bool need_warning_badge = false; 341 bool need_warning_badge = false;
335 for (const_iterator i = warnings_.begin(); i != warnings_.end(); ++i) { 342 for (const_iterator i = warnings_.begin(); i != warnings_.end(); ++i) {
336 if (badge_suppressions_.find(*i) == badge_suppressions_.end()) { 343 if (badge_suppressions_.find(*i) == badge_suppressions_.end()) {
337 need_warning_badge = true; 344 need_warning_badge = true;
338 break; 345 break;
339 } 346 }
340 } 347 }
341 348
342 GlobalErrorService* service = 349 GlobalErrorService* service =
343 GlobalErrorServiceFactory::GetForProfile(profile_); 350 GlobalErrorServiceFactory::GetForProfile(profile_);
344 GlobalError* error = service->GetGlobalErrorByMenuItemCommandID( 351 GlobalError* error = service->GetGlobalErrorByMenuItemCommandID(
345 ExtensionGlobalErrorBadge::GetMenuItemCommandID()); 352 ExtensionGlobalErrorBadge::GetMenuItemCommandID());
346 353
347 // Activate or hide the warning badge in case the current state is incorrect. 354 // Activate or hide the warning badge in case the current state is incorrect.
348 if (error && !need_warning_badge) { 355 if (error && !need_warning_badge) {
349 service->RemoveGlobalError(error); 356 service->RemoveGlobalError(error);
350 delete error; 357 delete error;
351 } else if (!error && need_warning_badge) { 358 } else if (!error && need_warning_badge) {
352 service->AddGlobalError(new ExtensionGlobalErrorBadge); 359 service->AddGlobalError(new ExtensionGlobalErrorBadge);
353 } 360 }
354 } 361 }
355 362
356 } // namespace extensions 363 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_warning_set.h ('k') | chrome/browser/ui/webui/extensions/extension_settings_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698