| Index: components/test_runner/web_test_proxy.cc
|
| diff --git a/components/test_runner/web_test_proxy.cc b/components/test_runner/web_test_proxy.cc
|
| index 413e484cfbd0b312f84c45c70ba99afb848a8c42..47112285b4026440c8ce26cc48c3f3fa3f1be361 100644
|
| --- a/components/test_runner/web_test_proxy.cc
|
| +++ b/components/test_runner/web_test_proxy.cc
|
| @@ -31,11 +31,6 @@
|
| #include "components/test_runner/web_test_delegate.h"
|
| #include "components/test_runner/web_test_interfaces.h"
|
| #include "components/test_runner/web_test_runner.h"
|
| -// FIXME: Including platform_canvas.h here is a layering violation.
|
| -#include "skia/ext/platform_canvas.h"
|
| -#include "third_party/WebKit/public/platform/Platform.h"
|
| -#include "third_party/WebKit/public/platform/WebClipboard.h"
|
| -#include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallback.h"
|
| #include "third_party/WebKit/public/platform/WebLayoutAndPaintAsyncCallback.h"
|
| #include "third_party/WebKit/public/platform/WebURLError.h"
|
| #include "third_party/WebKit/public/platform/WebURLRequest.h"
|
| @@ -59,26 +54,6 @@ namespace test_runner {
|
|
|
| namespace {
|
|
|
| -class CaptureCallback : public blink::WebCompositeAndReadbackAsyncCallback {
|
| - public:
|
| - CaptureCallback(const base::Callback<void(const SkBitmap&)>& callback);
|
| - virtual ~CaptureCallback();
|
| -
|
| - void set_wait_for_popup(bool wait) { wait_for_popup_ = wait; }
|
| - void set_popup_position(const gfx::Point& position) {
|
| - popup_position_ = position;
|
| - }
|
| -
|
| - // WebCompositeAndReadbackAsyncCallback implementation.
|
| - void didCompositeAndReadback(const SkBitmap& bitmap) override;
|
| -
|
| - private:
|
| - base::Callback<void(const SkBitmap&)> callback_;
|
| - SkBitmap main_bitmap_;
|
| - bool wait_for_popup_;
|
| - gfx::Point popup_position_;
|
| -};
|
| -
|
| class LayoutAndPaintCallback : public blink::WebLayoutAndPaintAsyncCallback {
|
| public:
|
| LayoutAndPaintCallback(const base::Closure& callback)
|
| @@ -152,7 +127,6 @@ blink::WebView* WebTestProxyBase::GetWebView() const {
|
| }
|
|
|
| void WebTestProxyBase::Reset() {
|
| - drag_image_.reset();
|
| animate_scheduled_ = false;
|
| }
|
|
|
| @@ -202,154 +176,6 @@ std::string WebTestProxyBase::DumpBackForwardLists() {
|
| return DumpAllBackForwardLists(test_interfaces_, delegate_);
|
| }
|
|
|
| -void WebTestProxyBase::DrawSelectionRect(SkCanvas* canvas) {
|
| - // See if we need to draw the selection bounds rect. Selection bounds
|
| - // rect is the rect enclosing the (possibly transformed) selection.
|
| - // The rect should be drawn after everything is laid out and painted.
|
| - if (!test_interfaces_->GetTestRunner()->shouldDumpSelectionRect())
|
| - return;
|
| - // If there is a selection rect - draw a red 1px border enclosing rect
|
| - blink::WebRect wr = GetWebView()->mainFrame()->selectionBoundsRect();
|
| - if (wr.isEmpty())
|
| - return;
|
| - // Render a red rectangle bounding selection rect
|
| - SkPaint paint;
|
| - paint.setColor(0xFFFF0000); // Fully opaque red
|
| - paint.setStyle(SkPaint::kStroke_Style);
|
| - paint.setFlags(SkPaint::kAntiAlias_Flag);
|
| - paint.setStrokeWidth(1.0f);
|
| - SkIRect rect; // Bounding rect
|
| - rect.set(wr.x, wr.y, wr.x + wr.width, wr.y + wr.height);
|
| - canvas->drawIRect(rect, paint);
|
| -}
|
| -
|
| -void WebTestProxyBase::CopyImageAtAndCapturePixels(
|
| - int x, int y, const base::Callback<void(const SkBitmap&)>& callback) {
|
| - DCHECK(!callback.is_null());
|
| - uint64_t sequence_number = blink::Platform::current()->clipboard()->
|
| - sequenceNumber(blink::WebClipboard::Buffer());
|
| - GetWebView()->copyImageAt(blink::WebPoint(x, y));
|
| - if (sequence_number == blink::Platform::current()->clipboard()->
|
| - sequenceNumber(blink::WebClipboard::Buffer())) {
|
| - SkBitmap emptyBitmap;
|
| - callback.Run(emptyBitmap);
|
| - return;
|
| - }
|
| -
|
| - blink::WebData data = blink::Platform::current()->clipboard()->readImage(
|
| - blink::WebClipboard::Buffer());
|
| - blink::WebImage image = blink::WebImage::fromData(data, blink::WebSize());
|
| - const SkBitmap& bitmap = image.getSkBitmap();
|
| - SkAutoLockPixels autoLock(bitmap);
|
| - callback.Run(bitmap);
|
| -}
|
| -
|
| -void WebTestProxyBase::CapturePixelsForPrinting(
|
| - const base::Callback<void(const SkBitmap&)>& callback) {
|
| - web_widget_->updateAllLifecyclePhases();
|
| -
|
| - blink::WebSize page_size_in_pixels = web_widget_->size();
|
| - blink::WebFrame* web_frame = GetWebView()->mainFrame();
|
| -
|
| - int page_count = web_frame->printBegin(page_size_in_pixels);
|
| - int totalHeight = page_count * (page_size_in_pixels.height + 1) - 1;
|
| -
|
| - bool is_opaque = false;
|
| - skia::RefPtr<SkCanvas> canvas(skia::AdoptRef(skia::TryCreateBitmapCanvas(
|
| - page_size_in_pixels.width, totalHeight, is_opaque)));
|
| - if (!canvas) {
|
| - callback.Run(SkBitmap());
|
| - return;
|
| - }
|
| - web_frame->printPagesWithBoundaries(canvas.get(), page_size_in_pixels);
|
| - web_frame->printEnd();
|
| -
|
| - DrawSelectionRect(canvas.get());
|
| - const SkBitmap bitmap = skia::ReadPixels(canvas.get());
|
| - callback.Run(bitmap);
|
| -}
|
| -
|
| -CaptureCallback::CaptureCallback(
|
| - const base::Callback<void(const SkBitmap&)>& callback)
|
| - : callback_(callback), wait_for_popup_(false) {
|
| -}
|
| -
|
| -CaptureCallback::~CaptureCallback() {
|
| -}
|
| -
|
| -void CaptureCallback::didCompositeAndReadback(const SkBitmap& bitmap) {
|
| - TRACE_EVENT2("shell",
|
| - "CaptureCallback::didCompositeAndReadback",
|
| - "x",
|
| - bitmap.info().width(),
|
| - "y",
|
| - bitmap.info().height());
|
| - if (!wait_for_popup_) {
|
| - callback_.Run(bitmap);
|
| - delete this;
|
| - return;
|
| - }
|
| - if (main_bitmap_.isNull()) {
|
| - bitmap.deepCopyTo(&main_bitmap_);
|
| - return;
|
| - }
|
| - SkCanvas canvas(main_bitmap_);
|
| - canvas.drawBitmap(bitmap, popup_position_.x(), popup_position_.y());
|
| - callback_.Run(main_bitmap_);
|
| - delete this;
|
| -}
|
| -
|
| -void WebTestProxyBase::CapturePixelsAsync(
|
| - const base::Callback<void(const SkBitmap&)>& callback) {
|
| - TRACE_EVENT0("shell", "WebTestProxyBase::CapturePixelsAsync");
|
| - DCHECK(!callback.is_null());
|
| -
|
| - if (test_interfaces_->GetTestRunner()->shouldDumpDragImage()) {
|
| - if (drag_image_.isNull()) {
|
| - // This means the test called dumpDragImage but did not initiate a drag.
|
| - // Return a blank image so that the test fails.
|
| - SkBitmap bitmap;
|
| - bitmap.allocN32Pixels(1, 1);
|
| - {
|
| - SkAutoLockPixels lock(bitmap);
|
| - bitmap.eraseColor(0);
|
| - }
|
| - callback.Run(bitmap);
|
| - return;
|
| - }
|
| -
|
| - callback.Run(drag_image_.getSkBitmap());
|
| - return;
|
| - }
|
| -
|
| - if (test_interfaces_->GetTestRunner()->isPrinting()) {
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE, base::Bind(&WebTestProxyBase::CapturePixelsForPrinting,
|
| - base::Unretained(this), callback));
|
| - return;
|
| - }
|
| -
|
| - CaptureCallback* capture_callback = new CaptureCallback(base::Bind(
|
| - &WebTestProxyBase::DidCapturePixelsAsync, base::Unretained(this),
|
| - callback));
|
| - web_widget_->compositeAndReadbackAsync(capture_callback);
|
| - if (blink::WebPagePopup* popup = web_widget_->pagePopup()) {
|
| - capture_callback->set_wait_for_popup(true);
|
| - capture_callback->set_popup_position(
|
| - delegate_->ConvertDIPToNative(popup->positionRelativeToOwner()));
|
| - popup->compositeAndReadbackAsync(capture_callback);
|
| - }
|
| -}
|
| -
|
| -void WebTestProxyBase::DidCapturePixelsAsync(
|
| - const base::Callback<void(const SkBitmap&)>& callback,
|
| - const SkBitmap& bitmap) {
|
| - SkCanvas canvas(bitmap);
|
| - DrawSelectionRect(&canvas);
|
| - if (!callback.is_null())
|
| - callback.Run(bitmap);
|
| -}
|
| -
|
| void LayoutAndPaintCallback::didLayoutAndPaint() {
|
| TRACE_EVENT0("shell", "LayoutAndPaintCallback::didLayoutAndPaint");
|
| if (wait_for_popup_) {
|
| @@ -429,10 +255,8 @@ void WebTestProxyBase::StartDragging(blink::WebLocalFrame* frame,
|
| blink::WebDragOperationsMask mask,
|
| const blink::WebImage& image,
|
| const blink::WebPoint& point) {
|
| - if (test_interfaces_->GetTestRunner()->shouldDumpDragImage()) {
|
| - if (drag_image_.isNull())
|
| - drag_image_ = image;
|
| - }
|
| + test_interfaces_->GetTestRunner()->setDragImage(image);
|
| +
|
| // When running a test, we need to fake a drag drop operation otherwise
|
| // Windows waits for real mouse events to know when the drag is over.
|
| test_interfaces_->GetEventSender()->DoDragDrop(data, mask);
|
|
|