Revved to chromium 290d2cfa5187ac1f2c87fde4c6dd6f27dad0c93a refs/remotes/origin/HEAD
diff --git a/cc/surfaces/surface_aggregator.cc b/cc/surfaces/surface_aggregator.cc
index 35107e8..ea547a0 100644
--- a/cc/surfaces/surface_aggregator.cc
+++ b/cc/surfaces/surface_aggregator.cc
@@ -188,7 +188,9 @@
   for (size_t j = 0; j < passes_to_copy; ++j) {
     const RenderPass& source = *referenced_passes[j];
 
-    scoped_ptr<RenderPass> copy_pass(RenderPass::Create());
+    size_t sqs_size = source.shared_quad_state_list.size();
+    size_t dq_size = source.quad_list.size();
+    scoped_ptr<RenderPass> copy_pass(RenderPass::Create(sqs_size, dq_size));
 
     RenderPassId remapped_pass_id = RemapPassId(source.id, surface_id);
 
@@ -284,29 +286,28 @@
     SurfaceId surface_id) {
   const SharedQuadState* last_copied_source_shared_quad_state = NULL;
 
-  size_t sqs_i = 0;
-  for (QuadList::ConstIterator iter = source_quad_list.begin();
-       iter != source_quad_list.end();
-       ++iter) {
-    const DrawQuad* quad = &*iter;
-    while (quad->shared_quad_state != source_shared_quad_state_list[sqs_i]) {
-      ++sqs_i;
-      DCHECK_LT(sqs_i, source_shared_quad_state_list.size());
+  SharedQuadStateList::ConstIterator sqs_iter =
+      source_shared_quad_state_list.begin();
+  for (const auto& quad : source_quad_list) {
+    while (quad.shared_quad_state != &*sqs_iter) {
+      ++sqs_iter;
+      DCHECK(sqs_iter != source_shared_quad_state_list.end());
     }
-    DCHECK_EQ(quad->shared_quad_state, source_shared_quad_state_list[sqs_i]);
+    DCHECK_EQ(quad.shared_quad_state, &*sqs_iter);
 
-    if (quad->material == DrawQuad::SURFACE_CONTENT) {
-      const SurfaceDrawQuad* surface_quad = SurfaceDrawQuad::MaterialCast(quad);
+    if (quad.material == DrawQuad::SURFACE_CONTENT) {
+      const SurfaceDrawQuad* surface_quad =
+          SurfaceDrawQuad::MaterialCast(&quad);
       HandleSurfaceQuad(surface_quad, dest_pass);
     } else {
-      if (quad->shared_quad_state != last_copied_source_shared_quad_state) {
+      if (quad.shared_quad_state != last_copied_source_shared_quad_state) {
         CopySharedQuadState(
-            quad->shared_quad_state, content_to_target_transform, dest_pass);
-        last_copied_source_shared_quad_state = quad->shared_quad_state;
+            quad.shared_quad_state, content_to_target_transform, dest_pass);
+        last_copied_source_shared_quad_state = quad.shared_quad_state;
       }
-      if (quad->material == DrawQuad::RENDER_PASS) {
+      if (quad.material == DrawQuad::RENDER_PASS) {
         const RenderPassDrawQuad* pass_quad =
-            RenderPassDrawQuad::MaterialCast(quad);
+            RenderPassDrawQuad::MaterialCast(&quad);
         RenderPassId original_pass_id = pass_quad->render_pass_id;
         RenderPassId remapped_pass_id =
             RemapPassId(original_pass_id, surface_id);
@@ -317,7 +318,7 @@
             remapped_pass_id);
       } else {
         dest_pass->CopyFromAndAppendDrawQuad(
-            quad, dest_pass->shared_quad_state_list.back());
+            &quad, dest_pass->shared_quad_state_list.back());
       }
     }
   }
@@ -328,7 +329,9 @@
   for (size_t i = 0; i < source_pass_list.size(); ++i) {
     const RenderPass& source = *source_pass_list[i];
 
-    scoped_ptr<RenderPass> copy_pass(RenderPass::Create());
+    size_t sqs_size = source.shared_quad_state_list.size();
+    size_t dq_size = source.quad_list.size();
+    scoped_ptr<RenderPass> copy_pass(RenderPass::Create(sqs_size, dq_size));
 
     RenderPassId remapped_pass_id =
         RemapPassId(source.id, surface->surface_id());