Chromium Code Reviews| Index: blimp/client/core/contents/blimp_contents_impl.h |
| diff --git a/blimp/client/core/contents/blimp_contents_impl.h b/blimp/client/core/contents/blimp_contents_impl.h |
| index 1110ccde6761bcdddd12dd9fc5bad20774843d16..e733e5a5f35323eafad1e1511f9a035a99d14be9 100644 |
| --- a/blimp/client/core/contents/blimp_contents_impl.h |
| +++ b/blimp/client/core/contents/blimp_contents_impl.h |
| @@ -9,7 +9,10 @@ |
| #include "base/observer_list.h" |
| #include "blimp/client/core/contents/blimp_navigation_controller_delegate.h" |
| #include "blimp/client/core/contents/blimp_navigation_controller_impl.h" |
| +#include "blimp/client/core/render_widget/blimp_render_widget_delegate.h" |
| +#include "blimp/client/core/render_widget/render_widget_feature.h" |
| #include "blimp/client/public/contents/blimp_contents.h" |
| +#include "ui/gfx/native_widget_types.h" |
| #include "url/gurl.h" |
| #if defined(OS_ANDROID) |
| @@ -25,11 +28,20 @@ class BlimpContentsImplAndroid; |
| class BlimpContentsObserver; |
| class BlimpNavigationController; |
| - |
| -class BlimpContentsImpl : public BlimpContents, |
| - public BlimpNavigationControllerDelegate { |
| +class CompositorDepsProvider; |
| +class RenderWidgetFeature; |
| + |
| +// BlimpContentsImpl is the implementation of the core class in |
| +// //blimp/client/core, the BlimpContents. |
| +class BlimpContentsImpl |
| + : public BlimpContents, |
| + public BlimpNavigationControllerDelegate, |
| + public BlimpRenderWidgetDelegate, |
| + public RenderWidgetFeature::RenderWidgetFeatureDelegate { |
| public: |
| - explicit BlimpContentsImpl(int id); |
| + BlimpContentsImpl(int id, |
| + CompositorDepsProvider* compositor_deps_provider, |
| + RenderWidgetFeature* render_widget_feature); |
| ~BlimpContentsImpl() override; |
| #if defined(OS_ANDROID) |
| @@ -41,6 +53,7 @@ class BlimpContentsImpl : public BlimpContents, |
| BlimpNavigationControllerImpl& GetNavigationController() override; |
| void AddObserver(BlimpContentsObserver* observer) override; |
| void RemoveObserver(BlimpContentsObserver* observer) override; |
| + void SetVisible(bool visible) override; |
| // Check if some observer is in the observer list. |
| bool HasObserver(BlimpContentsObserver* observer); |
| @@ -50,17 +63,76 @@ class BlimpContentsImpl : public BlimpContents, |
| int id() { return id_; } |
| + // BlimpRenderWidgetDelegate implementation. |
| + void SendWebGestureEvent( |
| + BlimpRenderWidget* render_widget, |
| + const blink::WebGestureEvent& gesture_event) override; |
| + void SendCompositorMessage( |
| + BlimpRenderWidget* render_widget, |
| + const cc::proto::CompositorMessage& message) override; |
| + void CompositorDidCompleteSwapBuffers() override; |
| + |
| + // RenderWidgetFeatureDelegate implementation. |
| + // TODO(mlliu): Should go the BlimpContentsManager when we have that ready. |
| + void OnRenderWidgetCreated(int render_widget_id) override; |
| + void OnRenderWidgetInitialized(int render_widget_id) override; |
| + void OnRenderWidgetDeleted(int render_widget_id) override; |
| + void OnCompositorMessageReceived( |
| + int render_widget_id, |
| + std::unique_ptr<cc::proto::CompositorMessage> message) override; |
| + |
| + void SetAcceleratedWidget(gfx::AcceleratedWidget widget); |
|
nyquist
2016/08/12 07:34:28
This seems to be called from the linux app for now
Khushal
2016/08/13 00:03:22
It's used by both linux and android but Chrome wou
|
| + |
| + void set_did_complete_swap_buffers_callback(base::Closure callback) { |
| + did_complete_swap_buffers_ = callback; |
| + } |
| + |
| + // Returns the currently active widget that holds the content for this |
| + // BlimpContents. Can be null. |
| + BlimpRenderWidget* GetActiveWidget() const; |
| + |
| + // Returns the widget for the |render_widget_id|. Will return nullptr if |
| + // no widget is found. |
| + BlimpRenderWidget* GetWidgetForId(int render_widget_id); |
| + |
| + protected: |
| + // virtual for testing. |
| + virtual std::unique_ptr<BlimpRenderWidget> CreateBlimpRenderWidget( |
| + int32_t render_widget_id, |
| + CompositorDepsProvider* compositor_deps_provider, |
| + BlimpRenderWidgetDelegate* delegate); |
| + |
| private: |
| + // The id is assigned during contents creation. It is used by |
| + // BlimpContentsManager to control the life time of the its observer. |
| + int id_; |
| + |
| + CompositorDepsProvider* compositor_deps_provider_; |
| + |
| + // The bridge to the network layer that does the proto/RenderWidget id work. |
| + // TODO(mlliu): Should move this to BlimpContentsManager when its ready. |
| + RenderWidgetFeature* render_widget_feature_; |
| + |
| + bool visible_; |
| + gfx::AcceleratedWidget window_; |
| + |
| + base::Closure did_complete_swap_buffers_; |
| + |
| + // A map of render_widget_ids to the BlimpRenderWidget instance. |
| + typedef std::map<int, std::unique_ptr<BlimpRenderWidget>> RenderWidgetMap; |
| + RenderWidgetMap render_widgets_; |
| + |
| + // The |active_widget_| represents the widget from the RenderWidgetMap |
| + // that is currently visible. It corresponds to the render widget currently |
| + // initialized on the engine. |
| + BlimpRenderWidget* active_widget_; |
| + |
| // Handles the back/forward list and loading URLs. |
| BlimpNavigationControllerImpl navigation_controller_; |
| // A list of all the observers of this BlimpContentsImpl. |
| base::ObserverList<BlimpContentsObserver> observers_; |
| - // The id is assigned during contents creation. It is used by |
| - // BlimpContentsManager to control the life time of the its observer. |
| - int id_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(BlimpContentsImpl); |
| }; |