Index: chrome/browser/chromeos/login/enrollment/enrollment_screen.cc |
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc |
index 7e0278a89439248020eeb8c3e466ca8a69dbc8e6..49aa35019a4d150eab15cc861ace4cc81f97cffb 100644 |
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc |
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc |
@@ -10,6 +10,7 @@ |
#include "base/message_loop/message_loop.h" |
#include "base/metrics/histogram.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/browser_process_platform_part.h" |
#include "chrome/browser/chromeos/login/login_utils.h" |
#include "chrome/browser/chromeos/login/screens/screen_observer.h" |
#include "chrome/browser/chromeos/login/startup_utils.h" |
@@ -17,6 +18,7 @@ |
#include "chrome/browser/chromeos/policy/auto_enrollment_client.h" |
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
#include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" |
+#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" |
#include "chromeos/dbus/cryptohome_client.h" |
#include "chromeos/dbus/dbus_method_call_status.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
@@ -34,6 +36,7 @@ EnrollmentScreen::EnrollmentScreen( |
actor_(actor), |
enrollment_mode_(EnrollmentScreenActor::ENROLLMENT_MODE_MANUAL), |
enrollment_failed_once_(false), |
+ remora_token_sent_(false), |
lockbox_init_duration_(0), |
weak_ptr_factory_(this) { |
// Init the TPM if it has not been done until now (in debug build we might |
@@ -47,9 +50,11 @@ EnrollmentScreen::~EnrollmentScreen() {} |
void EnrollmentScreen::SetParameters( |
EnrollmentScreenActor::EnrollmentMode enrollment_mode, |
const std::string& management_domain, |
- const std::string& user) { |
+ const std::string& user, |
+ const std::string& auth_token) { |
enrollment_mode_ = enrollment_mode; |
user_ = user.empty() ? user : gaia::CanonicalizeEmail(user); |
+ auth_token_ = auth_token; |
actor_->SetParameters(this, enrollment_mode_, management_domain); |
} |
@@ -63,10 +68,14 @@ void EnrollmentScreen::Show() { |
UMA(policy::kMetricEnrollmentAutoStarted); |
actor_->ShowEnrollmentSpinnerScreen(); |
actor_->FetchOAuthToken(); |
- } else { |
+ } else if (auth_token_.empty()) { |
UMA(policy::kMetricEnrollmentTriggered); |
actor_->ResetAuth(base::Bind(&EnrollmentScreen::ShowSigninScreen, |
weak_ptr_factory_.GetWeakPtr())); |
+ } else { |
+ actor_->Show(); |
+ actor_->ShowEnrollmentSpinnerScreen(); |
+ OnOAuthTokenAvailable(auth_token_); |
} |
} |
@@ -129,7 +138,19 @@ void EnrollmentScreen::OnAuthError(const GoogleServiceAuthError& error) { |
} |
void EnrollmentScreen::OnOAuthTokenAvailable(const std::string& token) { |
- RegisterForDevicePolicy(token); |
+ VLOG(1) << "OnOAuthTokenAvailable " << token; |
+ const bool is_shark = |
+ g_browser_process->platform_part()->browser_policy_connector_chromeos()-> |
+ GetDeviceCloudPolicyManager()->IsSharkRequisition(); |
+ |
+ if (is_shark && !remora_token_sent_) { |
+ // Fetch a second token for shark devices. |
+ remora_token_sent_ = true; |
+ SendEnrollmentAuthToken(token); |
+ actor_->FetchOAuthToken(); |
+ } else { |
+ RegisterForDevicePolicy(token); |
+ } |
} |
void EnrollmentScreen::OnRetry() { |
@@ -212,6 +233,10 @@ void EnrollmentScreen::RegisterForDevicePolicy(const std::string& token) { |
weak_ptr_factory_.GetWeakPtr())); |
} |
+void EnrollmentScreen::SendEnrollmentAuthToken(const std::string& token) { |
+ // TODO(achuith, zork): Send token via Bluetooth to remote device. |
+} |
+ |
void EnrollmentScreen::ShowEnrollmentStatusOnSuccess( |
const policy::EnrollmentStatus& status) { |
actor_->ShowEnrollmentStatus(status); |