Index: cc/playback/display_item_list.h |
diff --git a/cc/playback/display_item_list.h b/cc/playback/display_item_list.h |
index 21422600d8648a6d9ab31f84d5752a811803c98d..a988e9e9aeec03757c1d0d7541099df39b7d9406 100644 |
--- a/cc/playback/display_item_list.h |
+++ b/cc/playback/display_item_list.h |
@@ -61,10 +61,11 @@ class CC_EXPORT DisplayItemList |
void RasterIntoCanvas(const DisplayItem& display_item); |
template <typename DisplayItemType> |
- DisplayItemType* CreateAndAppendItem() { |
+ DisplayItemType* CreateAndAppendItem(const gfx::Rect& visual_rect) { |
#if DCHECK_IS_ON() |
needs_process_ = true; |
#endif |
+ visual_rects_.push_back(visual_rect); |
ProcessAppendedItemsOnTheFly(); |
return items_.AllocateAndConstruct<DisplayItemType>(); |
} |
@@ -95,6 +96,8 @@ class CC_EXPORT DisplayItemList |
float raster_scale, |
std::vector<DrawImage>* images); |
+ gfx::Rect VisualRectForTesting(int index) { return visual_rects_[index]; } |
+ |
private: |
DisplayItemList(gfx::Rect layer_rect, |
const DisplayItemListSettings& display_list_settings, |
@@ -113,6 +116,12 @@ class CC_EXPORT DisplayItemList |
#endif |
ListContainer<DisplayItem> items_; |
+ // The visual rects associated with each of the display items in the |
+ // display item list. There is one rect per display item, and the |
+ // position in |visual_rects_| matches the position of the item in |
+ // |items_| . These rects are intentionally kept separate |
+ // because they are not needed while walking the |items_| for raster. |
+ std::vector<gfx::Rect> visual_rects_; |
skia::RefPtr<SkPicture> picture_; |
scoped_ptr<SkPictureRecorder> recorder_; |