UpdateManager: Do not schedule periodic update checks on unofficial builds.

This abides by the current logic, as found in
UpdateCheckScheduler::Run(). New unit test added to verify this
behavior.

BUG=chromium:358269
TEST=Unit tests.

Change-Id: Id7ff2134492f0c861f5abff76223b61496a2fe63
Reviewed-on: https://chromium-review.googlesource.com/207213
Reviewed-by: Alex Deymo <deymo@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
diff --git a/update_manager/chromeos_policy.cc b/update_manager/chromeos_policy.cc
index 86f53ce..fd2f882 100644
--- a/update_manager/chromeos_policy.cc
+++ b/update_manager/chromeos_policy.cc
@@ -156,6 +156,14 @@
   result->updates_enabled = true;
   result->target_channel.clear();
 
+  // Unofficial builds should not perform any automatic update checks.
+  const bool* is_official_build_p = ec->GetValue(
+      state->system_provider()->var_is_official_build());
+  if (is_official_build_p && !(*is_official_build_p)) {
+    result->updates_enabled = false;
+    return EvalStatus::kSucceeded;
+  }
+
   DevicePolicyProvider* const dp_provider = state->device_policy_provider();
 
   const bool* device_policy_is_loaded_p = ec->GetValue(
diff --git a/update_manager/chromeos_policy_unittest.cc b/update_manager/chromeos_policy_unittest.cc
index 23c0c2b..0537a65 100644
--- a/update_manager/chromeos_policy_unittest.cc
+++ b/update_manager/chromeos_policy_unittest.cc
@@ -277,7 +277,21 @@
   EXPECT_EQ("foo-channel", result.target_channel);
 }
 
-TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedUpdatesDisabled) {
+TEST_F(UmChromeOSPolicyTest,
+       UpdateCheckAllowedUpdatesDisabledForUnofficialBuilds) {
+  // UpdateCheckAllowed should return false (kSucceeded) if this is an
+  // unofficial build; we don't want periodic update checks on developer images.
+
+  fake_state_.system_provider()->var_is_official_build()->reset(
+      new bool(false));
+
+  UpdateCheckParams result;
+  ExpectPolicyStatus(EvalStatus::kSucceeded,
+                     &Policy::UpdateCheckAllowed, &result);
+  EXPECT_FALSE(result.updates_enabled);
+}
+
+TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedUpdatesDisabledByPolicy) {
   // UpdateCheckAllowed should return kAskMeAgainLater because a device policy
   // is loaded and prohibits updates.
 
@@ -285,7 +299,6 @@
   fake_state_.device_policy_provider()->var_update_disabled()->reset(
       new bool(true));
 
-  // Check that the UpdateCanStart returns false.
   UpdateCheckParams result;
   ExpectPolicyStatus(EvalStatus::kAskMeAgainLater,
                      &Policy::UpdateCheckAllowed, &result);