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 <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 NOTREACHED(); | 239 NOTREACHED(); |
240 } | 240 } |
241 | 241 |
242 info->available_launch_types.reset(new std::vector<management::LaunchType>( | 242 info->available_launch_types.reset(new std::vector<management::LaunchType>( |
243 GetAvailableLaunchTypes(extension, delegate))); | 243 GetAvailableLaunchTypes(extension, delegate))); |
244 } | 244 } |
245 | 245 |
246 return info.Pass(); | 246 return info.Pass(); |
247 } | 247 } |
248 | 248 |
249 bool ShouldNotBeVisible(const Extension* extension, | |
250 content::BrowserContext* context) { | |
251 return (extension->ShouldNotBeVisible() || | |
252 ExtensionPrefs::Get(context)->IsEphemeralApp(extension->id())); | |
253 } | |
254 | |
255 void AddExtensionInfo(const ExtensionSet& extensions, | 249 void AddExtensionInfo(const ExtensionSet& extensions, |
256 ExtensionInfoList* extension_list, | 250 ExtensionInfoList* extension_list, |
257 content::BrowserContext* context) { | 251 content::BrowserContext* context) { |
258 for (ExtensionSet::const_iterator iter = extensions.begin(); | 252 for (ExtensionSet::const_iterator iter = extensions.begin(); |
259 iter != extensions.end(); ++iter) { | 253 iter != extensions.end(); ++iter) { |
260 const Extension& extension = *iter->get(); | 254 const Extension& extension = *iter->get(); |
261 | 255 |
262 if (ShouldNotBeVisible(&extension, context)) | 256 if (extension.ShouldNotBeVisible()) |
263 continue; // Skip built-in extensions/apps. | 257 continue; // Skip built-in extensions/apps. |
264 | 258 |
265 extension_list->push_back(make_linked_ptr<management::ExtensionInfo>( | 259 extension_list->push_back(make_linked_ptr<management::ExtensionInfo>( |
266 CreateExtensionInfo(extension, context).release())); | 260 CreateExtensionInfo(extension, context).release())); |
267 } | 261 } |
268 } | 262 } |
269 | 263 |
270 } // namespace | 264 } // namespace |
271 | 265 |
272 bool ManagementGetAllFunction::RunSync() { | 266 bool ManagementGetAllFunction::RunSync() { |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 EXTENSION_FUNCTION_VALIDATE(params.get()); | 421 EXTENSION_FUNCTION_VALIDATE(params.get()); |
428 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 422 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
429 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 423 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
430 ->Get(browser_context()) | 424 ->Get(browser_context()) |
431 ->GetDelegate(); | 425 ->GetDelegate(); |
432 | 426 |
433 extension_id_ = params->id; | 427 extension_id_ = params->id; |
434 | 428 |
435 const Extension* extension = | 429 const Extension* extension = |
436 registry->GetExtensionById(extension_id_, ExtensionRegistry::EVERYTHING); | 430 registry->GetExtensionById(extension_id_, ExtensionRegistry::EVERYTHING); |
437 if (!extension || ShouldNotBeVisible(extension, browser_context())) | 431 if (!extension || extension->ShouldNotBeVisible()) |
438 return RespondNow(Error(keys::kNoExtensionError, extension_id_)); | 432 return RespondNow(Error(keys::kNoExtensionError, extension_id_)); |
439 | 433 |
440 bool enabled = params->enabled; | 434 bool enabled = params->enabled; |
441 const ManagementPolicy* policy = | 435 const ManagementPolicy* policy = |
442 ExtensionSystem::Get(browser_context())->management_policy(); | 436 ExtensionSystem::Get(browser_context())->management_policy(); |
443 if (!policy->UserMayModifySettings(extension, nullptr) || | 437 if (!policy->UserMayModifySettings(extension, nullptr) || |
444 (!enabled && policy->MustRemainEnabled(extension, nullptr)) || | 438 (!enabled && policy->MustRemainEnabled(extension, nullptr)) || |
445 (enabled && policy->MustRemainDisabled(extension, nullptr, nullptr))) { | 439 (enabled && policy->MustRemainDisabled(extension, nullptr, nullptr))) { |
446 return RespondNow(Error(keys::kUserCantModifyError, extension_id_)); | 440 return RespondNow(Error(keys::kUserCantModifyError, extension_id_)); |
447 } | 441 } |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 const std::string& target_extension_id, | 510 const std::string& target_extension_id, |
517 bool show_confirm_dialog) { | 511 bool show_confirm_dialog) { |
518 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() | 512 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() |
519 ->Get(browser_context()) | 513 ->Get(browser_context()) |
520 ->GetDelegate(); | 514 ->GetDelegate(); |
521 target_extension_id_ = target_extension_id; | 515 target_extension_id_ = target_extension_id; |
522 const Extension* target_extension = | 516 const Extension* target_extension = |
523 extensions::ExtensionRegistry::Get(browser_context()) | 517 extensions::ExtensionRegistry::Get(browser_context()) |
524 ->GetExtensionById(target_extension_id_, | 518 ->GetExtensionById(target_extension_id_, |
525 ExtensionRegistry::EVERYTHING); | 519 ExtensionRegistry::EVERYTHING); |
526 if (!target_extension || | 520 if (!target_extension || target_extension->ShouldNotBeVisible()) { |
527 ShouldNotBeVisible(target_extension, browser_context())) { | |
528 return RespondNow(Error(keys::kNoExtensionError, target_extension_id_)); | 521 return RespondNow(Error(keys::kNoExtensionError, target_extension_id_)); |
529 } | 522 } |
530 | 523 |
531 ManagementPolicy* policy = | 524 ManagementPolicy* policy = |
532 ExtensionSystem::Get(browser_context())->management_policy(); | 525 ExtensionSystem::Get(browser_context())->management_policy(); |
533 if (!policy->UserMayModifySettings(target_extension, nullptr) || | 526 if (!policy->UserMayModifySettings(target_extension, nullptr) || |
534 policy->MustRemainInstalled(target_extension, nullptr)) { | 527 policy->MustRemainInstalled(target_extension, nullptr)) { |
535 return RespondNow(Error(keys::kUserCantModifyError, target_extension_id_)); | 528 return RespondNow(Error(keys::kUserCantModifyError, target_extension_id_)); |
536 } | 529 } |
537 | 530 |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
860 const Extension* extension, | 853 const Extension* extension, |
861 extensions::UninstallReason reason) { | 854 extensions::UninstallReason reason) { |
862 BroadcastEvent(extension, events::MANAGEMENT_ON_UNINSTALLED, | 855 BroadcastEvent(extension, events::MANAGEMENT_ON_UNINSTALLED, |
863 management::OnUninstalled::kEventName); | 856 management::OnUninstalled::kEventName); |
864 } | 857 } |
865 | 858 |
866 void ManagementEventRouter::BroadcastEvent( | 859 void ManagementEventRouter::BroadcastEvent( |
867 const Extension* extension, | 860 const Extension* extension, |
868 events::HistogramValue histogram_value, | 861 events::HistogramValue histogram_value, |
869 const char* event_name) { | 862 const char* event_name) { |
870 if (ShouldNotBeVisible(extension, browser_context_)) | 863 if (extension->ShouldNotBeVisible()) |
871 return; // Don't dispatch events for built-in extenions. | 864 return; // Don't dispatch events for built-in extenions. |
872 scoped_ptr<base::ListValue> args(new base::ListValue()); | 865 scoped_ptr<base::ListValue> args(new base::ListValue()); |
873 if (event_name == management::OnUninstalled::kEventName) { | 866 if (event_name == management::OnUninstalled::kEventName) { |
874 args->Append(new base::StringValue(extension->id())); | 867 args->Append(new base::StringValue(extension->id())); |
875 } else { | 868 } else { |
876 scoped_ptr<management::ExtensionInfo> info = | 869 scoped_ptr<management::ExtensionInfo> info = |
877 CreateExtensionInfo(*extension, browser_context_); | 870 CreateExtensionInfo(*extension, browser_context_); |
878 args->Append(info->ToValue().release()); | 871 args->Append(info->ToValue().release()); |
879 } | 872 } |
880 | 873 |
(...skipping 27 matching lines...) Expand all Loading... |
908 ManagementAPI::GetFactoryInstance() { | 901 ManagementAPI::GetFactoryInstance() { |
909 return g_factory.Pointer(); | 902 return g_factory.Pointer(); |
910 } | 903 } |
911 | 904 |
912 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 905 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
913 management_event_router_.reset(new ManagementEventRouter(browser_context_)); | 906 management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
914 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 907 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
915 } | 908 } |
916 | 909 |
917 } // namespace extensions | 910 } // namespace extensions |
OLD | NEW |