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

Side by Side Diff: chrome/browser/extensions/extension_warning_service.h

Issue 10407105: Improve error messaging of webRequest API in case of conflicts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Evan's comments Created 8 years, 1 month 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SERVICE_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SERVICE_H_
7
8 #include <set>
9 #include <string>
10 #include <vector>
11
12 #include "base/observer_list.h"
13 #include "base/threading/non_thread_safe.h"
14 #include "chrome/browser/extensions/extension_warning_set.h"
15 #include "chrome/common/extensions/extension_set.h"
16 #include "content/public/browser/notification_observer.h"
17 #include "content/public/browser/notification_registrar.h"
18
19 // TODO(battre) Remove the Extension prefix.
20
21 class Profile;
22
23 namespace content {
24 class NotificationDetails;
25 class NotificationSource;
26 }
27
28 namespace extensions {
29
30 // Manages a set of warnings caused by extensions. These warnings (e.g.
31 // conflicting modifications of network requests by extensions, slow extensions,
32 // etc.) trigger a warning badge in the UI and and provide means to resolve
33 // them. This class must be used on the UI thread only.
34 class ExtensionWarningService : public content::NotificationObserver,
35 public base::NonThreadSafe {
36 public:
37 class Observer {
38 public:
39 virtual void ExtensionWarningsChanged() = 0;
40 };
41
42 // |profile| may be NULL for testing. In this case, be sure to not insert
43 // any warnings.
44 explicit ExtensionWarningService(Profile* profile);
45 virtual ~ExtensionWarningService();
46
47 // Clears all warnings of types contained in |types| and notifies observers
48 // of the changed warnings.
49 void ClearWarnings(const std::set<ExtensionWarning::WarningType>& types);
50
51 // Returns all types of warnings effecting extension |extension_id|.
52 std::set<ExtensionWarning::WarningType> GetWarningTypesAffectingExtension(
53 const std::string& extension_id) const;
54
55 // Returns all localized warnings for extension |extension_id| in |result|.
56 std::vector<std::string> GetWarningMessagesForExtension(
57 const std::string& extension_id) const;
58
59 const ExtensionWarningSet& warnings() const { return warnings_; }
60
61 // Adds a set of warnings and notifies observers if any warning is new.
62 void AddWarnings(const ExtensionWarningSet& warnings);
63
64 // Notifies the ExtensionWarningService of profile |profile_id| that new
65 // |warnings| occurred and triggers a warning badge.
66 static void NotifyWarningsOnUI(void* profile_id,
67 const ExtensionWarningSet& warnings);
68
69 void AddObserver(Observer* observer);
70 void RemoveObserver(Observer* observer);
71
72 private:
73 void NotifyWarningsChanged();
74
75 // Implementation for content::NotificationObserver.
76 virtual void Observe(int type,
77 const content::NotificationSource& source,
78 const content::NotificationDetails& details) OVERRIDE;
79
80 // Currently existing warnings.
81 ExtensionWarningSet warnings_;
82
83 content::NotificationRegistrar registrar_;
84
85 Profile* profile_;
86
87 ObserverList<Observer> observer_list_;
88 };
89
90 } // namespace extensions
91
92 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698