Commit 3f6f34b3 authored by Owen Min's avatar Owen Min Committed by Commit Bot

Show cloud reporting policy in the management page

CloudReportingEnabled policy is using an extension to collect data and
this extension is used as a signal by chrome://management page.

The extension is going to be deprecated soon and its logic is moved into
Chromium code base. Make sure that the chrome://management page still
covers all data we collected.

Without the extension, CloudReportingEnabled collects almost same data
except the safe browsing ones. The safe browsing data reporting will be
owned by other enterprise feature.

Bug: 956237
Change-Id: Idb35ad27da50405898dfc499a37b7255f9bad735
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1808704Reviewed-by: default avatarHector Carmona <hcarmona@chromium.org>
Commit-Queue: Owen Min <zmin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#697679}
parent 474a79c6
......@@ -410,8 +410,7 @@ void ManagementUIHandler::OnJavascriptDisallowed() {
RemoveObservers();
}
void ManagementUIHandler::AddExtensionReportingInfo(
base::Value* report_sources) {
void ManagementUIHandler::AddReportingInfo(base::Value* report_sources) {
const extensions::Extension* cloud_reporting_extension =
GetEnabledExtension(kCloudReportingExtensionId);
......@@ -439,6 +438,15 @@ void ManagementUIHandler::AddExtensionReportingInfo(
const bool cloud_reporting_extension_installed =
cloud_reporting_extension != nullptr;
const auto* cloud_reporting_policy_value =
GetPolicyService()
->GetPolicies(policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME,
std::string()))
.GetValue(policy::key::kCloudReportingEnabled);
const bool cloud_reporting_policy_enabled =
cloud_reporting_policy_value && cloud_reporting_policy_value->is_bool() &&
cloud_reporting_policy_value->GetBool();
const struct {
const char* policy_key;
const char* message;
......@@ -446,22 +454,25 @@ void ManagementUIHandler::AddExtensionReportingInfo(
const bool enabled_by_default;
} report_definitions[] = {
{kPolicyKeyReportMachineIdData, kManagementExtensionReportMachineName,
ReportingType::kDevice, cloud_reporting_extension_installed},
ReportingType::kDevice,
cloud_reporting_extension_installed || cloud_reporting_policy_enabled},
{kPolicyKeyReportMachineIdData,
kManagementExtensionReportMachineNameAddress, ReportingType::kDevice,
false},
{kPolicyKeyReportVersionData, kManagementExtensionReportVersion,
ReportingType::kDevice, cloud_reporting_extension_installed},
ReportingType::kDevice,
cloud_reporting_extension_installed || cloud_reporting_policy_enabled},
{kPolicyKeyReportSystemTelemetryData, kManagementExtensionReportPerfCrash,
ReportingType::kDevice, false},
{kPolicyKeyReportUserIdData, kManagementExtensionReportUsername,
ReportingType::kUser, cloud_reporting_extension_installed},
ReportingType::kUser,
cloud_reporting_extension_installed || cloud_reporting_policy_enabled},
{kPolicyKeyReportSafeBrowsingData,
kManagementExtensionReportSafeBrowsingWarnings, ReportingType::kSecurity,
cloud_reporting_extension_installed},
{kPolicyKeyReportExtensionsData,
kManagementExtensionReportExtensionsPlugin, ReportingType::kExtensions,
cloud_reporting_extension_installed},
cloud_reporting_extension_installed || cloud_reporting_policy_enabled},
{kPolicyKeyReportUserBrowsingData,
kManagementExtensionReportUserBrowsingData, ReportingType::kUserActivity,
false},
......@@ -825,14 +836,14 @@ void ManagementUIHandler::HandleInitBrowserReportingInfo(
const base::ListValue* args) {
base::Value report_sources(base::Value::Type::LIST);
AllowJavascript();
AddExtensionReportingInfo(&report_sources);
AddReportingInfo(&report_sources);
ResolveJavascriptCallback(args->GetList()[0] /* callback_id */,
report_sources);
}
void ManagementUIHandler::NotifyBrowserReportingInfoUpdated() {
base::Value report_sources(base::Value::Type::LIST);
AddExtensionReportingInfo(&report_sources);
AddReportingInfo(&report_sources);
FireWebUIListener("browser-reporting-info-updated", report_sources);
}
......
......@@ -113,7 +113,7 @@ class ManagementUIHandler : public content::WebUIMessageHandler,
static void InitializeInternal(content::WebUI* web_ui,
content::WebUIDataSource* source,
Profile* profile);
void AddExtensionReportingInfo(base::Value* report_sources);
void AddReportingInfo(base::Value* report_sources);
base::DictionaryValue GetContextualManagedData(Profile* profile);
base::Value GetThreatProtectionInfo(Profile* profile) const;
......
......@@ -61,7 +61,7 @@ class TestManagementUIHandler : public ManagementUIHandler {
base::Value GetExtensionReportingInfo() {
base::Value report_sources(base::Value::Type::LIST);
AddExtensionReportingInfo(&report_sources);
AddReportingInfo(&report_sources);
return report_sources;
}
......@@ -565,6 +565,31 @@ TEST_F(ManagementUIHandlerTests,
EXPECT_EQ(reporting_info.GetList().size(), expected_messages.size());
}
TEST_F(ManagementUIHandlerTests, CloudReportingPolicy) {
handler_.EnableCloudReportingExtension(false);
policy::PolicyMap chrome_policies;
const policy::PolicyNamespace chrome_policies_namespace =
policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string());
EXPECT_CALL(policy_service_, GetPolicies(_))
.WillRepeatedly(ReturnRef(chrome_policies));
SetPolicyValue(policy::key::kCloudReportingEnabled, chrome_policies, true);
std::set<std::string> expected_messages = {
kManagementExtensionReportMachineName, kManagementExtensionReportUsername,
kManagementExtensionReportVersion,
kManagementExtensionReportExtensionsPlugin};
auto reporting_info = handler_.GetExtensionReportingInfo();
const auto& reporting_info_list = reporting_info.GetList();
for (const base::Value& info : reporting_info_list) {
const std::string* messageId = info.FindStringKey("messageId");
EXPECT_TRUE(expected_messages.find(*messageId) != expected_messages.end());
}
EXPECT_EQ(reporting_info.GetList().size(), expected_messages.size());
}
TEST_F(ManagementUIHandlerTests, ExtensionReportingInfoPoliciesMerge) {
policy::PolicyMap on_prem_reporting_extension_beta_policies;
policy::PolicyMap on_prem_reporting_extension_stable_policies;
......@@ -603,6 +628,11 @@ TEST_F(ManagementUIHandlerTests, ExtensionReportingInfoPoliciesMerge) {
EXPECT_CALL(policy_service_,
GetPolicies(on_prem_reporting_extension_beta_policy_namespace))
.WillOnce(ReturnRef(on_prem_reporting_extension_beta_policies));
policy::PolicyMap empty_policy_map;
EXPECT_CALL(policy_service_,
GetPolicies(policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME,
std::string())))
.WillOnce(ReturnRef(empty_policy_map));
handler_.EnableCloudReportingExtension(true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment