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

Side by Side Diff: mojo/services/html_viewer/weblayertreeview_impl.h

Issue 558343004: Compositor bindings for mojo html_viewer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo_view_manager_surface
Patch Set: Add missing m/s/p/cpp/v_m -> m/s/p/cpp/surfaces dep in GN Created 6 years, 3 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 unified diff | Download patch
OLDNEW
(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_
OLDNEW
« no previous file with comments | « mojo/services/html_viewer/html_viewer.cc ('k') | mojo/services/html_viewer/weblayertreeview_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698