update_engine: Include quick_fix_build_token in updatecheck request body

Get the value of the new device policy which is included in
AutoUpdateSettings as quick_fix_build_token, and include it
in the update request body if value is set.

BUG=chromium:932465
TEST=./build_packages --board=amd64-generic && \
     cros_run_unit_tests --board=amd64-generic --packages update_engine
Cq-Depend: chromium:1571634

Change-Id: Iaca35a08d973616a058864a11896ef9305d00174
Reviewed-on: https://chromium-review.googlesource.com/1581519
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Askar Aitzhan <askaraitzhan@google.com>
Reviewed-by: Nicolas Norvez <norvez@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/omaha_request_action_unittest.cc b/omaha_request_action_unittest.cc
index ec08333..bfbf6a4 100644
--- a/omaha_request_action_unittest.cc
+++ b/omaha_request_action_unittest.cc
@@ -1463,6 +1463,7 @@
   request_params_.set_current_channel("unittest_track&lt;");
   request_params_.set_target_channel("unittest_track&lt;");
   request_params_.set_hwid("<OEM MODEL>");
+  request_params_.set_autoupdate_token("autoupdate_token>");
   fake_prefs_.SetString(kPrefsOmahaCohort, "evil\nstring");
   fake_prefs_.SetString(kPrefsOmahaCohortHint, "evil&string\\");
   fake_prefs_.SetString(
@@ -1489,6 +1490,8 @@
   // Values from Prefs that are too big are removed from the XML instead of
   // encoded.
   EXPECT_EQ(string::npos, post_str.find("cohortname="));
+  EXPECT_NE(string::npos, post_str.find("autoupdate_token&gt;"));
+  EXPECT_EQ(string::npos, post_str.find("autoupdate_token>"));
 }
 
 TEST_F(OmahaRequestActionTest, XmlDecodeTest) {
@@ -1692,6 +1695,21 @@
   EXPECT_EQ(ErrorCode::kError, error_event.error_code);
 }
 
+TEST_F(OmahaRequestActionTest, DeviceQuickFixBuildTokenIsSetTest) {
+  constexpr char autoupdate_token[] = "autoupdate_token";
+
+  tuc_params_.http_response = fake_update_response_.GetNoUpdateResponse();
+  tuc_params_.expected_check_result = metrics::CheckResult::kNoUpdateAvailable;
+  tuc_params_.expected_check_reaction = metrics::CheckReaction::kUnset;
+  request_params_.set_autoupdate_token(autoupdate_token);
+
+  ASSERT_TRUE(TestUpdateCheck());
+
+  EXPECT_NE(post_str.find("        <updatecheck token=\"" +
+                          string(autoupdate_token) + "\"></updatecheck>\n"),
+            string::npos);
+}
+
 void OmahaRequestActionTest::PingTest(bool ping_only) {
   NiceMock<MockPrefs> prefs;
   fake_system_state_.set_prefs(&prefs);