Index: services/native_viewport/native_viewport_impl.h |
diff --git a/services/native_viewport/native_viewport_impl.h b/services/native_viewport/native_viewport_impl.h |
index da11d64b55ecd7d1af53443d81b9ead79203fc79..5485ee183c7200603f270357882073104fcfc4b3 100644 |
--- a/services/native_viewport/native_viewport_impl.h |
+++ b/services/native_viewport/native_viewport_impl.h |
@@ -8,6 +8,7 @@ |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
#include "cc/surfaces/surface_id.h" |
+#include "mojo/public/cpp/bindings/strong_binding.h" |
#include "mojo/services/gpu/public/interfaces/gpu.mojom.h" |
#include "mojo/services/native_viewport/public/interfaces/native_viewport.mojom.h" |
#include "mojo/services/surfaces/public/interfaces/surfaces.mojom.h" |
@@ -25,15 +26,27 @@ class ApplicationImpl; |
namespace native_viewport { |
class ViewportSurface; |
-class NativeViewportImpl : public mojo::InterfaceImpl<mojo::NativeViewport>, |
- public PlatformViewport::Delegate { |
+// A NativeViewportImpl is bound to a message pipe and to a PlatformViewport. |
+// The NativeViewportImpl's lifetime ends when either the message pipe is closed |
+// or the PlatformViewport informs the NativeViewportImpl that it has been |
+// destroyed. |
+class NativeViewportImpl : public mojo::NativeViewport, |
+ public PlatformViewport::Delegate, |
+ public mojo::ErrorHandler { |
+ using CreateCallback = mojo::Callback<void(uint64_t native_viewport_id, |
+ mojo::ViewportMetricsPtr metrics)>; |
+ using MetricsCallback = |
+ mojo::Callback<void(mojo::ViewportMetricsPtr metrics)>; |
+ |
public: |
- NativeViewportImpl(mojo::ApplicationImpl* app, bool is_headless); |
+ NativeViewportImpl(mojo::ApplicationImpl* app, |
+ bool is_headless, |
+ mojo::InterfaceRequest<mojo::NativeViewport> request); |
~NativeViewportImpl() override; |
// InterfaceImpl<NativeViewport> implementation. |
- void Create(mojo::SizePtr size, |
- const mojo::Callback<void(uint64_t)>& callback) override; |
+ void Create(mojo::SizePtr size, const CreateCallback& callback) override; |
+ void RequestMetrics(const MetricsCallback& callback) override; |
void Show() override; |
void Hide() override; |
void Close() override; |
@@ -48,22 +61,26 @@ class NativeViewportImpl : public mojo::InterfaceImpl<mojo::NativeViewport>, |
bool OnEvent(ui::Event* ui_event) override; |
void OnDestroyed() override; |
+ // mojo::ErrorHandler implementation. |
+ void OnConnectionError() override; |
+ |
void AckEvent(); |
private: |
- void ProcessOnMetricsChanged(); |
- |
bool is_headless_; |
scoped_ptr<PlatformViewport> platform_viewport_; |
scoped_ptr<ViewportSurface> viewport_surface_; |
uint64_t widget_id_; |
+ bool sent_metrics_; |
mojo::ViewportMetricsPtr metrics_; |
mojo::GpuPtr gpu_service_; |
mojo::SurfacePtr surface_; |
cc::SurfaceId child_surface_id_; |
bool waiting_for_event_ack_; |
- mojo::Callback<void(uint64_t)> create_callback_; |
+ CreateCallback create_callback_; |
+ MetricsCallback metrics_callback_; |
mojo::NativeViewportEventDispatcherPtr event_dispatcher_; |
+ mojo::Binding<mojo::NativeViewport> binding_; |
base::WeakPtrFactory<NativeViewportImpl> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(NativeViewportImpl); |