Index: blimp/client/core/blimp_client_context_impl.cc |
diff --git a/blimp/client/core/blimp_client_context_impl.cc b/blimp/client/core/blimp_client_context_impl.cc |
index f90b1dc02b222929b3e0851a1a240809064d7aa0..46ba505076f7823a8e839e48d8fbc31b10051ae3 100644 |
--- a/blimp/client/core/blimp_client_context_impl.cc |
+++ b/blimp/client/core/blimp_client_context_impl.cc |
@@ -81,7 +81,22 @@ std::unique_ptr<BlimpContents> BlimpClientContextImpl::CreateBlimpContents() { |
return blimp_contents; |
} |
-void BlimpClientContextImpl::Connect(const std::string& client_auth_token) { |
+void BlimpClientContextImpl::Connect() { |
+ // Lazy initialization of IdentitySource. |
+ if (!identity_source_) { |
+ identity_source_ = base::MakeUnique<IdentitySource>( |
+ delegate_, |
+ base::Bind(&BlimpClientContextImpl::ConnectToAssignmentSource, |
+ base::Unretained(this))); |
+ } |
+ |
+ // Start Blimp authentication flow. The OAuth2 token will be used in |
+ // assignment source. |
+ identity_source_->Connect(); |
+} |
+ |
+void BlimpClientContextImpl::ConnectToAssignmentSource( |
+ const std::string& client_auth_token) { |
if (!assignment_source_) { |
assignment_source_.reset(new AssignmentSource( |
GetAssignerURL(), io_thread_task_runner_, file_thread_task_runner_)); |