cros: Tweak DeviceStateMixin

Just went through all cases on a real device and corrected the mixin a
bit.

Bug: 952855
Change-Id: I941473ce9ea2bf92b5d8c70637a5a1b4077b3a41
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1615143
Reviewed-by: Toni Baržić <tbarzic@chromium.org>
Commit-Queue: Roman Sorokin [CET] <rsorokin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661294}
diff --git a/chrome/browser/chromeos/login/test/device_state_mixin.cc b/chrome/browser/chromeos/login/test/device_state_mixin.cc
index 757892f..a29630a 100644
--- a/chrome/browser/chromeos/login/test/device_state_mixin.cc
+++ b/chrome/browser/chromeos/login/test/device_state_mixin.cc
@@ -44,10 +44,15 @@
   install_attrs_["enterprise.domain"] = domain;
   install_attrs_["enterprise.realm"] = realm;
   install_attrs_["enterprise.device_id"] = device_id;
-  install_attrs_["enterprise.owned"] = "true";
+  if (!mode.empty())
+    install_attrs_["enterprise.owned"] = "true";
 
   cryptohome::SerializedInstallAttributes install_attrs;
+  install_attrs.set_version(1);
+
   for (const auto& it : install_attrs_) {
+    if (it.second.empty())
+      continue;
     cryptohome::SerializedInstallAttributes::Attribute* attr_entry =
         install_attrs.add_attributes();
     const std::string& name = it.first;
@@ -151,13 +156,13 @@
     case DeviceStateMixin::State::OOBE_COMPLETED_ACTIVE_DIRECTORY_ENROLLED:
     case DeviceStateMixin::State::OOBE_COMPLETED_CONSUMER_OWNED:
     case DeviceStateMixin::State::OOBE_COMPLETED_DEMO_MODE:
-      local_state_values.device_registered = 1;
-      FALLTHROUGH;
     case DeviceStateMixin::State::OOBE_COMPLETED_UNOWNED:
+      local_state_values.device_registered = 1;
       local_state_values.enrollment_recovery_required = false;
       local_state_values.oobe_complete = true;
       break;
     case DeviceStateMixin::State::BEFORE_OOBE:
+      local_state_values.device_registered = 0;
       break;
   }
 
@@ -217,30 +222,31 @@
   std::string device_mode, domain, realm, device_id;
   switch (state_) {
     case DeviceStateMixin::State::BEFORE_OOBE:
+    case DeviceStateMixin::State::OOBE_COMPLETED_UNOWNED:
       // No file at all.
       return;
-    case DeviceStateMixin::State::OOBE_COMPLETED_UNOWNED:
-      // Write file with empty install attributes.
+    case DeviceStateMixin::State::OOBE_COMPLETED_CONSUMER_OWNED:
+      // File with version only.
       break;
     case DeviceStateMixin::State::OOBE_COMPLETED_CLOUD_ENROLLED:
       device_mode = "enterprise";
       domain = !domain_.empty() ? domain_ : kFakeDomain;
+      device_id = kFakeDeviceId;
       break;
     case DeviceStateMixin::State::OOBE_COMPLETED_ACTIVE_DIRECTORY_ENROLLED:
       device_mode = "enterprise_ad";
       realm = kFakeDomain;
-      break;
-    case DeviceStateMixin::State::OOBE_COMPLETED_CONSUMER_OWNED:
-      device_mode = "consumer";
+      device_id = kFakeDeviceId;
       break;
     case DeviceStateMixin::State::OOBE_COMPLETED_DEMO_MODE:
       device_mode = "demo_mode";
       domain = "cros-demo-mode.com";
+      device_id = kFakeDeviceId;
       break;
   }
 
   std::string install_attrs_bits;
-  CHECK(BuildInstallAttributes(device_mode, domain, realm, kFakeDeviceId)
+  CHECK(BuildInstallAttributes(device_mode, domain, realm, device_id)
             .SerializeToString(&install_attrs_bits));
   WriteFile(install_attrs_file, install_attrs_bits);
 }