| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_session_manager.h" | 5 #include "chrome/browser/chromeos/arc/arc_session_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "ash/common/shelf/shelf_delegate.h" | 9 #include "ash/common/shelf/shelf_delegate.h" |
| 10 #include "ash/common/wm_shell.h" | 10 #include "ash/common/wm_shell.h" |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 base::Bind(&ArcSessionManager::OnOptInPreferenceChanged, | 489 base::Bind(&ArcSessionManager::OnOptInPreferenceChanged, |
| 490 weak_ptr_factory_.GetWeakPtr())); | 490 weak_ptr_factory_.GetWeakPtr())); |
| 491 | 491 |
| 492 // Set initial managed state to ArcSupportHost to update the message. | 492 // Set initial managed state to ArcSupportHost to update the message. |
| 493 if (support_host_) { | 493 if (support_host_) { |
| 494 support_host_->SetArcManaged( | 494 support_host_->SetArcManaged( |
| 495 IsArcPlayStoreEnabledPreferenceManagedForProfile(profile_)); | 495 IsArcPlayStoreEnabledPreferenceManagedForProfile(profile_)); |
| 496 } | 496 } |
| 497 | 497 |
| 498 // Update the state based on the initial Google Play Store enabled value. | 498 // Update the state based on the initial Google Play Store enabled value. |
| 499 if (IsArcPlayStoreEnabledForProfile(profile_)) { | 499 if (ShouldArcAlwaysStart() || IsArcPlayStoreEnabledForProfile(profile_)) { |
| 500 VLOG(1) << "ARC is already enabled."; | 500 VLOG(1) << "ARC is already enabled."; |
| 501 DCHECK(!enable_requested_); | 501 DCHECK(!enable_requested_); |
| 502 RequestEnable(); | 502 RequestEnable(); |
| 503 } else { | 503 } else { |
| 504 if (IsArcPlayStoreEnabledPreferenceManagedForProfile(profile_)) { | 504 if (IsArcPlayStoreEnabledPreferenceManagedForProfile(profile_)) { |
| 505 // All users that can disable ARC by themselves will have the | 505 // All users that can disable ARC by themselves will have the |
| 506 // |kARcDataRemoveRequested| pref set, so we don't need to eagerly remove | 506 // |kARcDataRemoveRequested| pref set, so we don't need to eagerly remove |
| 507 // the data for that case. | 507 // the data for that case. |
| 508 // For managed users, the preference can change when the Profile object is | 508 // For managed users, the preference can change when the Profile object is |
| 509 // not alive, so we still need to check it here in case it was disabled to | 509 // not alive, so we still need to check it here in case it was disabled to |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 } | 543 } |
| 544 | 544 |
| 545 if (support_host_) | 545 if (support_host_) |
| 546 support_host_->SetArcManaged(is_play_store_managed); | 546 support_host_->SetArcManaged(is_play_store_managed); |
| 547 | 547 |
| 548 // Hide auth notification if it was opened before and arc.enabled pref was | 548 // Hide auth notification if it was opened before and arc.enabled pref was |
| 549 // explicitly set to true or false. | 549 // explicitly set to true or false. |
| 550 if (profile_->GetPrefs()->HasPrefPath(prefs::kArcEnabled)) | 550 if (profile_->GetPrefs()->HasPrefPath(prefs::kArcEnabled)) |
| 551 ArcAuthNotification::Hide(); | 551 ArcAuthNotification::Hide(); |
| 552 | 552 |
| 553 if (is_play_store_enabled) | 553 if (ShouldArcAlwaysStart()) { |
| 554 RequestEnable(); | 554 // TODO(victorhsieh): Implement opt-in and opt-out flow. For now, do |
| 555 else | 555 // nothing but keep the existing ARC instance running. |
| 556 RequestDisable(); | 556 } else { |
| 557 if (is_play_store_enabled) |
| 558 RequestEnable(); |
| 559 else |
| 560 RequestDisable(); |
| 561 } |
| 557 | 562 |
| 558 for (auto& observer : observer_list_) | 563 for (auto& observer : observer_list_) |
| 559 observer.OnArcPlayStoreEnabledChanged(is_play_store_enabled); | 564 observer.OnArcPlayStoreEnabledChanged(is_play_store_enabled); |
| 560 } | 565 } |
| 561 | 566 |
| 562 void ArcSessionManager::ShutdownSession() { | 567 void ArcSessionManager::ShutdownSession() { |
| 563 arc_sign_in_timer_.Stop(); | 568 arc_sign_in_timer_.Stop(); |
| 564 playstore_launcher_.reset(); | 569 playstore_launcher_.reset(); |
| 565 terms_of_service_negotiator_.reset(); | 570 terms_of_service_negotiator_.reset(); |
| 566 android_management_checker_.reset(); | 571 android_management_checker_.reset(); |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 705 // TODO(poromov): Move to more Kiosk dedicated set-up phase. | 710 // TODO(poromov): Move to more Kiosk dedicated set-up phase. |
| 706 if (IsArcKioskMode()) | 711 if (IsArcKioskMode()) |
| 707 prefs->SetBoolean(prefs::kArcTermsAccepted, true); | 712 prefs->SetBoolean(prefs::kArcTermsAccepted, true); |
| 708 | 713 |
| 709 // Skip to show UI asking users to set up ARC OptIn preferences, if all of | 714 // Skip to show UI asking users to set up ARC OptIn preferences, if all of |
| 710 // them are managed by the admin policy. Note that the ToS agreement is anyway | 715 // them are managed by the admin policy. Note that the ToS agreement is anyway |
| 711 // not shown in the case of the managed ARC. | 716 // not shown in the case of the managed ARC. |
| 712 if (AreArcAllOptInPreferencesManaged()) | 717 if (AreArcAllOptInPreferencesManaged()) |
| 713 prefs->SetBoolean(prefs::kArcTermsAccepted, true); | 718 prefs->SetBoolean(prefs::kArcTermsAccepted, true); |
| 714 | 719 |
| 715 // If it is marked that sign in has been successfully done, then directly | 720 // If it is marked that sign in has been successfully done, if ARC has been |
| 716 // start ARC. | 721 // set up to always start, then directly start ARC. |
| 717 // For testing, and for Kiosk mode, we also skip ToS negotiation procedure. | 722 // For testing, and for Kiosk mode, we also skip ToS negotiation procedure. |
| 718 // For backward compatibility, this check needs to be prior to the | 723 // For backward compatibility, this check needs to be prior to the |
| 719 // kArcTermsAccepted check below. | 724 // kArcTermsAccepted check below. |
| 720 if (prefs->GetBoolean(prefs::kArcSignedIn) || | 725 if (prefs->GetBoolean(prefs::kArcSignedIn) || ShouldArcAlwaysStart() || |
| 721 IsArcOptInVerificationDisabled() || IsArcKioskMode()) { | 726 IsArcOptInVerificationDisabled() || IsArcKioskMode()) { |
| 722 StartArc(); | 727 StartArc(); |
| 723 | 728 |
| 724 // Skip Android management check for testing. | 729 // Skip Android management check for testing. |
| 725 // We also skip if Android management check for Kiosk mode, | 730 // We also skip if Android management check for Kiosk mode, |
| 726 // because there are no managed human users for Kiosk exist. | 731 // because there are no managed human users for Kiosk exist. |
| 727 if (IsArcOptInVerificationDisabled() || IsArcKioskMode() || | 732 if (IsArcOptInVerificationDisabled() || IsArcKioskMode() || |
| 728 (g_disable_ui_for_testing && | 733 (g_disable_ui_for_testing && |
| 729 !g_enable_check_android_management_for_testing)) { | 734 !g_enable_check_android_management_for_testing)) { |
| 730 return; | 735 return; |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1000 | 1005 |
| 1001 #undef MAP_STATE | 1006 #undef MAP_STATE |
| 1002 | 1007 |
| 1003 // Some compilers report an error even if all values of an enum-class are | 1008 // Some compilers report an error even if all values of an enum-class are |
| 1004 // covered exhaustively in a switch statement. | 1009 // covered exhaustively in a switch statement. |
| 1005 NOTREACHED() << "Invalid value " << static_cast<int>(state); | 1010 NOTREACHED() << "Invalid value " << static_cast<int>(state); |
| 1006 return os; | 1011 return os; |
| 1007 } | 1012 } |
| 1008 | 1013 |
| 1009 } // namespace arc | 1014 } // namespace arc |
| OLD | NEW |