Chromium Code Reviews| Index: content/shell/renderer/test_runner/web_test_proxy.cc |
| diff --git a/content/shell/renderer/test_runner/web_test_proxy.cc b/content/shell/renderer/test_runner/web_test_proxy.cc |
| index 3b729c47e5f352d0049bf74f0912f6dfcf0bba87..09e9d2663b4e4876511db31fe63362903c503a12 100644 |
| --- a/content/shell/renderer/test_runner/web_test_proxy.cc |
| +++ b/content/shell/renderer/test_runner/web_test_proxy.cc |
| @@ -312,15 +312,7 @@ WebView* WebTestProxyBase::GetWebView() const { |
| return static_cast<WebView*>(web_widget_); |
| } |
| -void WebTestProxyBase::DidForceResize() { |
| - InvalidateAll(); |
| - DiscardBackingStore(); |
| -} |
| - |
| void WebTestProxyBase::Reset() { |
| - paint_rect_ = WebRect(); |
| - canvas_.reset(); |
| - is_painting_ = false; |
| animate_scheduled_ = false; |
| resource_identifier_map_.clear(); |
| log_console_output_ = true; |
| @@ -428,11 +420,23 @@ void WebTestProxyBase::didCompositeAndReadback(const SkBitmap& bitmap) { |
| void WebTestProxyBase::CapturePixelsForPrinting( |
| const base::Callback<void(const SkBitmap&)>& callback) { |
| - // TODO(enne): get rid of stateful canvas(). |
| web_widget_->layout(); |
| - PaintPagesWithBoundaries(); |
| - DrawSelectionRect(GetCanvas()); |
| - SkBaseDevice* device = skia::GetTopDevice(*GetCanvas()); |
| + |
| + WebSize pageSizeInPixels = web_widget_->size(); |
| + WebFrame* webFrame = GetWebView()->mainFrame(); |
| + |
| + int pageCount = webFrame->printBegin(pageSizeInPixels); |
|
danakj
2014/05/15 14:34:33
page_count, etc. if is_opaque is going to be chrom
enne (OOO)
2014/05/15 17:10:33
How about I just fix up this whole file afterwards
danakj
2014/05/15 17:11:02
Yes, please. :)
|
| + int totalHeight = pageCount * (pageSizeInPixels.height + 1) - 1; |
| + |
| + bool is_opaque = false; |
| + skia::RefPtr<SkCanvas> canvas(skia::AdoptRef(skia::TryCreateBitmapCanvas( |
| + pageSizeInPixels.width, totalHeight, is_opaque))); |
| + if (canvas.get()) |
|
danakj
2014/05/15 14:34:33
nit: no .get() needed
enne (OOO)
2014/05/15 17:10:33
Done.
|
| + webFrame->printPagesWithBoundaries(canvas.get(), pageSizeInPixels); |
| + webFrame->printEnd(); |
| + |
| + DrawSelectionRect(canvas.get()); |
| + SkBaseDevice* device = skia::GetTopDevice(*canvas.get()); |
|
danakj
2014/05/15 14:34:33
nit: no .get() needed
enne (OOO)
2014/05/15 17:10:33
Done.
|
| const SkBitmap& bitmap = device->accessBitmap(false); |
| callback.Run(bitmap); |
| } |
| @@ -459,48 +463,6 @@ void WebTestProxyBase::SetLogConsoleOutput(bool enabled) { |
| log_console_output_ = enabled; |
| } |
| -void WebTestProxyBase::PaintPagesWithBoundaries() { |
| - DCHECK(!is_painting_); |
| - DCHECK(GetCanvas()); |
| - is_painting_ = true; |
| - |
| - WebSize pageSizeInPixels = web_widget_->size(); |
| - WebFrame* webFrame = GetWebView()->mainFrame(); |
| - |
| - int pageCount = webFrame->printBegin(pageSizeInPixels); |
| - int totalHeight = pageCount * (pageSizeInPixels.height + 1) - 1; |
| - |
| - SkCanvas* testCanvas = |
| - skia::TryCreateBitmapCanvas(pageSizeInPixels.width, totalHeight, false); |
| - if (testCanvas) { |
| - DiscardBackingStore(); |
| - canvas_.reset(testCanvas); |
| - } else { |
| - webFrame->printEnd(); |
| - return; |
| - } |
| - |
| - webFrame->printPagesWithBoundaries(GetCanvas(), pageSizeInPixels); |
| - webFrame->printEnd(); |
| - |
| - is_painting_ = false; |
| -} |
| - |
| -SkCanvas* WebTestProxyBase::GetCanvas() { |
| - if (canvas_.get()) return canvas_.get(); |
| - WebSize widgetSize = web_widget_->size(); |
| - float deviceScaleFactor = GetWebView()->deviceScaleFactor(); |
| - int scaledWidth = static_cast<int>( |
| - ceil(static_cast<float>(widgetSize.width) * deviceScaleFactor)); |
| - int scaledHeight = static_cast<int>( |
| - ceil(static_cast<float>(widgetSize.height) * deviceScaleFactor)); |
| - // We're allocating the canvas to be non-opaque (third parameter), so we |
| - // don't end up with uninitialized memory if a layout test doesn't damage |
| - // the entire view. |
| - canvas_.reset(skia::CreateBitmapCanvas(scaledWidth, scaledHeight, false)); |
| - return canvas_.get(); |
| -} |
| - |
| void WebTestProxyBase::DidDisplayAsync(const base::Closure& callback, |
| const SkBitmap& bitmap) { |
| // Verify we actually composited. |
| @@ -517,8 +479,6 @@ void WebTestProxyBase::DisplayAsyncThen(const base::Closure& callback) { |
| base::Unretained(this), callback)); |
| } |
| -void WebTestProxyBase::DiscardBackingStore() { canvas_.reset(); } |
| - |
| WebMIDIClientMock* WebTestProxyBase::GetMIDIClientMock() { |
| if (!m_midiClient.get()) m_midiClient.reset(new WebMIDIClientMock); |
| return m_midiClient.get(); |
| @@ -532,30 +492,9 @@ MockWebSpeechRecognizer* WebTestProxyBase::GetSpeechRecognizerMock() { |
| return m_speechRecognizer.get(); |
| } |
| -void WebTestProxyBase::DidInvalidateRect(const WebRect& rect) { |
| - // paint_rect_ = paint_rect_ U rect |
| - if (rect.isEmpty()) return; |
| - if (paint_rect_.isEmpty()) { |
| - paint_rect_ = rect; |
| - return; |
| - } |
| - int left = min(paint_rect_.x, rect.x); |
| - int top = min(paint_rect_.y, rect.y); |
| - int right = max(paint_rect_.x + paint_rect_.width, rect.x + rect.width); |
| - int bottom = max(paint_rect_.y + paint_rect_.height, rect.y + rect.height); |
| - paint_rect_ = WebRect(left, top, right - left, bottom - top); |
| +void WebTestProxyBase::ScheduleComposite() { |
|
danakj
2014/05/15 14:34:33
If this does nothing can it go away?
|
| } |
| -void WebTestProxyBase::DidScrollRect(int, int, const WebRect& clipRect) { |
| - DidInvalidateRect(clipRect); |
| -} |
| - |
| -void WebTestProxyBase::InvalidateAll() { |
| - paint_rect_ = WebRect(0, 0, INT_MAX, INT_MAX); |
| -} |
| - |
| -void WebTestProxyBase::ScheduleComposite() { InvalidateAll(); } |
| - |
| void WebTestProxyBase::ScheduleAnimation() { |
| if (!test_interfaces_->testRunner()->TestIsRunning()) return; |
| @@ -574,19 +513,6 @@ void WebTestProxyBase::AnimateNow() { |
| } |
| } |
| -bool WebTestProxyBase::IsCompositorFramePending() const { |
| - return animate_scheduled_ || !paint_rect_.isEmpty(); |
| -} |
| - |
| -void WebTestProxyBase::Show(WebNavigationPolicy) { InvalidateAll(); } |
| - |
| -void WebTestProxyBase::SetWindowRect(const WebRect& rect) { |
| - InvalidateAll(); |
| - DiscardBackingStore(); |
| -} |
| - |
| -void WebTestProxyBase::DidAutoResize(const WebSize&) { InvalidateAll(); } |
| - |
| void WebTestProxyBase::PostAccessibilityEvent(const blink::WebAXObject& obj, |
| blink::WebAXEvent event) { |
| // Only hook the accessibility events occured during the test run. |