| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 #include "platform/EventDispatchForbiddenScope.h" | 54 #include "platform/EventDispatchForbiddenScope.h" |
| 55 #include "platform/MIMETypeRegistry.h" | 55 #include "platform/MIMETypeRegistry.h" |
| 56 #include "platform/weborigin/SecurityPolicy.h" | 56 #include "platform/weborigin/SecurityPolicy.h" |
| 57 | 57 |
| 58 namespace blink { | 58 namespace blink { |
| 59 | 59 |
| 60 using namespace HTMLNames; | 60 using namespace HTMLNames; |
| 61 | 61 |
| 62 class HTMLImageElement::ViewportChangeListener final : public MediaQueryListList
ener { | 62 class HTMLImageElement::ViewportChangeListener final : public MediaQueryListList
ener { |
| 63 public: | 63 public: |
| 64 static RefPtrWillBeRawPtr<ViewportChangeListener> create(HTMLImageElement* e
lement) | 64 static RawPtr<ViewportChangeListener> create(HTMLImageElement* element) |
| 65 { | 65 { |
| 66 return adoptRefWillBeNoop(new ViewportChangeListener(element)); | 66 return new ViewportChangeListener(element); |
| 67 } | 67 } |
| 68 | 68 |
| 69 void notifyMediaQueryChanged() override | 69 void notifyMediaQueryChanged() override |
| 70 { | 70 { |
| 71 if (m_element) | 71 if (m_element) |
| 72 m_element->notifyViewportChanged(); | 72 m_element->notifyViewportChanged(); |
| 73 } | 73 } |
| 74 | 74 |
| 75 #if !ENABLE(OILPAN) | 75 #if !ENABLE(OILPAN) |
| 76 void clearElement() { m_element = nullptr; } | 76 void clearElement() { m_element = nullptr; } |
| 77 #endif | 77 #endif |
| 78 DEFINE_INLINE_VIRTUAL_TRACE() | 78 DEFINE_INLINE_VIRTUAL_TRACE() |
| 79 { | 79 { |
| 80 visitor->trace(m_element); | 80 visitor->trace(m_element); |
| 81 MediaQueryListListener::trace(visitor); | 81 MediaQueryListListener::trace(visitor); |
| 82 } | 82 } |
| 83 private: | 83 private: |
| 84 explicit ViewportChangeListener(HTMLImageElement* element) : m_element(eleme
nt) { } | 84 explicit ViewportChangeListener(HTMLImageElement* element) : m_element(eleme
nt) { } |
| 85 RawPtrWillBeMember<HTMLImageElement> m_element; | 85 Member<HTMLImageElement> m_element; |
| 86 }; | 86 }; |
| 87 | 87 |
| 88 HTMLImageElement::HTMLImageElement(Document& document, HTMLFormElement* form, bo
ol createdByParser) | 88 HTMLImageElement::HTMLImageElement(Document& document, HTMLFormElement* form, bo
ol createdByParser) |
| 89 : HTMLElement(imgTag, document) | 89 : HTMLElement(imgTag, document) |
| 90 , ActiveScriptWrappable(this) | 90 , ActiveScriptWrappable(this) |
| 91 , m_imageLoader(HTMLImageLoader::create(this)) | 91 , m_imageLoader(HTMLImageLoader::create(this)) |
| 92 , m_imageDevicePixelRatio(1.0f) | 92 , m_imageDevicePixelRatio(1.0f) |
| 93 , m_source(nullptr) | 93 , m_source(nullptr) |
| 94 , m_formWasSetByParser(false) | 94 , m_formWasSetByParser(false) |
| 95 , m_elementCreatedByParser(createdByParser) | 95 , m_elementCreatedByParser(createdByParser) |
| 96 , m_useFallbackContent(false) | 96 , m_useFallbackContent(false) |
| 97 , m_isFallbackImage(false) | 97 , m_isFallbackImage(false) |
| 98 , m_referrerPolicy(ReferrerPolicyDefault) | 98 , m_referrerPolicy(ReferrerPolicyDefault) |
| 99 { | 99 { |
| 100 setHasCustomStyleCallbacks(); | 100 setHasCustomStyleCallbacks(); |
| 101 if (form && form->inDocument()) { | 101 if (form && form->inDocument()) { |
| 102 #if ENABLE(OILPAN) | 102 #if ENABLE(OILPAN) |
| 103 m_form = form; | 103 m_form = form; |
| 104 #else | 104 #else |
| 105 m_form = form->createWeakPtr(); | 105 m_form = form->createWeakPtr(); |
| 106 #endif | 106 #endif |
| 107 m_formWasSetByParser = true; | 107 m_formWasSetByParser = true; |
| 108 m_form->associate(*this); | 108 m_form->associate(*this); |
| 109 m_form->didAssociateByParser(); | 109 m_form->didAssociateByParser(); |
| 110 } | 110 } |
| 111 } | 111 } |
| 112 | 112 |
| 113 PassRefPtrWillBeRawPtr<HTMLImageElement> HTMLImageElement::create(Document& docu
ment) | 113 RawPtr<HTMLImageElement> HTMLImageElement::create(Document& document) |
| 114 { | 114 { |
| 115 return adoptRefWillBeNoop(new HTMLImageElement(document)); | 115 return new HTMLImageElement(document); |
| 116 } | 116 } |
| 117 | 117 |
| 118 PassRefPtrWillBeRawPtr<HTMLImageElement> HTMLImageElement::create(Document& docu
ment, HTMLFormElement* form, bool createdByParser) | 118 RawPtr<HTMLImageElement> HTMLImageElement::create(Document& document, HTMLFormEl
ement* form, bool createdByParser) |
| 119 { | 119 { |
| 120 return adoptRefWillBeNoop(new HTMLImageElement(document, form, createdByPars
er)); | 120 return new HTMLImageElement(document, form, createdByParser); |
| 121 } | 121 } |
| 122 | 122 |
| 123 HTMLImageElement::~HTMLImageElement() | 123 HTMLImageElement::~HTMLImageElement() |
| 124 { | 124 { |
| 125 #if !ENABLE(OILPAN) | 125 #if !ENABLE(OILPAN) |
| 126 if (m_listener) { | 126 if (m_listener) { |
| 127 document().mediaQueryMatcher().removeViewportListener(m_listener.get()); | 127 document().mediaQueryMatcher().removeViewportListener(m_listener.get()); |
| 128 m_listener->clearElement(); | 128 m_listener->clearElement(); |
| 129 } | 129 } |
| 130 if (m_form) | 130 if (m_form) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 142 } | 142 } |
| 143 | 143 |
| 144 void HTMLImageElement::notifyViewportChanged() | 144 void HTMLImageElement::notifyViewportChanged() |
| 145 { | 145 { |
| 146 // Re-selecting the source URL in order to pick a more fitting resource | 146 // Re-selecting the source URL in order to pick a more fitting resource |
| 147 // And update the image's intrinsic dimensions when the viewport changes. | 147 // And update the image's intrinsic dimensions when the viewport changes. |
| 148 // Picking of a better fitting resource is UA dependant, not spec required. | 148 // Picking of a better fitting resource is UA dependant, not spec required. |
| 149 selectSourceURL(ImageLoader::UpdateSizeChanged); | 149 selectSourceURL(ImageLoader::UpdateSizeChanged); |
| 150 } | 150 } |
| 151 | 151 |
| 152 PassRefPtrWillBeRawPtr<HTMLImageElement> HTMLImageElement::createForJSConstructo
r(Document& document) | 152 RawPtr<HTMLImageElement> HTMLImageElement::createForJSConstructor(Document& docu
ment) |
| 153 { | 153 { |
| 154 RefPtrWillBeRawPtr<HTMLImageElement> image = adoptRefWillBeNoop(new HTMLImag
eElement(document)); | 154 RawPtr<HTMLImageElement> image = new HTMLImageElement(document); |
| 155 image->m_elementCreatedByParser = false; | 155 image->m_elementCreatedByParser = false; |
| 156 return image.release(); | 156 return image.release(); |
| 157 } | 157 } |
| 158 | 158 |
| 159 PassRefPtrWillBeRawPtr<HTMLImageElement> HTMLImageElement::createForJSConstructo
r(Document& document, int width) | 159 RawPtr<HTMLImageElement> HTMLImageElement::createForJSConstructor(Document& docu
ment, int width) |
| 160 { | 160 { |
| 161 RefPtrWillBeRawPtr<HTMLImageElement> image = adoptRefWillBeNoop(new HTMLImag
eElement(document)); | 161 RawPtr<HTMLImageElement> image = new HTMLImageElement(document); |
| 162 image->setWidth(width); | 162 image->setWidth(width); |
| 163 image->m_elementCreatedByParser = false; | 163 image->m_elementCreatedByParser = false; |
| 164 return image.release(); | 164 return image.release(); |
| 165 } | 165 } |
| 166 | 166 |
| 167 PassRefPtrWillBeRawPtr<HTMLImageElement> HTMLImageElement::createForJSConstructo
r(Document& document, int width, int height) | 167 RawPtr<HTMLImageElement> HTMLImageElement::createForJSConstructor(Document& docu
ment, int width, int height) |
| 168 { | 168 { |
| 169 RefPtrWillBeRawPtr<HTMLImageElement> image = adoptRefWillBeNoop(new HTMLImag
eElement(document)); | 169 RawPtr<HTMLImageElement> image = new HTMLImageElement(document); |
| 170 image->setWidth(width); | 170 image->setWidth(width); |
| 171 image->setHeight(height); | 171 image->setHeight(height); |
| 172 image->m_elementCreatedByParser = false; | 172 image->m_elementCreatedByParser = false; |
| 173 return image.release(); | 173 return image.release(); |
| 174 } | 174 } |
| 175 | 175 |
| 176 bool HTMLImageElement::isPresentationAttribute(const QualifiedName& name) const | 176 bool HTMLImageElement::isPresentationAttribute(const QualifiedName& name) const |
| 177 { | 177 { |
| 178 if (name == widthAttr || name == heightAttr || name == borderAttr || name ==
vspaceAttr || name == hspaceAttr || name == alignAttr || name == valignAttr) | 178 if (name == widthAttr || name == heightAttr || name == borderAttr || name ==
vspaceAttr || name == hspaceAttr || name == alignAttr || name == valignAttr) |
| 179 return true; | 179 return true; |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 void HTMLImageElement::attach(const AttachContext& context) | 374 void HTMLImageElement::attach(const AttachContext& context) |
| 375 { | 375 { |
| 376 HTMLElement::attach(context); | 376 HTMLElement::attach(context); |
| 377 | 377 |
| 378 if (layoutObject() && layoutObject()->isImage()) { | 378 if (layoutObject() && layoutObject()->isImage()) { |
| 379 LayoutImage* layoutImage = toLayoutImage(layoutObject()); | 379 LayoutImage* layoutImage = toLayoutImage(layoutObject()); |
| 380 LayoutImageResource* layoutImageResource = layoutImage->imageResource(); | 380 LayoutImageResource* layoutImageResource = layoutImage->imageResource(); |
| 381 if (m_isFallbackImage) { | 381 if (m_isFallbackImage) { |
| 382 float deviceScaleFactor = blink::deviceScaleFactor(layoutImage->fram
e()); | 382 float deviceScaleFactor = blink::deviceScaleFactor(layoutImage->fram
e()); |
| 383 std::pair<Image*, float> brokenImageAndImageScaleFactor = ImageResou
rce::brokenImage(deviceScaleFactor); | 383 std::pair<Image*, float> brokenImageAndImageScaleFactor = ImageResou
rce::brokenImage(deviceScaleFactor); |
| 384 RefPtrWillBeRawPtr<ImageResource> newImageResource = ImageResource::
create(brokenImageAndImageScaleFactor.first); | 384 RawPtr<ImageResource> newImageResource = ImageResource::create(broke
nImageAndImageScaleFactor.first); |
| 385 layoutImage->imageResource()->setImageResource(newImageResource.get(
)); | 385 layoutImage->imageResource()->setImageResource(newImageResource.get(
)); |
| 386 } | 386 } |
| 387 if (layoutImageResource->hasImage()) | 387 if (layoutImageResource->hasImage()) |
| 388 return; | 388 return; |
| 389 | 389 |
| 390 if (!imageLoader().image() && !layoutImageResource->cachedImage()) | 390 if (!imageLoader().image() && !layoutImageResource->cachedImage()) |
| 391 return; | 391 return; |
| 392 layoutImageResource->setImageResource(imageLoader().image()); | 392 layoutImageResource->setImageResource(imageLoader().image()); |
| 393 } | 393 } |
| 394 } | 394 } |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 { | 836 { |
| 837 ImageResource* image = cachedImage(); | 837 ImageResource* image = cachedImage(); |
| 838 if (!image) | 838 if (!image) |
| 839 return IntSize(); | 839 return IntSize(); |
| 840 LayoutSize lSize = image->imageSize(LayoutObject::shouldRespectImageOrientat
ion(layoutObject()), 1.0f); | 840 LayoutSize lSize = image->imageSize(LayoutObject::shouldRespectImageOrientat
ion(layoutObject()), 1.0f); |
| 841 ASSERT(lSize.fraction().isZero()); | 841 ASSERT(lSize.fraction().isZero()); |
| 842 return IntSize(lSize.width(), lSize.height()); | 842 return IntSize(lSize.width(), lSize.height()); |
| 843 } | 843 } |
| 844 | 844 |
| 845 } // namespace blink | 845 } // namespace blink |
| OLD | NEW |