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 MOJO_SERVICES_HTML_VIEWER_WEBLAYERTREEVIEW_IMPL_H_ | |
6 #define MOJO_SERVICES_HTML_VIEWER_WEBLAYERTREEVIEW_IMPL_H_ | |
7 | |
8 #include "base/memory/ref_counted.h" | |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "base/memory/weak_ptr.h" | |
11 #include "base/single_thread_task_runner.h" | |
12 #include "cc/trees/layer_tree_host_client.h" | |
13 #include "mojo/cc/output_surface_mojo.h" | |
14 #include "mojo/services/public/interfaces/gpu/gpu.mojom.h" | |
15 #include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h" | |
16 #include "third_party/WebKit/public/platform/WebLayerTreeView.h" | |
17 | |
18 namespace base { | |
19 class MessageLoopProxy; | |
20 } | |
21 | |
22 namespace blink { | |
23 class WebWidget; | |
24 } | |
25 | |
26 namespace cc { | |
27 class LayerTreeHost; | |
28 } | |
29 | |
30 namespace mojo { | |
31 class View; | |
32 | |
33 class WebLayerTreeViewImpl : public blink::WebLayerTreeView, | |
34 public cc::LayerTreeHostClient, | |
35 public OutputSurfaceMojoClient { | |
36 public: | |
37 WebLayerTreeViewImpl( | |
38 scoped_refptr<base::MessageLoopProxy> compositor_message_loop_proxy, | |
39 SurfacesServicePtr surfaces_service, | |
40 GpuPtr gpu_service); | |
41 virtual ~WebLayerTreeViewImpl(); | |
42 | |
43 void set_widget(blink::WebWidget* widget) { widget_ = widget; } | |
44 void set_view(View* view) { view_ = view; } | |
45 | |
46 // cc::LayerTreeHostClient implementation. | |
47 virtual void WillBeginMainFrame(int frame_id) OVERRIDE; | |
48 virtual void DidBeginMainFrame() OVERRIDE; | |
49 virtual void BeginMainFrame(const cc::BeginFrameArgs& args) OVERRIDE; | |
50 virtual void Layout() OVERRIDE; | |
51 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | |
52 float page_scale, | |
53 float top_controls_delta) OVERRIDE; | |
54 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( | |
55 bool fallback) OVERRIDE; | |
56 virtual void DidInitializeOutputSurface() OVERRIDE; | |
57 virtual void WillCommit() OVERRIDE; | |
58 virtual void DidCommit() OVERRIDE; | |
59 virtual void DidCommitAndDrawFrame() OVERRIDE; | |
60 virtual void DidCompleteSwapBuffers() OVERRIDE; | |
61 virtual void RateLimitSharedMainThreadContext() OVERRIDE {} | |
62 | |
63 // blink::WebLayerTreeView implementation. | |
64 virtual void setSurfaceReady() OVERRIDE; | |
65 virtual void setRootLayer(const blink::WebLayer& layer) OVERRIDE; | |
66 virtual void clearRootLayer() OVERRIDE; | |
67 virtual void setViewportSize( | |
68 const blink::WebSize& device_viewport_size) OVERRIDE; | |
69 virtual blink::WebSize deviceViewportSize() const OVERRIDE; | |
70 virtual void setDeviceScaleFactor(float) OVERRIDE; | |
71 virtual float deviceScaleFactor() const OVERRIDE; | |
72 virtual void setBackgroundColor(blink::WebColor color) OVERRIDE; | |
73 virtual void setHasTransparentBackground( | |
74 bool has_transparent_background) OVERRIDE; | |
75 virtual void setOverhangBitmap(const SkBitmap& bitmap) OVERRIDE; | |
76 virtual void setVisible(bool visible) OVERRIDE; | |
77 virtual void setPageScaleFactorAndLimits(float page_scale_factor, | |
78 float minimum, | |
79 float maximum) OVERRIDE; | |
80 virtual void startPageScaleAnimation(const blink::WebPoint& destination, | |
81 bool use_anchor, | |
82 float new_page_scale, | |
83 double duration_sec) OVERRIDE; | |
84 virtual void heuristicsForGpuRasterizationUpdated(bool matches_heuristic) {} | |
85 virtual void setTopControlsContentOffset(float offset) {} | |
86 virtual void setNeedsAnimate() OVERRIDE; | |
87 virtual bool commitRequested() const OVERRIDE; | |
88 virtual void didStopFlinging() {} | |
89 virtual void compositeAndReadbackAsync( | |
90 blink::WebCompositeAndReadbackAsyncCallback* callback) {} | |
91 virtual void finishAllRendering() OVERRIDE; | |
92 virtual void setDeferCommits(bool defer_commits) {} | |
93 virtual void registerForAnimations(blink::WebLayer* layer) OVERRIDE; | |
94 virtual void registerViewportLayers( | |
95 const blink::WebLayer* page_scale_layer, | |
96 const blink::WebLayer* inner_viewport_scroll_layer, | |
97 const blink::WebLayer* outer_viewport_scroll_layer) OVERRIDE; | |
98 virtual void clearViewportLayers() OVERRIDE; | |
99 virtual void registerSelection(const blink::WebSelectionBound& start, | |
100 const blink::WebSelectionBound& end) {} | |
101 virtual void clearSelection() {} | |
102 virtual void setShowFPSCounter(bool) {} | |
103 virtual void setShowPaintRects(bool) {} | |
104 virtual void setShowDebugBorders(bool) {} | |
105 virtual void setContinuousPaintingEnabled(bool) {} | |
106 virtual void setShowScrollBottleneckRects(bool) {} | |
107 | |
108 // OutputSurfaceMojoClient implementation. | |
109 virtual void DidCreateSurface(cc::SurfaceId id) OVERRIDE; | |
110 | |
111 private: | |
112 void OnSurfaceConnectionCreated(SurfacePtr surface, uint32_t id_namespace); | |
113 void DidCreateSurfaceOnMainThread(cc::SurfaceId id); | |
114 | |
115 // widget_ and view_ will outlive us. | |
116 blink::WebWidget* widget_; | |
117 View* view_; | |
118 scoped_ptr<cc::LayerTreeHost> layer_tree_host_; | |
119 SurfacesServicePtr surfaces_service_; | |
120 scoped_ptr<cc::OutputSurface> output_surface_; | |
121 GpuPtr gpu_service_; | |
122 scoped_refptr<base::SingleThreadTaskRunner> | |
123 main_thread_compositor_task_runner_; | |
124 base::WeakPtr<WebLayerTreeViewImpl> main_thread_bound_weak_ptr_; | |
125 | |
126 base::WeakPtrFactory<WebLayerTreeViewImpl> weak_factory_; | |
127 DISALLOW_COPY_AND_ASSIGN(WebLayerTreeViewImpl); | |
128 }; | |
129 | |
130 } // namespace mojo | |
131 | |
132 #endif // MOJO_SERVICES_HTML_VIEWER_WEBLAYERTREEVIEW_IMPL_H_ | |
OLD | NEW |