Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3145)

Unified Diff: blimp/client/core/blimp_client_context_impl.cc

Issue 2300493002: Move glue code of blob channel to blimp_client_context_impl. (Closed)
Patch Set: Refactor the code a bit. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 009c15107db20ac43d6f0cce13302fb02a91d964..7f2b2453c212bd0c66cfd04ca323709724882e48 100644
--- a/blimp/client/core/blimp_client_context_impl.cc
+++ b/blimp/client/core/blimp_client_context_impl.cc
@@ -8,6 +8,7 @@
#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
#include "base/threading/sequenced_task_runner_handle.h"
+#include "blimp/client/core/compositor/decoding_image_generator.h"
#include "blimp/client/core/contents/blimp_contents_impl.h"
#include "blimp/client/core/contents/blimp_contents_manager.h"
#include "blimp/client/core/contents/ime_feature.h"
@@ -15,6 +16,10 @@
#include "blimp/client/core/contents/tab_control_feature.h"
#include "blimp/client/core/session/cross_thread_network_event_observer.h"
#include "blimp/client/public/blimp_client_context_delegate.h"
+#include "blimp/common/blob_cache/in_memory_blob_cache.h"
+#include "blimp/net/blob_channel/blob_channel_receiver.h"
+#include "blimp/net/blob_channel/helium_blob_receiver_delegate.h"
+#include "third_party/skia/include/core/SkGraphics.h"
#if defined(OS_ANDROID)
#include "blimp/client/core/android/blimp_client_context_impl_android.h"
@@ -24,10 +29,20 @@ namespace blimp {
namespace client {
namespace {
+
+SkImageGenerator* CreateImageGenerator(SkData* data) {
+ return blimp::client::DecodingImageGenerator::create(data);
+}
+
const char kDefaultAssignerUrl[] =
"https://blimp-pa.googleapis.com/v1/assignment";
} // namespace
+// static
+void BlimpClientContextImpl::SetImageGeneratorFromEncodedFactory() {
+ SkGraphics::SetImageGeneratorFromEncodedFactory(CreateImageGenerator);
+}
+
// This function is declared in //blimp/client/public/blimp_client_context.h,
// and either this function or the one in
// //blimp/client/core/dummy_blimp_client_context.cc should be linked in to
@@ -68,6 +83,8 @@ BlimpClientContextImpl::BlimpClientContextImpl(
thread_pipe_manager_ = base::MakeUnique<ThreadPipeManager>(
io_thread_task_runner_, net_components_->GetBrowserConnectionHandler());
+ SetupBlobChannel();
+
RegisterFeatures();
// Initialize must only be posted after the calls features have been
@@ -75,6 +92,8 @@ BlimpClientContextImpl::BlimpClientContextImpl(
io_thread_task_runner_->PostTask(
FROM_HERE, base::Bind(&ClientNetworkComponents::Initialize,
base::Unretained(net_components_.get())));
+
+ SetImageGeneratorFromEncodedFactory();
Khushal 2016/08/31 03:55:08 I checked, we don't need to do this. skia calls ou
David Trainor- moved to gerrit 2016/08/31 05:40:57 Looked through the code quickly as well and it loo
nyquist 2016/09/01 00:26:23 I wonder, are there any times where we have to re-
xingliu 2016/09/01 02:08:09 I'll remove this.
}
BlimpClientContextImpl::~BlimpClientContextImpl() {
@@ -163,6 +182,26 @@ void BlimpClientContextImpl::RegisterFeatures() {
tab_control_feature_->set_outgoing_message_processor(
thread_pipe_manager_->RegisterFeature(BlimpMessage::kTabControl,
tab_control_feature_.get()));
+ thread_pipe_manager_->RegisterFeature(BlimpMessage::kBlobChannel,
David Trainor- moved to gerrit 2016/08/31 05:40:57 let's try to keep these in alphabetical order for
xingliu 2016/09/01 02:08:10 Done.
+ blob_delegate_);
+}
+
+void BlimpClientContextImpl::SetupBlobChannel() {
+ std::unique_ptr<HeliumBlobReceiverDelegate> blob_delegate(
+ new HeliumBlobReceiverDelegate);
Khushal 2016/08/31 03:55:08 nit: prefer MakeUnique over new Foo. For this and
xingliu 2016/09/01 02:08:09 Changed the first one. Didn't change the second on
+ blob_delegate_ = blob_delegate.get();
Khushal 2016/08/31 03:55:08 Do we actually need to cache this pointer? We only
David Trainor- moved to gerrit 2016/08/31 05:40:57 Would it be cleaner to expose a BlobChannelReceive
xingliu 2016/09/01 02:08:10 RegisterFeatures needs BlimpMessageProcessor*, Hel
Khushal 2016/09/01 02:10:10 Yeah, that's cool too. Or just return the receiver
xingliu 2016/09/01 21:03:34 For test, they have a mock message processor.
+ blob_receiver_ = BlobChannelReceiver::Create(
+ base::WrapUnique(new InMemoryBlobCache), std::move(blob_delegate));
+ blob_image_processor_.set_blob_receiver(blob_receiver_.get());
+ blob_image_processor_.set_error_delegate(this);
+}
+
+void BlimpClientContextImpl::OnImageDecodeError() {
+ io_thread_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(
+ &BrowserConnectionHandler::DropCurrentConnection,
+ base::Unretained(net_components_->GetBrowserConnectionHandler())));
}
void BlimpClientContextImpl::CreateIdentitySource() {

Powered by Google App Engine
This is Rietveld 408576698