Append policy fetch timestamp to the enterprise reporting
Append last policy fetch timestamp to the Profile info. Right now we only
do it for Machine Level User Cloud Policy.
Bug: 956237
Change-Id: I94de55419a609974b05d1fdd3acb54b3a911d68a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1707550
Commit-Queue: Owen Min <zmin@chromium.org>
Reviewed-by: Julian Pastarmov <pastarmovj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#678756}
diff --git a/chrome/browser/enterprise_reporting/policy_info.cc b/chrome/browser/enterprise_reporting/policy_info.cc
index 5768441..505ce06 100644
--- a/chrome/browser/enterprise_reporting/policy_info.cc
+++ b/chrome/browser/enterprise_reporting/policy_info.cc
@@ -6,7 +6,14 @@
#include "base/json/json_writer.h"
#include "base/optional.h"
+#include "build/build_config.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/policy/chrome_browser_policy_connector.h"
+#include "chrome/browser/policy/machine_level_user_cloud_policy_controller.h"
#include "chrome/browser/policy/policy_conversions.h"
+#include "components/policy/core/common/cloud/cloud_policy_client.h"
+#include "components/policy/core/common/cloud/cloud_policy_constants.h"
+#include "components/policy/core/common/cloud/machine_level_user_cloud_policy_manager.h"
#include "components/policy/core/common/policy_types.h"
namespace enterprise_reporting {
@@ -104,4 +111,19 @@
}
}
+void AppendMachineLevelUserCloudPolicyFetchTimestamp(
+ em::ChromeUserProfileInfo* profile_info) {
+#if !defined(OS_CHROMEOS)
+ MachineLevelUserCloudPolicyManager* manager =
+ g_browser_process->browser_policy_connector()
+ ->machine_level_user_cloud_policy_manager();
+ if (!manager || !manager->IsClientRegistered())
+ return;
+ auto* timestamp = profile_info->add_policy_fetched_timestamps();
+ timestamp->set_type(dm_protocol::kChromeMachineLevelExtensionCloudPolicyType);
+ timestamp->set_timestamp(
+ manager->core()->client()->last_policy_timestamp().ToJavaTime());
+#endif
+}
+
} // namespace enterprise_reporting
diff --git a/chrome/browser/enterprise_reporting/policy_info.h b/chrome/browser/enterprise_reporting/policy_info.h
index c8187a1d..8c7e701 100644
--- a/chrome/browser/enterprise_reporting/policy_info.h
+++ b/chrome/browser/enterprise_reporting/policy_info.h
@@ -23,6 +23,9 @@
const base::Value& policies,
em::ChromeUserProfileInfo* profile_info);
+void AppendMachineLevelUserCloudPolicyFetchTimestamp(
+ em::ChromeUserProfileInfo* profile_info);
+
} // namespace enterprise_reporting
#endif // CHROME_BROWSER_ENTERPRISE_REPORTING_POLICY_INFO_H_
diff --git a/chrome/browser/enterprise_reporting/policy_info_unittest.cc b/chrome/browser/enterprise_reporting/policy_info_unittest.cc
index 56030eed..0d3b8937 100644
--- a/chrome/browser/enterprise_reporting/policy_info_unittest.cc
+++ b/chrome/browser/enterprise_reporting/policy_info_unittest.cc
@@ -148,4 +148,10 @@
EXPECT_NE(std::string(), policy1.error());
}
+TEST_F(PolicyInfoTest, MachineLevelUserCloudPolicyFetchTimestamp) {
+ em::ChromeUserProfileInfo profile_info;
+ AppendMachineLevelUserCloudPolicyFetchTimestamp(&profile_info);
+ EXPECT_EQ(0, profile_info.policy_fetched_timestamps_size());
+}
+
} // namespace enterprise_reporting
diff --git a/chrome/browser/enterprise_reporting/profile_report_generator.cc b/chrome/browser/enterprise_reporting/profile_report_generator.cc
index 4aba7780..a7012fc 100644
--- a/chrome/browser/enterprise_reporting/profile_report_generator.cc
+++ b/chrome/browser/enterprise_reporting/profile_report_generator.cc
@@ -65,6 +65,7 @@
/* is_pretty_print */ false, /* convert_types */ false);
GetChromePolicyInfo();
GetExtensionPolicyInfo();
+ GetPolicyFetchTimestampInfo();
}
CheckReportStatus();
@@ -106,6 +107,10 @@
AppendExtensionPolicyInfoIntoProfileReport(policies_, report_.get());
}
+void ProfileReportGenerator::GetPolicyFetchTimestampInfo() {
+ AppendMachineLevelUserCloudPolicyFetchTimestamp(report_.get());
+}
+
void ProfileReportGenerator::OnPluginsLoaded(
const std::vector<content::WebPluginInfo>& plugins) {
for (auto plugin : plugins) {
diff --git a/chrome/browser/enterprise_reporting/profile_report_generator.h b/chrome/browser/enterprise_reporting/profile_report_generator.h
index 7372ed2..91addfa 100644
--- a/chrome/browser/enterprise_reporting/profile_report_generator.h
+++ b/chrome/browser/enterprise_reporting/profile_report_generator.h
@@ -54,7 +54,7 @@
void GetPluginInfo();
void GetChromePolicyInfo();
void GetExtensionPolicyInfo();
- // TODO(zmin): void GetPolicyFetchTimestampInfo();
+ void GetPolicyFetchTimestampInfo();
private:
void OnPluginsLoaded(const std::vector<content::WebPluginInfo>& plugins);