Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1401)

Unified Diff: cc/test/pixel_test.cc

Issue 15579002: Implement transform/clip support for Android WebView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Turn on fuzzy comparator for new SoftwareRenderer tests Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/test/pixel_test.cc
diff --git a/cc/test/pixel_test.cc b/cc/test/pixel_test.cc
index 0885c76bf77ed565142eec5500cc3ff5f7cdfbd8..1e751568c4c8e7c2ddb0da6337e495cc44a64e12 100644
--- a/cc/test/pixel_test.cc
+++ b/cc/test/pixel_test.cc
@@ -23,12 +23,12 @@ namespace cc {
class PixelTest::PixelTestRendererClient : public RendererClient {
public:
- explicit PixelTestRendererClient(gfx::Size device_viewport_size)
- : device_viewport_size_(device_viewport_size) {}
+ explicit PixelTestRendererClient(gfx::Rect device_viewport)
+ : device_viewport_(device_viewport) {}
// RendererClient implementation.
- virtual gfx::Size DeviceViewportSize() const OVERRIDE {
- return device_viewport_size_;
+ virtual gfx::Rect DeviceViewport() const OVERRIDE {
+ return device_viewport_ + test_expansion_offset_;
}
virtual float DeviceScaleFactor() const OVERRIDE {
return 1.f;
@@ -51,14 +51,60 @@ class PixelTest::PixelTestRendererClient : public RendererClient {
return true;
}
+ void SetTestExpansionOffset(gfx::Vector2d test_expansion_offset) {
+ test_expansion_offset_ = test_expansion_offset;
+ }
+
private:
- gfx::Size device_viewport_size_;
+ gfx::Rect device_viewport_;
+ gfx::Vector2d test_expansion_offset_;
LayerTreeSettings settings_;
};
+class PixelTest::PixelTestOutputSurface : public OutputSurface {
+ public:
+ explicit PixelTestOutputSurface(
+ scoped_ptr<WebKit::WebGraphicsContext3D> context3d)
+ : OutputSurface(context3d.Pass()) {}
+ explicit PixelTestOutputSurface(
+ scoped_ptr<cc::SoftwareOutputDevice> software_device)
+ : OutputSurface(software_device.Pass()) {}
+ virtual void Reshape(gfx::Size size, float scale_factor) OVERRIDE {
+ OutputSurface::Reshape(
+ gfx::Size(size.width() + test_expansion_size_.width(),
+ size.height() + test_expansion_size_.height()),
+ scale_factor);
+ }
+
+ void SetTestExpansionSize(gfx::Size test_expansion_size) {
+ test_expansion_size_ = test_expansion_size;
+ }
+
+ private:
+ gfx::Size test_expansion_size_;
+};
+
+class PixelTestSoftwareOutputDevice : public SoftwareOutputDevice {
+ public:
+ PixelTestSoftwareOutputDevice() {}
+ virtual void Resize(gfx::Size size) OVERRIDE {
+ SoftwareOutputDevice::Resize(
+ gfx::Size(size.width() + test_expansion_size_.width(),
+ size.height() + test_expansion_size_.height()));
+ }
+
+ void SetTestExpansionSize(gfx::Size test_expansion_size) {
+ test_expansion_size_ = test_expansion_size;
+ }
+
+ private:
+ gfx::Size test_expansion_size_;
+};
+
PixelTest::PixelTest()
: device_viewport_size_(gfx::Size(200, 200)),
- fake_client_(new PixelTestRendererClient(device_viewport_size_)) {}
+ fake_client_(
+ new PixelTestRendererClient(gfx::Rect(device_viewport_size_))) {}
PixelTest::~PixelTest() {}
@@ -125,7 +171,7 @@ void PixelTest::SetUpGLRenderer(bool use_skia_gpu_backend) {
scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> context3d(
WebGraphicsContext3DInProcessCommandBufferImpl::CreateOffscreenContext(
WebKit::WebGraphicsContext3D::Attributes()));
- output_surface_.reset(new OutputSurface(
+ output_surface_.reset(new PixelTestOutputSurface(
context3d.PassAs<WebKit::WebGraphicsContext3D>()));
resource_provider_ = ResourceProvider::Create(output_surface_.get(), 0);
renderer_ = GLRenderer::Create(fake_client_.get(),
@@ -140,11 +186,23 @@ void PixelTest::SetUpGLRenderer(bool use_skia_gpu_backend) {
resource_provider_->set_offscreen_context_provider(offscreen_contexts);
}
+void PixelTest::ForceExpandedViewport(gfx::Size surface_expansion,
+ gfx::Vector2d viewport_offset) {
+ static_cast<PixelTestOutputSurface*>(output_surface_.get())
+ ->SetTestExpansionSize(surface_expansion);
+ fake_client_->SetTestExpansionOffset(viewport_offset);
+ SoftwareOutputDevice* device = output_surface_->software_device();
+ if (device) {
+ static_cast<PixelTestSoftwareOutputDevice*>(device)
+ ->SetTestExpansionSize(surface_expansion);
+ }
+}
+
void PixelTest::SetUpSoftwareRenderer() {
CHECK(fake_client_);
- scoped_ptr<SoftwareOutputDevice> device(new SoftwareOutputDevice());
- output_surface_.reset(new OutputSurface(device.Pass()));
+ scoped_ptr<SoftwareOutputDevice> device(new PixelTestSoftwareOutputDevice());
+ output_surface_.reset(new PixelTestOutputSurface(device.Pass()));
resource_provider_ = ResourceProvider::Create(output_surface_.get(), 0);
renderer_ = SoftwareRenderer::Create(
fake_client_.get(),

Powered by Google App Engine
This is Rietveld 408576698