Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: Source/core/page/ImageBitmapTest.cpp

Issue 23886003: Have HTMLElements / SVGElements constructors take a Document reference in argument (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Another Android build fix Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/page/DragController.cpp ('k') | Source/core/scripts/make_names.pl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 78
79 SkBitmap m_bitmap, m_bitmap2; 79 SkBitmap m_bitmap, m_bitmap2;
80 OwnPtr<MemoryCache> m_testingMemoryCache; 80 OwnPtr<MemoryCache> m_testingMemoryCache;
81 OwnPtr<MemoryCache> m_globalMemoryCache; 81 OwnPtr<MemoryCache> m_globalMemoryCache;
82 }; 82 };
83 83
84 // Verifies that the image resource held by an ImageBitmap is the same as the 84 // Verifies that the image resource held by an ImageBitmap is the same as the
85 // one held by the HTMLImageElement. 85 // one held by the HTMLImageElement.
86 TEST_F(ImageBitmapTest, ImageResourceConsistency) 86 TEST_F(ImageBitmapTest, ImageResourceConsistency)
87 { 87 {
88 RefPtr<HTMLImageElement> imageElement = HTMLImageElement::create(Document::c reate().get()); 88 RefPtr<HTMLImageElement> imageElement = HTMLImageElement::create(*Document:: create().get());
89 imageElement->setImageResource(new ImageResource(BitmapImage::create(NativeI mageSkia::create(m_bitmap)).get())); 89 imageElement->setImageResource(new ImageResource(BitmapImage::create(NativeI mageSkia::create(m_bitmap)).get()));
90 90
91 RefPtr<ImageBitmap> imageBitmapNoCrop = ImageBitmap::create(imageElement.get (), IntRect(0, 0, m_bitmap.width(), m_bitmap.height())); 91 RefPtr<ImageBitmap> imageBitmapNoCrop = ImageBitmap::create(imageElement.get (), IntRect(0, 0, m_bitmap.width(), m_bitmap.height()));
92 RefPtr<ImageBitmap> imageBitmapInteriorCrop = ImageBitmap::create(imageEleme nt.get(), IntRect(m_bitmap.width() / 2, m_bitmap.height() / 2, m_bitmap.width() / 2, m_bitmap.height() / 2)); 92 RefPtr<ImageBitmap> imageBitmapInteriorCrop = ImageBitmap::create(imageEleme nt.get(), IntRect(m_bitmap.width() / 2, m_bitmap.height() / 2, m_bitmap.width() / 2, m_bitmap.height() / 2));
93 RefPtr<ImageBitmap> imageBitmapExteriorCrop = ImageBitmap::create(imageEleme nt.get(), IntRect(-m_bitmap.width() / 2, -m_bitmap.height() / 2, m_bitmap.width( ), m_bitmap.height())); 93 RefPtr<ImageBitmap> imageBitmapExteriorCrop = ImageBitmap::create(imageEleme nt.get(), IntRect(-m_bitmap.width() / 2, -m_bitmap.height() / 2, m_bitmap.width( ), m_bitmap.height()));
94 RefPtr<ImageBitmap> imageBitmapOutsideCrop = ImageBitmap::create(imageElemen t.get(), IntRect(-m_bitmap.width(), -m_bitmap.height(), m_bitmap.width(), m_bitm ap.height())); 94 RefPtr<ImageBitmap> imageBitmapOutsideCrop = ImageBitmap::create(imageElemen t.get(), IntRect(-m_bitmap.width(), -m_bitmap.height(), m_bitmap.width(), m_bitm ap.height()));
95 95
96 ASSERT_EQ(imageBitmapNoCrop->bitmapImage().get(), imageElement->cachedImage( )->image()); 96 ASSERT_EQ(imageBitmapNoCrop->bitmapImage().get(), imageElement->cachedImage( )->image());
97 ASSERT_EQ(imageBitmapInteriorCrop->bitmapImage().get(), imageElement->cached Image()->image()); 97 ASSERT_EQ(imageBitmapInteriorCrop->bitmapImage().get(), imageElement->cached Image()->image());
98 ASSERT_EQ(imageBitmapExteriorCrop->bitmapImage().get(), imageElement->cached Image()->image()); 98 ASSERT_EQ(imageBitmapExteriorCrop->bitmapImage().get(), imageElement->cached Image()->image());
99 99
100 RefPtr<Image> emptyImage = imageBitmapOutsideCrop->bitmapImage(); 100 RefPtr<Image> emptyImage = imageBitmapOutsideCrop->bitmapImage();
101 ASSERT_NE(emptyImage.get(), imageElement->cachedImage()->image()); 101 ASSERT_NE(emptyImage.get(), imageElement->cachedImage()->image());
102 } 102 }
103 103
104 // Verifies that HTMLImageElements are given an elevated CacheLiveResourcePriori ty when used to construct an ImageBitmap. 104 // Verifies that HTMLImageElements are given an elevated CacheLiveResourcePriori ty when used to construct an ImageBitmap.
105 // ImageBitmaps that have crop rects outside of the bounds of the HTMLImageEleme nt do not have elevated CacheLiveResourcePriority. 105 // ImageBitmaps that have crop rects outside of the bounds of the HTMLImageEleme nt do not have elevated CacheLiveResourcePriority.
106 TEST_F(ImageBitmapTest, ImageBitmapLiveResourcePriority) 106 TEST_F(ImageBitmapTest, ImageBitmapLiveResourcePriority)
107 { 107 {
108 RefPtr<HTMLImageElement> imageNoCrop = HTMLImageElement::create(Document::cr eate().get()); 108 RefPtr<HTMLImageElement> imageNoCrop = HTMLImageElement::create(*Document::c reate().get());
109 ResourcePtr<ImageResource> cachedImageNoCrop = new ImageResource(BitmapImage ::create(NativeImageSkia::create(m_bitmap)).get()); 109 ResourcePtr<ImageResource> cachedImageNoCrop = new ImageResource(BitmapImage ::create(NativeImageSkia::create(m_bitmap)).get());
110 imageNoCrop->setImageResource(cachedImageNoCrop.get()); 110 imageNoCrop->setImageResource(cachedImageNoCrop.get());
111 111
112 RefPtr<HTMLImageElement> imageInteriorCrop = HTMLImageElement::create(Docume nt::create().get()); 112 RefPtr<HTMLImageElement> imageInteriorCrop = HTMLImageElement::create(*Docum ent::create().get());
113 ResourcePtr<ImageResource> cachedImageInteriorCrop = new ImageResource(Bitma pImage::create(NativeImageSkia::create(m_bitmap)).get()); 113 ResourcePtr<ImageResource> cachedImageInteriorCrop = new ImageResource(Bitma pImage::create(NativeImageSkia::create(m_bitmap)).get());
114 imageInteriorCrop->setImageResource(cachedImageInteriorCrop.get()); 114 imageInteriorCrop->setImageResource(cachedImageInteriorCrop.get());
115 115
116 RefPtr<HTMLImageElement> imageExteriorCrop = HTMLImageElement::create(Docume nt::create().get()); 116 RefPtr<HTMLImageElement> imageExteriorCrop = HTMLImageElement::create(*Docum ent::create().get());
117 ResourcePtr<ImageResource> cachedImageExteriorCrop = new ImageResource(Bitma pImage::create(NativeImageSkia::create(m_bitmap)).get()); 117 ResourcePtr<ImageResource> cachedImageExteriorCrop = new ImageResource(Bitma pImage::create(NativeImageSkia::create(m_bitmap)).get());
118 imageExteriorCrop->setImageResource(cachedImageExteriorCrop.get()); 118 imageExteriorCrop->setImageResource(cachedImageExteriorCrop.get());
119 119
120 RefPtr<HTMLImageElement> imageOutsideCrop = HTMLImageElement::create(Documen t::create().get()); 120 RefPtr<HTMLImageElement> imageOutsideCrop = HTMLImageElement::create(*Docume nt::create().get());
121 ResourcePtr<ImageResource> cachedImageOutsideCrop = new ImageResource(Bitmap Image::create(NativeImageSkia::create(m_bitmap)).get()); 121 ResourcePtr<ImageResource> cachedImageOutsideCrop = new ImageResource(Bitmap Image::create(NativeImageSkia::create(m_bitmap)).get());
122 imageOutsideCrop->setImageResource(cachedImageOutsideCrop.get()); 122 imageOutsideCrop->setImageResource(cachedImageOutsideCrop.get());
123 123
124 MockImageResourceClient mockClient1, mockClient2, mockClient3, mockClient4; 124 MockImageResourceClient mockClient1, mockClient2, mockClient3, mockClient4;
125 cachedImageNoCrop->addClient(&mockClient1); 125 cachedImageNoCrop->addClient(&mockClient1);
126 cachedImageInteriorCrop->addClient(&mockClient2); 126 cachedImageInteriorCrop->addClient(&mockClient2);
127 cachedImageExteriorCrop->addClient(&mockClient3); 127 cachedImageExteriorCrop->addClient(&mockClient3);
128 cachedImageOutsideCrop->addClient(&mockClient4); 128 cachedImageOutsideCrop->addClient(&mockClient4);
129 129
130 memoryCache()->add(cachedImageNoCrop.get()); 130 memoryCache()->add(cachedImageNoCrop.get());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 ASSERT_EQ(imageExteriorCrop->cachedImage()->cacheLiveResourcePriority(), Res ource::CacheLiveResourcePriorityLow); 163 ASSERT_EQ(imageExteriorCrop->cachedImage()->cacheLiveResourcePriority(), Res ource::CacheLiveResourcePriorityLow);
164 ASSERT_EQ(imageOutsideCrop->cachedImage()->cacheLiveResourcePriority(), Reso urce::CacheLiveResourcePriorityLow); 164 ASSERT_EQ(imageOutsideCrop->cachedImage()->cacheLiveResourcePriority(), Reso urce::CacheLiveResourcePriorityLow);
165 165
166 // There is still an ImageBitmap that references this image. 166 // There is still an ImageBitmap that references this image.
167 ASSERT_EQ(imageInteriorCrop->cachedImage()->cacheLiveResourcePriority(), Res ource::CacheLiveResourcePriorityHigh); 167 ASSERT_EQ(imageInteriorCrop->cachedImage()->cacheLiveResourcePriority(), Res ource::CacheLiveResourcePriorityHigh);
168 } 168 }
169 169
170 // Verifies that ImageBitmaps constructed from HTMLImageElements hold a referenc e to the original Image if the HTMLImageElement src is changed. 170 // Verifies that ImageBitmaps constructed from HTMLImageElements hold a referenc e to the original Image if the HTMLImageElement src is changed.
171 TEST_F(ImageBitmapTest, ImageBitmapSourceChanged) 171 TEST_F(ImageBitmapTest, ImageBitmapSourceChanged)
172 { 172 {
173 RefPtr<HTMLImageElement> image = HTMLImageElement::create(Document::create() .get()); 173 RefPtr<HTMLImageElement> image = HTMLImageElement::create(*Document::create( ).get());
174 ResourcePtr<ImageResource> originalImageResource = new ImageResource(BitmapI mage::create(NativeImageSkia::create(m_bitmap)).get()); 174 ResourcePtr<ImageResource> originalImageResource = new ImageResource(BitmapI mage::create(NativeImageSkia::create(m_bitmap)).get());
175 image->setImageResource(originalImageResource.get()); 175 image->setImageResource(originalImageResource.get());
176 176
177 RefPtr<ImageBitmap> imageBitmap = ImageBitmap::create(image.get(), IntRect(0 , 0, m_bitmap.width(), m_bitmap.height())); 177 RefPtr<ImageBitmap> imageBitmap = ImageBitmap::create(image.get(), IntRect(0 , 0, m_bitmap.width(), m_bitmap.height()));
178 ASSERT_EQ(imageBitmap->bitmapImage().get(), originalImageResource->image()); 178 ASSERT_EQ(imageBitmap->bitmapImage().get(), originalImageResource->image());
179 179
180 ResourcePtr<ImageResource> newImageResource = new ImageResource(BitmapImage: :create(NativeImageSkia::create(m_bitmap2)).get()); 180 ResourcePtr<ImageResource> newImageResource = new ImageResource(BitmapImage: :create(NativeImageSkia::create(m_bitmap2)).get());
181 image->setImageResource(newImageResource.get()); 181 image->setImageResource(newImageResource.get());
182 182
183 // The ImageBitmap should contain the same data as the original cached image but should no longer hold a reference. 183 // The ImageBitmap should contain the same data as the original cached image but should no longer hold a reference.
184 ASSERT_NE(imageBitmap->bitmapImage().get(), originalImageResource->image()); 184 ASSERT_NE(imageBitmap->bitmapImage().get(), originalImageResource->image());
185 ASSERT_EQ(imageBitmap->bitmapImage()->nativeImageForCurrentFrame()->bitmap() .pixelRef()->pixels(), 185 ASSERT_EQ(imageBitmap->bitmapImage()->nativeImageForCurrentFrame()->bitmap() .pixelRef()->pixels(),
186 originalImageResource->image()->nativeImageForCurrentFrame()->bitmap().p ixelRef()->pixels()); 186 originalImageResource->image()->nativeImageForCurrentFrame()->bitmap().p ixelRef()->pixels());
187 187
188 ASSERT_NE(imageBitmap->bitmapImage().get(), newImageResource->image()); 188 ASSERT_NE(imageBitmap->bitmapImage().get(), newImageResource->image());
189 ASSERT_NE(imageBitmap->bitmapImage()->nativeImageForCurrentFrame()->bitmap() .pixelRef()->pixels(), 189 ASSERT_NE(imageBitmap->bitmapImage()->nativeImageForCurrentFrame()->bitmap() .pixelRef()->pixels(),
190 newImageResource->image()->nativeImageForCurrentFrame()->bitmap().pixelR ef()->pixels()); 190 newImageResource->image()->nativeImageForCurrentFrame()->bitmap().pixelR ef()->pixels());
191 } 191 }
192 192
193 // Verifies that ImageBitmaps constructed from ImageBitmaps hold onto their own Image. 193 // Verifies that ImageBitmaps constructed from ImageBitmaps hold onto their own Image.
194 TEST_F(ImageBitmapTest, ImageResourceLifetime) 194 TEST_F(ImageBitmapTest, ImageResourceLifetime)
195 { 195 {
196 RefPtr<HTMLCanvasElement> canvasElement = HTMLCanvasElement::create(Document ::create().get()); 196 RefPtr<HTMLCanvasElement> canvasElement = HTMLCanvasElement::create(*Documen t::create().get());
197 canvasElement->setHeight(40); 197 canvasElement->setHeight(40);
198 canvasElement->setWidth(40); 198 canvasElement->setWidth(40);
199 RefPtr<ImageBitmap> imageBitmapDerived; 199 RefPtr<ImageBitmap> imageBitmapDerived;
200 { 200 {
201 RefPtr<ImageBitmap> imageBitmapFromCanvas = ImageBitmap::create(canvasEl ement.get(), IntRect(0, 0, canvasElement->width(), canvasElement->height())); 201 RefPtr<ImageBitmap> imageBitmapFromCanvas = ImageBitmap::create(canvasEl ement.get(), IntRect(0, 0, canvasElement->width(), canvasElement->height()));
202 imageBitmapDerived = ImageBitmap::create(imageBitmapFromCanvas.get(), In tRect(0, 0, 20, 20)); 202 imageBitmapDerived = ImageBitmap::create(imageBitmapFromCanvas.get(), In tRect(0, 0, 20, 20));
203 } 203 }
204 CanvasRenderingContext* context = canvasElement->getContext("2d"); 204 CanvasRenderingContext* context = canvasElement->getContext("2d");
205 TrackExceptionState es; 205 TrackExceptionState es;
206 static_cast<CanvasRenderingContext2D*>(context)->drawImage(imageBitmapDerive d.get(), 0, 0, es); 206 static_cast<CanvasRenderingContext2D*>(context)->drawImage(imageBitmapDerive d.get(), 0, 0, es);
207 } 207 }
208 208
209 } // namespace 209 } // namespace
OLDNEW
« no previous file with comments | « Source/core/page/DragController.cpp ('k') | Source/core/scripts/make_names.pl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698