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

Side by Side Diff: chrome/browser/ui/webui/policy_ui.cc

Issue 56623005: Policy providers all get a SchemaRegistry to work with. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@chrome-policy-schema-9-purge-with-callback
Patch Set: rebase Created 7 years, 1 month 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 "chrome/browser/ui/webui/policy_ui.h" 5 #include "chrome/browser/ui/webui/policy_ui.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 16 matching lines...) Expand all
27 #include "chrome/browser/policy/configuration_policy_handler_list.h" 27 #include "chrome/browser/policy/configuration_policy_handler_list.h"
28 #include "chrome/browser/policy/policy_error_map.h" 28 #include "chrome/browser/policy/policy_error_map.h"
29 #include "chrome/browser/policy/policy_map.h" 29 #include "chrome/browser/policy/policy_map.h"
30 #include "chrome/browser/policy/policy_service.h" 30 #include "chrome/browser/policy/policy_service.h"
31 #include "chrome/browser/policy/policy_types.h" 31 #include "chrome/browser/policy/policy_types.h"
32 #include "chrome/browser/policy/profile_policy_connector.h" 32 #include "chrome/browser/policy/profile_policy_connector.h"
33 #include "chrome/browser/policy/profile_policy_connector_factory.h" 33 #include "chrome/browser/policy/profile_policy_connector_factory.h"
34 #include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h" 34 #include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
35 #include "chrome/browser/profiles/profile.h" 35 #include "chrome/browser/profiles/profile.h"
36 #include "chrome/common/url_constants.h" 36 #include "chrome/common/url_constants.h"
37 #include "components/policy/core/common/policy_namespace.h"
37 #include "content/public/browser/notification_observer.h" 38 #include "content/public/browser/notification_observer.h"
38 #include "content/public/browser/notification_registrar.h" 39 #include "content/public/browser/notification_registrar.h"
39 #include "content/public/browser/notification_service.h" 40 #include "content/public/browser/notification_service.h"
40 #include "content/public/browser/web_ui.h" 41 #include "content/public/browser/web_ui.h"
41 #include "content/public/browser/web_ui_data_source.h" 42 #include "content/public/browser/web_ui_data_source.h"
42 #include "content/public/browser/web_ui_message_handler.h" 43 #include "content/public/browser/web_ui_message_handler.h"
43 #include "google_apis/gaia/gaia_auth_util.h" 44 #include "google_apis/gaia/gaia_auth_util.h"
44 #include "grit/browser_resources.h" 45 #include "grit/browser_resources.h"
45 #include "grit/generated_resources.h" 46 #include "grit/generated_resources.h"
46 #include "policy/policy_constants.h" 47 #include "policy/policy_constants.h"
47 #include "ui/base/l10n/l10n_util.h" 48 #include "ui/base/l10n/l10n_util.h"
48 #include "ui/base/l10n/time_format.h" 49 #include "ui/base/l10n/time_format.h"
49 50
50 #if defined(OS_CHROMEOS) 51 #if defined(OS_CHROMEOS)
51 #include "chrome/browser/chromeos/login/user_manager.h" 52 #include "chrome/browser/chromeos/login/user_manager.h"
52 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" 53 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
53 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" 54 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h"
54 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" 55 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h"
55 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom eos.h" 56 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom eos.h"
56 #else 57 #else
57 #include "chrome/browser/policy/cloud/user_cloud_policy_manager.h" 58 #include "chrome/browser/policy/cloud/user_cloud_policy_manager.h"
58 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" 59 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
59 #include "content/public/browser/web_contents.h" 60 #include "content/public/browser/web_contents.h"
60 #endif 61 #endif
61 62
62 #if !defined(OS_ANDROID) && !defined(OS_IOS) 63 #if !defined(OS_ANDROID) && !defined(OS_IOS)
63 #include "chrome/browser/extensions/extension_service.h" 64 #include "chrome/browser/extensions/extension_service.h"
64 #include "chrome/browser/extensions/extension_system.h" 65 #include "chrome/browser/extensions/extension_system.h"
65 #include "chrome/browser/policy/policy_domain_descriptor.h" 66 #include "chrome/browser/policy/schema_map.h"
67 #include "chrome/browser/policy/schema_registry.h"
68 #include "chrome/browser/policy/schema_registry_service.h"
69 #include "chrome/browser/policy/schema_registry_service_factory.h"
66 #include "chrome/common/extensions/extension.h" 70 #include "chrome/common/extensions/extension.h"
67 #include "chrome/common/extensions/extension_set.h" 71 #include "chrome/common/extensions/extension_set.h"
68 #include "components/policy/core/common/schema.h" 72 #include "components/policy/core/common/schema.h"
69 #include "extensions/common/manifest.h" 73 #include "extensions/common/manifest.h"
70 #include "extensions/common/manifest_constants.h" 74 #include "extensions/common/manifest_constants.h"
71 #endif 75 #endif
72 76
73 namespace em = enterprise_management; 77 namespace em = enterprise_management;
74 78
75 namespace { 79 namespace {
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 policy::GetChromePolicyDefinitionList(); 553 policy::GetChromePolicyDefinitionList();
550 for (const policy::PolicyDefinitionList::Entry* entry = list->begin; 554 for (const policy::PolicyDefinitionList::Entry* entry = list->begin;
551 entry != list->end; ++entry) { 555 entry != list->end; ++entry) {
552 chrome_policy_names->SetBoolean(entry->name, true); 556 chrome_policy_names->SetBoolean(entry->name, true);
553 } 557 }
554 names.Set("chromePolicyNames", chrome_policy_names); 558 names.Set("chromePolicyNames", chrome_policy_names);
555 559
556 #if !defined(OS_ANDROID) && !defined(OS_IOS) 560 #if !defined(OS_ANDROID) && !defined(OS_IOS)
557 // Add extension policy names. 561 // Add extension policy names.
558 base::DictionaryValue* extension_policy_names = new base::DictionaryValue; 562 base::DictionaryValue* extension_policy_names = new base::DictionaryValue;
563
564 Profile* profile = Profile::FromWebUI(web_ui());
559 extensions::ExtensionSystem* extension_system = 565 extensions::ExtensionSystem* extension_system =
560 extensions::ExtensionSystem::Get(Profile::FromWebUI(web_ui())); 566 extensions::ExtensionSystem::Get(profile);
561 const ExtensionSet* extensions = 567 const ExtensionSet* extensions =
562 extension_system->extension_service()->extensions(); 568 extension_system->extension_service()->extensions();
563 scoped_refptr<const policy::PolicyDomainDescriptor> policy_domain_descriptor; 569
564 policy_domain_descriptor = GetPolicyService()-> 570 policy::SchemaRegistry* registry =
565 GetPolicyDomainDescriptor(policy::POLICY_DOMAIN_EXTENSIONS); 571 policy::SchemaRegistryServiceFactory::GetForContext(
566 const policy::PolicyDomainDescriptor::SchemaMap& schema_map = 572 profile->GetOriginalProfile());
567 policy_domain_descriptor->components(); 573 scoped_refptr<policy::SchemaMap> schema_map = registry->schema_map();
568 574
569 for (ExtensionSet::const_iterator it = extensions->begin(); 575 for (ExtensionSet::const_iterator it = extensions->begin();
570 it != extensions->end(); ++it) { 576 it != extensions->end(); ++it) {
571 const extensions::Extension* extension = it->get(); 577 const extensions::Extension* extension = it->get();
572 // Skip this extension if it's not an enterprise extension. 578 // Skip this extension if it's not an enterprise extension.
573 if (!extension->manifest()->HasPath( 579 if (!extension->manifest()->HasPath(
574 extensions::manifest_keys::kStorageManagedSchema)) 580 extensions::manifest_keys::kStorageManagedSchema))
575 continue; 581 continue;
576 base::DictionaryValue* extension_value = new base::DictionaryValue; 582 base::DictionaryValue* extension_value = new base::DictionaryValue;
577 extension_value->SetString("name", extension->name()); 583 extension_value->SetString("name", extension->name());
578 policy::PolicyDomainDescriptor::SchemaMap::const_iterator schema = 584 const policy::Schema* schema =
579 schema_map.find(extension->id()); 585 schema_map->GetSchema(policy::PolicyNamespace(
586 policy::POLICY_DOMAIN_EXTENSIONS, extension->id()));
580 base::DictionaryValue* policy_names = new base::DictionaryValue; 587 base::DictionaryValue* policy_names = new base::DictionaryValue;
581 if (schema != schema_map.end()) { 588 if (schema) {
582 // Get policy names from the extension's policy schema. 589 // Get policy names from the extension's policy schema.
583 // Store in a map, not an array, for faster lookup on JS side. 590 // Store in a map, not an array, for faster lookup on JS side.
584 policy::Schema policy_schema = schema->second; 591 for (policy::Schema::Iterator prop = schema->GetPropertiesIterator();
585 for (policy::Schema::Iterator it_policies = 592 !prop.IsAtEnd(); prop.Advance()) {
586 policy_schema.GetPropertiesIterator(); 593 policy_names->SetBoolean(prop.key(), true);
587 !it_policies.IsAtEnd(); it_policies.Advance()) {
588 policy_names->SetBoolean(it_policies.key(), true);
589 } 594 }
590 } 595 }
591 extension_value->Set("policyNames", policy_names); 596 extension_value->Set("policyNames", policy_names);
592 extension_policy_names->Set(extension->id(), extension_value); 597 extension_policy_names->Set(extension->id(), extension_value);
593 } 598 }
594 names.Set("extensionPolicyNames", extension_policy_names); 599 names.Set("extensionPolicyNames", extension_policy_names);
595 #endif 600 #endif
596 601
597 web_ui()->CallJavascriptFunction("policy.Page.setPolicyNames", names); 602 web_ui()->CallJavascriptFunction("policy.Page.setPolicyNames", names);
598 } 603 }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 } 725 }
721 726
722 PolicyUI::PolicyUI(content::WebUI* web_ui) : WebUIController(web_ui) { 727 PolicyUI::PolicyUI(content::WebUI* web_ui) : WebUIController(web_ui) {
723 web_ui->AddMessageHandler(new PolicyUIHandler); 728 web_ui->AddMessageHandler(new PolicyUIHandler);
724 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), 729 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui),
725 CreatePolicyUIHTMLSource()); 730 CreatePolicyUIHTMLSource());
726 } 731 }
727 732
728 PolicyUI::~PolicyUI() { 733 PolicyUI::~PolicyUI() {
729 } 734 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options/preferences_browsertest.cc ('k') | chrome/browser/ui/webui/policy_ui_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698