| Index: content/shell/renderer/test_runner/WebTestProxy.cpp
|
| diff --git a/content/shell/renderer/test_runner/WebTestProxy.cpp b/content/shell/renderer/test_runner/WebTestProxy.cpp
|
| index 1a85a23b2410dd473717fe5ffa159fb858939355..1cc010328583596ab4d09925fbefe3fc2312f8b1 100644
|
| --- a/content/shell/renderer/test_runner/WebTestProxy.cpp
|
| +++ b/content/shell/renderer/test_runner/WebTestProxy.cpp
|
| @@ -66,20 +66,6 @@ private:
|
| CallbackMethodType m_callback;
|
| };
|
|
|
| -class ClosureTask : public WebMethodTask<WebTestProxyBase> {
|
| - public:
|
| - ClosureTask(WebTestProxyBase* object, base::Closure callback)
|
| - : WebMethodTask<WebTestProxyBase>(object), m_callback(callback) {}
|
| -
|
| - virtual void runIfValid() OVERRIDE {
|
| - if (!m_callback.is_null())
|
| - m_callback.Run();
|
| - }
|
| -
|
| - private:
|
| - base::Closure m_callback;
|
| -};
|
| -
|
| void printFrameDescription(WebTestDelegate* delegate, WebFrame* frame)
|
| {
|
| string name8 = frame->uniqueName().utf8();
|
| @@ -493,12 +479,33 @@ void WebTestProxyBase::didCompositeAndReadback(const SkBitmap& bitmap) {
|
| m_compositeAndReadbackCallbacks.pop_front();
|
| }
|
|
|
| +void WebTestProxyBase::CapturePixelsForPrinting(
|
| + base::Callback<void(const SkBitmap&)> callback) {
|
| + // TODO(enne): get rid of stateful canvas().
|
| + webWidget()->layout();
|
| + paintPagesWithBoundaries();
|
| + DrawSelectionRect(canvas());
|
| + SkBaseDevice* device = skia::GetTopDevice(*canvas());
|
| + const SkBitmap& bitmap = device->accessBitmap(false);
|
| + callback.Run(bitmap);
|
| +}
|
| +
|
| void WebTestProxyBase::CapturePixelsAsync(
|
| base::Callback<void(const SkBitmap&)> callback) {
|
| TRACE_EVENT0("shell", "WebTestProxyBase::CapturePixelsAsync");
|
|
|
| DCHECK(webWidget()->isAcceleratedCompositingActive());
|
| DCHECK(!callback.is_null());
|
| +
|
| + if (m_testInterfaces->testRunner()->isPrinting()) {
|
| + base::MessageLoopProxy::current()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&WebTestProxyBase::CapturePixelsForPrinting,
|
| + base::Unretained(this),
|
| + callback));
|
| + return;
|
| + }
|
| +
|
| m_compositeAndReadbackCallbacks.push_back(callback);
|
| webWidget()->compositeAndReadbackAsync(this);
|
| }
|
| @@ -623,11 +630,11 @@ void WebTestProxyBase::displayAsyncThen(base::Closure callback) {
|
| TRACE_EVENT0("shell",
|
| "WebTestProxyBase::displayAsyncThen "
|
| "isAcceleratedCompositingActive false");
|
| - m_delegate->postTask(
|
| - new ClosureTask(this,
|
| - base::Bind(&WebTestProxyBase::DisplayForSoftwareMode,
|
| - base::Unretained(this),
|
| - callback)));
|
| + base::MessageLoopProxy::current()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&WebTestProxyBase::DisplayForSoftwareMode,
|
| + base::Unretained(this),
|
| + callback));
|
| return;
|
| }
|
|
|
|
|