OLD | NEW |
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 "web/PageOverlay.h" | 5 #include "web/PageOverlay.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include "core/exported/WebViewBase.h" | 8 #include "core/exported/WebViewBase.h" |
9 #include "core/frame/FrameView.h" | 9 #include "core/frame/FrameView.h" |
10 #include "platform/graphics/Color.h" | 10 #include "platform/graphics/Color.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 protected: | 69 protected: |
70 enum CompositingMode { kAcceleratedCompositing, kUnacceleratedCompositing }; | 70 enum CompositingMode { kAcceleratedCompositing, kUnacceleratedCompositing }; |
71 | 71 |
72 void Initialize(CompositingMode compositing_mode) { | 72 void Initialize(CompositingMode compositing_mode) { |
73 helper_.Initialize( | 73 helper_.Initialize( |
74 false /* enableJavascript */, nullptr /* webFrameClient */, | 74 false /* enableJavascript */, nullptr /* webFrameClient */, |
75 nullptr /* webViewClient */, nullptr /* webWidgetClient */, | 75 nullptr /* webViewClient */, nullptr /* webWidgetClient */, |
76 compositing_mode == kAcceleratedCompositing | 76 compositing_mode == kAcceleratedCompositing |
77 ? EnableAcceleratedCompositing | 77 ? EnableAcceleratedCompositing |
78 : DisableAcceleratedCompositing); | 78 : DisableAcceleratedCompositing); |
79 GetWebViewImpl()->Resize(WebSize(kViewportWidth, kViewportHeight)); | 79 GetWebView()->Resize(WebSize(kViewportWidth, kViewportHeight)); |
80 GetWebViewImpl()->UpdateAllLifecyclePhases(); | 80 GetWebView()->UpdateAllLifecyclePhases(); |
81 ASSERT_EQ(compositing_mode == kAcceleratedCompositing, | 81 ASSERT_EQ(compositing_mode == kAcceleratedCompositing, |
82 GetWebViewImpl()->IsAcceleratedCompositingActive()); | 82 GetWebView()->IsAcceleratedCompositingActive()); |
83 } | 83 } |
84 | 84 |
85 WebViewImpl* GetWebViewImpl() const { return helper_.WebView(); } | 85 WebViewBase* GetWebView() const { return helper_.WebView(); } |
86 | 86 |
87 std::unique_ptr<PageOverlay> CreateSolidYellowOverlay() { | 87 std::unique_ptr<PageOverlay> CreateSolidYellowOverlay() { |
88 return PageOverlay::Create( | 88 return PageOverlay::Create( |
89 GetWebViewImpl()->MainFrameImpl(), | 89 GetWebView()->MainFrameImpl(), |
90 WTF::MakeUnique<SolidColorOverlay>(SK_ColorYELLOW)); | 90 WTF::MakeUnique<SolidColorOverlay>(SK_ColorYELLOW)); |
91 } | 91 } |
92 | 92 |
93 template <typename OverlayType> | 93 template <typename OverlayType> |
94 void RunPageOverlayTestWithAcceleratedCompositing(); | 94 void RunPageOverlayTestWithAcceleratedCompositing(); |
95 | 95 |
96 private: | 96 private: |
97 FrameTestHelpers::WebViewHelper helper_; | 97 FrameTestHelpers::WebViewHelper helper_; |
98 }; | 98 }; |
99 | 99 |
(...skipping 10 matching lines...) Expand all Loading... |
110 }; | 110 }; |
111 | 111 |
112 class MockCanvas : public SkCanvas { | 112 class MockCanvas : public SkCanvas { |
113 public: | 113 public: |
114 MockCanvas(int width, int height) : SkCanvas(width, height) {} | 114 MockCanvas(int width, int height) : SkCanvas(width, height) {} |
115 MOCK_METHOD2(onDrawRect, void(const SkRect&, const SkPaint&)); | 115 MOCK_METHOD2(onDrawRect, void(const SkRect&, const SkPaint&)); |
116 }; | 116 }; |
117 | 117 |
118 TEST_F(PageOverlayTest, PageOverlay_AcceleratedCompositing) { | 118 TEST_F(PageOverlayTest, PageOverlay_AcceleratedCompositing) { |
119 Initialize(kAcceleratedCompositing); | 119 Initialize(kAcceleratedCompositing); |
120 GetWebViewImpl()->LayerTreeView()->SetViewportSize( | 120 GetWebView()->LayerTreeView()->SetViewportSize( |
121 WebSize(kViewportWidth, kViewportHeight)); | 121 WebSize(kViewportWidth, kViewportHeight)); |
122 | 122 |
123 std::unique_ptr<PageOverlay> page_overlay = CreateSolidYellowOverlay(); | 123 std::unique_ptr<PageOverlay> page_overlay = CreateSolidYellowOverlay(); |
124 page_overlay->Update(); | 124 page_overlay->Update(); |
125 GetWebViewImpl()->UpdateAllLifecyclePhases(); | 125 GetWebView()->UpdateAllLifecyclePhases(); |
126 | 126 |
127 // Ideally, we would get results from the compositor that showed that this | 127 // Ideally, we would get results from the compositor that showed that this |
128 // page overlay actually winds up getting drawn on top of the rest. | 128 // page overlay actually winds up getting drawn on top of the rest. |
129 // For now, we just check that the GraphicsLayer will draw the right thing. | 129 // For now, we just check that the GraphicsLayer will draw the right thing. |
130 | 130 |
131 MockCanvas canvas(kViewportWidth, kViewportHeight); | 131 MockCanvas canvas(kViewportWidth, kViewportHeight); |
132 EXPECT_CALL(canvas, onDrawRect(_, _)).Times(AtLeast(0)); | 132 EXPECT_CALL(canvas, onDrawRect(_, _)).Times(AtLeast(0)); |
133 EXPECT_CALL(canvas, | 133 EXPECT_CALL(canvas, |
134 onDrawRect(SkRect::MakeWH(kViewportWidth, kViewportHeight), | 134 onDrawRect(SkRect::MakeWH(kViewportWidth, kViewportHeight), |
135 Property(&SkPaint::getColor, SK_ColorYELLOW))); | 135 Property(&SkPaint::getColor, SK_ColorYELLOW))); |
(...skipping 10 matching lines...) Expand all Loading... |
146 GraphicsContext graphics_context(paint_controller); | 146 GraphicsContext graphics_context(paint_controller); |
147 graphics_context.BeginRecording(int_rect); | 147 graphics_context.BeginRecording(int_rect); |
148 paint_controller.GetPaintArtifact().Replay(int_rect, graphics_context); | 148 paint_controller.GetPaintArtifact().Replay(int_rect, graphics_context); |
149 graphics_context.EndRecording()->playback(&canvas); | 149 graphics_context.EndRecording()->playback(&canvas); |
150 } | 150 } |
151 | 151 |
152 TEST_F(PageOverlayTest, PageOverlay_VisualRect) { | 152 TEST_F(PageOverlayTest, PageOverlay_VisualRect) { |
153 Initialize(kAcceleratedCompositing); | 153 Initialize(kAcceleratedCompositing); |
154 std::unique_ptr<PageOverlay> page_overlay = CreateSolidYellowOverlay(); | 154 std::unique_ptr<PageOverlay> page_overlay = CreateSolidYellowOverlay(); |
155 page_overlay->Update(); | 155 page_overlay->Update(); |
156 GetWebViewImpl()->UpdateAllLifecyclePhases(); | 156 GetWebView()->UpdateAllLifecyclePhases(); |
157 EXPECT_EQ(LayoutRect(0, 0, kViewportWidth, kViewportHeight), | 157 EXPECT_EQ(LayoutRect(0, 0, kViewportWidth, kViewportHeight), |
158 page_overlay->VisualRect()); | 158 page_overlay->VisualRect()); |
159 } | 159 } |
160 | 160 |
161 } // namespace | 161 } // namespace |
162 } // namespace blink | 162 } // namespace blink |
OLD | NEW |