summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-23 18:51:32 +0000
committerpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-23 18:51:32 +0000
commit1044a25ac38a3bd4a09670f8f73992221ffb6ad3 (patch)
tree6c8c1cc0b0a312ba3e81b3f48de06a22d06fc03f /cc
parent2dfb808ed26171cae4dca9ea2312c559a5befa11 (diff)
downloadchromium_src-1044a25ac38a3bd4a09670f8f73992221ffb6ad3.zip
chromium_src-1044a25ac38a3bd4a09670f8f73992221ffb6ad3.tar.gz
chromium_src-1044a25ac38a3bd4a09670f8f73992221ffb6ad3.tar.bz2
Fix usage of TestRenderPass
It is undefined behavior to cast a RenderPass* into a TestRenderPass* if the object pointed to is not a TestRenderPass, so remove this pattern. BUG=None Review URL: https://chromiumcodereview.appspot.com/11235053 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163624 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r--cc/delegated_renderer_layer_impl_unittest.cc8
-rw-r--r--cc/layer_tree_host_impl_unittest.cc20
-rw-r--r--cc/render_pass_unittest.cc15
-rw-r--r--cc/software_renderer_unittest.cc18
-rw-r--r--cc/test/render_pass_test_common.h8
5 files changed, 35 insertions, 34 deletions
diff --git a/cc/delegated_renderer_layer_impl_unittest.cc b/cc/delegated_renderer_layer_impl_unittest.cc
index 54ca4f9..0c61552 100644
--- a/cc/delegated_renderer_layer_impl_unittest.cc
+++ b/cc/delegated_renderer_layer_impl_unittest.cc
@@ -67,10 +67,10 @@ protected:
static TestRenderPass* addRenderPass(ScopedPtrVector<RenderPass>& passList, RenderPass::Id id, IntRect outputRect, WebTransformationMatrix rootTransform)
{
- scoped_ptr<RenderPass> pass(RenderPass::create(id, outputRect, rootTransform));
- TestRenderPass* testPass = static_cast<TestRenderPass*>(pass.get());
- passList.append(pass.Pass());
- return testPass;
+ scoped_ptr<TestRenderPass> pass(TestRenderPass::create(id, outputRect, rootTransform));
+ TestRenderPass* saved = pass.get();
+ passList.append(pass.PassAs<RenderPass>());
+ return saved;
}
static SolidColorDrawQuad* addQuad(TestRenderPass* pass, IntRect rect, SkColor color)
diff --git a/cc/layer_tree_host_impl_unittest.cc b/cc/layer_tree_host_impl_unittest.cc
index 696c3da..9611d68 100644
--- a/cc/layer_tree_host_impl_unittest.cc
+++ b/cc/layer_tree_host_impl_unittest.cc
@@ -2639,14 +2639,14 @@ static inline scoped_ptr<RenderPass> createRenderPassWithResource(ResourceProvid
{
ResourceProvider::ResourceId resourceId = provider->createResource(0, IntSize(1, 1), GL_RGBA, ResourceProvider::TextureUsageAny);
- scoped_ptr<RenderPass> pass = RenderPass::create(RenderPass::Id(1, 1), IntRect(0, 0, 1, 1), WebTransformationMatrix());
+ scoped_ptr<TestRenderPass> pass = TestRenderPass::create(RenderPass::Id(1, 1), IntRect(0, 0, 1, 1), WebTransformationMatrix());
scoped_ptr<SharedQuadState> sharedState = SharedQuadState::create(WebTransformationMatrix(), IntRect(0, 0, 1, 1), IntRect(0, 0, 1, 1), 1, false);
scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::create(sharedState.get(), IntRect(0, 0, 1, 1), resourceId, false, FloatRect(0, 0, 1, 1), false);
- static_cast<TestRenderPass*>(pass.get())->appendSharedQuadState(sharedState.Pass());
- static_cast<TestRenderPass*>(pass.get())->appendQuad(quad.PassAs<DrawQuad>());
+ pass->appendSharedQuadState(sharedState.Pass());
+ pass->appendQuad(quad.PassAs<DrawQuad>());
- return pass.Pass();
+ return pass.PassAs<RenderPass>();
}
TEST_P(LayerTreeHostImplTest, dontUseOldResourcesAfterLostContext)
@@ -4051,7 +4051,7 @@ TEST_P(LayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit)
}
struct RenderPassRemovalTestData : public LayerTreeHostImpl::FrameData {
- ScopedPtrHashMap<RenderPass::Id, RenderPass> renderPassCache;
+ ScopedPtrHashMap<RenderPass::Id, TestRenderPass> renderPassCache;
scoped_ptr<SharedQuadState> sharedQuadState;
};
@@ -4100,7 +4100,7 @@ static void configureRenderPassTestData(const char* testScript, RenderPassRemova
// Pre-create root pass
RenderPass::Id rootRenderPassId = RenderPass::Id(testScript[0], testScript[1]);
- testData.renderPassCache.add(rootRenderPassId, RenderPass::create(rootRenderPassId, IntRect(), WebTransformationMatrix()));
+ testData.renderPassCache.add(rootRenderPassId, TestRenderPass::create(rootRenderPassId, IntRect(), WebTransformationMatrix()));
while (*currentChar) {
int layerId = *currentChar;
currentChar++;
@@ -4114,7 +4114,7 @@ static void configureRenderPassTestData(const char* testScript, RenderPassRemova
if (!testData.renderPassCache.contains(renderPassId))
isReplica = true;
- scoped_ptr<RenderPass> renderPass = testData.renderPassCache.take(renderPassId);
+ scoped_ptr<TestRenderPass> renderPass = testData.renderPassCache.take(renderPassId);
// Cycle through quad data and create all quads
while (*currentChar && *currentChar != '\n') {
@@ -4122,7 +4122,7 @@ static void configureRenderPassTestData(const char* testScript, RenderPassRemova
// Solid color draw quad
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::create(testData.sharedQuadState.get(), IntRect(0, 0, 10, 10), SK_ColorWHITE);
- static_cast<TestRenderPass*>(renderPass.get())->appendQuad(quad.PassAs<DrawQuad>());
+ renderPass->appendQuad(quad.PassAs<DrawQuad>());
currentChar++;
} else if ((*currentChar >= 'A') && (*currentChar <= 'Z')) {
// RenderPass draw quad
@@ -4163,11 +4163,11 @@ static void configureRenderPassTestData(const char* testScript, RenderPassRemova
IntRect quadRect = IntRect(0, 0, 1, 1);
IntRect contentsChangedRect = contentsChanged ? quadRect : IntRect();
scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::create(testData.sharedQuadState.get(), quadRect, newRenderPassId, isReplica, 1, contentsChangedRect, 1, 1, 0, 0);
- static_cast<TestRenderPass*>(renderPass.get())->appendQuad(quad.PassAs<DrawQuad>());
+ renderPass->appendQuad(quad.PassAs<DrawQuad>());
}
}
testData.renderPasses.insert(testData.renderPasses.begin(), renderPass.get());
- testData.renderPassesById.add(renderPassId, renderPass.Pass());
+ testData.renderPassesById.add(renderPassId, renderPass.PassAs<RenderPass>());
if (*currentChar)
currentChar++;
}
diff --git a/cc/render_pass_unittest.cc b/cc/render_pass_unittest.cc
index 42e6c2e..acd5ad3 100644
--- a/cc/render_pass_unittest.cc
+++ b/cc/render_pass_unittest.cc
@@ -8,6 +8,7 @@
#include "CCCheckerboardDrawQuad.h"
#include "cc/test/geometry_test_utils.h"
+#include "cc/test/render_pass_test_common.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/effects/SkBlurImageFilter.h"
#include <public/WebFilterOperations.h>
@@ -16,17 +17,12 @@
using WebKit::WebFilterOperation;
using WebKit::WebFilterOperations;
using WebKit::WebTransformationMatrix;
+using WebKitTests::TestRenderPass;
using namespace cc;
namespace {
-class TestRenderPass : public RenderPass {
-public:
- QuadList& quadList() { return m_quadList; }
- SharedQuadStateList& sharedQuadStateList() { return m_sharedQuadStateList; }
-};
-
struct RenderPassSize {
// If you add a new field to this class, make sure to add it to the copy() tests.
RenderPass::Id m_id;
@@ -48,7 +44,7 @@ TEST(RenderPassTest, copyShouldBeIdenticalExceptIdAndQuads)
gfx::Rect outputRect(45, 22, 120, 13);
WebTransformationMatrix transformToRoot(1, 0.5, 0.5, -0.5, -1, 0);
- scoped_ptr<RenderPass> pass = RenderPass::create(id, outputRect, transformToRoot);
+ scoped_ptr<TestRenderPass> pass = TestRenderPass::create(id, outputRect, transformToRoot);
gfx::Rect damageRect(56, 123, 19, 43);
bool hasTransparentBackground = true;
@@ -68,9 +64,8 @@ TEST(RenderPassTest, copyShouldBeIdenticalExceptIdAndQuads)
pass->setFilter(filter);
// Stick a quad in the pass, this should not get copied.
- TestRenderPass* testPass = static_cast<TestRenderPass*>(pass.get());
- testPass->sharedQuadStateList().append(SharedQuadState::create(WebTransformationMatrix(), gfx::Rect(), gfx::Rect(), 1, false));
- testPass->quadList().append(CheckerboardDrawQuad::create(testPass->sharedQuadStateList().last(), gfx::Rect(), SkColor()).PassAs<DrawQuad>());
+ pass->sharedQuadStateList().append(SharedQuadState::create(WebTransformationMatrix(), gfx::Rect(), gfx::Rect(), 1, false));
+ pass->quadList().append(CheckerboardDrawQuad::create(pass->sharedQuadStateList().last(), gfx::Rect(), SkColor()).PassAs<DrawQuad>());
RenderPass::Id newId(63, 4);
diff --git a/cc/software_renderer_unittest.cc b/cc/software_renderer_unittest.cc
index 790f84e..2157549 100644
--- a/cc/software_renderer_unittest.cc
+++ b/cc/software_renderer_unittest.cc
@@ -74,17 +74,16 @@ TEST_F(SoftwareRendererTest, solidColorQuad)
scoped_ptr<SharedQuadState> sharedQuadState = SharedQuadState::create(WebTransformationMatrix(), outerRect, outerRect, 1.0, true);
RenderPass::Id rootRenderPassId = RenderPass::Id(1, 1);
- scoped_ptr<RenderPass> rootRenderPass = TestRenderPass::create(rootRenderPassId, outerRect, WebTransformationMatrix());
- TestRenderPass* testRenderPass = static_cast<TestRenderPass*>(rootRenderPass.get());
+ scoped_ptr<TestRenderPass> rootRenderPass = TestRenderPass::create(rootRenderPassId, outerRect, WebTransformationMatrix());
scoped_ptr<DrawQuad> outerQuad = SolidColorDrawQuad::create(sharedQuadState.get(), outerRect, SK_ColorYELLOW).PassAs<DrawQuad>();
scoped_ptr<DrawQuad> innerQuad = SolidColorDrawQuad::create(sharedQuadState.get(), innerRect, SK_ColorCYAN).PassAs<DrawQuad>();
- testRenderPass->appendQuad(innerQuad.Pass());
- testRenderPass->appendQuad(outerQuad.Pass());
+ rootRenderPass->appendQuad(innerQuad.Pass());
+ rootRenderPass->appendQuad(outerQuad.Pass());
RenderPassList list;
RenderPassIdHashMap hashmap;
list.push_back(rootRenderPass.get());
- hashmap.add(rootRenderPassId, rootRenderPass.Pass());
+ hashmap.add(rootRenderPassId, rootRenderPass.PassAs<RenderPass>());
renderer()->drawFrame(list, hashmap);
scoped_array<SkColor> pixels(new SkColor[deviceViewportSize().width() * deviceViewportSize().height()]);
@@ -132,17 +131,16 @@ TEST_F(SoftwareRendererTest, tileQuad)
scoped_ptr<SharedQuadState> sharedQuadState = SharedQuadState::create(WebTransformationMatrix(), outerRect, outerRect, 1.0, true);
RenderPass::Id rootRenderPassId = RenderPass::Id(1, 1);
- scoped_ptr<RenderPass> rootRenderPass = TestRenderPass::create(rootRenderPassId, IntRect(IntPoint(), deviceViewportSize()), WebTransformationMatrix());
- TestRenderPass* testRenderPass = static_cast<TestRenderPass*>(rootRenderPass.get());
+ scoped_ptr<TestRenderPass> rootRenderPass = TestRenderPass::create(rootRenderPassId, IntRect(IntPoint(), deviceViewportSize()), WebTransformationMatrix());
scoped_ptr<DrawQuad> outerQuad = TileDrawQuad::create(sharedQuadState.get(), outerRect, outerRect, resourceYellow, IntPoint(), outerSize, 0, false, false, false, false, false).PassAs<DrawQuad>();
scoped_ptr<DrawQuad> innerQuad = TileDrawQuad::create(sharedQuadState.get(), innerRect, innerRect, resourceCyan, IntPoint(), innerSize, 0, false, false, false, false, false).PassAs<DrawQuad>();
- testRenderPass->appendQuad(innerQuad.Pass());
- testRenderPass->appendQuad(outerQuad.Pass());
+ rootRenderPass->appendQuad(innerQuad.Pass());
+ rootRenderPass->appendQuad(outerQuad.Pass());
RenderPassList list;
RenderPassIdHashMap hashmap;
list.push_back(rootRenderPass.get());
- hashmap.add(rootRenderPassId, rootRenderPass.Pass());
+ hashmap.add(rootRenderPassId, rootRenderPass.PassAs<RenderPass>());
renderer()->drawFrame(list, hashmap);
scoped_array<SkColor> pixels(new SkColor[deviceViewportSize().width() * deviceViewportSize().height()]);
diff --git a/cc/test/render_pass_test_common.h b/cc/test/render_pass_test_common.h
index b9802ad..d9c137c 100644
--- a/cc/test/render_pass_test_common.h
+++ b/cc/test/render_pass_test_common.h
@@ -11,11 +11,19 @@ namespace WebKitTests {
class TestRenderPass : public cc::RenderPass {
public:
+ static scoped_ptr<TestRenderPass> create(Id id, gfx::Rect outputRect, const WebKit::WebTransformationMatrix& transformToRootTarget) {
+ return make_scoped_ptr(new TestRenderPass(id, outputRect, transformToRootTarget));
+ }
+
cc::QuadList& quadList() { return m_quadList; }
cc::SharedQuadStateList& sharedQuadStateList() { return m_sharedQuadStateList; }
void appendQuad(scoped_ptr<cc::DrawQuad> quad) { m_quadList.append(quad.Pass()); }
void appendSharedQuadState(scoped_ptr<cc::SharedQuadState> state) { m_sharedQuadStateList.append(state.Pass()); }
+
+protected:
+ TestRenderPass(Id id, gfx::Rect outputRect, const WebKit::WebTransformationMatrix& transformToRootTarget)
+ : RenderPass(id, outputRect, transformToRootTarget) { }
};
} // namespace WebKitTests