OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef SKY_VIEWER_DOCUMENT_VIEW_H_ | |
6 #define SKY_VIEWER_DOCUMENT_VIEW_H_ | |
7 | |
8 #include "base/callback.h" | |
9 #include "base/memory/weak_ptr.h" | |
10 #include "mojo/public/cpp/application/lazy_interface_ptr.h" | |
11 #include "mojo/public/cpp/application/service_provider_impl.h" | |
12 #include "mojo/public/cpp/bindings/strong_binding.h" | |
13 #include "mojo/public/interfaces/application/application.mojom.h" | |
14 #include "mojo/services/content_handler/public/interfaces/content_handler.mojom.
h" | |
15 #include "mojo/services/navigation/public/interfaces/navigation.mojom.h" | |
16 #include "mojo/services/network/public/interfaces/url_loader.mojom.h" | |
17 #include "mojo/services/service_registry/public/interfaces/service_registry.mojo
m.h" | |
18 #include "mojo/services/view_manager/public/cpp/view_manager_client_factory.h" | |
19 #include "mojo/services/view_manager/public/cpp/view_manager_delegate.h" | |
20 #include "mojo/services/view_manager/public/cpp/view_observer.h" | |
21 #include "sky/engine/public/platform/ServiceProvider.h" | |
22 #include "sky/engine/public/sky/sky_view.h" | |
23 #include "sky/engine/public/sky/sky_view_client.h" | |
24 #include "sky/services/testing/test_harness.mojom.h" | |
25 #include "sky/viewer/compositor/layer_client.h" | |
26 #include "sky/viewer/compositor/layer_host_client.h" | |
27 #include "ui/events/gestures/gesture_types.h" | |
28 | |
29 namespace mojo { | |
30 class ViewManager; | |
31 class View; | |
32 } | |
33 | |
34 namespace sky { | |
35 class Rasterizer; | |
36 class RasterizerBitmap; | |
37 class Layer; | |
38 class LayerHost; | |
39 class DartLibraryProviderImpl; | |
40 | |
41 class DocumentView : public blink::ServiceProvider, | |
42 public blink::SkyViewClient, | |
43 public mojo::ViewManagerDelegate, | |
44 public mojo::ViewObserver, | |
45 public sky::LayerClient, | |
46 public sky::LayerHostClient, | |
47 public ui::GestureConsumer { | |
48 public: | |
49 DocumentView(mojo::InterfaceRequest<mojo::ServiceProvider> services, | |
50 mojo::ServiceProviderPtr exported_services, | |
51 mojo::URLResponsePtr response, | |
52 mojo::Shell* shell); | |
53 ~DocumentView() override; | |
54 | |
55 base::WeakPtr<DocumentView> GetWeakPtr(); | |
56 | |
57 mojo::Shell* shell() const { return shell_; } | |
58 | |
59 // sky::LayerHostClient | |
60 mojo::Shell* GetShell() override; | |
61 void BeginFrame(base::TimeTicks frame_time) override; | |
62 void OnSurfaceIdAvailable(mojo::SurfaceIdPtr surface_id) override; | |
63 // sky::LayerClient | |
64 void PaintContents(SkCanvas* canvas, const gfx::Rect& clip) override; | |
65 | |
66 // SkyViewClient methods: | |
67 void ScheduleFrame() override; | |
68 | |
69 void StartDebuggerInspectorBackend(); | |
70 | |
71 void GetPixelsForTesting(std::vector<unsigned char>* pixels); | |
72 | |
73 TestHarnessPtr TakeTestHarness(); | |
74 mojo::ScopedMessagePipeHandle TakeServicesProvidedToEmbedder(); | |
75 mojo::ScopedMessagePipeHandle TakeServicesProvidedByEmbedder(); | |
76 mojo::ScopedMessagePipeHandle TakeServiceRegistry(); | |
77 | |
78 private: | |
79 // SkyViewClient methods: | |
80 void DidCreateIsolate(Dart_Isolate isolate) override; | |
81 | |
82 // Services methods: | |
83 mojo::NavigatorHost* NavigatorHost() override; | |
84 | |
85 // ViewManagerDelegate methods: | |
86 void OnEmbed(mojo::View* root, | |
87 mojo::InterfaceRequest<mojo::ServiceProvider> services, | |
88 mojo::ServiceProviderPtr exposed_services) override; | |
89 void OnViewManagerDisconnected(mojo::ViewManager* view_manager) override; | |
90 | |
91 // ViewObserver methods: | |
92 void OnViewBoundsChanged(mojo::View* view, | |
93 const mojo::Rect& old_bounds, | |
94 const mojo::Rect& new_bounds) override; | |
95 void OnViewViewportMetricsChanged( | |
96 mojo::View* view, | |
97 const mojo::ViewportMetrics& old_metrics, | |
98 const mojo::ViewportMetrics& new_metrics) override; | |
99 void OnViewFocusChanged(mojo::View* gained_focus, | |
100 mojo::View* lost_focus) override; | |
101 void OnViewDestroyed(mojo::View* view) override; | |
102 void OnViewInputEvent(mojo::View* view, const mojo::EventPtr& event) override; | |
103 | |
104 void Load(mojo::URLResponsePtr response); | |
105 float GetDevicePixelRatio() const; | |
106 scoped_ptr<Rasterizer> CreateRasterizer(); | |
107 | |
108 void UpdateRootSizeAndViewportMetrics(const mojo::Rect& new_bounds); | |
109 | |
110 void InitServiceRegistry(); | |
111 | |
112 mojo::URLResponsePtr response_; | |
113 mojo::ServiceProviderImpl exported_services_; | |
114 mojo::ServiceProviderPtr imported_services_; | |
115 mojo::InterfaceRequest<mojo::ServiceProvider> services_provided_to_embedder_; | |
116 mojo::ServiceProviderPtr services_provided_by_embedder_; | |
117 mojo::Shell* shell_; | |
118 TestHarnessPtr test_harness_; | |
119 mojo::NavigatorHostPtr navigator_host_; | |
120 std::unique_ptr<blink::SkyView> sky_view_; | |
121 mojo::View* root_; | |
122 mojo::ViewManagerClientFactory view_manager_client_factory_; | |
123 scoped_ptr<DartLibraryProviderImpl> library_provider_; | |
124 scoped_ptr<LayerHost> layer_host_; | |
125 scoped_refptr<Layer> root_layer_; | |
126 RasterizerBitmap* bitmap_rasterizer_; // Used for pixel tests. | |
127 mojo::ServiceRegistryPtr service_registry_; | |
128 scoped_ptr<mojo::StrongBinding<mojo::ServiceProvider>> | |
129 service_registry_service_provider_binding_; | |
130 | |
131 base::WeakPtrFactory<DocumentView> weak_factory_; | |
132 | |
133 DISALLOW_COPY_AND_ASSIGN(DocumentView); | |
134 }; | |
135 | |
136 } // namespace sky | |
137 | |
138 #endif // SKY_VIEWER_DOCUMENT_VIEW_H_ | |
OLD | NEW |