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

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

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.h
diff --git a/blimp/client/core/blimp_client_context_impl.h b/blimp/client/core/blimp_client_context_impl.h
index 7c8d6e588929159df70e86cd3013473edda85b79..dad7ec36d2d75fd2a1a5862c45ebf7158147ff24 100644
--- a/blimp/client/core/blimp_client_context_impl.h
+++ b/blimp/client/core/blimp_client_context_impl.h
@@ -12,6 +12,7 @@
#include "base/memory/weak_ptr.h"
#include "base/single_thread_task_runner.h"
#include "base/threading/thread.h"
+#include "blimp/client/core/compositor/blob_image_serialization_processor.h"
#include "blimp/client/core/session/client_network_components.h"
#include "blimp/client/core/session/identity_source.h"
#include "blimp/client/core/session/network_event_observer.h"
@@ -22,6 +23,9 @@
#include "url/gurl.h"
namespace blimp {
+
+class HeliumBlobReceiverDelegate;
+
namespace client {
class BlimpContentsManager;
@@ -31,9 +35,15 @@ class TabControlFeature;
// BlimpClientContextImpl is the implementation of the main context-class for
// the blimp client.
-class BlimpClientContextImpl : public BlimpClientContext,
- public NetworkEventObserver {
+class BlimpClientContextImpl
+ : public BlimpClientContext,
+ public BlobImageSerializationProcessor::ErrorDelegate,
+ public NetworkEventObserver {
public:
+ // Set ImageGenerator factory for Skia, can also be called by
+ // blimp_startup.cc in blimp/client/app.
+ static void SetImageGeneratorFromEncodedFactory();
+
// The |io_thread_task_runner| must be the task runner to use for IO
// operations.
// The |file_thread_task_runner| must be the task runner to use for file
@@ -79,6 +89,12 @@ class BlimpClientContextImpl : public BlimpClientContext,
void RegisterFeatures();
+ // Setup blob channel.
David Trainor- moved to gerrit 2016/08/31 05:40:57 I do this a lot too, but maybe just remove this co
xingliu 2016/09/01 02:08:10 Done.
+ void SetupBlobChannel();
+
+ // BlobImageSerializationProcessor::ErrorDelegate implementation.
+ void OnImageDecodeError() override;
+
// Provides functionality from the embedder.
BlimpClientContextDelegate* delegate_ = nullptr;
@@ -105,6 +121,16 @@ class BlimpClientContextImpl : public BlimpClientContext,
std::unique_ptr<ThreadPipeManager> thread_pipe_manager_;
+ // Receives blob BlimpMessages and relays them to BlobChannelReceiver.
+ // Owned by BlobChannelReceiver, therefore stored as a raw pointer here.
+ HeliumBlobReceiverDelegate* blob_delegate_ = nullptr;
+
+ // Retrieves and decodes image data from |blob_receiver_|. Must outlive
+ // |blob_receiver_|.
+ BlobImageSerializationProcessor blob_image_processor_;
+
+ std::unique_ptr<BlobChannelReceiver> blob_receiver_;
+
base::WeakPtrFactory<BlimpClientContextImpl> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(BlimpClientContextImpl);

Powered by Google App Engine
This is Rietveld 408576698