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

Side by Side Diff: extensions/browser/warning_service.cc

Issue 503033002: Move ExtensionWarningService and ExtensionsWarningSet to extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@3_web_view_internal
Patch Set: rebase Created 6 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
« no previous file with comments | « extensions/browser/warning_service.h ('k') | extensions/browser/warning_service_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_service.h" 5 #include "extensions/browser/warning_service.h"
6 6
7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/profiles/profile_manager.h"
11 #include "content/public/browser/browser_thread.h" 7 #include "content/public/browser/browser_thread.h"
12 #include "extensions/browser/extension_registry.h" 8 #include "extensions/browser/extension_registry.h"
13 #include "extensions/browser/extension_system.h" 9 #include "extensions/browser/extension_system.h"
10 #include "extensions/browser/extensions_browser_client.h"
11 #include "extensions/common/extension_set.h"
14 12
15 using content::BrowserThread; 13 using content::BrowserThread;
16 14
17 namespace extensions { 15 namespace extensions {
18 16
19 ExtensionWarningService::ExtensionWarningService(Profile* profile) 17 WarningService::WarningService(content::BrowserContext* browser_context)
20 : profile_(profile), extension_registry_observer_(this) { 18 : browser_context_(browser_context), extension_registry_observer_(this) {
21 DCHECK(CalledOnValidThread()); 19 DCHECK(CalledOnValidThread());
22 if (profile_) { 20 if (browser_context_) {
23 extension_registry_observer_.Add( 21 extension_registry_observer_.Add(ExtensionRegistry::Get(
24 ExtensionRegistry::Get(profile_->GetOriginalProfile())); 22 ExtensionsBrowserClient::Get()->GetOriginalContext(browser_context_)));
25 } 23 }
26 } 24 }
27 25
28 ExtensionWarningService::~ExtensionWarningService() {} 26 WarningService::~WarningService() {}
29 27
30 void ExtensionWarningService::ClearWarnings( 28 void WarningService::ClearWarnings(
31 const std::set<ExtensionWarning::WarningType>& types) { 29 const std::set<Warning::WarningType>& types) {
32 DCHECK(CalledOnValidThread()); 30 DCHECK(CalledOnValidThread());
33 bool deleted_anything = false; 31 bool deleted_anything = false;
34 for (ExtensionWarningSet::iterator i = warnings_.begin(); 32 for (WarningSet::iterator i = warnings_.begin();
35 i != warnings_.end();) { 33 i != warnings_.end();) {
36 if (types.find(i->warning_type()) != types.end()) { 34 if (types.find(i->warning_type()) != types.end()) {
37 deleted_anything = true; 35 deleted_anything = true;
38 warnings_.erase(i++); 36 warnings_.erase(i++);
39 } else { 37 } else {
40 ++i; 38 ++i;
41 } 39 }
42 } 40 }
43 41
44 if (deleted_anything) 42 if (deleted_anything)
45 NotifyWarningsChanged(); 43 NotifyWarningsChanged();
46 } 44 }
47 45
48 std::set<ExtensionWarning::WarningType> 46 std::set<Warning::WarningType> WarningService::
49 ExtensionWarningService::GetWarningTypesAffectingExtension( 47 GetWarningTypesAffectingExtension(const std::string& extension_id) const {
50 const std::string& extension_id) const {
51 DCHECK(CalledOnValidThread()); 48 DCHECK(CalledOnValidThread());
52 std::set<ExtensionWarning::WarningType> result; 49 std::set<Warning::WarningType> result;
53 for (ExtensionWarningSet::const_iterator i = warnings_.begin(); 50 for (WarningSet::const_iterator i = warnings_.begin();
54 i != warnings_.end(); ++i) { 51 i != warnings_.end(); ++i) {
55 if (i->extension_id() == extension_id) 52 if (i->extension_id() == extension_id)
56 result.insert(i->warning_type()); 53 result.insert(i->warning_type());
57 } 54 }
58 return result; 55 return result;
59 } 56 }
60 57
61 std::vector<std::string> 58 std::vector<std::string> WarningService::GetWarningMessagesForExtension(
62 ExtensionWarningService::GetWarningMessagesForExtension(
63 const std::string& extension_id) const { 59 const std::string& extension_id) const {
64 DCHECK(CalledOnValidThread()); 60 DCHECK(CalledOnValidThread());
65 std::vector<std::string> result; 61 std::vector<std::string> result;
66 62
67 const ExtensionService* extension_service = 63 const ExtensionSet& extension_set =
68 ExtensionSystem::Get(profile_)->extension_service(); 64 ExtensionRegistry::Get(browser_context_)->enabled_extensions();
69 65
70 for (ExtensionWarningSet::const_iterator i = warnings_.begin(); 66 for (WarningSet::const_iterator i = warnings_.begin();
71 i != warnings_.end(); ++i) { 67 i != warnings_.end(); ++i) {
72 if (i->extension_id() == extension_id) 68 if (i->extension_id() == extension_id)
73 result.push_back(i->GetLocalizedMessage(extension_service->extensions())); 69 result.push_back(i->GetLocalizedMessage(&extension_set));
74 } 70 }
75 return result; 71 return result;
76 } 72 }
77 73
78 void ExtensionWarningService::AddWarnings( 74 void WarningService::AddWarnings(const WarningSet& warnings) {
79 const ExtensionWarningSet& warnings) {
80 DCHECK(CalledOnValidThread()); 75 DCHECK(CalledOnValidThread());
81 size_t old_size = warnings_.size(); 76 size_t old_size = warnings_.size();
82 77
83 warnings_.insert(warnings.begin(), warnings.end()); 78 warnings_.insert(warnings.begin(), warnings.end());
84 79
85 if (old_size != warnings_.size()) 80 if (old_size != warnings_.size())
86 NotifyWarningsChanged(); 81 NotifyWarningsChanged();
87 } 82 }
88 83
89 // static 84 // static
90 void ExtensionWarningService::NotifyWarningsOnUI( 85 void WarningService::NotifyWarningsOnUI(
91 void* profile_id, 86 void* profile_id,
92 const ExtensionWarningSet& warnings) { 87 const WarningSet& warnings) {
93 DCHECK_CURRENTLY_ON(BrowserThread::UI); 88 DCHECK_CURRENTLY_ON(BrowserThread::UI);
94 Profile* profile = reinterpret_cast<Profile*>(profile_id); 89 content::BrowserContext* browser_context =
95 if (!profile || 90 reinterpret_cast<content::BrowserContext*>(profile_id);
96 !g_browser_process->profile_manager() || 91
97 !g_browser_process->profile_manager()->IsValidProfile(profile)) { 92 if (!browser_context ||
93 !ExtensionsBrowserClient::Get() ||
94 !ExtensionsBrowserClient::Get()->IsValidContext(browser_context)) {
98 return; 95 return;
99 } 96 }
100 97
101 extensions::ExtensionWarningService* warning_service = 98 WarningService* warning_service =
102 extensions::ExtensionSystem::Get(profile)->warning_service(); 99 ExtensionSystem::Get(browser_context)->warning_service();
103 100
104 warning_service->AddWarnings(warnings); 101 warning_service->AddWarnings(warnings);
105 } 102 }
106 103
107 void ExtensionWarningService::AddObserver(Observer* observer) { 104 void WarningService::AddObserver(Observer* observer) {
108 observer_list_.AddObserver(observer); 105 observer_list_.AddObserver(observer);
109 } 106 }
110 107
111 void ExtensionWarningService::RemoveObserver(Observer* observer) { 108 void WarningService::RemoveObserver(Observer* observer) {
112 observer_list_.RemoveObserver(observer); 109 observer_list_.RemoveObserver(observer);
113 } 110 }
114 111
115 void ExtensionWarningService::NotifyWarningsChanged() { 112 void WarningService::NotifyWarningsChanged() {
116 FOR_EACH_OBSERVER(Observer, observer_list_, ExtensionWarningsChanged()); 113 FOR_EACH_OBSERVER(Observer, observer_list_, ExtensionWarningsChanged());
117 } 114 }
118 115
119 void ExtensionWarningService::OnExtensionUnloaded( 116 void WarningService::OnExtensionUnloaded(
120 content::BrowserContext* browser_context, 117 content::BrowserContext* browser_context,
121 const Extension* extension, 118 const Extension* extension,
122 UnloadedExtensionInfo::Reason reason) { 119 UnloadedExtensionInfo::Reason reason) {
123 // Unloading one extension might have solved the problems of others. 120 // Unloading one extension might have solved the problems of others.
124 // Therefore, we clear warnings of this type for all extensions. 121 // Therefore, we clear warnings of this type for all extensions.
125 std::set<ExtensionWarning::WarningType> warning_types = 122 std::set<Warning::WarningType> warning_types =
126 GetWarningTypesAffectingExtension(extension->id()); 123 GetWarningTypesAffectingExtension(extension->id());
127 ClearWarnings(warning_types); 124 ClearWarnings(warning_types);
128 } 125 }
129 126
130 } // namespace extensions 127 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/warning_service.h ('k') | extensions/browser/warning_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698