Allow HTTP urls when device policy doesn't specify.
BUG=chromium:277835
TEST=Unittest
Change-Id: I638248dcbdbdaf48e38b79638b2348aa6c1400fb
Reviewed-on: https://gerrit.chromium.org/gerrit/66732
Tested-by: Chris Sosa <sosa@chromium.org>
Reviewed-by: Don Garrett <dgarrett@chromium.org>
Commit-Queue: Chris Sosa <sosa@chromium.org>
diff --git a/payload_state.cc b/payload_state.cc
index 1d7e0fe..5fc35cf 100644
--- a/payload_state.cc
+++ b/payload_state.cc
@@ -1065,12 +1065,11 @@
}
void PayloadState::ComputeCandidateUrls() {
- bool http_url_ok = false;
+ bool http_url_ok = true;
if (system_state_->IsOfficialBuild()) {
const policy::DevicePolicy* policy = system_state_->device_policy();
- if (!(policy && policy->GetHttpDownloadsEnabled(&http_url_ok) &&
- http_url_ok))
+ if (policy && policy->GetHttpDownloadsEnabled(&http_url_ok) && !http_url_ok)
LOG(INFO) << "Downloads via HTTP Url are not enabled by device policy";
} else {
LOG(INFO) << "Allowing HTTP downloads for unofficial builds";
diff --git a/payload_state_unittest.cc b/payload_state_unittest.cc
index 8fffab9..d4eaa5b 100644
--- a/payload_state_unittest.cc
+++ b/payload_state_unittest.cc
@@ -1087,12 +1087,24 @@
policy::MockDevicePolicy disable_http_policy;
EXPECT_CALL(mock_system_state, device_policy())
.WillRepeatedly(Return(&disable_http_policy));
+ EXPECT_TRUE(payload_state.Initialize(&mock_system_state));
+
+ // Test with no device policy. Should default to allowing http.
+ EXPECT_CALL(disable_http_policy, GetHttpDownloadsEnabled(_))
+ .WillRepeatedly(Return(false));
+
+ // Set the first response.
+ SetupPayloadStateWith2Urls("Hash8433", true, &payload_state, &response);
+
+ // Check that we use the HTTP URL since there is no value set for allowing
+ // http.
+ EXPECT_EQ("http://test", payload_state.GetCurrentUrl());
+
+ // Test with device policy not allowing http updates.
EXPECT_CALL(disable_http_policy, GetHttpDownloadsEnabled(_))
.WillRepeatedly(DoAll(SetArgumentPointee<0>(false), Return(true)));
- EXPECT_TRUE(payload_state.Initialize(&mock_system_state));
-
- // Set the first response.
+ // Reset state and set again.
SetupPayloadStateWith2Urls("Hash8433", false, &payload_state, &response);
// Check that we skip the HTTP URL and use only the HTTPS url.