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

Side by Side Diff: sky/viewer/platform/weblayertreeview_impl.h

Issue 752683002: Break Sky's dependency on cc (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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
« no previous file with comments | « sky/viewer/platform/platform_impl.cc ('k') | sky/viewer/platform/weblayertreeview_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 SKY_VIEWER_PLATFORM_WEBLAYERTREEVIEW_IMPL_H_
6 #define SKY_VIEWER_PLATFORM_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/layers/content_layer.h"
13 #include "cc/layers/content_layer_client.h"
14 #include "cc/trees/layer_tree_host_client.h"
15 #include "mojo/cc/output_surface_mojo.h"
16 #include "mojo/services/public/interfaces/gpu/gpu.mojom.h"
17 #include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h"
18 #include "sky/engine/public/platform/WebLayerTreeView.h"
19
20 namespace base {
21 class MessageLoopProxy;
22 }
23
24 namespace blink {
25 class WebWidget;
26 }
27
28 namespace cc {
29 class LayerTreeHost;
30 }
31
32 namespace mojo {
33 class View;
34 }
35
36 namespace sky {
37
38 class WebLayerTreeViewImpl : public blink::WebLayerTreeView,
39 public cc::LayerTreeHostClient,
40 public cc::ContentLayerClient,
41 public mojo::OutputSurfaceMojoClient {
42 public:
43 WebLayerTreeViewImpl(
44 scoped_refptr<base::MessageLoopProxy> compositor_message_loop_proxy,
45 mojo::SurfacesServicePtr surfaces_service,
46 mojo::GpuPtr gpu_service);
47 virtual ~WebLayerTreeViewImpl();
48
49 void set_widget(blink::WebWidget* widget);
50 void set_view(mojo::View* view) { view_ = view; }
51
52 // cc::LayerTreeHostClient implementation.
53 virtual void WillBeginMainFrame(int frame_id) override;
54 virtual void DidBeginMainFrame() override;
55 virtual void BeginMainFrame(const cc::BeginFrameArgs& args) override;
56 virtual void Layout() override;
57 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
58 float page_scale,
59 float top_controls_delta) override;
60 virtual void ApplyViewportDeltas(const gfx::Vector2d& inner_delta,
61 const gfx::Vector2d& outer_delta,
62 float page_scale,
63 float top_controls_delta) override;
64 virtual void RequestNewOutputSurface(bool fallback) override;
65 virtual void DidInitializeOutputSurface() override;
66 virtual void WillCommit() override;
67 virtual void DidCommit() override;
68 virtual void DidCommitAndDrawFrame() override;
69 virtual void DidCompleteSwapBuffers() override;
70 virtual void RateLimitSharedMainThreadContext() override {}
71
72 // cc::ContentLayerClient
73 void PaintContents(SkCanvas* canvas,
74 const gfx::Rect& clip,
75 GraphicsContextStatus gc_status) override;
76 bool FillsBoundsCompletely() const override;
77
78 // blink::WebLayerTreeView implementation.
79 virtual void setSurfaceReady() override;
80 virtual void setRootLayer(const blink::WebLayer& layer) override;
81 virtual void clearRootLayer() override;
82 virtual void setViewportSize(
83 const blink::WebSize& device_viewport_size) override;
84 virtual blink::WebSize deviceViewportSize() const override;
85 virtual void setDeviceScaleFactor(float) override;
86 virtual float deviceScaleFactor() const override;
87 virtual void setBackgroundColor(blink::WebColor color) override;
88 virtual void setHasTransparentBackground(
89 bool has_transparent_background) override;
90 virtual void setOverhangBitmap(const SkBitmap& bitmap) override;
91 virtual void setVisible(bool visible) override;
92 virtual void heuristicsForGpuRasterizationUpdated(bool matches_heuristic) {}
93 virtual void setTopControlsContentOffset(float offset) {}
94 virtual void setNeedsAnimate() override;
95 virtual bool commitRequested() const override;
96 virtual void didStopFlinging() {}
97 virtual void compositeAndReadbackAsync(
98 blink::WebCompositeAndReadbackAsyncCallback* callback) {}
99 virtual void finishAllRendering() override;
100 virtual void setDeferCommits(bool defer_commits) {}
101 virtual void registerForAnimations(blink::WebLayer* layer) override;
102 virtual void registerViewportLayers(
103 const blink::WebLayer* page_scale_layer,
104 const blink::WebLayer* inner_viewport_scroll_layer,
105 const blink::WebLayer* outer_viewport_scroll_layer) override;
106 virtual void clearViewportLayers() override;
107 virtual void registerSelection(const blink::WebSelectionBound& start,
108 const blink::WebSelectionBound& end) {}
109 virtual void clearSelection() {}
110 virtual void setShowFPSCounter(bool) {}
111 virtual void setShowPaintRects(bool) {}
112 virtual void setShowDebugBorders(bool) {}
113 virtual void setContinuousPaintingEnabled(bool) {}
114 virtual void setShowScrollBottleneckRects(bool) {}
115
116 // OutputSurfaceMojoClient implementation.
117 virtual void DidCreateSurface(cc::SurfaceId id) override;
118
119 private:
120 void OnSurfaceConnectionCreated(mojo::SurfacePtr surface, uint32_t id_namespac e);
121 void DidCreateSurfaceOnMainThread(cc::SurfaceId id);
122
123 // widget_ and view_ will outlive us.
124 blink::WebWidget* widget_;
125 mojo::View* view_;
126 scoped_ptr<cc::LayerTreeHost> layer_tree_host_;
127 mojo::SurfacesServicePtr surfaces_service_;
128 scoped_ptr<cc::OutputSurface> output_surface_;
129 mojo::GpuPtr gpu_service_;
130 scoped_refptr<base::SingleThreadTaskRunner>
131 main_thread_compositor_task_runner_;
132 base::WeakPtr<WebLayerTreeViewImpl> main_thread_bound_weak_ptr_;
133
134 scoped_refptr<cc::ContentLayer> root_layer_;
135
136 base::WeakPtrFactory<WebLayerTreeViewImpl> weak_factory_;
137 DISALLOW_COPY_AND_ASSIGN(WebLayerTreeViewImpl);
138 };
139
140 } // namespace sky
141
142 #endif // SKY_VIEWER_PLATFORM_WEBLAYERTREEVIEW_IMPL_H_
OLDNEW
« no previous file with comments | « sky/viewer/platform/platform_impl.cc ('k') | sky/viewer/platform/weblayertreeview_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698