| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/policy/device_local_account.h" | 5 #include "chrome/browser/chromeos/policy/device_local_account.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
| 13 #include "base/values.h" | 13 #include "base/values.h" |
| 14 #include "chrome/browser/chromeos/settings/cros_settings.h" | 14 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 15 #include "chrome/browser/chromeos/settings/cros_settings_names.h" | 15 #include "chrome/browser/chromeos/settings/cros_settings_names.h" |
| 16 #include "google_apis/gaia/gaia_auth_util.h" | 16 #include "google_apis/gaia/gaia_auth_util.h" |
| 17 | 17 |
| 18 namespace policy { | 18 namespace policy { |
| 19 | 19 |
| 20 namespace { | 20 namespace { |
| 21 | 21 |
| 22 const char kPublicAccountDomainPrefix[] = "public-accounts"; | 22 const char kPublicAccountDomainPrefix[] = "public-accounts"; |
| 23 const char kKioskAppAccountDomainPrefix[] = "kiosk-apps"; | 23 const char kKioskAppAccountDomainPrefix[] = "kiosk-apps"; |
| 24 const char kDeviceLocalAccountDomainSuffix[] = ".device-local.localhost"; | 24 const char kDeviceLocalAccountDomainSuffix[] = ".device-local.localhost"; |
| 25 | 25 |
| 26 } // namespace | 26 } // namespace |
| 27 | 27 |
| 28 DeviceLocalAccount::DeviceLocalAccount(Type type, | 28 DeviceLocalAccount::DeviceLocalAccount(Type type, |
| 29 const std::string& account_id, | 29 const std::string& account_id, |
| 30 const std::string& kiosk_app_id, | 30 const std::string& kiosk_app_id) |
| 31 const std::string& kiosk_app_update_url) | |
| 32 : type(type), | 31 : type(type), |
| 33 account_id(account_id), | 32 account_id(account_id), |
| 34 user_id(GenerateDeviceLocalAccountUserId(account_id, type)), | 33 user_id(GenerateDeviceLocalAccountUserId(account_id, type)), |
| 35 kiosk_app_id(kiosk_app_id), | 34 kiosk_app_id(kiosk_app_id) { |
| 36 kiosk_app_update_url(kiosk_app_update_url) { | |
| 37 } | 35 } |
| 38 | 36 |
| 39 DeviceLocalAccount::~DeviceLocalAccount() { | 37 DeviceLocalAccount::~DeviceLocalAccount() { |
| 40 } | 38 } |
| 41 | 39 |
| 42 std::string GenerateDeviceLocalAccountUserId(const std::string& account_id, | 40 std::string GenerateDeviceLocalAccountUserId(const std::string& account_id, |
| 43 DeviceLocalAccount::Type type) { | 41 DeviceLocalAccount::Type type) { |
| 44 std::string domain_prefix; | 42 std::string domain_prefix; |
| 45 switch (type) { | 43 switch (type) { |
| 46 case DeviceLocalAccount::TYPE_PUBLIC_SESSION: | 44 case DeviceLocalAccount::TYPE_PUBLIC_SESSION: |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 entry->SetStringWithoutPathExpansion( | 78 entry->SetStringWithoutPathExpansion( |
| 81 chromeos::kAccountsPrefDeviceLocalAccountsKeyId, | 79 chromeos::kAccountsPrefDeviceLocalAccountsKeyId, |
| 82 it->account_id); | 80 it->account_id); |
| 83 entry->SetIntegerWithoutPathExpansion( | 81 entry->SetIntegerWithoutPathExpansion( |
| 84 chromeos::kAccountsPrefDeviceLocalAccountsKeyType, | 82 chromeos::kAccountsPrefDeviceLocalAccountsKeyType, |
| 85 it->type); | 83 it->type); |
| 86 if (it->type == DeviceLocalAccount::TYPE_KIOSK_APP) { | 84 if (it->type == DeviceLocalAccount::TYPE_KIOSK_APP) { |
| 87 entry->SetStringWithoutPathExpansion( | 85 entry->SetStringWithoutPathExpansion( |
| 88 chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppId, | 86 chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppId, |
| 89 it->kiosk_app_id); | 87 it->kiosk_app_id); |
| 90 if (!it->kiosk_app_update_url.empty()) { | |
| 91 entry->SetStringWithoutPathExpansion( | |
| 92 chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppUpdateURL, | |
| 93 it->kiosk_app_update_url); | |
| 94 } | |
| 95 } | 88 } |
| 96 list.Append(entry.release()); | 89 list.Append(entry.release()); |
| 97 } | 90 } |
| 98 | 91 |
| 99 cros_settings->Set(chromeos::kAccountsPrefDeviceLocalAccounts, list); | 92 cros_settings->Set(chromeos::kAccountsPrefDeviceLocalAccounts, list); |
| 100 } | 93 } |
| 101 | 94 |
| 102 std::vector<DeviceLocalAccount> GetDeviceLocalAccounts( | 95 std::vector<DeviceLocalAccount> GetDeviceLocalAccounts( |
| 103 chromeos::CrosSettings* cros_settings) { | 96 chromeos::CrosSettings* cros_settings) { |
| 104 std::vector<DeviceLocalAccount> accounts; | 97 std::vector<DeviceLocalAccount> accounts; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 129 int type; | 122 int type; |
| 130 if (!entry->GetIntegerWithoutPathExpansion( | 123 if (!entry->GetIntegerWithoutPathExpansion( |
| 131 chromeos::kAccountsPrefDeviceLocalAccountsKeyType, &type) || | 124 chromeos::kAccountsPrefDeviceLocalAccountsKeyType, &type) || |
| 132 type < 0 || type >= DeviceLocalAccount::TYPE_COUNT) { | 125 type < 0 || type >= DeviceLocalAccount::TYPE_COUNT) { |
| 133 LOG(ERROR) << "Missing or invalid account type in device-local account " | 126 LOG(ERROR) << "Missing or invalid account type in device-local account " |
| 134 << "list at index " << i << "."; | 127 << "list at index " << i << "."; |
| 135 continue; | 128 continue; |
| 136 } | 129 } |
| 137 | 130 |
| 138 std::string kiosk_app_id; | 131 std::string kiosk_app_id; |
| 139 std::string kiosk_app_update_url; | |
| 140 if (type == DeviceLocalAccount::TYPE_KIOSK_APP) { | 132 if (type == DeviceLocalAccount::TYPE_KIOSK_APP) { |
| 141 if (!entry->GetStringWithoutPathExpansion( | 133 if (!entry->GetStringWithoutPathExpansion( |
| 142 chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppId, | 134 chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppId, |
| 143 &kiosk_app_id)) { | 135 &kiosk_app_id)) { |
| 144 LOG(ERROR) << "Missing app ID in device-local account entry at index " | 136 LOG(ERROR) << "Missing app ID in device-local account entry at index " |
| 145 << i << "."; | 137 << i << "."; |
| 146 continue; | 138 continue; |
| 147 } | 139 } |
| 148 entry->GetStringWithoutPathExpansion( | |
| 149 chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppUpdateURL, | |
| 150 &kiosk_app_update_url); | |
| 151 } | 140 } |
| 152 | 141 |
| 153 if (!account_ids.insert(account_id).second) { | 142 if (!account_ids.insert(account_id).second) { |
| 154 LOG(ERROR) << "Duplicate entry in device-local account list at index " | 143 LOG(ERROR) << "Duplicate entry in device-local account list at index " |
| 155 << i << ": " << account_id << "."; | 144 << i << ": " << account_id << "."; |
| 156 continue; | 145 continue; |
| 157 } | 146 } |
| 158 | 147 |
| 159 accounts.push_back(DeviceLocalAccount( | 148 accounts.push_back(DeviceLocalAccount( |
| 160 static_cast<DeviceLocalAccount::Type>(type), | 149 static_cast<DeviceLocalAccount::Type>(type), account_id, kiosk_app_id)); |
| 161 account_id, kiosk_app_id, kiosk_app_update_url)); | |
| 162 } | 150 } |
| 163 return accounts; | 151 return accounts; |
| 164 } | 152 } |
| 165 | 153 |
| 166 } // namespace policy | 154 } // namespace policy |
| OLD | NEW |