| 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 |