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

Side by Side Diff: extensions/browser/api/management/management_api.cc

Issue 2645863004: Simplify managing visibility of extensions in settings. (Closed)
Patch Set: Fixed logic so tests pass. Created 3 years, 11 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 "extensions/browser/api/management/management_api.h" 5 #include "extensions/browser/api/management/management_api.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 return info; 250 return info;
251 } 251 }
252 252
253 void AddExtensionInfo(const ExtensionSet& extensions, 253 void AddExtensionInfo(const ExtensionSet& extensions,
254 ExtensionInfoList* extension_list, 254 ExtensionInfoList* extension_list,
255 content::BrowserContext* context) { 255 content::BrowserContext* context) {
256 for (ExtensionSet::const_iterator iter = extensions.begin(); 256 for (ExtensionSet::const_iterator iter = extensions.begin();
257 iter != extensions.end(); ++iter) { 257 iter != extensions.end(); ++iter) {
258 const Extension& extension = **iter; 258 const Extension& extension = **iter;
259 259
260 if (extension.ShouldNotBeVisible()) 260 if (!extension.ShouldExposeViaManagementAPI())
261 continue; // Skip built-in extensions/apps. 261 continue;
262 262
263 extension_list->push_back(CreateExtensionInfo(extension, context)); 263 extension_list->push_back(CreateExtensionInfo(extension, context));
264 } 264 }
265 } 265 }
266 266
267 } // namespace 267 } // namespace
268 268
269 ExtensionFunction::ResponseAction ManagementGetAllFunction::Run() { 269 ExtensionFunction::ResponseAction ManagementGetAllFunction::Run() {
270 ExtensionInfoList extensions; 270 ExtensionInfoList extensions;
271 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); 271 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context());
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 EXTENSION_FUNCTION_VALIDATE(params.get()); 409 EXTENSION_FUNCTION_VALIDATE(params.get());
410 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); 410 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context());
411 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() 411 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance()
412 ->Get(browser_context()) 412 ->Get(browser_context())
413 ->GetDelegate(); 413 ->GetDelegate();
414 414
415 extension_id_ = params->id; 415 extension_id_ = params->id;
416 416
417 const Extension* extension = 417 const Extension* extension =
418 registry->GetExtensionById(extension_id_, ExtensionRegistry::EVERYTHING); 418 registry->GetExtensionById(extension_id_, ExtensionRegistry::EVERYTHING);
419 if (!extension || extension->ShouldNotBeVisible()) 419 if (!extension || !extension->ShouldExposeViaManagementAPI())
420 return RespondNow(Error(keys::kNoExtensionError, extension_id_)); 420 return RespondNow(Error(keys::kNoExtensionError, extension_id_));
421 421
422 bool enabled = params->enabled; 422 bool enabled = params->enabled;
423 const ManagementPolicy* policy = 423 const ManagementPolicy* policy =
424 ExtensionSystem::Get(browser_context())->management_policy(); 424 ExtensionSystem::Get(browser_context())->management_policy();
425 if (!policy->UserMayModifySettings(extension, nullptr) || 425 if (!policy->UserMayModifySettings(extension, nullptr) ||
426 (!enabled && policy->MustRemainEnabled(extension, nullptr)) || 426 (!enabled && policy->MustRemainEnabled(extension, nullptr)) ||
427 (enabled && policy->MustRemainDisabled(extension, nullptr, nullptr))) { 427 (enabled && policy->MustRemainDisabled(extension, nullptr, nullptr))) {
428 return RespondNow(Error(keys::kUserCantModifyError, extension_id_)); 428 return RespondNow(Error(keys::kUserCantModifyError, extension_id_));
429 } 429 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 const std::string& target_extension_id, 500 const std::string& target_extension_id,
501 bool show_confirm_dialog) { 501 bool show_confirm_dialog) {
502 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance() 502 const ManagementAPIDelegate* delegate = ManagementAPI::GetFactoryInstance()
503 ->Get(browser_context()) 503 ->Get(browser_context())
504 ->GetDelegate(); 504 ->GetDelegate();
505 target_extension_id_ = target_extension_id; 505 target_extension_id_ = target_extension_id;
506 const Extension* target_extension = 506 const Extension* target_extension =
507 extensions::ExtensionRegistry::Get(browser_context()) 507 extensions::ExtensionRegistry::Get(browser_context())
508 ->GetExtensionById(target_extension_id_, 508 ->GetExtensionById(target_extension_id_,
509 ExtensionRegistry::EVERYTHING); 509 ExtensionRegistry::EVERYTHING);
510 if (!target_extension || target_extension->ShouldNotBeVisible()) { 510 if (!target_extension || !target_extension->ShouldExposeViaManagementAPI()) {
511 return RespondNow(Error(keys::kNoExtensionError, target_extension_id_)); 511 return RespondNow(Error(keys::kNoExtensionError, target_extension_id_));
512 } 512 }
513 513
514 ManagementPolicy* policy = 514 ManagementPolicy* policy =
515 ExtensionSystem::Get(browser_context())->management_policy(); 515 ExtensionSystem::Get(browser_context())->management_policy();
516 if (!policy->UserMayModifySettings(target_extension, nullptr) || 516 if (!policy->UserMayModifySettings(target_extension, nullptr) ||
517 policy->MustRemainInstalled(target_extension, nullptr)) { 517 policy->MustRemainInstalled(target_extension, nullptr)) {
518 return RespondNow(Error(keys::kUserCantModifyError, target_extension_id_)); 518 return RespondNow(Error(keys::kUserCantModifyError, target_extension_id_));
519 } 519 }
520 520
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 const Extension* extension, 837 const Extension* extension,
838 extensions::UninstallReason reason) { 838 extensions::UninstallReason reason) {
839 BroadcastEvent(extension, events::MANAGEMENT_ON_UNINSTALLED, 839 BroadcastEvent(extension, events::MANAGEMENT_ON_UNINSTALLED,
840 management::OnUninstalled::kEventName); 840 management::OnUninstalled::kEventName);
841 } 841 }
842 842
843 void ManagementEventRouter::BroadcastEvent( 843 void ManagementEventRouter::BroadcastEvent(
844 const Extension* extension, 844 const Extension* extension,
845 events::HistogramValue histogram_value, 845 events::HistogramValue histogram_value,
846 const char* event_name) { 846 const char* event_name) {
847 if (extension->ShouldNotBeVisible()) 847 if (!extension->ShouldExposeViaManagementAPI())
848 return; // Don't dispatch events for built-in extenions. 848 return;
849 std::unique_ptr<base::ListValue> args(new base::ListValue()); 849 std::unique_ptr<base::ListValue> args(new base::ListValue());
850 if (event_name == management::OnUninstalled::kEventName) { 850 if (event_name == management::OnUninstalled::kEventName) {
851 args->AppendString(extension->id()); 851 args->AppendString(extension->id());
852 } else { 852 } else {
853 args->Append(CreateExtensionInfo(*extension, browser_context_).ToValue()); 853 args->Append(CreateExtensionInfo(*extension, browser_context_).ToValue());
854 } 854 }
855 855
856 EventRouter::Get(browser_context_) 856 EventRouter::Get(browser_context_)
857 ->BroadcastEvent(std::unique_ptr<Event>( 857 ->BroadcastEvent(std::unique_ptr<Event>(
858 new Event(histogram_value, event_name, std::move(args)))); 858 new Event(histogram_value, event_name, std::move(args))));
(...skipping 24 matching lines...) Expand all
883 ManagementAPI::GetFactoryInstance() { 883 ManagementAPI::GetFactoryInstance() {
884 return g_factory.Pointer(); 884 return g_factory.Pointer();
885 } 885 }
886 886
887 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { 887 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) {
888 management_event_router_.reset(new ManagementEventRouter(browser_context_)); 888 management_event_router_.reset(new ManagementEventRouter(browser_context_));
889 EventRouter::Get(browser_context_)->UnregisterObserver(this); 889 EventRouter::Get(browser_context_)->UnregisterObserver(this);
890 } 890 }
891 891
892 } // namespace extensions 892 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698