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

Side by Side Diff: third_party/WebKit/Source/web/PageOverlayTest.cpp

Issue 1412593003: Remove WebGraphicsContext/WebGraphicsContextImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove another include WebGraphicsContext.h Created 5 years, 1 month 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "web/PageOverlay.h" 6 #include "web/PageOverlay.h"
7 7
8 #include "core/frame/FrameView.h" 8 #include "core/frame/FrameView.h"
9 #include "core/layout/LayoutView.h" 9 #include "core/layout/LayoutView.h"
10 #include "platform/graphics/Color.h" 10 #include "platform/graphics/Color.h"
11 #include "platform/graphics/GraphicsContext.h" 11 #include "platform/graphics/GraphicsContext.h"
12 #include "platform/graphics/paint/DrawingRecorder.h" 12 #include "platform/graphics/paint/DrawingRecorder.h"
13 #include "platform/graphics/paint/PaintController.h" 13 #include "platform/graphics/paint/PaintController.h"
14 #include "public/platform/Platform.h" 14 #include "public/platform/Platform.h"
15 #include "public/platform/WebCanvas.h" 15 #include "public/platform/WebCanvas.h"
16 #include "public/platform/WebThread.h" 16 #include "public/platform/WebThread.h"
17 #include "public/web/WebSettings.h" 17 #include "public/web/WebSettings.h"
18 #include "third_party/skia/include/core/SkBitmap.h" 18 #include "third_party/skia/include/core/SkBitmap.h"
19 #include "third_party/skia/include/core/SkCanvas.h" 19 #include "third_party/skia/include/core/SkCanvas.h"
20 #include "third_party/skia/include/core/SkColor.h" 20 #include "third_party/skia/include/core/SkColor.h"
21 #include "third_party/skia/include/core/SkPaint.h" 21 #include "third_party/skia/include/core/SkPaint.h"
22 #include "web/WebGraphicsContextImpl.h"
23 #include "web/WebLocalFrameImpl.h" 22 #include "web/WebLocalFrameImpl.h"
24 #include "web/WebViewImpl.h" 23 #include "web/WebViewImpl.h"
25 #include "web/tests/FrameTestHelpers.h" 24 #include "web/tests/FrameTestHelpers.h"
26 #include <gmock/gmock.h> 25 #include <gmock/gmock.h>
27 #include <gtest/gtest.h> 26 #include <gtest/gtest.h>
28 27
29 using testing::_; 28 using testing::_;
30 using testing::AtLeast; 29 using testing::AtLeast;
31 using testing::Property; 30 using testing::Property;
32 31
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 63
65 WebViewImpl* webViewImpl() const { return m_helper.webViewImpl(); } 64 WebViewImpl* webViewImpl() const { return m_helper.webViewImpl(); }
66 65
67 template <typename OverlayType> 66 template <typename OverlayType>
68 void runPageOverlayTestWithAcceleratedCompositing(); 67 void runPageOverlayTestWithAcceleratedCompositing();
69 68
70 private: 69 private:
71 FrameTestHelpers::WebViewHelper m_helper; 70 FrameTestHelpers::WebViewHelper m_helper;
72 }; 71 };
73 72
74 // PageOverlay that uses a WebCanvas to draw a solid color. 73 // PageOverlay that paints a solid color.
75 class SimpleCanvasOverlay : public PageOverlay::Delegate { 74 class SolidColorOverlay : public PageOverlay::Delegate {
76 public: 75 public:
77 SimpleCanvasOverlay(SkColor color) : m_color(color) { } 76 SolidColorOverlay(Color color) : m_color(color) { }
78 77
79 void paintPageOverlay(WebGraphicsContext* context, const WebSize& size) cons t override 78 void paintPageOverlay(const PageOverlay& pageOverlay, GraphicsContext& graph icsContext, const WebSize& size) const override
80 { 79 {
81 WebFloatRect rect(0, 0, size.width, size.height); 80 if (DrawingRecorder::useCachedDrawingIfPossible(graphicsContext, pageOve rlay, DisplayItem::PageOverlay))
82 WebCanvas* canvas = context->beginDrawing(rect);
83 SkPaint paint;
84 paint.setColor(m_color);
85 paint.setStyle(SkPaint::kFill_Style);
86 canvas->drawRectCoords(0, 0, size.width, size.height, paint);
87 context->endDrawing();
88 }
89
90 private:
91 SkColor m_color;
92 };
93
94 // PageOverlay that uses the underlying blink::GraphicsContext to paint a
95 // solid color.
96 class PrivateGraphicsContextOverlay : public PageOverlay::Delegate {
97 public:
98 PrivateGraphicsContextOverlay(Color color) : m_color(color) { }
99
100 void paintPageOverlay(WebGraphicsContext* context, const WebSize& size) cons t override
101 {
102 GraphicsContext& graphicsContext = toWebGraphicsContextImpl(context)->gr aphicsContext();
103 if (DrawingRecorder::useCachedDrawingIfPossible(graphicsContext, *this, DisplayItem::PageOverlay))
104 return; 81 return;
105 FloatRect rect(0, 0, size.width, size.height); 82 FloatRect rect(0, 0, size.width, size.height);
106 DrawingRecorder drawingRecorder(graphicsContext, *this, DisplayItem::Pag eOverlay, rect); 83 DrawingRecorder drawingRecorder(graphicsContext, pageOverlay, DisplayIte m::PageOverlay, rect);
107 graphicsContext.fillRect(rect, m_color); 84 graphicsContext.fillRect(rect, m_color);
108 } 85 }
109 86
110 DisplayItemClient displayItemClient() const { return toDisplayItemClient(thi s); }
111 String debugName() const { return "PrivateGraphicsContextOverlay"; }
112
113 private: 87 private:
114 Color m_color; 88 Color m_color;
115 }; 89 };
116 90
117 template <bool(*getter)(), void(*setter)(bool)> 91 template <bool(*getter)(), void(*setter)(bool)>
118 class RuntimeFeatureChange { 92 class RuntimeFeatureChange {
119 public: 93 public:
120 RuntimeFeatureChange(bool newValue) : m_oldValue(getter()) { setter(newValue ); } 94 RuntimeFeatureChange(bool newValue) : m_oldValue(getter()) { setter(newValue ); }
121 ~RuntimeFeatureChange() { setter(m_oldValue); } 95 ~RuntimeFeatureChange() { setter(m_oldValue); }
122 private: 96 private:
123 bool m_oldValue; 97 bool m_oldValue;
124 }; 98 };
125 99
126 class MockCanvas : public SkCanvas { 100 class MockCanvas : public SkCanvas {
127 public: 101 public:
128 MockCanvas(int width, int height) : SkCanvas(width, height) { } 102 MockCanvas(int width, int height) : SkCanvas(width, height) { }
129 MOCK_METHOD2(onDrawRect, void(const SkRect&, const SkPaint&)); 103 MOCK_METHOD2(onDrawRect, void(const SkRect&, const SkPaint&));
130 }; 104 };
131 105
132 template <typename OverlayType> 106 TEST_F(PageOverlayTest, PageOverlay_AcceleratedCompositing)
133 void PageOverlayTest::runPageOverlayTestWithAcceleratedCompositing()
134 { 107 {
135 initialize(AcceleratedCompositing); 108 initialize(AcceleratedCompositing);
136 webViewImpl()->layerTreeView()->setViewportSize(WebSize(viewportWidth, viewp ortHeight)); 109 webViewImpl()->layerTreeView()->setViewportSize(WebSize(viewportWidth, viewp ortHeight));
137 110
138 OwnPtr<PageOverlay> pageOverlay = PageOverlay::create(webViewImpl(), new Ove rlayType(SK_ColorYELLOW)); 111 OwnPtr<PageOverlay> pageOverlay = PageOverlay::create(webViewImpl(), new Sol idColorOverlay(SK_ColorYELLOW));
139 pageOverlay->update(); 112 pageOverlay->update();
140 webViewImpl()->layout(); 113 webViewImpl()->layout();
141 114
142 // Ideally, we would get results from the compositor that showed that this 115 // Ideally, we would get results from the compositor that showed that this
143 // page overlay actually winds up getting drawn on top of the rest. 116 // page overlay actually winds up getting drawn on top of the rest.
144 // For now, we just check that the GraphicsLayer will draw the right thing. 117 // For now, we just check that the GraphicsLayer will draw the right thing.
145 118
146 MockCanvas canvas(viewportWidth, viewportHeight); 119 MockCanvas canvas(viewportWidth, viewportHeight);
147 EXPECT_CALL(canvas, onDrawRect(_, _)).Times(AtLeast(0)); 120 EXPECT_CALL(canvas, onDrawRect(_, _)).Times(AtLeast(0));
148 EXPECT_CALL(canvas, onDrawRect(SkRect::MakeWH(viewportWidth, viewportHeight) , Property(&SkPaint::getColor, SK_ColorYELLOW))); 121 EXPECT_CALL(canvas, onDrawRect(SkRect::MakeWH(viewportWidth, viewportHeight) , Property(&SkPaint::getColor, SK_ColorYELLOW)));
149 122
150 GraphicsLayer* graphicsLayer = pageOverlay->graphicsLayer(); 123 GraphicsLayer* graphicsLayer = pageOverlay->graphicsLayer();
151 WebRect rect(0, 0, viewportWidth, viewportHeight); 124 WebRect rect(0, 0, viewportWidth, viewportHeight);
152 125
153 // Paint the layer with a null canvas to get a display list, and then 126 // Paint the layer with a null canvas to get a display list, and then
154 // replay that onto the mock canvas for examination. 127 // replay that onto the mock canvas for examination.
155 PaintController* paintController = graphicsLayer->paintController(); 128 PaintController* paintController = graphicsLayer->paintController();
156 ASSERT(paintController); 129 ASSERT(paintController);
157 GraphicsContext graphicsContext(*paintController); 130 GraphicsContext graphicsContext(*paintController);
158 graphicsLayer->paint(graphicsContext, rect); 131 graphicsLayer->paint(graphicsContext, rect);
159 132
160 graphicsContext.beginRecording(IntRect(rect)); 133 graphicsContext.beginRecording(IntRect(rect));
161 paintController->commitNewDisplayItems(); 134 paintController->commitNewDisplayItems();
162 paintController->paintArtifact().replay(graphicsContext); 135 paintController->paintArtifact().replay(graphicsContext);
163 graphicsContext.endRecording()->playback(&canvas); 136 graphicsContext.endRecording()->playback(&canvas);
164 } 137 }
165 138
166 TEST_F(PageOverlayTest, SimpleCanvasOverlay_AcceleratedCompositing)
167 {
168 runPageOverlayTestWithAcceleratedCompositing<SimpleCanvasOverlay>();
169 }
170
171 TEST_F(PageOverlayTest, PrivateGraphicsContextOverlay_AcceleratedCompositing)
172 {
173 runPageOverlayTestWithAcceleratedCompositing<PrivateGraphicsContextOverlay>( );
174 }
175
176 } // namespace 139 } // namespace
177 } // namespace blink 140 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698