diff options
Diffstat (limited to 'Source/WebKit/chromium/tests')
| -rw-r--r-- | Source/WebKit/chromium/tests/FilterOperationsTest.cpp | 103 | ||||
| -rw-r--r-- | Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp | 72 |
2 files changed, 175 insertions, 0 deletions
diff --git a/Source/WebKit/chromium/tests/FilterOperationsTest.cpp b/Source/WebKit/chromium/tests/FilterOperationsTest.cpp index 8a3c5d8a1..873d216cd 100644 --- a/Source/WebKit/chromium/tests/FilterOperationsTest.cpp +++ b/Source/WebKit/chromium/tests/FilterOperationsTest.cpp @@ -89,5 +89,108 @@ TEST(WebFilterOperationsTest, getOutsetsDropShadow) EXPECT_EQ(54, left); } +#define SAVE_RESTORE_AMOUNT(Type, a) \ + { \ + WebFilterOperation op = WebFilterOperation::create##Type##Filter(a); \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op.type()); \ + EXPECT_EQ(a, op.amount()); \ + \ + WebFilterOperation op2 = WebFilterOperation::createEmptyFilter(); \ + op2.setType(WebFilterOperation::FilterType##Type); \ + \ + EXPECT_NE(a, op2.amount()); \ + \ + op2.setAmount(a); \ + \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op2.type()); \ + EXPECT_EQ(a, op2.amount()); \ + } + +#define SAVE_RESTORE_OFFSET_AMOUNT_COLOR(Type, a, b, c) \ + { \ + WebFilterOperation op = WebFilterOperation::create##Type##Filter(a, b, c); \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op.type()); \ + EXPECT_EQ(a, op.dropShadowOffset()); \ + EXPECT_EQ(b, op.amount()); \ + EXPECT_EQ(c, op.dropShadowColor()); \ + \ + WebFilterOperation op2 = WebFilterOperation::createEmptyFilter(); \ + op2.setType(WebFilterOperation::FilterType##Type); \ + \ + EXPECT_NE(a, op2.dropShadowOffset()); \ + EXPECT_NE(b, op2.amount()); \ + EXPECT_NE(c, op2.dropShadowColor()); \ + \ + op2.setDropShadowOffset(a); \ + op2.setAmount(b); \ + op2.setDropShadowColor(c); \ + \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op2.type()); \ + EXPECT_EQ(a, op2.dropShadowOffset()); \ + EXPECT_EQ(b, op2.amount()); \ + EXPECT_EQ(c, op2.dropShadowColor()); \ + } + +#define SAVE_RESTORE_MATRIX(Type, a) \ + { \ + WebFilterOperation op = WebFilterOperation::create##Type##Filter(a); \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op.type()); \ + for (unsigned i = 0; i < 20; ++i) \ + EXPECT_EQ(a[i], op.matrix()[i]); \ + \ + WebFilterOperation op2 = WebFilterOperation::createEmptyFilter(); \ + op2.setType(WebFilterOperation::FilterType##Type); \ + \ + for (unsigned i = 0; i < 20; ++i) \ + EXPECT_NE(a[i], op2.matrix()[i]); \ + \ + op2.setMatrix(a); \ + \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op2.type()); \ + for (unsigned i = 0; i < 20; ++i) \ + EXPECT_EQ(a[i], op.matrix()[i]); \ + } + +#define SAVE_RESTORE_ZOOMRECT_AMOUNT(Type, a, b) \ + { \ + WebFilterOperation op = WebFilterOperation::create##Type##Filter(a, b); \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op.type()); \ + EXPECT_EQ(a, op.zoomRect()); \ + EXPECT_EQ(b, op.amount()); \ + \ + WebFilterOperation op2 = WebFilterOperation::createEmptyFilter(); \ + op2.setType(WebFilterOperation::FilterType##Type); \ + \ + EXPECT_NE(a, op2.zoomRect()); \ + EXPECT_NE(b, op2.amount()); \ + \ + op2.setZoomRect(a); \ + op2.setAmount(b); \ + \ + EXPECT_EQ(WebFilterOperation::FilterType##Type, op2.type()); \ + EXPECT_EQ(a, op2.zoomRect()); \ + EXPECT_EQ(b, op2.amount()); \ + } + + +TEST(WebFilterOperationsTest, saveAndRestore) +{ + SAVE_RESTORE_AMOUNT(Grayscale, 0.6f); + SAVE_RESTORE_AMOUNT(Sepia, 0.6f); + SAVE_RESTORE_AMOUNT(Saturate, 0.6f); + SAVE_RESTORE_AMOUNT(HueRotate, 0.6f); + SAVE_RESTORE_AMOUNT(Invert, 0.6f); + SAVE_RESTORE_AMOUNT(Brightness, 0.6f); + SAVE_RESTORE_AMOUNT(Contrast, 0.6f); + SAVE_RESTORE_AMOUNT(Opacity, 0.6f); + SAVE_RESTORE_AMOUNT(Blur, 0.6f); + SAVE_RESTORE_OFFSET_AMOUNT_COLOR(DropShadow, WebPoint(3, 4), 0.4f, 0xffffff00); + + SkScalar matrix[20] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; + SAVE_RESTORE_MATRIX(ColorMatrix, matrix); + + SAVE_RESTORE_ZOOMRECT_AMOUNT(Zoom, WebRect(20, 19, 18, 17), 32); +} + } diff --git a/Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp b/Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp index 4acf496ad..21ce96316 100644 --- a/Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp +++ b/Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp @@ -37,6 +37,7 @@ #include <gtest/gtest.h> #include <wtf/HashSet.h> +#include <wtf/MemoryInstrumentationVector.h> #include <wtf/RefCounted.h> #include <wtf/Vector.h> #include <wtf/text/AtomicString.h> @@ -235,6 +236,7 @@ class InstrumentedOwner { public: template<typename V> InstrumentedOwner(const V& value) : m_value(value) { } + InstrumentedOwner() { } void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const { MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::DOM); @@ -367,5 +369,75 @@ TEST(MemoryInstrumentationTest, detectReportMemoryUsageMethod) } } +TEST(MemoryInstrumentationTest, vectorZeroInlineCapacity) +{ + VisitedObjects visitedObjects; + MemoryInstrumentationImpl impl(visitedObjects); + InstrumentedOwner<Vector<int> > vectorOwner(16); + impl.addRootObject(vectorOwner); + EXPECT_EQ(16 * sizeof(int), impl.reportedSizeForAllTypes()); + EXPECT_EQ(1, visitedObjects.size()); +} + +TEST(MemoryInstrumentationTest, vectorFieldWithInlineCapacity) +{ + VisitedObjects visitedObjects; + MemoryInstrumentationImpl impl(visitedObjects); + InstrumentedOwner<Vector<int, 4> > vectorOwner; + impl.addRootObject(vectorOwner); + EXPECT_EQ(static_cast<size_t>(0), impl.reportedSizeForAllTypes()); + EXPECT_EQ(0, visitedObjects.size()); +} + +TEST(MemoryInstrumentationTest, vectorFieldWithInlineCapacityResized) +{ + VisitedObjects visitedObjects; + MemoryInstrumentationImpl impl(visitedObjects); + InstrumentedOwner<Vector<int, 4> > vectorOwner; + vectorOwner.m_value.reserveCapacity(8); + impl.addRootObject(vectorOwner); + EXPECT_EQ(8 * sizeof(int), impl.reportedSizeForAllTypes()); + EXPECT_EQ(1, visitedObjects.size()); +} + +TEST(MemoryInstrumentationTest, heapAllocatedVectorWithInlineCapacity) +{ + VisitedObjects visitedObjects; + MemoryInstrumentationImpl impl(visitedObjects); + InstrumentedOwner<OwnPtr<Vector<int, 4> > > vectorOwner; + vectorOwner.m_value = adoptPtr(new Vector<int, 4>()); + impl.addRootObject(vectorOwner); + EXPECT_EQ(sizeof(Vector<int, 4>), impl.reportedSizeForAllTypes()); + EXPECT_EQ(1, visitedObjects.size()); +} + +TEST(MemoryInstrumentationTest, heapAllocatedVectorWithInlineCapacityResized) +{ + VisitedObjects visitedObjects; + MemoryInstrumentationImpl impl(visitedObjects); + InstrumentedOwner<OwnPtr<Vector<int, 4> > > vectorOwner; + vectorOwner.m_value = adoptPtr(new Vector<int, 4>()); + vectorOwner.m_value->reserveCapacity(8); + impl.addRootObject(vectorOwner); + EXPECT_EQ(8 * sizeof(int) + sizeof(Vector<int, 4>), impl.reportedSizeForAllTypes()); + EXPECT_EQ(2, visitedObjects.size()); +} + +TEST(MemoryInstrumentationTest, vectorWithInstrumentedType) +{ + VisitedObjects visitedObjects; + MemoryInstrumentationImpl impl(visitedObjects); + + typedef Vector<String> StringVector; + OwnPtr<StringVector> value = adoptPtr(new StringVector()); + size_t count = 10; + for (size_t i = 0; i < count; ++i) + value->append("string"); + InstrumentedOwner<StringVector* > root(value.get()); + impl.addRootObject(root); + EXPECT_EQ(sizeof(StringVector) + sizeof(String) * value->capacity() + sizeof(StringImpl) * value->size(), impl.reportedSizeForAllTypes()); + EXPECT_EQ(count + 2, (size_t)visitedObjects.size()); +} + } // namespace |
