OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/arc/arc_auth_service.h" | 5 #include "chrome/browser/chromeos/arc/arc_auth_service.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 MAP_PROVISIONING_RESULT(CLOUD_PROVISION_FLOW_INTERNAL_ERROR); | 56 MAP_PROVISIONING_RESULT(CLOUD_PROVISION_FLOW_INTERNAL_ERROR); |
57 MAP_PROVISIONING_RESULT(NO_NETWORK_CONNECTION); | 57 MAP_PROVISIONING_RESULT(NO_NETWORK_CONNECTION); |
58 } | 58 } |
59 #undef MAP_PROVISIONING_RESULT | 59 #undef MAP_PROVISIONING_RESULT |
60 | 60 |
61 NOTREACHED() << "unknown reason: " << static_cast<int>(reason); | 61 NOTREACHED() << "unknown reason: " << static_cast<int>(reason); |
62 return ProvisioningResult::UNKNOWN_ERROR; | 62 return ProvisioningResult::UNKNOWN_ERROR; |
63 } | 63 } |
64 | 64 |
65 mojom::ChromeAccountType GetAccountType() { | 65 mojom::ChromeAccountType GetAccountType() { |
66 return IsArcKioskMode() ? mojom::ChromeAccountType::ROBOT_ACCOUNT | 66 return IsArcKioskMode() || IsPublicSessionMode() |
67 : mojom::ChromeAccountType::USER_ACCOUNT; | 67 ? mojom::ChromeAccountType::ROBOT_ACCOUNT |
| 68 : mojom::ChromeAccountType::USER_ACCOUNT; |
68 } | 69 } |
69 | 70 |
70 } // namespace | 71 } // namespace |
71 | 72 |
72 // static | 73 // static |
73 const char ArcAuthService::kArcServiceName[] = "arc::ArcAuthService"; | 74 const char ArcAuthService::kArcServiceName[] = "arc::ArcAuthService"; |
74 | 75 |
75 // TODO(lhchavez): Get rid of this class once we can safely remove all the | 76 // TODO(lhchavez): Get rid of this class once we can safely remove all the |
76 // deprecated interfaces and only need to care about one type of callback. | 77 // deprecated interfaces and only need to care about one type of callback. |
77 class ArcAuthService::AccountInfoNotifier { | 78 class ArcAuthService::AccountInfoNotifier { |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 void ArcAuthService::GetAuthCodeDeprecated0( | 212 void ArcAuthService::GetAuthCodeDeprecated0( |
212 const GetAuthCodeDeprecated0Callback& callback) { | 213 const GetAuthCodeDeprecated0Callback& callback) { |
213 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 214 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
214 NOTREACHED() << "GetAuthCodeDeprecated0() should no longer be callable"; | 215 NOTREACHED() << "GetAuthCodeDeprecated0() should no longer be callable"; |
215 } | 216 } |
216 | 217 |
217 void ArcAuthService::GetAuthCodeDeprecated( | 218 void ArcAuthService::GetAuthCodeDeprecated( |
218 const GetAuthCodeDeprecatedCallback& callback) { | 219 const GetAuthCodeDeprecatedCallback& callback) { |
219 // For robot account we must use RequestAccountInfo because it allows | 220 // For robot account we must use RequestAccountInfo because it allows |
220 // to specify account type. | 221 // to specify account type. |
221 DCHECK(!IsArcKioskMode()); | 222 DCHECK(!IsArcKioskMode() && !IsPublicSessionMode()); |
222 RequestAccountInfoInternal( | 223 RequestAccountInfoInternal( |
223 base::MakeUnique<ArcAuthService::AccountInfoNotifier>(callback)); | 224 base::MakeUnique<ArcAuthService::AccountInfoNotifier>(callback)); |
224 } | 225 } |
225 | 226 |
226 void ArcAuthService::GetAuthCodeAndAccountTypeDeprecated( | 227 void ArcAuthService::GetAuthCodeAndAccountTypeDeprecated( |
227 const GetAuthCodeAndAccountTypeDeprecatedCallback& callback) { | 228 const GetAuthCodeAndAccountTypeDeprecatedCallback& callback) { |
228 RequestAccountInfoInternal( | 229 RequestAccountInfoInternal( |
229 base::MakeUnique<ArcAuthService::AccountInfoNotifier>(callback)); | 230 base::MakeUnique<ArcAuthService::AccountInfoNotifier>(callback)); |
230 } | 231 } |
231 | 232 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 auto enrollment_token_fetcher = | 266 auto enrollment_token_fetcher = |
266 base::MakeUnique<ArcActiveDirectoryEnrollmentTokenFetcher>(); | 267 base::MakeUnique<ArcActiveDirectoryEnrollmentTokenFetcher>(); |
267 enrollment_token_fetcher->Fetch( | 268 enrollment_token_fetcher->Fetch( |
268 base::Bind(&ArcAuthService::OnEnrollmentTokenFetched, | 269 base::Bind(&ArcAuthService::OnEnrollmentTokenFetched, |
269 weak_ptr_factory_.GetWeakPtr())); | 270 weak_ptr_factory_.GetWeakPtr())); |
270 fetcher_ = std::move(enrollment_token_fetcher); | 271 fetcher_ = std::move(enrollment_token_fetcher); |
271 return; | 272 return; |
272 } | 273 } |
273 // For non-AD enrolled devices an auth code is fetched. | 274 // For non-AD enrolled devices an auth code is fetched. |
274 std::unique_ptr<ArcAuthCodeFetcher> auth_code_fetcher; | 275 std::unique_ptr<ArcAuthCodeFetcher> auth_code_fetcher; |
275 if (IsArcKioskMode()) { | 276 if (IsArcKioskMode() || IsPublicSessionMode()) { |
276 // In Kiosk mode, use Robot auth code fetching. | 277 // In Kiosk and public session mode, use Robot auth code fetching. |
277 auth_code_fetcher = base::MakeUnique<ArcRobotAuthCodeFetcher>(); | 278 auth_code_fetcher = base::MakeUnique<ArcRobotAuthCodeFetcher>(); |
278 } else if (base::FeatureList::IsEnabled(arc::kArcUseAuthEndpointFeature)) { | 279 } else if (base::FeatureList::IsEnabled(arc::kArcUseAuthEndpointFeature)) { |
279 // Optionally retrieve auth code in silent mode. | 280 // Optionally retrieve auth code in silent mode. |
280 DCHECK(profile); | 281 DCHECK(profile); |
281 auth_code_fetcher = base::MakeUnique<ArcBackgroundAuthCodeFetcher>( | 282 auth_code_fetcher = base::MakeUnique<ArcBackgroundAuthCodeFetcher>( |
282 profile, ArcSessionManager::Get()->auth_context()); | 283 profile, ArcSessionManager::Get()->auth_context()); |
283 } else { | 284 } else { |
284 // Report that silent auth code is not activated. All other states are | 285 // Report that silent auth code is not activated. All other states are |
285 // reported in ArcBackgroundAuthCodeFetcher. | 286 // reported in ArcBackgroundAuthCodeFetcher. |
286 UpdateSilentAuthCodeUMA(OptInSilentAuthCode::DISABLED); | 287 UpdateSilentAuthCodeUMA(OptInSilentAuthCode::DISABLED); |
287 // Otherwise, show LSO page and let user click "Sign in" button. | 288 // Otherwise, show LSO page and let user click "Sign in" button. |
288 // Here, support_host should be available always. The case support_host is | 289 // Here, support_host should be available always. The case support_host is |
289 // not created is when 1) IsArcOptInVerificationDisabled() is true or 2) | 290 // not created is when 1) IsArcOptInVerificationDisabled() is true or 2) |
290 // IsArcKioskMode() is true. Both cases are handled above. | 291 // IsArcKioskMode() or IsPublicSessionMode() is true. |
| 292 // Both cases are handled above. |
291 auth_code_fetcher = base::MakeUnique<ArcManualAuthCodeFetcher>( | 293 auth_code_fetcher = base::MakeUnique<ArcManualAuthCodeFetcher>( |
292 ArcSessionManager::Get()->auth_context(), | 294 ArcSessionManager::Get()->auth_context(), |
293 ArcSessionManager::Get()->support_host()); | 295 ArcSessionManager::Get()->support_host()); |
294 } | 296 } |
295 auth_code_fetcher->Fetch(base::Bind(&ArcAuthService::OnAuthCodeFetched, | 297 auth_code_fetcher->Fetch(base::Bind(&ArcAuthService::OnAuthCodeFetched, |
296 weak_ptr_factory_.GetWeakPtr())); | 298 weak_ptr_factory_.GetWeakPtr())); |
297 fetcher_ = std::move(auth_code_fetcher); | 299 fetcher_ = std::move(auth_code_fetcher); |
298 } | 300 } |
299 | 301 |
300 void ArcAuthService::OnEnrollmentTokenFetched( | 302 void ArcAuthService::OnEnrollmentTokenFetched( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 | 351 |
350 notifier_->Notify( | 352 notifier_->Notify( |
351 !IsArcOptInVerificationDisabled(), auth_code, | 353 !IsArcOptInVerificationDisabled(), auth_code, |
352 ArcSessionManager::Get()->auth_context()->full_account_id(), | 354 ArcSessionManager::Get()->auth_context()->full_account_id(), |
353 GetAccountType(), | 355 GetAccountType(), |
354 policy_util::IsAccountManaged(ArcSessionManager::Get()->profile())); | 356 policy_util::IsAccountManaged(ArcSessionManager::Get()->profile())); |
355 notifier_.reset(); | 357 notifier_.reset(); |
356 } | 358 } |
357 | 359 |
358 } // namespace arc | 360 } // namespace arc |
OLD | NEW |