Chromium Code Reviews| Index: blimp/client/core/context/blimp_client_context_impl.cc |
| diff --git a/blimp/client/core/context/blimp_client_context_impl.cc b/blimp/client/core/context/blimp_client_context_impl.cc |
| index 81769e53483afa6bf70bf0211f742a2be050e0bc..b912edc8138c8133a7d9b6a775518b9dd92e49b7 100644 |
| --- a/blimp/client/core/context/blimp_client_context_impl.cc |
| +++ b/blimp/client/core/context/blimp_client_context_impl.cc |
| @@ -161,15 +161,9 @@ std::unique_ptr<BlimpContents> BlimpClientContextImpl::CreateBlimpContents( |
| } |
| void BlimpClientContextImpl::Connect() { |
| - if (!assignment_fetcher_) { |
| - assignment_fetcher_ = base::MakeUnique<AssignmentFetcher>( |
| - io_thread_task_runner_, file_thread_task_runner_, |
| - delegate_->CreateIdentityProvider(), GetAssignerURL(), |
| - base::Bind(&BlimpClientContextImpl::OnAssignmentReceived, |
| - weak_factory_.GetWeakPtr()), |
| - base::Bind(&BlimpClientContextDelegate::OnAuthenticationError, |
| - base::Unretained(delegate_))); |
| - } |
| + if (!assignment_fetcher_) |
| + CreateAssignmentFetcher(); |
| + |
| assignment_fetcher_->Fetch(); |
| } |
| @@ -187,6 +181,9 @@ BlimpClientContextImpl::CreateFeedbackData() { |
| } |
| IdentitySource* BlimpClientContextImpl::GetIdentitySource() { |
| + if (!assignment_fetcher_) |
| + CreateAssignmentFetcher(); |
| + |
| return assignment_fetcher_->GetIdentitySource(); |
| } |
| @@ -253,6 +250,22 @@ void BlimpClientContextImpl::DropConnection() { |
| FROM_HERE, base::Bind(&DropConnectionOnIOThread, net_components_.get())); |
| } |
| +void BlimpClientContextImpl::CreateAssignmentFetcher() { |
| + if (assignment_fetcher_) |
|
Khushal
2016/11/02 23:45:45
nit: Why do the if check at the call sites if you'
|
| + return; |
| + |
| + // |assignment_fetcher_| needs services from BlimpClientContextDelegate, so |
| + // it can't be created in the constructor. |
| + DCHECK(delegate_); |
| + assignment_fetcher_ = base::MakeUnique<AssignmentFetcher>( |
|
Khushal
2016/11/02 21:29:56
Can we create this in SetDelegate instead then? Ra
xingliu
2016/11/02 23:26:52
@nyquist, I think do it in SetDelegate makes sense
Khushal
2016/11/02 23:45:45
Definitely can't do without a |delegate_|, you nee
xingliu
2016/11/03 00:08:04
Yeah, agree.
Put it into SetDelegate. Since the de
|
| + io_thread_task_runner_, file_thread_task_runner_, |
| + delegate_->CreateIdentityProvider(), GetAssignerURL(), |
| + base::Bind(&BlimpClientContextImpl::OnAssignmentReceived, |
| + weak_factory_.GetWeakPtr()), |
| + base::Bind(&BlimpClientContextDelegate::OnAuthenticationError, |
| + base::Unretained(delegate_))); |
| +} |
| + |
| void BlimpClientContextImpl::OnImageDecodeError() { |
| // Currently we just drop the connection on image decoding error. |
| DropConnection(); |