Index: content/shell/renderer/test_runner/test_runner.cc |
diff --git a/content/shell/renderer/test_runner/test_runner.cc b/content/shell/renderer/test_runner/test_runner.cc |
index 9e280747656eb04f990c2c9b398bfd5b428c44f0..c039b189421fec2d03daa52178086b38ededdd58 100644 |
--- a/content/shell/renderer/test_runner/test_runner.cc |
+++ b/content/shell/renderer/test_runner/test_runner.cc |
@@ -281,6 +281,9 @@ class TestRunnerBindings : public gin::Wrappable<TestRunnerBindings> { |
void DisplayAsync(); |
void DisplayAsyncThen(v8::Handle<v8::Function> callback); |
void CapturePixelsAsyncThen(v8::Handle<v8::Function> callback); |
+ void CopyImageAtAndCapturePixelsAsyncThen(int x, |
+ int y, |
+ v8::Handle<v8::Function> callback); |
void SetCustomTextOutput(std::string output); |
void SetViewSourceForFrame(const std::string& name, bool enabled); |
void SetMockPushClientSuccess(const std::string& endpoint, |
@@ -528,6 +531,8 @@ gin::ObjectTemplateBuilder TestRunnerBindings::GetObjectTemplateBuilder( |
.SetMethod("displayAsyncThen", &TestRunnerBindings::DisplayAsyncThen) |
.SetMethod("capturePixelsAsyncThen", |
&TestRunnerBindings::CapturePixelsAsyncThen) |
+ .SetMethod("copyImageAtAndCapturePixelsAsyncThen", |
+ &TestRunnerBindings::CopyImageAtAndCapturePixelsAsyncThen) |
.SetMethod("setCustomTextOutput", |
&TestRunnerBindings::SetCustomTextOutput) |
.SetMethod("setViewSourceForFrame", |
@@ -1350,6 +1355,12 @@ void TestRunnerBindings::CapturePixelsAsyncThen( |
runner_->CapturePixelsAsyncThen(callback); |
} |
+void TestRunnerBindings::CopyImageAtAndCapturePixelsAsyncThen( |
+ int x, int y, v8::Handle<v8::Function> callback) { |
+ if (runner_) |
+ runner_->CopyImageAtAndCapturePixelsAsyncThen(x, y, callback); |
+} |
+ |
void TestRunnerBindings::SetCustomTextOutput(std::string output) { |
runner_->setCustomTextOutput(output); |
} |
@@ -2789,6 +2800,16 @@ void TestRunner::CapturePixelsAsyncThen(v8::Handle<v8::Function> callback) { |
base::Passed(&task))); |
} |
+void TestRunner::CopyImageAtAndCapturePixelsAsyncThen( |
+ int x, int y, v8::Handle<v8::Function> callback) { |
+ scoped_ptr<InvokeCallbackTask> task( |
+ new InvokeCallbackTask(this, callback)); |
+ proxy_->CopyImageAtAndCapturePixels( |
+ x, y, base::Bind(&TestRunner::CapturePixelsCallback, |
+ base::Unretained(this), |
+ base::Passed(&task))); |
+} |
+ |
void TestRunner::CapturePixelsCallback(scoped_ptr<InvokeCallbackTask> task, |
const SkBitmap& snapshot) { |
v8::Isolate* isolate = blink::mainThreadIsolate(); |
@@ -2803,12 +2824,12 @@ void TestRunner::CapturePixelsCallback(scoped_ptr<InvokeCallbackTask> task, |
v8::Handle<v8::Value> argv[3]; |
SkAutoLockPixels snapshot_lock(snapshot); |
+ // Size can be 0 for cases where copyImageAt was called on position |
+ // that doesn't have an image. |
int width = snapshot.info().fWidth; |
- DCHECK_NE(0, width); |
argv[0] = v8::Number::New(isolate, width); |
int height = snapshot.info().fHeight; |
- DCHECK_NE(0, height); |
argv[1] = v8::Number::New(isolate, height); |
blink::WebArrayBuffer buffer = |