Index: content/common/cc_messages_unittest.cc |
diff --git a/content/common/cc_messages_unittest.cc b/content/common/cc_messages_unittest.cc |
index 6ba87ad69ae9af0e874ab05209292b62dd205d2f..524888113f27ef8efa6d04cb57e0ef8cfda0cea6 100644 |
--- a/content/common/cc_messages_unittest.cc |
+++ b/content/common/cc_messages_unittest.cc |
@@ -6,6 +6,8 @@ |
#include <string.h> |
+#include <algorithm> |
+ |
#include "base/command_line.h" |
#include "cc/output/compositor_frame.h" |
#include "content/public/common/content_switches.h" |
@@ -555,5 +557,54 @@ TEST_F(CCMessagesTest, Resources) { |
Compare(arbitrary_resource2, frame_out.resource_list[1]); |
} |
+TEST_F(CCMessagesTest, LargestQuadType) { |
+ size_t largest = 0; |
+ |
+ bool done = false; |
+ for (int i = 0; !done; ++i) { |
+ switch (static_cast<DrawQuad::Material>(i)) { |
+ case cc::DrawQuad::CHECKERBOARD: |
+ largest = std::max(largest, sizeof(cc::CheckerboardDrawQuad)); |
+ break; |
+ case cc::DrawQuad::DEBUG_BORDER: |
+ largest = std::max(largest, sizeof(cc::DebugBorderDrawQuad)); |
+ break; |
+ case cc::DrawQuad::IO_SURFACE_CONTENT: |
+ largest = std::max(largest, sizeof(cc::IOSurfaceDrawQuad)); |
+ break; |
+ case cc::DrawQuad::PICTURE_CONTENT: |
+ largest = std::max(largest, sizeof(cc::PictureDrawQuad)); |
+ break; |
+ case cc::DrawQuad::TEXTURE_CONTENT: |
+ largest = std::max(largest, sizeof(cc::TextureDrawQuad)); |
+ break; |
+ case cc::DrawQuad::RENDER_PASS: |
+ largest = std::max(largest, sizeof(cc::RenderPassDrawQuad)); |
+ break; |
+ case cc::DrawQuad::SOLID_COLOR: |
+ largest = std::max(largest, sizeof(cc::SolidColorDrawQuad)); |
+ break; |
+ case cc::DrawQuad::TILED_CONTENT: |
+ largest = std::max(largest, sizeof(cc::TileDrawQuad)); |
+ break; |
+ case cc::DrawQuad::STREAM_VIDEO_CONTENT: |
+ largest = std::max(largest, sizeof(cc::StreamVideoDrawQuad)); |
+ break; |
+ case cc::DrawQuad::YUV_VIDEO_CONTENT: |
+ largest = std::max(largest, sizeof(cc::YUVVideoDrawQuad)); |
+ break; |
+ case cc::DrawQuad::INVALID: |
+ break; |
+ default: |
+ done = true; |
+ } |
+ } |
+ |
+ // Verify the largest DrawQuad type is RenderPassDrawQuad. If this ever |
+ // changes, then the ParamTraits<cc::RenderPass>::ReserveSizeForWrite() method |
+ // needs to be updated as well to use the new largest quad. |
+ EXPECT_EQ(sizeof(RenderPassDrawQuad), largest); |
Tom Sepez
2013/10/24 17:48:06
Create a union consisting of all these types, and
danakj
2013/10/24 17:51:38
That does not create a compiler error, however, if
|
+} |
+ |
} // namespace |
} // namespace content |