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
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/ui/webui/policy_ui.h"
6 
7 #include <memory>
8 
9 #include "build/build_config.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/ui/webui/policy_ui_handler.h"
12 #include "chrome/browser/ui/webui/webui_util.h"
13 #include "chrome/common/url_constants.h"
14 #include "components/grit/dev_ui_components_resources.h"
15 #include "components/strings/grit/components_strings.h"
16 #include "content/public/browser/web_ui.h"
17 #include "ui/base/webui/web_ui_util.h"
18 
19 namespace {
20 
CreatePolicyUIHtmlSource()21 content::WebUIDataSource* CreatePolicyUIHtmlSource() {
22   content::WebUIDataSource* source =
23       content::WebUIDataSource::Create(chrome::kChromeUIPolicyHost);
24   PolicyUIHandler::AddCommonLocalizedStringsToSource(source);
25 
26   static constexpr webui::LocalizedString kStrings[] = {
27     // Localized strings (alphabetical order).
28     {"copyPoliciesJSON", IDS_COPY_POLICIES_JSON},
29     {"exportPoliciesJSON", IDS_EXPORT_POLICIES_JSON},
30     {"filterPlaceholder", IDS_POLICY_FILTER_PLACEHOLDER},
31     {"hideExpandedStatus", IDS_POLICY_HIDE_EXPANDED_STATUS},
32     {"isAffiliatedYes", IDS_POLICY_IS_AFFILIATED_YES},
33     {"isAffiliatedNo", IDS_POLICY_IS_AFFILIATED_NO},
34     {"labelAssetId", IDS_POLICY_LABEL_ASSET_ID},
35     {"labelClientId", IDS_POLICY_LABEL_CLIENT_ID},
36     {"labelDirectoryApiId", IDS_POLICY_LABEL_DIRECTORY_API_ID},
37     {"labelEnterpriseDisplayDomain",
38      IDS_POLICY_LABEL_ENTERPRISE_DISPLAY_DOMAIN},
39     {"labelEnterpriseEnrollmentDomain",
40      IDS_POLICY_LABEL_ENTERPRISE_ENROLLMENT_DOMAIN},
41     {"labelGaiaId", IDS_POLICY_LABEL_GAIA_ID},
42     {"labelIsAffiliated", IDS_POLICY_LABEL_IS_AFFILIATED},
43     {"labelLocation", IDS_POLICY_LABEL_LOCATION},
44     {"labelMachineEnrollmentDomain",
45      IDS_POLICY_LABEL_MACHINE_ENROLLMENT_DOMAIN},
46     {"labelMachineEnrollmentMachineName",
47      IDS_POLICY_LABEL_MACHINE_ENROLLMENT_MACHINE_NAME},
48     {"labelMachineEnrollmentToken", IDS_POLICY_LABEL_MACHINE_ENROLLMENT_TOKEN},
49     {"labelMachineEntrollmentDeviceId",
50      IDS_POLICY_LABEL_MACHINE_ENROLLMENT_DEVICE_ID},
51     {"labelIsOffHoursActive", IDS_POLICY_LABEL_IS_OFFHOURS_ACTIVE},
52     {"labelPoliciesPush", IDS_POLICY_LABEL_PUSH_POLICIES},
53     {"labelRefreshInterval", IDS_POLICY_LABEL_REFRESH_INTERVAL},
54     {"labelStatus", IDS_POLICY_LABEL_STATUS},
55     {"labelTimeSinceLastRefresh", IDS_POLICY_LABEL_TIME_SINCE_LAST_REFRESH},
56     {"labelUsername", IDS_POLICY_LABEL_USERNAME},
57     {"labelVersion", IDS_POLICY_LABEL_VERSION},
58     {"noPoliciesSet", IDS_POLICY_NO_POLICIES_SET},
59     {"offHoursActive", IDS_POLICY_OFFHOURS_ACTIVE},
60     {"offHoursNotActive", IDS_POLICY_OFFHOURS_NOT_ACTIVE},
61     {"policyCopyValue", IDS_POLICY_COPY_VALUE},
62     {"policiesPushOff", IDS_POLICY_PUSH_POLICIES_OFF},
63     {"policiesPushOn", IDS_POLICY_PUSH_POLICIES_ON},
64     {"policyLearnMore", IDS_POLICY_LEARN_MORE},
65     {"reloadPolicies", IDS_POLICY_RELOAD_POLICIES},
66     {"showExpandedStatus", IDS_POLICY_SHOW_EXPANDED_STATUS},
67     {"showLess", IDS_POLICY_SHOW_LESS},
68     {"showMore", IDS_POLICY_SHOW_MORE},
69     {"showUnset", IDS_POLICY_SHOW_UNSET},
70     {"signinProfile", IDS_POLICY_SIGNIN_PROFILE},
71     {"status", IDS_POLICY_STATUS},
72     {"statusDevice", IDS_POLICY_STATUS_DEVICE},
73     {"statusMachine", IDS_POLICY_STATUS_MACHINE},
74 #if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
75     {"statusUpdater", IDS_POLICY_STATUS_UPDATER},
76 #endif
77     {"statusUser", IDS_POLICY_STATUS_USER},
78   };
79   AddLocalizedStringsBulk(source, kStrings);
80 
81   source->AddResourcePath("policy.css", IDR_POLICY_CSS);
82   source->AddResourcePath("policy_base.js", IDR_POLICY_BASE_JS);
83   source->AddResourcePath("policy.js", IDR_POLICY_JS);
84   source->SetDefaultResource(IDR_POLICY_HTML);
85   return source;
86 }
87 
88 }  // namespace
89 
PolicyUI(content::WebUI * web_ui)90 PolicyUI::PolicyUI(content::WebUI* web_ui) : WebUIController(web_ui) {
91   web_ui->AddMessageHandler(std::make_unique<PolicyUIHandler>());
92   content::WebUIDataSource::Add(Profile::FromWebUI(web_ui),
93                                 CreatePolicyUIHtmlSource());
94 }
95 
96 PolicyUI::~PolicyUI() = default;
97