OLD | NEW |
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 "extensions/browser/api/management/management_api.h" | 5 #include "extensions/browser/api/management/management_api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 using content::BrowserThread; | 46 using content::BrowserThread; |
47 | 47 |
48 namespace keys = extension_management_api_constants; | 48 namespace keys = extension_management_api_constants; |
49 | 49 |
50 namespace extensions { | 50 namespace extensions { |
51 | 51 |
52 namespace management = api::management; | 52 namespace management = api::management; |
53 | 53 |
54 namespace { | 54 namespace { |
55 | 55 |
56 typedef std::vector<linked_ptr<management::ExtensionInfo>> ExtensionInfoList; | 56 typedef std::vector<management::ExtensionInfo> ExtensionInfoList; |
57 typedef std::vector<linked_ptr<management::IconInfo>> IconInfoList; | 57 typedef std::vector<management::IconInfo> IconInfoList; |
58 | 58 |
59 enum AutoConfirmForTest { DO_NOT_SKIP = 0, PROCEED, ABORT }; | 59 enum AutoConfirmForTest { DO_NOT_SKIP = 0, PROCEED, ABORT }; |
60 | 60 |
61 AutoConfirmForTest auto_confirm_for_test = DO_NOT_SKIP; | 61 AutoConfirmForTest auto_confirm_for_test = DO_NOT_SKIP; |
62 | 62 |
63 std::vector<std::string> CreateWarningsList(const Extension* extension) { | 63 std::vector<std::string> CreateWarningsList(const Extension* extension) { |
64 std::vector<std::string> warnings_list; | 64 std::vector<std::string> warnings_list; |
65 for (const PermissionMessage& msg : | 65 for (const PermissionMessage& msg : |
66 extension->permissions_data()->GetPermissionMessages()) { | 66 extension->permissions_data()->GetPermissionMessages()) { |
67 warnings_list.push_back(base::UTF16ToUTF8(msg.message())); | 67 warnings_list.push_back(base::UTF16ToUTF8(msg.message())); |
(...skipping 17 matching lines...) Expand all Loading... |
85 if (delegate->CanHostedAppsOpenInWindows()) | 85 if (delegate->CanHostedAppsOpenInWindows()) |
86 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_WINDOW); | 86 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_WINDOW); |
87 | 87 |
88 if (!delegate->IsNewBookmarkAppsEnabled()) { | 88 if (!delegate->IsNewBookmarkAppsEnabled()) { |
89 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB); | 89 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB); |
90 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_FULL_SCREEN); | 90 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_FULL_SCREEN); |
91 } | 91 } |
92 return launch_type_list; | 92 return launch_type_list; |
93 } | 93 } |
94 | 94 |
95 scoped_ptr<management::ExtensionInfo> CreateExtensionInfo( | 95 management::ExtensionInfo CreateExtensionInfo( |
96 const Extension& extension, | 96 const Extension& extension, |
97 content::BrowserContext* context) { | 97 content::BrowserContext* context) { |
98 ExtensionSystem* system = ExtensionSystem::Get(context); | 98 ExtensionSystem* system = ExtensionSystem::Get(context); |
99 ExtensionRegistry* registry = ExtensionRegistry::Get(context); | 99 ExtensionRegistry* registry = ExtensionRegistry::Get(context); |
100 const ManagementAPIDelegate* delegate = | 100 const ManagementAPIDelegate* delegate = |
101 ManagementAPI::GetFactoryInstance()->Get(context)->GetDelegate(); | 101 ManagementAPI::GetFactoryInstance()->Get(context)->GetDelegate(); |
102 scoped_ptr<management::ExtensionInfo> info(new management::ExtensionInfo()); | 102 management::ExtensionInfo info; |
103 | 103 |
104 info->id = extension.id(); | 104 info.id = extension.id(); |
105 info->name = extension.name(); | 105 info.name = extension.name(); |
106 info->short_name = extension.short_name(); | 106 info.short_name = extension.short_name(); |
107 info->enabled = registry->enabled_extensions().Contains(info->id); | 107 info.enabled = registry->enabled_extensions().Contains(info.id); |
108 info->offline_enabled = OfflineEnabledInfo::IsOfflineEnabled(&extension); | 108 info.offline_enabled = OfflineEnabledInfo::IsOfflineEnabled(&extension); |
109 info->version = extension.VersionString(); | 109 info.version = extension.VersionString(); |
110 if (!extension.version_name().empty()) | 110 if (!extension.version_name().empty()) |
111 info->version_name.reset(new std::string(extension.version_name())); | 111 info.version_name.reset(new std::string(extension.version_name())); |
112 info->description = extension.description(); | 112 info.description = extension.description(); |
113 info->options_url = OptionsPageInfo::GetOptionsPage(&extension).spec(); | 113 info.options_url = OptionsPageInfo::GetOptionsPage(&extension).spec(); |
114 info->homepage_url.reset( | 114 info.homepage_url.reset( |
115 new std::string(ManifestURL::GetHomepageURL(&extension).spec())); | 115 new std::string(ManifestURL::GetHomepageURL(&extension).spec())); |
116 info->may_disable = | 116 info.may_disable = |
117 system->management_policy()->UserMayModifySettings(&extension, NULL); | 117 system->management_policy()->UserMayModifySettings(&extension, NULL); |
118 info->is_app = extension.is_app(); | 118 info.is_app = extension.is_app(); |
119 if (info->is_app) { | 119 if (info.is_app) { |
120 if (extension.is_legacy_packaged_app()) | 120 if (extension.is_legacy_packaged_app()) |
121 info->type = management::EXTENSION_TYPE_LEGACY_PACKAGED_APP; | 121 info.type = management::EXTENSION_TYPE_LEGACY_PACKAGED_APP; |
122 else if (extension.is_hosted_app()) | 122 else if (extension.is_hosted_app()) |
123 info->type = management::EXTENSION_TYPE_HOSTED_APP; | 123 info.type = management::EXTENSION_TYPE_HOSTED_APP; |
124 else | 124 else |
125 info->type = management::EXTENSION_TYPE_PACKAGED_APP; | 125 info.type = management::EXTENSION_TYPE_PACKAGED_APP; |
126 } else if (extension.is_theme()) { | 126 } else if (extension.is_theme()) { |
127 info->type = management::EXTENSION_TYPE_THEME; | 127 info.type = management::EXTENSION_TYPE_THEME; |
128 } else { | 128 } else { |
129 info->type = management::EXTENSION_TYPE_EXTENSION; | 129 info.type = management::EXTENSION_TYPE_EXTENSION; |
130 } | 130 } |
131 | 131 |
132 if (info->enabled) { | 132 if (info.enabled) { |
133 info->disabled_reason = management::EXTENSION_DISABLED_REASON_NONE; | 133 info.disabled_reason = management::EXTENSION_DISABLED_REASON_NONE; |
134 } else { | 134 } else { |
135 ExtensionPrefs* prefs = ExtensionPrefs::Get(context); | 135 ExtensionPrefs* prefs = ExtensionPrefs::Get(context); |
136 if (prefs->DidExtensionEscalatePermissions(extension.id())) { | 136 if (prefs->DidExtensionEscalatePermissions(extension.id())) { |
137 info->disabled_reason = | 137 info.disabled_reason = |
138 management::EXTENSION_DISABLED_REASON_PERMISSIONS_INCREASE; | 138 management::EXTENSION_DISABLED_REASON_PERMISSIONS_INCREASE; |
139 } else { | 139 } else { |
140 info->disabled_reason = | 140 info.disabled_reason = management::EXTENSION_DISABLED_REASON_UNKNOWN; |
141 management::EXTENSION_DISABLED_REASON_UNKNOWN; | |
142 } | 141 } |
143 } | 142 } |
144 | 143 |
145 if (!ManifestURL::GetUpdateURL(&extension).is_empty()) { | 144 if (!ManifestURL::GetUpdateURL(&extension).is_empty()) { |
146 info->update_url.reset( | 145 info.update_url.reset( |
147 new std::string(ManifestURL::GetUpdateURL(&extension).spec())); | 146 new std::string(ManifestURL::GetUpdateURL(&extension).spec())); |
148 } | 147 } |
149 | 148 |
150 if (extension.is_app()) { | 149 if (extension.is_app()) { |
151 info->app_launch_url.reset( | 150 info.app_launch_url.reset( |
152 new std::string(delegate->GetFullLaunchURL(&extension).spec())); | 151 new std::string(delegate->GetFullLaunchURL(&extension).spec())); |
153 } | 152 } |
154 | 153 |
155 const ExtensionIconSet::IconMap& icons = | 154 const ExtensionIconSet::IconMap& icons = |
156 IconsInfo::GetIcons(&extension).map(); | 155 IconsInfo::GetIcons(&extension).map(); |
157 if (!icons.empty()) { | 156 if (!icons.empty()) { |
158 info->icons.reset(new IconInfoList()); | 157 info.icons.reset(new IconInfoList()); |
159 ExtensionIconSet::IconMap::const_iterator icon_iter; | 158 ExtensionIconSet::IconMap::const_iterator icon_iter; |
160 for (icon_iter = icons.begin(); icon_iter != icons.end(); ++icon_iter) { | 159 for (icon_iter = icons.begin(); icon_iter != icons.end(); ++icon_iter) { |
161 management::IconInfo* icon_info = new management::IconInfo(); | 160 management::IconInfo icon_info; |
162 icon_info->size = icon_iter->first; | 161 icon_info.size = icon_iter->first; |
163 GURL url = | 162 GURL url = |
164 delegate->GetIconURL(&extension, icon_info->size, | 163 delegate->GetIconURL(&extension, icon_info.size, |
165 ExtensionIconSet::MATCH_EXACTLY, false, nullptr); | 164 ExtensionIconSet::MATCH_EXACTLY, false, nullptr); |
166 icon_info->url = url.spec(); | 165 icon_info.url = url.spec(); |
167 info->icons->push_back(make_linked_ptr<management::IconInfo>(icon_info)); | 166 info.icons->push_back(std::move(icon_info)); |
168 } | 167 } |
169 } | 168 } |
170 | 169 |
171 const std::set<std::string> perms = | 170 const std::set<std::string> perms = |
172 extension.permissions_data()->active_permissions().GetAPIsAsStrings(); | 171 extension.permissions_data()->active_permissions().GetAPIsAsStrings(); |
173 if (!perms.empty()) { | 172 if (!perms.empty()) { |
174 std::set<std::string>::const_iterator perms_iter; | 173 std::set<std::string>::const_iterator perms_iter; |
175 for (perms_iter = perms.begin(); perms_iter != perms.end(); ++perms_iter) | 174 for (perms_iter = perms.begin(); perms_iter != perms.end(); ++perms_iter) |
176 info->permissions.push_back(*perms_iter); | 175 info.permissions.push_back(*perms_iter); |
177 } | 176 } |
178 | 177 |
179 if (!extension.is_hosted_app()) { | 178 if (!extension.is_hosted_app()) { |
180 // Skip host permissions for hosted apps. | 179 // Skip host permissions for hosted apps. |
181 const URLPatternSet host_perms = | 180 const URLPatternSet host_perms = |
182 extension.permissions_data()->active_permissions().explicit_hosts(); | 181 extension.permissions_data()->active_permissions().explicit_hosts(); |
183 if (!host_perms.is_empty()) { | 182 if (!host_perms.is_empty()) { |
184 for (URLPatternSet::const_iterator iter = host_perms.begin(); | 183 for (URLPatternSet::const_iterator iter = host_perms.begin(); |
185 iter != host_perms.end(); ++iter) { | 184 iter != host_perms.end(); ++iter) { |
186 info->host_permissions.push_back(iter->GetAsString()); | 185 info.host_permissions.push_back(iter->GetAsString()); |
187 } | 186 } |
188 } | 187 } |
189 } | 188 } |
190 | 189 |
191 switch (extension.location()) { | 190 switch (extension.location()) { |
192 case Manifest::INTERNAL: | 191 case Manifest::INTERNAL: |
193 info->install_type = management::EXTENSION_INSTALL_TYPE_NORMAL; | 192 info.install_type = management::EXTENSION_INSTALL_TYPE_NORMAL; |
194 break; | 193 break; |
195 case Manifest::UNPACKED: | 194 case Manifest::UNPACKED: |
196 case Manifest::COMMAND_LINE: | 195 case Manifest::COMMAND_LINE: |
197 info->install_type = management::EXTENSION_INSTALL_TYPE_DEVELOPMENT; | 196 info.install_type = management::EXTENSION_INSTALL_TYPE_DEVELOPMENT; |
198 break; | 197 break; |
199 case Manifest::EXTERNAL_PREF: | 198 case Manifest::EXTERNAL_PREF: |
200 case Manifest::EXTERNAL_REGISTRY: | 199 case Manifest::EXTERNAL_REGISTRY: |
201 case Manifest::EXTERNAL_PREF_DOWNLOAD: | 200 case Manifest::EXTERNAL_PREF_DOWNLOAD: |
202 info->install_type = management::EXTENSION_INSTALL_TYPE_SIDELOAD; | 201 info.install_type = management::EXTENSION_INSTALL_TYPE_SIDELOAD; |
203 break; | 202 break; |
204 case Manifest::EXTERNAL_POLICY: | 203 case Manifest::EXTERNAL_POLICY: |
205 case Manifest::EXTERNAL_POLICY_DOWNLOAD: | 204 case Manifest::EXTERNAL_POLICY_DOWNLOAD: |
206 info->install_type = management::EXTENSION_INSTALL_TYPE_ADMIN; | 205 info.install_type = management::EXTENSION_INSTALL_TYPE_ADMIN; |
207 break; | 206 break; |
208 case Manifest::NUM_LOCATIONS: | 207 case Manifest::NUM_LOCATIONS: |
209 NOTREACHED(); | 208 NOTREACHED(); |
210 case Manifest::INVALID_LOCATION: | 209 case Manifest::INVALID_LOCATION: |
211 case Manifest::COMPONENT: | 210 case Manifest::COMPONENT: |
212 case Manifest::EXTERNAL_COMPONENT: | 211 case Manifest::EXTERNAL_COMPONENT: |
213 info->install_type = management::EXTENSION_INSTALL_TYPE_OTHER; | 212 info.install_type = management::EXTENSION_INSTALL_TYPE_OTHER; |
214 break; | 213 break; |
215 } | 214 } |
216 | 215 |
217 info->launch_type = management::LAUNCH_TYPE_NONE; | 216 info.launch_type = management::LAUNCH_TYPE_NONE; |
218 if (extension.is_app()) { | 217 if (extension.is_app()) { |
219 LaunchType launch_type; | 218 LaunchType launch_type; |
220 if (extension.is_platform_app()) { | 219 if (extension.is_platform_app()) { |
221 launch_type = LAUNCH_TYPE_WINDOW; | 220 launch_type = LAUNCH_TYPE_WINDOW; |
222 } else { | 221 } else { |
223 launch_type = | 222 launch_type = |
224 delegate->GetLaunchType(ExtensionPrefs::Get(context), &extension); | 223 delegate->GetLaunchType(ExtensionPrefs::Get(context), &extension); |
225 } | 224 } |
226 | 225 |
227 switch (launch_type) { | 226 switch (launch_type) { |
228 case LAUNCH_TYPE_PINNED: | 227 case LAUNCH_TYPE_PINNED: |
229 info->launch_type = management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB; | 228 info.launch_type = management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB; |
230 break; | 229 break; |
231 case LAUNCH_TYPE_REGULAR: | 230 case LAUNCH_TYPE_REGULAR: |
232 info->launch_type = management::LAUNCH_TYPE_OPEN_AS_REGULAR_TAB; | 231 info.launch_type = management::LAUNCH_TYPE_OPEN_AS_REGULAR_TAB; |
233 break; | 232 break; |
234 case LAUNCH_TYPE_FULLSCREEN: | 233 case LAUNCH_TYPE_FULLSCREEN: |
235 info->launch_type = management::LAUNCH_TYPE_OPEN_FULL_SCREEN; | 234 info.launch_type = management::LAUNCH_TYPE_OPEN_FULL_SCREEN; |
236 break; | 235 break; |
237 case LAUNCH_TYPE_WINDOW: | 236 case LAUNCH_TYPE_WINDOW: |
238 info->launch_type = management::LAUNCH_TYPE_OPEN_AS_WINDOW; | 237 info.launch_type = management::LAUNCH_TYPE_OPEN_AS_WINDOW; |
239 break; | 238 break; |
240 case LAUNCH_TYPE_INVALID: | 239 case LAUNCH_TYPE_INVALID: |
241 case NUM_LAUNCH_TYPES: | 240 case NUM_LAUNCH_TYPES: |
242 NOTREACHED(); | 241 NOTREACHED(); |
243 } | 242 } |
244 | 243 |
245 info->available_launch_types.reset(new std::vector<management::LaunchType>( | 244 info.available_launch_types.reset(new std::vector<management::LaunchType>( |
246 GetAvailableLaunchTypes(extension, delegate))); | 245 GetAvailableLaunchTypes(extension, delegate))); |
247 } | 246 } |
248 | 247 |
249 return info; | 248 return info; |
250 } | 249 } |
251 | 250 |
252 void AddExtensionInfo(const ExtensionSet& extensions, | 251 void AddExtensionInfo(const ExtensionSet& extensions, |
253 ExtensionInfoList* extension_list, | 252 ExtensionInfoList* extension_list, |
254 content::BrowserContext* context) { | 253 content::BrowserContext* context) { |
255 for (ExtensionSet::const_iterator iter = extensions.begin(); | 254 for (ExtensionSet::const_iterator iter = extensions.begin(); |
256 iter != extensions.end(); ++iter) { | 255 iter != extensions.end(); ++iter) { |
257 const Extension& extension = *iter->get(); | 256 const Extension& extension = *iter->get(); |
258 | 257 |
259 if (extension.ShouldNotBeVisible()) | 258 if (extension.ShouldNotBeVisible()) |
260 continue; // Skip built-in extensions/apps. | 259 continue; // Skip built-in extensions/apps. |
261 | 260 |
262 extension_list->push_back(make_linked_ptr<management::ExtensionInfo>( | 261 extension_list->push_back(CreateExtensionInfo(extension, context)); |
263 CreateExtensionInfo(extension, context).release())); | |
264 } | 262 } |
265 } | 263 } |
266 | 264 |
267 } // namespace | 265 } // namespace |
268 | 266 |
269 bool ManagementGetAllFunction::RunSync() { | 267 bool ManagementGetAllFunction::RunSync() { |
270 ExtensionInfoList extensions; | 268 ExtensionInfoList extensions; |
271 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 269 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
272 | 270 |
273 AddExtensionInfo(registry->enabled_extensions(), &extensions, | 271 AddExtensionInfo(registry->enabled_extensions(), &extensions, |
(...skipping 14 matching lines...) Expand all Loading... |
288 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 286 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
289 | 287 |
290 const Extension* extension = | 288 const Extension* extension = |
291 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 289 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
292 if (!extension) { | 290 if (!extension) { |
293 error_ = | 291 error_ = |
294 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | 292 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); |
295 return false; | 293 return false; |
296 } | 294 } |
297 | 295 |
298 scoped_ptr<management::ExtensionInfo> info = | 296 results_ = management::Get::Results::Create( |
299 CreateExtensionInfo(*extension, browser_context()); | 297 CreateExtensionInfo(*extension, browser_context())); |
300 results_ = management::Get::Results::Create(*info); | |
301 | 298 |
302 return true; | 299 return true; |
303 } | 300 } |
304 | 301 |
305 bool ManagementGetSelfFunction::RunSync() { | 302 bool ManagementGetSelfFunction::RunSync() { |
306 scoped_ptr<management::ExtensionInfo> info = | 303 results_ = management::Get::Results::Create( |
307 CreateExtensionInfo(*extension_, browser_context()); | 304 CreateExtensionInfo(*extension_, browser_context())); |
308 results_ = management::Get::Results::Create(*info); | |
309 | 305 |
310 return true; | 306 return true; |
311 } | 307 } |
312 | 308 |
313 bool ManagementGetPermissionWarningsByIdFunction::RunSync() { | 309 bool ManagementGetPermissionWarningsByIdFunction::RunSync() { |
314 scoped_ptr<management::GetPermissionWarningsById::Params> params( | 310 scoped_ptr<management::GetPermissionWarningsById::Params> params( |
315 management::GetPermissionWarningsById::Params::Create(*args_)); | 311 management::GetPermissionWarningsById::Params::Create(*args_)); |
316 EXTENSION_FUNCTION_VALIDATE(params.get()); | 312 EXTENSION_FUNCTION_VALIDATE(params.get()); |
317 | 313 |
318 const Extension* extension = | 314 const Extension* extension = |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
766 ManagementGenerateAppForLinkFunction::ManagementGenerateAppForLinkFunction() { | 762 ManagementGenerateAppForLinkFunction::ManagementGenerateAppForLinkFunction() { |
767 } | 763 } |
768 | 764 |
769 ManagementGenerateAppForLinkFunction::~ManagementGenerateAppForLinkFunction() { | 765 ManagementGenerateAppForLinkFunction::~ManagementGenerateAppForLinkFunction() { |
770 } | 766 } |
771 | 767 |
772 void ManagementGenerateAppForLinkFunction::FinishCreateBookmarkApp( | 768 void ManagementGenerateAppForLinkFunction::FinishCreateBookmarkApp( |
773 const Extension* extension, | 769 const Extension* extension, |
774 const WebApplicationInfo& web_app_info) { | 770 const WebApplicationInfo& web_app_info) { |
775 if (extension) { | 771 if (extension) { |
776 scoped_ptr<management::ExtensionInfo> info = | 772 results_ = management::GenerateAppForLink::Results::Create( |
777 CreateExtensionInfo(*extension, browser_context()); | 773 CreateExtensionInfo(*extension, browser_context())); |
778 results_ = management::GenerateAppForLink::Results::Create(*info); | |
779 | 774 |
780 SendResponse(true); | 775 SendResponse(true); |
781 Release(); | 776 Release(); |
782 } else { | 777 } else { |
783 error_ = keys::kGenerateAppForLinkInstallError; | 778 error_ = keys::kGenerateAppForLinkInstallError; |
784 SendResponse(false); | 779 SendResponse(false); |
785 Release(); | 780 Release(); |
786 } | 781 } |
787 } | 782 } |
788 | 783 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 void ManagementEventRouter::BroadcastEvent( | 859 void ManagementEventRouter::BroadcastEvent( |
865 const Extension* extension, | 860 const Extension* extension, |
866 events::HistogramValue histogram_value, | 861 events::HistogramValue histogram_value, |
867 const char* event_name) { | 862 const char* event_name) { |
868 if (extension->ShouldNotBeVisible()) | 863 if (extension->ShouldNotBeVisible()) |
869 return; // Don't dispatch events for built-in extenions. | 864 return; // Don't dispatch events for built-in extenions. |
870 scoped_ptr<base::ListValue> args(new base::ListValue()); | 865 scoped_ptr<base::ListValue> args(new base::ListValue()); |
871 if (event_name == management::OnUninstalled::kEventName) { | 866 if (event_name == management::OnUninstalled::kEventName) { |
872 args->Append(new base::StringValue(extension->id())); | 867 args->Append(new base::StringValue(extension->id())); |
873 } else { | 868 } else { |
874 scoped_ptr<management::ExtensionInfo> info = | 869 args->Append(CreateExtensionInfo(*extension, browser_context_).ToValue()); |
875 CreateExtensionInfo(*extension, browser_context_); | |
876 args->Append(info->ToValue().release()); | |
877 } | 870 } |
878 | 871 |
879 EventRouter::Get(browser_context_) | 872 EventRouter::Get(browser_context_) |
880 ->BroadcastEvent(scoped_ptr<Event>( | 873 ->BroadcastEvent(scoped_ptr<Event>( |
881 new Event(histogram_value, event_name, std::move(args)))); | 874 new Event(histogram_value, event_name, std::move(args)))); |
882 } | 875 } |
883 | 876 |
884 ManagementAPI::ManagementAPI(content::BrowserContext* context) | 877 ManagementAPI::ManagementAPI(content::BrowserContext* context) |
885 : browser_context_(context), | 878 : browser_context_(context), |
886 delegate_(ExtensionsAPIClient::Get()->CreateManagementAPIDelegate()) { | 879 delegate_(ExtensionsAPIClient::Get()->CreateManagementAPIDelegate()) { |
(...skipping 19 matching lines...) Expand all Loading... |
906 ManagementAPI::GetFactoryInstance() { | 899 ManagementAPI::GetFactoryInstance() { |
907 return g_factory.Pointer(); | 900 return g_factory.Pointer(); |
908 } | 901 } |
909 | 902 |
910 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 903 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
911 management_event_router_.reset(new ManagementEventRouter(browser_context_)); | 904 management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
912 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 905 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
913 } | 906 } |
914 | 907 |
915 } // namespace extensions | 908 } // namespace extensions |
OLD | NEW |