Commit 5c723c39 authored by P H's avatar P H Committed by Commit Bot

Pipe down supervision transition status to upgrade ARC instance request.

Bug: 836246
Change-Id: I991c886d8eeec65277c38d24f6a48b7e2ba35c98
Reviewed-on: https://chromium-review.googlesource.com/1135876
Commit-Queue: Patricia Hongo <phongo@google.com>
Reviewed-by: default avatarYury Khmel <khmel@chromium.org>
Reviewed-by: default avatarLuis Hector Chavez <lhchavez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576096}
parent 13eb6457
...@@ -988,6 +988,7 @@ void ArcSessionManager::StartArc() { ...@@ -988,6 +988,7 @@ void ArcSessionManager::StartArc() {
} }
params.is_child = profile_->IsChild(); params.is_child = profile_->IsChild();
params.supervision_transition = GetSupervisionTransition(profile_);
params.locale = locale; params.locale = locale;
// Empty |preferred_lanaguages| is converted to empty array. // Empty |preferred_lanaguages| is converted to empty array.
params.preferred_languages = base::SplitString( params.preferred_languages = base::SplitString(
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "components/arc/arc_stop_reason.h" #include "components/arc/arc_stop_reason.h"
#include "components/arc/arc_supervision_transition.h"
namespace base { namespace base {
class FilePath; class FilePath;
...@@ -57,6 +58,12 @@ class ArcSession { ...@@ -57,6 +58,12 @@ class ArcSession {
// Whether the account is a child. // Whether the account is a child.
bool is_child; bool is_child;
// The supervision transition state for this account. Indicates whether
// child account should become regular, regular account should become child
// or neither.
ArcSupervisionTransition supervision_transition =
ArcSupervisionTransition::NO_TRANSITION;
// Define language configuration set during Android container boot. // Define language configuration set during Android container boot.
// |preferred_languages| may be empty. // |preferred_languages| may be empty.
std::string locale; std::string locale;
......
...@@ -105,6 +105,27 @@ ArcStopReason GetArcStopReason(bool low_disk_space, bool stop_requested) { ...@@ -105,6 +105,27 @@ ArcStopReason GetArcStopReason(bool low_disk_space, bool stop_requested) {
return ArcStopReason::GENERIC_BOOT_FAILURE; return ArcStopReason::GENERIC_BOOT_FAILURE;
} }
// Converts ArcSupervisionTransition into
// login_manager::UpgradeArcContainerRequest_SupervisionTransition.
login_manager::UpgradeArcContainerRequest_SupervisionTransition
ToLoginManagerSupervisionTransition(ArcSupervisionTransition transition) {
switch (transition) {
case ArcSupervisionTransition::NO_TRANSITION:
return login_manager::
UpgradeArcContainerRequest_SupervisionTransition_NONE;
case ArcSupervisionTransition::CHILD_TO_REGULAR:
return login_manager::
UpgradeArcContainerRequest_SupervisionTransition_CHILD_TO_REGULAR;
case ArcSupervisionTransition::REGULAR_TO_CHILD:
return login_manager::
UpgradeArcContainerRequest_SupervisionTransition_REGULAR_TO_CHILD;
default:
NOTREACHED() << "Invalid transition " << transition;
return login_manager::
UpgradeArcContainerRequest_SupervisionTransition_NONE;
}
}
// Real Delegate implementation to connect Mojo. // Real Delegate implementation to connect Mojo.
class ArcSessionDelegateImpl : public ArcSessionImpl::Delegate { class ArcSessionDelegateImpl : public ArcSessionImpl::Delegate {
public: public:
...@@ -367,6 +388,8 @@ void ArcSessionImpl::DoUpgrade() { ...@@ -367,6 +388,8 @@ void ArcSessionImpl::DoUpgrade() {
} }
request.set_is_child(upgrade_params_.is_child); request.set_is_child(upgrade_params_.is_child);
request.set_supervision_transition(ToLoginManagerSupervisionTransition(
upgrade_params_.supervision_transition));
request.set_locale(upgrade_params_.locale); request.set_locale(upgrade_params_.locale);
for (const std::string& language : upgrade_params_.preferred_languages) for (const std::string& language : upgrade_params_.preferred_languages)
request.add_preferred_languages(language); request.add_preferred_languages(language);
......
...@@ -660,5 +660,23 @@ TEST_F(ArcSessionImplTest, DemoSessionWithoutOfflineDemoApps) { ...@@ -660,5 +660,23 @@ TEST_F(ArcSessionImplTest, DemoSessionWithoutOfflineDemoApps) {
.demo_session_apps_path()); .demo_session_apps_path());
} }
TEST_F(ArcSessionImplTest, SupervisionTransitionShouldGraduate) {
auto arc_session = CreateArcSession();
arc_session->StartMiniInstance();
ArcSession::UpgradeParams params;
params.supervision_transition = ArcSupervisionTransition::CHILD_TO_REGULAR;
params.locale = kDefaultLocale;
arc_session->RequestUpgrade(std::move(params));
base::RunLoop().RunUntilIdle();
EXPECT_EQ(
login_manager::
UpgradeArcContainerRequest_SupervisionTransition_CHILD_TO_REGULAR,
GetSessionManagerClient()
->last_upgrade_arc_request()
.supervision_transition());
}
} // namespace } // namespace
} // namespace arc } // namespace arc
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment