OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights reserv
ed. | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights reserv
ed. |
5 * Copyright (C) 2010 Google Inc. All rights reserved. | 5 * Copyright (C) 2010 Google Inc. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "gen/sky/core/HTMLNames.h" | 27 #include "gen/sky/core/HTMLNames.h" |
28 #include "gen/sky/core/MediaTypeNames.h" | 28 #include "gen/sky/core/MediaTypeNames.h" |
29 #include "gen/sky/platform/RuntimeEnabledFeatures.h" | 29 #include "gen/sky/platform/RuntimeEnabledFeatures.h" |
30 #include "sky/engine/core/css/MediaQueryListListener.h" | 30 #include "sky/engine/core/css/MediaQueryListListener.h" |
31 #include "sky/engine/core/css/MediaQueryMatcher.h" | 31 #include "sky/engine/core/css/MediaQueryMatcher.h" |
32 #include "sky/engine/core/css/MediaValuesDynamic.h" | 32 #include "sky/engine/core/css/MediaValuesDynamic.h" |
33 #include "sky/engine/core/dom/Attribute.h" | 33 #include "sky/engine/core/dom/Attribute.h" |
34 #include "sky/engine/core/dom/NodeTraversal.h" | 34 #include "sky/engine/core/dom/NodeTraversal.h" |
35 #include "sky/engine/core/fetch/ImageResource.h" | 35 #include "sky/engine/core/fetch/ImageResource.h" |
36 #include "sky/engine/core/html/HTMLAnchorElement.h" | 36 #include "sky/engine/core/html/HTMLAnchorElement.h" |
37 #include "sky/engine/core/html/HTMLCanvasElement.h" | |
38 #include "sky/engine/core/html/canvas/CanvasRenderingContext.h" | |
39 #include "sky/engine/core/html/parser/HTMLParserIdioms.h" | 37 #include "sky/engine/core/html/parser/HTMLParserIdioms.h" |
40 #include "sky/engine/core/html/parser/HTMLSrcsetParser.h" | 38 #include "sky/engine/core/html/parser/HTMLSrcsetParser.h" |
41 #include "sky/engine/core/inspector/ConsoleMessage.h" | 39 #include "sky/engine/core/inspector/ConsoleMessage.h" |
42 #include "sky/engine/core/rendering/RenderImage.h" | 40 #include "sky/engine/core/rendering/RenderImage.h" |
43 #include "sky/engine/platform/MIMETypeRegistry.h" | 41 #include "sky/engine/platform/MIMETypeRegistry.h" |
44 | 42 |
45 namespace blink { | 43 namespace blink { |
46 | 44 |
47 class HTMLImageElement::ViewportChangeListener final : public MediaQueryListList
ener { | 45 class HTMLImageElement::ViewportChangeListener final : public MediaQueryListList
ener { |
48 public: | 46 public: |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 { | 300 { |
303 return imageLoader().imageComplete(); | 301 return imageLoader().imageComplete(); |
304 } | 302 } |
305 | 303 |
306 void HTMLImageElement::didMoveToNewDocument(Document& oldDocument) | 304 void HTMLImageElement::didMoveToNewDocument(Document& oldDocument) |
307 { | 305 { |
308 imageLoader().elementDidMoveToNewDocument(); | 306 imageLoader().elementDidMoveToNewDocument(); |
309 HTMLElement::didMoveToNewDocument(oldDocument); | 307 HTMLElement::didMoveToNewDocument(oldDocument); |
310 } | 308 } |
311 | 309 |
312 PassRefPtr<Image> HTMLImageElement::getSourceImageForCanvas(SourceImageMode, Sou
rceImageStatus* status) const | |
313 { | |
314 if (!complete() || !cachedImage()) { | |
315 *status = IncompleteSourceImageStatus; | |
316 return nullptr; | |
317 } | |
318 | |
319 if (cachedImage()->errorOccurred()) { | |
320 *status = UndecodableSourceImageStatus; | |
321 return nullptr; | |
322 } | |
323 | |
324 RefPtr<Image> sourceImage = cachedImage()->imageForRenderer(renderer()); | |
325 | |
326 // We need to synthesize a container size if a renderer is not available to
provide one. | |
327 if (!renderer() && sourceImage->usesContainerSize()) | |
328 sourceImage->setContainerSize(sourceImage->size()); | |
329 | |
330 *status = NormalSourceImageStatus; | |
331 return sourceImage->imageForDefaultFrame(); | |
332 } | |
333 | |
334 FloatSize HTMLImageElement::sourceSize() const | |
335 { | |
336 ImageResource* image = cachedImage(); | |
337 if (!image) | |
338 return FloatSize(); | |
339 return image->imageSizeForRenderer(renderer()); // FIXME: Not sure about thi
s. | |
340 } | |
341 | |
342 FloatSize HTMLImageElement::defaultDestinationSize() const | |
343 { | |
344 ImageResource* image = cachedImage(); | |
345 if (!image) | |
346 return FloatSize(); | |
347 LayoutSize size; | |
348 size = image->imageSizeForRenderer(renderer()); // FIXME: Not sure about thi
s. | |
349 if (renderer() && renderer()->isRenderImage() && image->image() && !image->i
mage()->hasRelativeWidth()) | |
350 size.scale(toRenderImage(renderer())->imageDevicePixelRatio()); | |
351 return size; | |
352 } | |
353 | |
354 void HTMLImageElement::selectSourceURL(ImageLoader::UpdateFromElementBehavior be
havior) | 310 void HTMLImageElement::selectSourceURL(ImageLoader::UpdateFromElementBehavior be
havior) |
355 { | 311 { |
356 unsigned effectiveSize = 0; | 312 unsigned effectiveSize = 0; |
357 ImageCandidate candidate = bestFitSourceForImageAttributes( | 313 ImageCandidate candidate = bestFitSourceForImageAttributes( |
358 document().devicePixelRatio(), effectiveSize, | 314 document().devicePixelRatio(), effectiveSize, |
359 getAttribute(HTMLNames::srcAttr), AtomicString()); | 315 getAttribute(HTMLNames::srcAttr), AtomicString()); |
360 setBestFitURLAndDPRFromImageCandidate(candidate); | 316 setBestFitURLAndDPRFromImageCandidate(candidate); |
361 if (m_intrinsicSizingViewportDependant && m_effectiveSizeViewportDependant &
& !m_listener.get()) { | 317 if (m_intrinsicSizingViewportDependant && m_effectiveSizeViewportDependant &
& !m_listener.get()) { |
362 m_listener = ViewportChangeListener::create(this); | 318 m_listener = ViewportChangeListener::create(this); |
363 document().mediaQueryMatcher().addViewportListener(m_listener.get()); | 319 document().mediaQueryMatcher().addViewportListener(m_listener.get()); |
364 } | 320 } |
365 imageLoader().updateFromElement(behavior); | 321 imageLoader().updateFromElement(behavior); |
366 } | 322 } |
367 | 323 |
368 const KURL& HTMLImageElement::sourceURL() const | |
369 { | |
370 return cachedImage()->response().url(); | |
371 } | 324 } |
372 | |
373 } | |
OLD | NEW |