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

Side by Side Diff: Source/core/frame/ImageBitmap.cpp

Issue 190183003: Oilpan: move ImageBitmap to the oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Have ImageLoader keep a persistent set of ImageLoaderClients Created 6 years, 9 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/frame/ImageBitmap.h" 6 #include "core/frame/ImageBitmap.h"
7 7
8 #include "core/html/HTMLCanvasElement.h" 8 #include "core/html/HTMLCanvasElement.h"
9 #include "core/html/HTMLVideoElement.h" 9 #include "core/html/HTMLVideoElement.h"
10 #include "core/html/ImageData.h" 10 #include "core/html/ImageData.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 { 138 {
139 IntRect srcRect = intersection(cropRect, IntRect(IntPoint(), image->size())) ; 139 IntRect srcRect = intersection(cropRect, IntRect(IntPoint(), image->size())) ;
140 m_bitmap = cropImage(image, cropRect); 140 m_bitmap = cropImage(image, cropRect);
141 m_bitmapRect = IntRect(IntPoint(max(0, -cropRect.x()), max(0, -cropRect.y()) ), srcRect.size()); 141 m_bitmapRect = IntRect(IntPoint(max(0, -cropRect.x()), max(0, -cropRect.y()) ), srcRect.size());
142 142
143 ScriptWrappable::init(this); 143 ScriptWrappable::init(this);
144 } 144 }
145 145
146 ImageBitmap::~ImageBitmap() 146 ImageBitmap::~ImageBitmap()
147 { 147 {
148 if (m_imageElement) 148 detach();
149 m_imageElement->removeClient(this);
150 } 149 }
151 150
152 PassRefPtr<ImageBitmap> ImageBitmap::create(HTMLImageElement* image, const IntRe ct& cropRect) 151 void ImageBitmap::detach()
152 {
153 if (m_imageElement) {
154 m_imageElement->removeClient(this);
155 m_imageElement = nullptr;
156 }
157 }
158
159 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(HTMLImageElement* image, const IntRect& cropRect)
153 { 160 {
154 IntRect normalizedCropRect = normalizeRect(cropRect); 161 IntRect normalizedCropRect = normalizeRect(cropRect);
155 return adoptRef(new ImageBitmap(image, normalizedCropRect)); 162 return adoptRefWillBeNoop(new ImageBitmap(image, normalizedCropRect));
156 } 163 }
157 164
158 PassRefPtr<ImageBitmap> ImageBitmap::create(HTMLVideoElement* video, const IntRe ct& cropRect) 165 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(HTMLVideoElement* video, const IntRect& cropRect)
159 { 166 {
160 IntRect normalizedCropRect = normalizeRect(cropRect); 167 IntRect normalizedCropRect = normalizeRect(cropRect);
161 return adoptRef(new ImageBitmap(video, normalizedCropRect)); 168 return adoptRefWillBeNoop(new ImageBitmap(video, normalizedCropRect));
162 } 169 }
163 170
164 PassRefPtr<ImageBitmap> ImageBitmap::create(HTMLCanvasElement* canvas, const Int Rect& cropRect) 171 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(HTMLCanvasElement* canva s, const IntRect& cropRect)
165 { 172 {
166 IntRect normalizedCropRect = normalizeRect(cropRect); 173 IntRect normalizedCropRect = normalizeRect(cropRect);
167 return adoptRef(new ImageBitmap(canvas, normalizedCropRect)); 174 return adoptRefWillBeNoop(new ImageBitmap(canvas, normalizedCropRect));
168 } 175 }
169 176
170 PassRefPtr<ImageBitmap> ImageBitmap::create(ImageData* data, const IntRect& crop Rect) 177 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(ImageData* data, const I ntRect& cropRect)
171 { 178 {
172 IntRect normalizedCropRect = normalizeRect(cropRect); 179 IntRect normalizedCropRect = normalizeRect(cropRect);
173 return adoptRef(new ImageBitmap(data, normalizedCropRect)); 180 return adoptRefWillBeNoop(new ImageBitmap(data, normalizedCropRect));
174 } 181 }
175 182
176 PassRefPtr<ImageBitmap> ImageBitmap::create(ImageBitmap* bitmap, const IntRect& cropRect) 183 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(ImageBitmap* bitmap, con st IntRect& cropRect)
177 { 184 {
178 IntRect normalizedCropRect = normalizeRect(cropRect); 185 IntRect normalizedCropRect = normalizeRect(cropRect);
179 return adoptRef(new ImageBitmap(bitmap, normalizedCropRect)); 186 return adoptRefWillBeNoop(new ImageBitmap(bitmap, normalizedCropRect));
180 } 187 }
181 188
182 PassRefPtr<ImageBitmap> ImageBitmap::create(Image* image, const IntRect& cropRec t) 189 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(Image* image, const IntR ect& cropRect)
183 { 190 {
184 IntRect normalizedCropRect = normalizeRect(cropRect); 191 IntRect normalizedCropRect = normalizeRect(cropRect);
185 return adoptRef(new ImageBitmap(image, normalizedCropRect)); 192 return adoptRefWillBeNoop(new ImageBitmap(image, normalizedCropRect));
186 } 193 }
187 194
188 void ImageBitmap::notifyImageSourceChanged() 195 void ImageBitmap::notifyImageSourceChanged()
189 { 196 {
190 m_bitmap = cropImage(m_imageElement->cachedImage()->image(), m_cropRect); 197 m_bitmap = cropImage(m_imageElement->cachedImage()->image(), m_cropRect);
191 m_bitmapOffset = IntPoint(); 198 m_bitmapOffset = IntPoint();
192 m_imageElement = nullptr; 199 m_imageElement = nullptr;
193 } 200 }
194 201
195 PassRefPtr<Image> ImageBitmap::bitmapImage() const 202 PassRefPtr<Image> ImageBitmap::bitmapImage() const
196 { 203 {
197 ASSERT((m_imageElement || m_bitmap || !m_bitmapRect.width() || !m_bitmapRect .height()) && (!m_imageElement || !m_bitmap)); 204 ASSERT((m_imageElement || m_bitmap || !m_bitmapRect.width() || !m_bitmapRect .height()) && (!m_imageElement || !m_bitmap));
198 if (m_imageElement) 205 if (m_imageElement)
199 return m_imageElement->cachedImage()->image(); 206 return m_imageElement->cachedImage()->image();
200 return m_bitmap; 207 return m_bitmap;
201 } 208 }
202 209
210 void ImageBitmap::trace(Visitor*)
211 {
203 } 212 }
213
214 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698