Commit aa0da252 authored by enne@chromium.org's avatar enne@chromium.org

cc: Remove ReadPixels from compositor layer_unittests.cc

BUG=332167

Review URL: https://codereview.chromium.org/133273026

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245601 0039d316-1c4b-4281-b951-d872f2087c98
parent db9bb09c
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include "cc/layers/delegated_frame_provider.h" #include "cc/layers/delegated_frame_provider.h"
#include "cc/layers/delegated_frame_resource_collection.h" #include "cc/layers/delegated_frame_resource_collection.h"
#include "cc/layers/layer.h" #include "cc/layers/layer.h"
#include "cc/output/copy_output_request.h"
#include "cc/output/copy_output_result.h"
#include "cc/output/delegated_frame_data.h" #include "cc/output/delegated_frame_data.h"
#include "cc/test/pixel_test_utils.h" #include "cc/test/pixel_test_utils.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -126,8 +128,29 @@ class LayerWithRealCompositorTest : public testing::Test { ...@@ -126,8 +128,29 @@ class LayerWithRealCompositorTest : public testing::Test {
} }
bool ReadPixels(SkBitmap* bitmap) { bool ReadPixels(SkBitmap* bitmap) {
return GetCompositor()->ReadPixels(bitmap, return ReadPixels(bitmap, gfx::Rect(GetCompositor()->size()));
gfx::Rect(GetCompositor()->size())); }
bool ReadPixels(SkBitmap* bitmap, gfx::Rect source_rect) {
scoped_refptr<ReadbackHolder> holder(new ReadbackHolder);
scoped_ptr<cc::CopyOutputRequest> request =
cc::CopyOutputRequest::CreateBitmapRequest(
base::Bind(&ReadbackHolder::OutputRequestCallback, holder));
request->set_area(source_rect);
GetCompositor()->root_layer()->RequestCopyOfOutput(request.Pass());
// Wait for copy response.
WaitForDraw();
if (holder->completed()) {
*bitmap = holder->result();
return true;
}
// Callback never called.
NOTREACHED();
return false;
} }
void WaitForDraw() { void WaitForDraw() {
...@@ -149,6 +172,29 @@ class LayerWithRealCompositorTest : public testing::Test { ...@@ -149,6 +172,29 @@ class LayerWithRealCompositorTest : public testing::Test {
} }
private: private:
class ReadbackHolder : public base::RefCountedThreadSafe<ReadbackHolder> {
public:
ReadbackHolder() : completed_(false) {}
void OutputRequestCallback(scoped_ptr<cc::CopyOutputResult> result) {
DCHECK(!completed_);
result_ = result->TakeBitmap();
completed_ = true;
}
bool completed() const {
return completed_;
};
const SkBitmap& result() const { return *result_; }
private:
friend class base::RefCountedThreadSafe<ReadbackHolder>;
virtual ~ReadbackHolder() {}
scoped_ptr<SkBitmap> result_;
bool completed_;
};
scoped_ptr<TestCompositorHost> window_; scoped_ptr<TestCompositorHost> window_;
// The root directory for test files. // The root directory for test files.
...@@ -783,7 +829,7 @@ TEST_F(LayerWithRealCompositorTest, DrawPixels) { ...@@ -783,7 +829,7 @@ TEST_F(LayerWithRealCompositorTest, DrawPixels) {
DrawTree(layer.get()); DrawTree(layer.get());
SkBitmap bitmap; SkBitmap bitmap;
ASSERT_TRUE(GetCompositor()->ReadPixels(&bitmap, gfx::Rect(viewport_size))); ASSERT_TRUE(ReadPixels(&bitmap, gfx::Rect(viewport_size)));
ASSERT_FALSE(bitmap.empty()); ASSERT_FALSE(bitmap.empty());
SkAutoLockPixels lock(bitmap); SkAutoLockPixels lock(bitmap);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment