| 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..c3209ca4a48cbefd356a4580bf51f8acb1d398cc 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 calls features have been
|
| + // registered.
|
| + 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
|
|
|