Chromium Code Reviews| 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 115fd075678d20dca13bda6318348a8395742519..c2e4f3866311e135dc4d3d292fb572f141d2c77a 100644 |
| --- a/blimp/client/core/blimp_client_context_impl.cc |
| +++ b/blimp/client/core/blimp_client_context_impl.cc |
| @@ -4,9 +4,13 @@ |
| #include "blimp/client/core/blimp_client_context_impl.h" |
| +#include "base/bind.h" |
| #include "base/memory/ptr_util.h" |
| +#include "base/message_loop/message_loop.h" |
| #include "base/supports_user_data.h" |
| +#include "base/threading/sequenced_task_runner_handle.h" |
| #include "blimp/client/core/contents/blimp_contents_impl.h" |
| +#include "blimp/client/core/session/cross_thread_network_event_observer.h" |
| #include "blimp/client/public/blimp_client_context_delegate.h" |
| #if defined(OS_ANDROID) |
| @@ -29,13 +33,37 @@ const char kBlimpClientContextImplAndroidKey[] = |
| // //blimp/client/core/dummy_blimp_client_context.cc should be linked in to |
| // any binary using BlimpClientContext::Create. |
| // static |
| -BlimpClientContext* BlimpClientContext::Create() { |
| - return new BlimpClientContextImpl(); |
| +BlimpClientContext* BlimpClientContext::Create( |
| + scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner) { |
| + return new BlimpClientContextImpl(io_thread_task_runner); |
| } |
| -BlimpClientContextImpl::BlimpClientContextImpl() : BlimpClientContext() {} |
| +BlimpClientContextImpl::BlimpClientContextImpl( |
| + scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner) |
| + : BlimpClientContext(), |
| + io_thread_task_runner_(io_thread_task_runner), |
| + weak_factory_(this) { |
| + blimp_connection_statistics_ = new BlimpConnectionStatistics(); |
| + net_components_.reset(new ClientNetworkComponents( |
| + base::MakeUnique<CrossThreadNetworkEventObserver>( |
| + weak_factory_.GetWeakPtr(), base::SequencedTaskRunnerHandle::Get()), |
| + base::WrapUnique(blimp_connection_statistics_))); |
| + |
| + // The |thread_pipe_manager_| must be set up correctly before features are |
| + // registered. |
| + thread_pipe_manager_ = base::MakeUnique<ThreadPipeManager>( |
| + io_thread_task_runner_, net_components_->GetBrowserConnectionHandler()); |
| + |
| + // Initialize must only be posted after the RegisterFeature calls have |
|
Kevin M
2016/08/02 19:55:40
RegisterFeature() isn't a thing anymore?
nyquist
2016/08/02 21:47:04
Done.
|
| + // completed. |
| + io_thread_task_runner_->PostTask( |
| + FROM_HERE, base::Bind(&ClientNetworkComponents::Initialize, |
| + base::Unretained(net_components_.get()))); |
| +} |
| -BlimpClientContextImpl::~BlimpClientContextImpl() {} |
| +BlimpClientContextImpl::~BlimpClientContextImpl() { |
| + io_thread_task_runner_->DeleteSoon(FROM_HERE, net_components_.release()); |
| +} |
| #if defined(OS_ANDROID) |
| @@ -66,10 +94,14 @@ void BlimpClientContextImpl::SetDelegate(BlimpClientContextDelegate* delegate) { |
| std::unique_ptr<BlimpContents> BlimpClientContextImpl::CreateBlimpContents() { |
| std::unique_ptr<BlimpContents> blimp_contents = |
| - base::WrapUnique(new BlimpContentsImpl); |
| + base::MakeUnique<BlimpContentsImpl>(); |
| delegate_->AttachBlimpContentsHelpers(blimp_contents.get()); |
| return blimp_contents; |
| } |
| +void BlimpClientContextImpl::OnConnected() {} |
| + |
| +void BlimpClientContextImpl::OnDisconnected(int result) {} |
| + |
| } // namespace client |
| } // namespace blimp |