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

Side by Side Diff: extensions/browser/extension_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: Created 6 years, 4 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 (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/extension_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 ExtensionWarningService::ExtensionWarningService(
20 : profile_(profile), extension_registry_observer_(this) { 18 content::BrowserContext* browser_context)
19 : browser_context_(browser_context), extension_registry_observer_(this) {
21 DCHECK(CalledOnValidThread()); 20 DCHECK(CalledOnValidThread());
22 if (profile_) { 21 if (browser_context_) {
23 extension_registry_observer_.Add( 22 extension_registry_observer_.Add(ExtensionRegistry::Get(
24 ExtensionRegistry::Get(profile_->GetOriginalProfile())); 23 ExtensionsBrowserClient::Get()->GetOriginalContext(browser_context_)));
25 } 24 }
26 } 25 }
27 26
28 ExtensionWarningService::~ExtensionWarningService() {} 27 ExtensionWarningService::~ExtensionWarningService() {}
29 28
30 void ExtensionWarningService::ClearWarnings( 29 void ExtensionWarningService::ClearWarnings(
31 const std::set<ExtensionWarning::WarningType>& types) { 30 const std::set<ExtensionWarning::WarningType>& types) {
32 DCHECK(CalledOnValidThread()); 31 DCHECK(CalledOnValidThread());
33 bool deleted_anything = false; 32 bool deleted_anything = false;
34 for (ExtensionWarningSet::iterator i = warnings_.begin(); 33 for (ExtensionWarningSet::iterator i = warnings_.begin();
(...skipping 22 matching lines...) Expand all
57 } 56 }
58 return result; 57 return result;
59 } 58 }
60 59
61 std::vector<std::string> 60 std::vector<std::string>
62 ExtensionWarningService::GetWarningMessagesForExtension( 61 ExtensionWarningService::GetWarningMessagesForExtension(
63 const std::string& extension_id) const { 62 const std::string& extension_id) const {
64 DCHECK(CalledOnValidThread()); 63 DCHECK(CalledOnValidThread());
65 std::vector<std::string> result; 64 std::vector<std::string> result;
66 65
67 const ExtensionService* extension_service = 66 const ExtensionSet& extension_set =
68 ExtensionSystem::Get(profile_)->extension_service(); 67 ExtensionRegistry::Get(browser_context_)->enabled_extensions();
69 68
70 for (ExtensionWarningSet::const_iterator i = warnings_.begin(); 69 for (ExtensionWarningSet::const_iterator i = warnings_.begin();
71 i != warnings_.end(); ++i) { 70 i != warnings_.end(); ++i) {
72 if (i->extension_id() == extension_id) 71 if (i->extension_id() == extension_id)
73 result.push_back(i->GetLocalizedMessage(extension_service->extensions())); 72 result.push_back(i->GetLocalizedMessage(&extension_set));
74 } 73 }
75 return result; 74 return result;
76 } 75 }
77 76
78 void ExtensionWarningService::AddWarnings( 77 void ExtensionWarningService::AddWarnings(
79 const ExtensionWarningSet& warnings) { 78 const ExtensionWarningSet& warnings) {
80 DCHECK(CalledOnValidThread()); 79 DCHECK(CalledOnValidThread());
81 size_t old_size = warnings_.size(); 80 size_t old_size = warnings_.size();
82 81
83 warnings_.insert(warnings.begin(), warnings.end()); 82 warnings_.insert(warnings.begin(), warnings.end());
84 83
85 if (old_size != warnings_.size()) 84 if (old_size != warnings_.size())
86 NotifyWarningsChanged(); 85 NotifyWarningsChanged();
87 } 86 }
88 87
89 // static 88 // static
90 void ExtensionWarningService::NotifyWarningsOnUI( 89 void ExtensionWarningService::NotifyWarningsOnUI(
91 void* profile_id, 90 void* profile_id,
92 const ExtensionWarningSet& warnings) { 91 const ExtensionWarningSet& warnings) {
93 DCHECK_CURRENTLY_ON(BrowserThread::UI); 92 DCHECK_CURRENTLY_ON(BrowserThread::UI);
94 Profile* profile = reinterpret_cast<Profile*>(profile_id); 93 content::BrowserContext* browser_context =
95 if (!profile || 94 reinterpret_cast<content::BrowserContext*>(profile_id);
96 !g_browser_process->profile_manager() || 95
97 !g_browser_process->profile_manager()->IsValidProfile(profile)) { 96 if (!browser_context ||
97 !ExtensionsBrowserClient::Get() ||
98 !ExtensionsBrowserClient::Get()->IsValidContext(browser_context)) {
98 return; 99 return;
99 } 100 }
100 101
101 extensions::ExtensionWarningService* warning_service = 102 extensions::ExtensionWarningService* warning_service =
102 extensions::ExtensionSystem::Get(profile)->warning_service(); 103 extensions::ExtensionSystem::Get(browser_context)->warning_service();
103 104
104 warning_service->AddWarnings(warnings); 105 warning_service->AddWarnings(warnings);
105 } 106 }
106 107
107 void ExtensionWarningService::AddObserver(Observer* observer) { 108 void ExtensionWarningService::AddObserver(Observer* observer) {
108 observer_list_.AddObserver(observer); 109 observer_list_.AddObserver(observer);
109 } 110 }
110 111
111 void ExtensionWarningService::RemoveObserver(Observer* observer) { 112 void ExtensionWarningService::RemoveObserver(Observer* observer) {
112 observer_list_.RemoveObserver(observer); 113 observer_list_.RemoveObserver(observer);
113 } 114 }
114 115
115 void ExtensionWarningService::NotifyWarningsChanged() { 116 void ExtensionWarningService::NotifyWarningsChanged() {
116 FOR_EACH_OBSERVER(Observer, observer_list_, ExtensionWarningsChanged()); 117 FOR_EACH_OBSERVER(Observer, observer_list_, ExtensionWarningsChanged());
117 } 118 }
118 119
119 void ExtensionWarningService::OnExtensionUnloaded( 120 void ExtensionWarningService::OnExtensionUnloaded(
120 content::BrowserContext* browser_context, 121 content::BrowserContext* browser_context,
121 const Extension* extension, 122 const Extension* extension,
122 UnloadedExtensionInfo::Reason reason) { 123 UnloadedExtensionInfo::Reason reason) {
123 // Unloading one extension might have solved the problems of others. 124 // Unloading one extension might have solved the problems of others.
124 // Therefore, we clear warnings of this type for all extensions. 125 // Therefore, we clear warnings of this type for all extensions.
125 std::set<ExtensionWarning::WarningType> warning_types = 126 std::set<ExtensionWarning::WarningType> warning_types =
126 GetWarningTypesAffectingExtension(extension->id()); 127 GetWarningTypesAffectingExtension(extension->id());
127 ClearWarnings(warning_types); 128 ClearWarnings(warning_types);
128 } 129 }
129 130
130 } // namespace extensions 131 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698