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 "chrome/browser/ui/webui/policy_ui_handler.h" | 5 #include "chrome/browser/ui/webui/policy_ui_handler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
637 void PolicyUIHandler::SendPolicyNames() const { | 637 void PolicyUIHandler::SendPolicyNames() const { |
638 base::DictionaryValue names; | 638 base::DictionaryValue names; |
639 | 639 |
640 Profile* profile = Profile::FromWebUI(web_ui()); | 640 Profile* profile = Profile::FromWebUI(web_ui()); |
641 policy::SchemaRegistry* registry = | 641 policy::SchemaRegistry* registry = |
642 policy::SchemaRegistryServiceFactory::GetForContext( | 642 policy::SchemaRegistryServiceFactory::GetForContext( |
643 profile->GetOriginalProfile())->registry(); | 643 profile->GetOriginalProfile())->registry(); |
644 scoped_refptr<policy::SchemaMap> schema_map = registry->schema_map(); | 644 scoped_refptr<policy::SchemaMap> schema_map = registry->schema_map(); |
645 | 645 |
646 // Add Chrome policy names. | 646 // Add Chrome policy names. |
647 base::DictionaryValue* chrome_policy_names = new base::DictionaryValue; | 647 auto chrome_policy_names = base::MakeUnique<base::DictionaryValue>(); |
648 policy::PolicyNamespace chrome_ns(policy::POLICY_DOMAIN_CHROME, ""); | 648 policy::PolicyNamespace chrome_ns(policy::POLICY_DOMAIN_CHROME, ""); |
649 const policy::Schema* chrome_schema = schema_map->GetSchema(chrome_ns); | 649 const policy::Schema* chrome_schema = schema_map->GetSchema(chrome_ns); |
650 for (policy::Schema::Iterator it = chrome_schema->GetPropertiesIterator(); | 650 for (policy::Schema::Iterator it = chrome_schema->GetPropertiesIterator(); |
651 !it.IsAtEnd(); it.Advance()) { | 651 !it.IsAtEnd(); it.Advance()) { |
652 AddPolicyName(it.key(), chrome_policy_names); | 652 AddPolicyName(it.key(), chrome_policy_names.get()); |
653 } | 653 } |
654 names.Set("chromePolicyNames", chrome_policy_names); | 654 names.Set("chromePolicyNames", std::move(chrome_policy_names)); |
655 | 655 |
656 #if BUILDFLAG(ENABLE_EXTENSIONS) | 656 #if BUILDFLAG(ENABLE_EXTENSIONS) |
657 // Add extension policy names. | 657 // Add extension policy names. |
658 base::DictionaryValue* extension_policy_names = new base::DictionaryValue; | 658 auto extension_policy_names = base::MakeUnique<base::DictionaryValue>(); |
659 | 659 |
660 for (const scoped_refptr<const extensions::Extension>& extension : | 660 for (const scoped_refptr<const extensions::Extension>& extension : |
661 extensions::ExtensionRegistry::Get(profile)->enabled_extensions()) { | 661 extensions::ExtensionRegistry::Get(profile)->enabled_extensions()) { |
662 // Skip this extension if it's not an enterprise extension. | 662 // Skip this extension if it's not an enterprise extension. |
663 if (!extension->manifest()->HasPath( | 663 if (!extension->manifest()->HasPath( |
664 extensions::manifest_keys::kStorageManagedSchema)) | 664 extensions::manifest_keys::kStorageManagedSchema)) |
665 continue; | 665 continue; |
666 base::DictionaryValue* extension_value = new base::DictionaryValue; | 666 auto extension_value = base::MakeUnique<base::DictionaryValue>(); |
667 extension_value->SetString("name", extension->name()); | 667 extension_value->SetString("name", extension->name()); |
668 const policy::Schema* schema = | 668 const policy::Schema* schema = |
669 schema_map->GetSchema(policy::PolicyNamespace( | 669 schema_map->GetSchema(policy::PolicyNamespace( |
670 policy::POLICY_DOMAIN_EXTENSIONS, extension->id())); | 670 policy::POLICY_DOMAIN_EXTENSIONS, extension->id())); |
671 base::DictionaryValue* policy_names = new base::DictionaryValue; | 671 auto policy_names = base::MakeUnique<base::DictionaryValue>(); |
672 if (schema && schema->valid()) { | 672 if (schema && schema->valid()) { |
673 // Get policy names from the extension's policy schema. | 673 // Get policy names from the extension's policy schema. |
674 // Store in a map, not an array, for faster lookup on JS side. | 674 // Store in a map, not an array, for faster lookup on JS side. |
675 for (policy::Schema::Iterator prop = schema->GetPropertiesIterator(); | 675 for (policy::Schema::Iterator prop = schema->GetPropertiesIterator(); |
676 !prop.IsAtEnd(); prop.Advance()) { | 676 !prop.IsAtEnd(); prop.Advance()) { |
677 policy_names->SetBoolean(prop.key(), true); | 677 policy_names->SetBoolean(prop.key(), true); |
678 } | 678 } |
679 } | 679 } |
680 extension_value->Set("policyNames", policy_names); | 680 extension_value->Set("policyNames", std::move(policy_names)); |
681 extension_policy_names->Set(extension->id(), extension_value); | 681 extension_policy_names->Set(extension->id(), std::move(extension_value)); |
682 } | 682 } |
683 names.Set("extensionPolicyNames", extension_policy_names); | 683 names.Set("extensionPolicyNames", std::move(extension_policy_names)); |
684 #endif // BUILDFLAG(ENABLE_EXTENSIONS) | 684 #endif // BUILDFLAG(ENABLE_EXTENSIONS) |
685 | 685 |
686 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.setPolicyNames", names); | 686 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.setPolicyNames", names); |
687 } | 687 } |
688 | 688 |
689 void PolicyUIHandler::SendPolicyValues() const { | 689 void PolicyUIHandler::SendPolicyValues() const { |
690 base::DictionaryValue all_policies; | 690 base::DictionaryValue all_policies; |
691 | 691 |
692 // Add Chrome policy values. | 692 // Add Chrome policy values. |
693 base::DictionaryValue* chrome_policies = new base::DictionaryValue; | 693 auto chrome_policies = base::MakeUnique<base::DictionaryValue>(); |
694 GetChromePolicyValues(chrome_policies); | 694 GetChromePolicyValues(chrome_policies.get()); |
695 all_policies.Set("chromePolicies", chrome_policies); | 695 all_policies.Set("chromePolicies", std::move(chrome_policies)); |
696 | 696 |
697 #if BUILDFLAG(ENABLE_EXTENSIONS) | 697 #if BUILDFLAG(ENABLE_EXTENSIONS) |
698 // Add extension policy values. | 698 // Add extension policy values. |
699 extensions::ExtensionRegistry* registry = | 699 extensions::ExtensionRegistry* registry = |
700 extensions::ExtensionRegistry::Get(Profile::FromWebUI(web_ui())); | 700 extensions::ExtensionRegistry::Get(Profile::FromWebUI(web_ui())); |
701 base::DictionaryValue* extension_values = new base::DictionaryValue; | 701 auto extension_values = base::MakeUnique<base::DictionaryValue>(); |
702 | 702 |
703 for (const scoped_refptr<const extensions::Extension>& extension : | 703 for (const scoped_refptr<const extensions::Extension>& extension : |
704 registry->enabled_extensions()) { | 704 registry->enabled_extensions()) { |
705 // Skip this extension if it's not an enterprise extension. | 705 // Skip this extension if it's not an enterprise extension. |
706 if (!extension->manifest()->HasPath( | 706 if (!extension->manifest()->HasPath( |
707 extensions::manifest_keys::kStorageManagedSchema)) | 707 extensions::manifest_keys::kStorageManagedSchema)) |
708 continue; | 708 continue; |
709 base::DictionaryValue* extension_policies = new base::DictionaryValue; | 709 auto extension_policies = base::MakeUnique<base::DictionaryValue>(); |
710 policy::PolicyNamespace policy_namespace = policy::PolicyNamespace( | 710 policy::PolicyNamespace policy_namespace = policy::PolicyNamespace( |
711 policy::POLICY_DOMAIN_EXTENSIONS, extension->id()); | 711 policy::POLICY_DOMAIN_EXTENSIONS, extension->id()); |
712 policy::PolicyErrorMap empty_error_map; | 712 policy::PolicyErrorMap empty_error_map; |
713 GetPolicyValues(GetPolicyService()->GetPolicies(policy_namespace), | 713 GetPolicyValues(GetPolicyService()->GetPolicies(policy_namespace), |
714 &empty_error_map, extension_policies); | 714 &empty_error_map, extension_policies.get()); |
715 extension_values->Set(extension->id(), extension_policies); | 715 extension_values->Set(extension->id(), std::move(extension_policies)); |
716 } | 716 } |
717 all_policies.Set("extensionPolicies", extension_values); | 717 all_policies.Set("extensionPolicies", std::move(extension_values)); |
718 #endif | 718 #endif |
719 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.setPolicyValues", | 719 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.setPolicyValues", |
720 all_policies); | 720 all_policies); |
721 } | 721 } |
722 | 722 |
723 void PolicyUIHandler::GetPolicyValues(const policy::PolicyMap& map, | 723 void PolicyUIHandler::GetPolicyValues(const policy::PolicyMap& map, |
724 policy::PolicyErrorMap* errors, | 724 policy::PolicyErrorMap* errors, |
725 base::DictionaryValue* values) const { | 725 base::DictionaryValue* values) const { |
726 for (const auto& entry : map) { | 726 for (const auto& entry : map) { |
727 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue); | 727 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 device_status->SetString("domain", device_domain_); | 772 device_status->SetString("domain", device_domain_); |
773 std::unique_ptr<base::DictionaryValue> user_status(new base::DictionaryValue); | 773 std::unique_ptr<base::DictionaryValue> user_status(new base::DictionaryValue); |
774 user_status_provider_->GetStatus(user_status.get()); | 774 user_status_provider_->GetStatus(user_status.get()); |
775 std::string username; | 775 std::string username; |
776 user_status->GetString("username", &username); | 776 user_status->GetString("username", &username); |
777 if (!username.empty()) | 777 if (!username.empty()) |
778 user_status->SetString("domain", gaia::ExtractDomainName(username)); | 778 user_status->SetString("domain", gaia::ExtractDomainName(username)); |
779 | 779 |
780 base::DictionaryValue status; | 780 base::DictionaryValue status; |
781 if (!device_status->empty()) | 781 if (!device_status->empty()) |
782 status.Set("device", device_status.release()); | 782 status.Set("device", std::move(device_status)); |
783 if (!user_status->empty()) | 783 if (!user_status->empty()) |
784 status.Set("user", user_status.release()); | 784 status.Set("user", std::move(user_status)); |
785 | 785 |
786 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.setStatus", status); | 786 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.setStatus", status); |
787 } | 787 } |
788 | 788 |
789 void PolicyUIHandler::HandleInitialized(const base::ListValue* args) { | 789 void PolicyUIHandler::HandleInitialized(const base::ListValue* args) { |
790 SendPolicyNames(); | 790 SendPolicyNames(); |
791 SendPolicyValues(); | 791 SendPolicyValues(); |
792 SendStatus(); | 792 SendStatus(); |
793 } | 793 } |
794 | 794 |
(...skipping 20 matching lines...) Expand all Loading... |
815 } | 815 } |
816 | 816 |
817 void PolicyUIHandler::OnRefreshPoliciesDone() const { | 817 void PolicyUIHandler::OnRefreshPoliciesDone() const { |
818 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.reloadPoliciesDone"); | 818 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.reloadPoliciesDone"); |
819 } | 819 } |
820 | 820 |
821 policy::PolicyService* PolicyUIHandler::GetPolicyService() const { | 821 policy::PolicyService* PolicyUIHandler::GetPolicyService() const { |
822 return policy::ProfilePolicyConnectorFactory::GetForBrowserContext( | 822 return policy::ProfilePolicyConnectorFactory::GetForBrowserContext( |
823 web_ui()->GetWebContents()->GetBrowserContext())->policy_service(); | 823 web_ui()->GetWebContents()->GetBrowserContext())->policy_service(); |
824 } | 824 } |
OLD | NEW |