Changeset 140097 in webkit
- Timestamp:
- Jan 17, 2013 7:57:06 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 29 deleted
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r140096 r140097 1 2013-01-17 Shinya Kawanaka <shinyak@chromium.org> 2 3 Revert r122824 for a while 4 https://bugs.webkit.org/show_bug.cgi?id=97867 5 6 Reviewed by Hajime Morita. 7 8 * fast/dom/shadow/select-image-with-shadow-expected.txt: Removed. 9 * fast/dom/shadow/select-image-with-shadow.html: Removed. 10 * fast/dom/shadow/shadowdom-for-image-alt-expected.html: Removed. 11 * fast/dom/shadow/shadowdom-for-image-alt-update-expected.html: Removed. 12 * fast/dom/shadow/shadowdom-for-image-alt-update.html: Removed. 13 * fast/dom/shadow/shadowdom-for-image-alt.html: Removed. 14 * fast/dom/shadow/shadowdom-for-image-content-expected.html: Removed. 15 * fast/dom/shadow/shadowdom-for-image-content.html: Removed. 16 * fast/dom/shadow/shadowdom-for-image-dynamic-expected.html: Removed. 17 * fast/dom/shadow/shadowdom-for-image-dynamic.html: Removed. 18 * fast/dom/shadow/shadowdom-for-image-event-click-expected.txt: Removed. 19 * fast/dom/shadow/shadowdom-for-image-event-click.html: Removed. 20 * fast/dom/shadow/shadowdom-for-image-expected.html: Removed. 21 * fast/dom/shadow/shadowdom-for-image-in-shadowdom-expected.html: Removed. 22 * fast/dom/shadow/shadowdom-for-image-in-shadowdom.html: Removed. 23 * fast/dom/shadow/shadowdom-for-image-map-expected.txt: Removed. 24 * fast/dom/shadow/shadowdom-for-image-map.html: Removed. 25 * fast/dom/shadow/shadowdom-for-image-style-expected.html: Removed. 26 * fast/dom/shadow/shadowdom-for-image-style.html: Removed. 27 * fast/dom/shadow/shadowdom-for-image-with-multiple-shadow-expected.html: Removed. 28 * fast/dom/shadow/shadowdom-for-image-with-multiple-shadow.html: Removed. 29 * fast/dom/shadow/shadowdom-for-image-with-pseudo-id-expected.html: Removed. 30 * fast/dom/shadow/shadowdom-for-image-with-pseudo-id.html: Removed. 31 * fast/dom/shadow/shadowdom-for-image-with-width-and-height-expected.html: Removed. 32 * fast/dom/shadow/shadowdom-for-image-with-width-and-height.html: Removed. 33 * fast/dom/shadow/shadowdom-for-image.html: Removed. 34 1 35 2013-01-17 Benjamin Poulain <bpoulain@apple.com> 2 36 -
trunk/Source/WebCore/CMakeLists.txt
r139950 r140097 1561 1561 html/shadow/HTMLContentElement.cpp 1562 1562 html/shadow/HTMLShadowElement.cpp 1563 html/shadow/ImageInnerElement.cpp1564 1563 html/shadow/InsertionPoint.cpp 1565 1564 html/shadow/MediaControlElementTypes.cpp -
trunk/Source/WebCore/ChangeLog
r140095 r140097 1 2013-01-17 Shinya Kawanaka <shinyak@chromium.org> 2 3 Revert r122824 for a while 4 https://bugs.webkit.org/show_bug.cgi?id=97867 5 6 Reviewed by Hajime Morita. 7 8 In r122824, we have introduced ImageInnerElement for making an image element ShadowDOM-available. 9 However, it turned out that making a replaced-element ShadowDOM-available has a lot of difficulty. 10 So we would like to postpone it for a while. 11 12 Since that patch makes an image element really complicated, we would like to revert it. 13 14 * CMakeLists.txt: 15 * GNUmakefile.list.am: 16 * Target.pri: 17 * WebCore.gypi: 18 * WebCore.vcproj/WebCore.vcproj: 19 * WebCore.xcodeproj/project.pbxproj: 20 * css/html.css: 21 * html/HTMLImageElement.cpp: 22 (WebCore): 23 (WebCore::HTMLImageElement::parseAttribute): 24 (WebCore::HTMLImageElement::createRenderer): 25 (WebCore::HTMLImageElement::attach): 26 * html/HTMLImageElement.h: 27 (WebCore): 28 (HTMLImageElement): 29 * html/HTMLImageLoader.cpp: 30 (WebCore::HTMLImageLoader::HTMLImageLoader): 31 (WebCore::HTMLImageLoader::dispatchLoadEvent): 32 (WebCore::HTMLImageLoader::sourceURI): 33 (WebCore::HTMLImageLoader::notifyFinished): 34 * html/HTMLImageLoader.h: 35 (HTMLImageLoader): 36 * html/HTMLInputElement.h: 37 * html/HTMLObjectElement.h: 38 * html/HTMLPlugInElement.h: 39 (WebCore): 40 * html/HTMLPlugInImageElement.h: 41 * html/HTMLTagNames.in: 42 * html/HTMLVideoElement.h: 43 * html/shadow/ImageInnerElement.cpp: Removed. 44 * html/shadow/ImageInnerElement.h: Removed. 45 * loader/ImageLoader.cpp: 46 (WebCore::ImageLoader::ImageLoader): 47 (WebCore::ImageLoader::~ImageLoader): 48 (WebCore::ImageLoader::updateFromElement): 49 (WebCore::ImageLoader::notifyFinished): 50 (WebCore::ImageLoader::renderImageResource): 51 (WebCore::ImageLoader::updatedHasPendingEvent): 52 (WebCore::ImageLoader::dispatchPendingBeforeLoadEvent): 53 (WebCore::ImageLoader::dispatchPendingLoadEvent): 54 (WebCore::ImageLoader::dispatchPendingErrorEvent): 55 * loader/ImageLoader.h: 56 (WebCore): 57 (ImageLoader): 58 (WebCore::ImageLoader::element): 59 * loader/ImageLoaderClient.h: Removed. 60 * rendering/RenderImage.cpp: 61 (WebCore::RenderImage::paintIntoRect): 62 (WebCore::RenderImage::imageMap): 63 (WebCore::RenderImage::updateAltText): 64 * rendering/RenderImage.h: 65 (WebCore): 66 (RenderImage): 67 * rendering/RenderObject.cpp: 68 (WebCore::RenderObject::shouldRespectImageOrientation): 69 * svg/SVGImageElement.h: 70 (SVGImageElement): 71 * svg/SVGImageLoader.cpp: 72 (WebCore::SVGImageLoader::SVGImageLoader): 73 (WebCore::SVGImageLoader::dispatchLoadEvent): 74 (WebCore::SVGImageLoader::sourceURI): 75 * svg/SVGImageLoader.h: 76 (SVGImageLoader): 77 1 78 2013-01-17 Joanmarie Diggs <jdiggs@igalia.com> 2 79 -
trunk/Source/WebCore/GNUmakefile.list.am
r140021 r140097 3606 3606 Source/WebCore/html/shadow/InsertionPoint.cpp \ 3607 3607 Source/WebCore/html/shadow/InsertionPoint.h \ 3608 Source/WebCore/html/shadow/ImageInnerElement.cpp \3609 Source/WebCore/html/shadow/ImageInnerElement.h \3610 3608 Source/WebCore/html/shadow/MediaControlElements.cpp \ 3611 3609 Source/WebCore/html/shadow/MediaControlElements.h \ … … 3967 3965 Source/WebCore/loader/ImageLoader.cpp \ 3968 3966 Source/WebCore/loader/ImageLoader.h \ 3969 Source/WebCore/loader/ImageLoaderClient.h \3970 3967 Source/WebCore/loader/LinkLoader.h \ 3971 3968 Source/WebCore/loader/LinkLoader.cpp \ -
trunk/Source/WebCore/Target.pri
r140029 r140097 742 742 html/shadow/HTMLShadowElement.cpp \ 743 743 html/shadow/InsertionPoint.cpp \ 744 html/shadow/ImageInnerElement.cpp \745 744 html/shadow/MediaControls.cpp \ 746 745 html/shadow/MediaControlsApple.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r139978 r140097 1929 1929 'loader/ImageLoader.cpp', 1930 1930 'loader/ImageLoader.h', 1931 'loader/ImageLoaderClient.h',1932 1931 'loader/LinkLoader.cpp', 1933 1932 'loader/LinkLoader.h', … … 3408 3407 'html/shadow/HTMLShadowElement.cpp', 3409 3408 'html/shadow/HTMLShadowElement.h', 3410 'html/shadow/ImageInnerElement.cpp',3411 'html/shadow/ImageInnerElement.h',3412 3409 'html/shadow/InsertionPoint.cpp', 3413 3410 'html/shadow/InsertionPoint.h', -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r139978 r140097 27719 27719 </File> 27720 27720 <File 27721 RelativePath="..\loader\ImageLoaderClient.h"27722 >27723 </File>27724 <File27725 27721 RelativePath="..\loader\LinkLoader.cpp" 27726 27722 > … … 64970 64966 </File> 64971 64967 <File 64972 RelativePath="..\html\shadow\ImageInnerElement.cpp"64973 >64974 </File>64975 <File64976 RelativePath="..\html\shadow\ImageInnerElement.h"64977 >64978 </File>64979 <File64980 64968 RelativePath="..\html\shadow\InsertionPoint.cpp" 64981 64969 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r139950 r140097 1694 1694 5728BD9E1625369600C40B56 /* SiblingTraversalStrategies.h in Headers */ = {isa = PBXBuildFile; fileRef = 5728BD9D1625369600C40B56 /* SiblingTraversalStrategies.h */; }; 1695 1695 573D134714CE39FF0057ABCA /* InspectorTypeBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */; }; 1696 5759898715AAC0B100353C31 /* ImageInnerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 572145CC15A51DA700AD119C /* ImageInnerElement.h */; };1697 5759898915AAC0E900353C31 /* ImageInnerElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 572145CB15A51DA700AD119C /* ImageInnerElement.cpp */; };1698 5759898F15AEAB9400353C31 /* ImageLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5759898E15AEAB9400353C31 /* ImageLoaderClient.h */; settings = {ATTRIBUTES = (Private, ); }; };1699 1696 578DA20E1520EB8C006141C1 /* InspectorFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F4F5FFC11CBD30100A186BF /* InspectorFrontend.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1700 1697 578DA20F1520EBA3006141C1 /* InspectorTypeBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 9053 9050 570B78BD1650CE81001DBE1B /* SelectRuleFeatureSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectRuleFeatureSet.cpp; sourceTree = "<group>"; }; 9054 9051 570B78BE1650CE81001DBE1B /* SelectRuleFeatureSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectRuleFeatureSet.h; sourceTree = "<group>"; }; 9055 572145CB15A51DA700AD119C /* ImageInnerElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageInnerElement.cpp; sourceTree = "<group>"; };9056 572145CC15A51DA700AD119C /* ImageInnerElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageInnerElement.h; sourceTree = "<group>"; };9057 9052 5728BD9D1625369600C40B56 /* SiblingTraversalStrategies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SiblingTraversalStrategies.h; sourceTree = "<group>"; }; 9058 9053 573D134514CE39FF0057ABCA /* InspectorTypeBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorTypeBuilder.cpp; sourceTree = "<group>"; }; 9059 9054 573D134614CE39FF0057ABCA /* InspectorTypeBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorTypeBuilder.h; sourceTree = "<group>"; }; 9060 5759898E15AEAB9400353C31 /* ImageLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageLoaderClient.h; sourceTree = "<group>"; };9061 9055 57B7919F14C6A62900F202D1 /* ContentDistributor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentDistributor.cpp; sourceTree = "<group>"; }; 9062 9056 57B791A014C6A62900F202D1 /* ContentDistributor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentDistributor.h; sourceTree = "<group>"; }; … … 15397 15391 4ABDFF0814DBE312004D117D /* HTMLShadowElement.h */, 15398 15392 4ABDFF0914DBE312004D117D /* HTMLShadowElement.idl */, 15399 572145CB15A51DA700AD119C /* ImageInnerElement.cpp */,15400 572145CC15A51DA700AD119C /* ImageInnerElement.h */,15401 15393 57CF497214EE36D700ECFF14 /* InsertionPoint.cpp */, 15402 15394 57CF497314EE36D700ECFF14 /* InsertionPoint.h */, … … 21167 21159 089582530E857A7E00F82C83 /* ImageLoader.cpp */, 21168 21160 089582540E857A7E00F82C83 /* ImageLoader.h */, 21169 5759898E15AEAB9400353C31 /* ImageLoaderClient.h */,21170 21161 98CE4325129E00BD005821DC /* LinkLoader.cpp */, 21171 21162 98CE4329129E00E5005821DC /* LinkLoader.h */, … … 24369 24360 A779791A0D6B9D0C003851B9 /* ImageData.h in Headers */, 24370 24361 97205AB61239291000B17380 /* ImageDocument.h in Headers */, 24371 5759898715AAC0B100353C31 /* ImageInnerElement.h in Headers */,24372 24362 F55B3DC21251F12D003EF269 /* ImageInputType.h in Headers */, 24373 24363 089582560E857A7E00F82C83 /* ImageLoader.h in Headers */, 24374 5759898F15AEAB9400353C31 /* ImageLoaderClient.h in Headers */,24375 24364 BC7F44A80B9E324E00A9D081 /* ImageObserver.h in Headers */, 24376 24365 2D5A5931152525D00036EE51 /* ImageOrientation.h in Headers */, … … 27635 27624 A77979190D6B9D0C003851B9 /* ImageData.cpp in Sources */, 27636 27625 97205AB51239291000B17380 /* ImageDocument.cpp in Sources */, 27637 5759898915AAC0E900353C31 /* ImageInnerElement.cpp in Sources */,27638 27626 F55B3DC11251F12D003EF269 /* ImageInputType.cpp in Sources */, 27639 27627 089582550E857A7E00F82C83 /* ImageLoader.cpp in Sources */, -
trunk/Source/WebCore/css/html.css
r139172 r140097 1118 1118 /* inline elements */ 1119 1119 1120 img {1121 display: inline-block;1122 }1123 1124 1120 u, ins { 1125 1121 text-decoration: underline -
trunk/Source/WebCore/html/HTMLImageElement.cpp
r136337 r140097 27 27 #include "CSSPropertyNames.h" 28 28 #include "CSSValueKeywords.h" 29 #include "ElementShadow.h"30 29 #include "EventNames.h" 31 30 #include "FrameView.h" … … 34 33 #include "HTMLNames.h" 35 34 #include "HTMLParserIdioms.h" 36 #include "ImageInnerElement.h"37 35 #include "RenderImage.h" 38 36 #include "ScriptEventListener.h" 39 #include "ShadowRoot.h"40 37 41 38 using namespace std; … … 44 41 45 42 using namespace HTMLNames; 46 47 void ImageElement::setImageIfNecessary(RenderObject* renderObject, ImageLoader* imageLoader)48 {49 if (renderObject && renderObject->isImage() && !imageLoader->hasPendingBeforeLoadEvent()) {50 RenderImage* renderImage = toRenderImage(renderObject);51 RenderImageResource* renderImageResource = renderImage->imageResource();52 if (renderImageResource->hasImage())53 return;54 renderImageResource->setCachedImage(imageLoader->image());55 56 // If we have no image at all because we have no src attribute, set57 // image height and width for the alt text instead.58 if (!imageLoader->image() && !renderImageResource->cachedImage())59 renderImage->setImageSizeForAltText();60 }61 }62 63 RenderObject* ImageElement::createRendererForImage(HTMLElement* element, RenderArena* arena)64 {65 RenderImage* image = new (arena) RenderImage(element);66 image->setImageResource(RenderImageResource::create());67 return image;68 }69 43 70 44 HTMLImageElement::HTMLImageElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form) … … 93 67 if (m_form) 94 68 m_form->removeImgElement(this); 95 }96 97 void HTMLImageElement::willAddAuthorShadowRoot()98 {99 if (userAgentShadowRoot())100 return;101 102 createShadowSubtree();103 }104 105 void HTMLImageElement::createShadowSubtree()106 {107 RefPtr<ImageInnerElement> innerElement = ImageInnerElement::create(document());108 109 RefPtr<ShadowRoot> root = ShadowRoot::create(this, ShadowRoot::UserAgentShadowRoot);110 root->appendChild(innerElement);111 }112 113 Element* HTMLImageElement::imageElement()114 {115 if (ShadowRoot* root = userAgentShadowRoot()) {116 ASSERT(root->firstChild()->hasTagName(webkitInnerImageTag));117 return toElement(root->firstChild());118 }119 120 return this;121 69 } 122 70 … … 163 111 { 164 112 if (name == altAttr) { 165 RenderObject* renderObject = shadow() ? innerElement()->renderer() : renderer(); 166 if (renderObject && renderObject->isImage()) 167 toRenderImage(renderObject)->updateAltText(); 168 } else if (name == srcAttr) { 113 if (renderer() && renderer()->isImage()) 114 toRenderImage(renderer())->updateAltText(); 115 } else if (name == srcAttr) 169 116 m_imageLoader.updateFromElementIgnoringPreviousError(); 170 if (ElementShadow* elementShadow = shadow()) 171 elementShadow->invalidateDistribution(); 172 } else if (name == usemapAttr) 117 else if (name == usemapAttr) 173 118 setIsLink(!value.isNull()); 174 119 else if (name == onloadAttr) … … 199 144 RenderObject* HTMLImageElement::createRenderer(RenderArena* arena, RenderStyle* style) 200 145 { 201 if (style->hasContent() || shadow())146 if (style->hasContent()) 202 147 return RenderObject::createObject(this, style); 203 148 204 return createRendererForImage(this, arena); 149 RenderImage* image = new (arena) RenderImage(this); 150 image->setImageResource(RenderImageResource::create()); 151 return image; 205 152 } 206 153 … … 216 163 { 217 164 HTMLElement::attach(); 218 setImageIfNecessary(renderer(), imageLoader()); 165 166 if (renderer() && renderer()->isImage() && !m_imageLoader.hasPendingBeforeLoadEvent()) { 167 RenderImage* renderImage = toRenderImage(renderer()); 168 RenderImageResource* renderImageResource = renderImage->imageResource(); 169 if (renderImageResource->hasImage()) 170 return; 171 renderImageResource->setCachedImage(m_imageLoader.image()); 172 173 // If we have no image at all because we have no src attribute, set 174 // image height and width for the alt text instead. 175 if (!m_imageLoader.image() && !renderImageResource->cachedImage()) 176 renderImage->setImageSizeForAltText(); 177 } 219 178 } 220 179 … … 418 377 #endif 419 378 420 inline ImageInnerElement* HTMLImageElement::innerElement() const421 {422 ASSERT(userAgentShadowRoot());423 return toImageInnerElement(userAgentShadowRoot()->firstChild());424 }425 426 379 void HTMLImageElement::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 427 380 { -
trunk/Source/WebCore/html/HTMLImageElement.h
r135069 r140097 28 28 #include "HTMLElement.h" 29 29 #include "HTMLImageLoader.h" 30 #include "ImageLoaderClient.h"31 30 32 31 namespace WebCore { 33 32 34 33 class HTMLFormElement; 35 class ImageInnerElement;36 34 37 class ImageElement { 38 protected: 39 void setImageIfNecessary(RenderObject*, ImageLoader*); 40 RenderObject* createRendererForImage(HTMLElement*, RenderArena*); 41 }; 42 43 class HTMLImageElement : public HTMLElement, public ImageElement, public ImageLoaderClient { 35 class HTMLImageElement : public HTMLElement { 44 36 friend class HTMLFormElement; 45 friend class ImageInnerElement;46 37 public: 47 38 static PassRefPtr<HTMLImageElement> create(Document*); … … 50 41 51 42 virtual ~HTMLImageElement(); 52 53 virtual void willAddAuthorShadowRoot() OVERRIDE;54 43 55 44 int width(bool ignorePendingStylesheets = false); … … 96 85 97 86 private: 98 virtual void createShadowSubtree();99 100 87 virtual bool areAuthorShadowsAllowed() const OVERRIDE { return false; } 101 102 // Implementation of ImageLoaderClient103 Element* sourceElement() { return this; }104 Element* imageElement();105 void refSourceElement() { ref(); }106 void derefSourceElement() { deref(); }107 88 108 89 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; … … 131 112 #endif 132 113 133 RenderObject* imageRenderer() const { return HTMLElement::renderer(); }134 HTMLImageLoader* imageLoader() { return &m_imageLoader; }135 ImageInnerElement* innerElement() const;136 137 114 HTMLImageLoader m_imageLoader; 138 115 HTMLFormElement* m_form; … … 140 117 }; 141 118 142 inline bool isHTMLImageElement(Node* node)143 {144 return node->hasTagName(HTMLNames::imgTag);145 }146 147 inline HTMLImageElement* toHTMLImageElement(Node* node)148 {149 ASSERT(!node || isHTMLImageElement(node));150 return static_cast<HTMLImageElement*>(node);151 }152 153 119 } //namespace 154 120 -
trunk/Source/WebCore/html/HTMLImageLoader.cpp
r139541 r140097 40 40 namespace WebCore { 41 41 42 HTMLImageLoader::HTMLImageLoader( ImageLoaderClient* client)43 : ImageLoader( client)42 HTMLImageLoader::HTMLImageLoader(Element* node) 43 : ImageLoader(node) 44 44 { 45 45 } … … 52 52 { 53 53 // HTMLVideoElement uses this class to load the poster image, but it should not fire events for loading or failure. 54 if ( client()->sourceElement()->hasTagName(HTMLNames::videoTag))54 if (element()->hasTagName(HTMLNames::videoTag)) 55 55 return; 56 56 57 57 bool errorOccurred = image()->errorOccurred(); 58 58 if (!errorOccurred && image()->response().httpStatusCode() >= 400) 59 errorOccurred = client()->sourceElement()->hasTagName(HTMLNames::objectTag); // An <object> considers a 404 to be an error and should fire onerror.60 client()->eventTarget()->dispatchEvent(Event::create(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false));59 errorOccurred = element()->hasTagName(HTMLNames::objectTag); // An <object> considers a 404 to be an error and should fire onerror. 60 element()->dispatchEvent(Event::create(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false)); 61 61 } 62 62 … … 64 64 { 65 65 #if ENABLE(DASHBOARD_SUPPORT) 66 Settings* settings = client()->sourceElement()->document()->settings();66 Settings* settings = element()->document()->settings(); 67 67 if (settings && settings->usesDashboardBackwardCompatibilityMode() && attr.length() > 7 && attr.startsWith("url(\"") && attr.endsWith("\")")) 68 68 return attr.string().substring(5, attr.length() - 7); … … 76 76 CachedImage* cachedImage = image(); 77 77 78 RefPtr<Element> element = client()->sourceElement();78 RefPtr<Element> element = this->element(); 79 79 ImageLoader::notifyFinished(cachedImage); 80 80 -
trunk/Source/WebCore/html/HTMLImageLoader.h
r122824 r140097 30 30 class HTMLImageLoader : public ImageLoader { 31 31 public: 32 HTMLImageLoader( ImageLoaderClient*);32 HTMLImageLoader(Element*); 33 33 virtual ~HTMLImageLoader(); 34 34 -
trunk/Source/WebCore/html/HTMLInputElement.h
r139663 r140097 28 28 #include "FileChooser.h" 29 29 #include "HTMLTextFormControlElement.h" 30 #include "ImageLoaderClient.h"31 30 #include "StepRange.h" 32 31 … … 44 43 struct DateTimeChooserParameters; 45 44 46 class HTMLInputElement : public HTMLTextFormControlElement , public ImageLoaderClientBase<HTMLInputElement>{45 class HTMLInputElement : public HTMLTextFormControlElement { 47 46 public: 48 47 static PassRefPtr<HTMLInputElement> create(const QualifiedName&, Document*, HTMLFormElement*, bool createdByParser); -
trunk/Source/WebCore/html/HTMLObjectElement.h
r135069 r140097 26 26 #include "FormAssociatedElement.h" 27 27 #include "HTMLPlugInImageElement.h" 28 #include "ImageLoaderClient.h"29 28 30 29 namespace WebCore { -
trunk/Source/WebCore/html/HTMLPlugInElement.h
r138729 r140097 25 25 26 26 #include "HTMLFrameOwnerElement.h" 27 #include "Image.h"28 #include "ImageLoaderClient.h"29 27 #include "ScriptInstance.h" 30 28 … … 35 33 namespace WebCore { 36 34 35 class Image; 37 36 class RenderEmbeddedObject; 38 37 class RenderWidget; -
trunk/Source/WebCore/html/HTMLPlugInImageElement.h
r138729 r140097 45 45 46 46 // Base class for HTMLObjectElement and HTMLEmbedElement 47 class HTMLPlugInImageElement : public HTMLPlugInElement , public ImageLoaderClientBase<HTMLPlugInImageElement>{47 class HTMLPlugInImageElement : public HTMLPlugInElement { 48 48 public: 49 49 virtual ~HTMLPlugInImageElement(); -
trunk/Source/WebCore/html/HTMLTagNames.in
r136467 r140097 69 69 image mapToTagName=img 70 70 img interfaceName=HTMLImageElement, constructorNeedsFormElement 71 webkitInnerImage interfaceName=HTMLElement, noConstructor72 71 input constructorNeedsFormElement, constructorNeedsCreatedByParser 73 72 intent conditional=WEB_INTENTS_TAG -
trunk/Source/WebCore/html/HTMLVideoElement.h
r135069 r140097 30 30 31 31 #include "HTMLMediaElement.h" 32 #include "ImageLoaderClient.h"33 32 34 33 namespace WebCore { … … 36 35 class HTMLImageLoader; 37 36 38 class HTMLVideoElement : public HTMLMediaElement , public ImageLoaderClientBase<HTMLVideoElement>{37 class HTMLVideoElement : public HTMLMediaElement { 39 38 public: 40 39 static PassRefPtr<HTMLVideoElement> create(const QualifiedName&, Document*, bool); -
trunk/Source/WebCore/loader/ImageLoader.cpp
r139209 r140097 29 29 #include "Document.h" 30 30 #include "Element.h" 31 #include "ElementShadow.h"32 31 #include "Event.h" 33 32 #include "EventSender.h" … … 36 35 #include "HTMLObjectElement.h" 37 36 #include "HTMLParserIdioms.h" 38 #include "ImageLoaderClient.h"39 37 #include "RenderImage.h" 40 38 #include "ScriptCallStack.h" … … 58 56 if (!p) 59 57 return; 60 ASSERT(p-> client()->imageElement());61 ValueCheck<WebCore::Element*>::checkConsistency(p-> client()->imageElement());58 ASSERT(p->element()); 59 ValueCheck<WebCore::Element*>::checkConsistency(p->element()); 62 60 } 63 61 }; … … 92 90 } 93 91 94 ImageLoader::ImageLoader( ImageLoaderClient* client)95 : m_ client(client)92 ImageLoader::ImageLoader(Element* element) 93 : m_element(element) 96 94 , m_image(0) 97 95 , m_hasPendingBeforeLoadEvent(false) … … 124 122 // remove that protection here. 125 123 if (m_elementIsProtected) 126 client()->derefSourceElement(); 127 } 128 129 inline Document* ImageLoader::document() 130 { 131 return client()->sourceElement()->document(); 124 m_element->deref(); 132 125 } 133 126 … … 174 167 // If we're not making renderers for the page, then don't load images. We don't want to slow 175 168 // down the raw HTML parsing case by loading images we don't intend to display. 176 if (!document()->renderer()) 177 return; 178 179 AtomicString attr = client()->sourceElement()->getAttribute(client()->sourceElement()->imageSourceAttributeName()); 169 Document* document = m_element->document(); 170 if (!document->renderer()) 171 return; 172 173 AtomicString attr = m_element->getAttribute(m_element->imageSourceAttributeName()); 180 174 181 175 if (attr == m_failedLoadURL) … … 186 180 CachedResourceHandle<CachedImage> newImage = 0; 187 181 if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) { 188 CachedResourceRequest request(ResourceRequest(document ()->completeURL(sourceURI(attr))));189 request.setInitiator( client()->sourceElement());190 191 String crossOriginMode = client()->sourceElement()->fastGetAttribute(HTMLNames::crossoriginAttr);182 CachedResourceRequest request(ResourceRequest(document->completeURL(sourceURI(attr)))); 183 request.setInitiator(element()); 184 185 String crossOriginMode = m_element->fastGetAttribute(HTMLNames::crossoriginAttr); 192 186 if (!crossOriginMode.isNull()) { 193 187 StoredCredentials allowCredentials = equalIgnoringCase(crossOriginMode, "use-credentials") ? AllowStoredCredentials : DoNotAllowStoredCredentials; 194 updateRequestForAccessControl(request.mutableResourceRequest(), document ()->securityOrigin(), allowCredentials);188 updateRequestForAccessControl(request.mutableResourceRequest(), document->securityOrigin(), allowCredentials); 195 189 } 196 190 197 191 if (m_loadManually) { 198 bool autoLoadOtherImages = document ()->cachedResourceLoader()->autoLoadImages();199 document ()->cachedResourceLoader()->setAutoLoadImages(false);192 bool autoLoadOtherImages = document->cachedResourceLoader()->autoLoadImages(); 193 document->cachedResourceLoader()->setAutoLoadImages(false); 200 194 newImage = new CachedImage(request.resourceRequest()); 201 195 newImage->setLoading(true); 202 newImage->setOwningCachedResourceLoader(document ()->cachedResourceLoader());203 document ()->cachedResourceLoader()->m_documentResources.set(newImage->url(), newImage.get());204 document ()->cachedResourceLoader()->setAutoLoadImages(autoLoadOtherImages);196 newImage->setOwningCachedResourceLoader(document->cachedResourceLoader()); 197 document->cachedResourceLoader()->m_documentResources.set(newImage->url(), newImage.get()); 198 document->cachedResourceLoader()->setAutoLoadImages(autoLoadOtherImages); 205 199 } else 206 newImage = document ()->cachedResourceLoader()->requestImage(request);200 newImage = document->cachedResourceLoader()->requestImage(request); 207 201 208 202 // If we do not have an image here, it means that a cross-site … … 210 204 // Security Policy, or the page is being dismissed. Trigger an 211 205 // error event if the page is not being dismissed. 212 if (!newImage && !pageIsBeingDismissed(document ())) {206 if (!newImage && !pageIsBeingDismissed(document)) { 213 207 m_failedLoadURL = attr; 214 208 m_hasPendingErrorEvent = true; … … 219 213 // Fire an error event if the url is empty. 220 214 // FIXME: Should we fire this event asynchronoulsy via errorEventSender()? 221 client()->imageElement()->dispatchEvent(Event::create(eventNames().errorEvent, false, false));215 m_element->dispatchEvent(Event::create(eventNames().errorEvent, false, false)); 222 216 } 223 217 … … 232 226 233 227 m_image = newImage; 234 m_hasPendingBeforeLoadEvent = ! document()->isImageDocument() && newImage;228 m_hasPendingBeforeLoadEvent = !m_element->document()->isImageDocument() && newImage; 235 229 m_hasPendingLoadEvent = newImage; 236 230 m_imageComplete = !newImage; 237 231 238 232 if (newImage) { 239 if (! document()->isImageDocument()) {240 if (! document()->hasListenerType(Document::BEFORELOAD_LISTENER))233 if (!m_element->document()->isImageDocument()) { 234 if (!m_element->document()->hasListenerType(Document::BEFORELOAD_LISTENER)) 241 235 dispatchPendingBeforeLoadEvent(); 242 236 else … … 280 274 return; 281 275 282 if ( client()->sourceElement()->fastHasAttribute(HTMLNames::crossoriginAttr)283 && ! document()->securityOrigin()->canRequest(image()->response().url())284 && !resource->passesAccessControlCheck( document()->securityOrigin())) {276 if (m_element->fastHasAttribute(HTMLNames::crossoriginAttr) 277 && !m_element->document()->securityOrigin()->canRequest(image()->response().url()) 278 && !resource->passesAccessControlCheck(m_element->document()->securityOrigin())) { 285 279 286 280 setImageWithoutConsideringPendingLoadEvent(0); … … 290 284 291 285 DEFINE_STATIC_LOCAL(String, consoleMessage, (ASCIILiteral("Cross-origin image load denied by Cross-Origin Resource Sharing policy."))); 292 document()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, consoleMessage);286 m_element->document()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, consoleMessage); 293 287 294 288 ASSERT(!m_hasPendingLoadEvent); … … 313 307 RenderImageResource* ImageLoader::renderImageResource() 314 308 { 315 RenderObject* renderer = client()->imageElement()->renderer();309 RenderObject* renderer = m_element->renderer(); 316 310 317 311 if (!renderer) … … 363 357 364 358 if (m_elementIsProtected) 365 client()->refSourceElement();359 m_element->ref(); 366 360 else 367 client()->derefSourceElement();361 m_element->deref(); 368 362 } 369 363 … … 386 380 if (!m_image) 387 381 return; 388 if (! document()->attached())382 if (!m_element->document()->attached()) 389 383 return; 390 384 m_hasPendingBeforeLoadEvent = false; 391 if ( client()->sourceElement()->dispatchBeforeLoadEvent(m_image->url())) {385 if (m_element->dispatchBeforeLoadEvent(m_image->url())) { 392 386 updateRenderer(); 393 387 return; … … 400 394 loadEventSender().cancelEvent(this); 401 395 m_hasPendingLoadEvent = false; 402 403 if ( client()->sourceElement()->hasTagName(HTMLNames::objectTag))404 static_cast<HTMLObjectElement*>( client()->sourceElement())->renderFallbackContent();396 397 if (m_element->hasTagName(HTMLNames::objectTag)) 398 static_cast<HTMLObjectElement*>(m_element)->renderFallbackContent(); 405 399 406 400 // Only consider updating the protection ref-count of the Element immediately before returning … … 416 410 return; 417 411 m_hasPendingLoadEvent = false; 418 if ( document()->attached())412 if (element()->document()->attached()) 419 413 dispatchLoadEvent(); 420 414 … … 429 423 return; 430 424 m_hasPendingErrorEvent = false; 431 if ( document()->attached())432 client()->imageElement()->dispatchEvent(Event::create(eventNames().errorEvent, false, false));425 if (element()->document()->attached()) 426 element()->dispatchEvent(Event::create(eventNames().errorEvent, false, false)); 433 427 434 428 // Only consider updating the protection ref-count of the Element immediately before returning -
trunk/Source/WebCore/loader/ImageLoader.h
r138724 r140097 27 27 #include "CachedImageClient.h" 28 28 #include "CachedResourceHandle.h" 29 #include <wtf/OwnPtr.h>30 #include <wtf/PassOwnPtr.h>31 29 #include <wtf/text/AtomicString.h> 32 30 … … 35 33 class Element; 36 34 class ImageLoader; 37 class ImageLoaderClient;38 class QualifiedName;39 35 class RenderImageResource; 40 36 … … 44 40 class ImageLoader : public CachedImageClient { 45 41 public: 46 explicit ImageLoader( ImageLoaderClient*);42 explicit ImageLoader(Element*); 47 43 virtual ~ImageLoader(); 48 49 ImageLoaderClient* client() const { return m_client; }50 44 51 45 // This function should be called when the element is attached to a document; starts … … 59 53 void elementDidMoveToNewDocument(); 60 54 55 Element* element() const { return m_element; } 61 56 bool imageComplete() const { return m_imageComplete; } 62 57 … … 79 74 80 75 private: 81 Document* document();82 76 virtual void dispatchLoadEvent() = 0; 83 77 virtual String sourceURI(const AtomicString&) const = 0; … … 95 89 void clearFailedLoadURL(); 96 90 97 ImageLoaderClient* m_client;91 Element* m_element; 98 92 CachedResourceHandle<CachedImage> m_image; 99 93 AtomicString m_failedLoadURL; -
trunk/Source/WebCore/rendering/RenderImage.cpp
r140039 r140097 460 460 return; 461 461 462 HTMLImageElement* imageElt = hostImageElement();462 HTMLImageElement* imageElt = (node() && node()->hasTagName(imgTag)) ? static_cast<HTMLImageElement*>(node()) : 0; 463 463 CompositeOperator compositeOperator = imageElt ? imageElt->compositeOperator() : CompositeSourceOver; 464 464 Image* image = m_imageResource->image().get(); … … 508 508 HTMLMapElement* RenderImage::imageMap() const 509 509 { 510 HTMLImageElement* i = hostImageElement();510 HTMLImageElement* i = node() && node()->hasTagName(imgTag) ? static_cast<HTMLImageElement*>(node()) : 0; 511 511 return i ? i->treeScope()->getImageMap(i->fastGetAttribute(usemapAttr)) : 0; 512 512 } … … 543 543 if (node()->hasTagName(inputTag)) 544 544 m_altText = static_cast<HTMLInputElement*>(node())->altText(); 545 else if ( HTMLImageElement* image = hostImageElement())546 m_altText = image->altText();545 else if (node()->hasTagName(imgTag)) 546 m_altText = static_cast<HTMLImageElement*>(node())->altText(); 547 547 } 548 548 … … 578 578 } 579 579 580 HTMLImageElement* RenderImage::hostImageElement() const581 {582 if (!node())583 return 0;584 585 if (isHTMLImageElement(node()))586 return toHTMLImageElement(node());587 588 if (node()->hasTagName(webkitInnerImageTag)) {589 if (Node* ancestor = node()->shadowHost()) {590 if (ancestor->hasTagName(imgTag))591 return toHTMLImageElement(ancestor);592 }593 }594 595 return 0;596 }597 598 580 bool RenderImage::needsPreferredWidthsRecalculation() const 599 581 { -
trunk/Source/WebCore/rendering/RenderImage.h
r140039 r140097 32 32 33 33 class HTMLAreaElement; 34 class HTMLImageElement;35 34 class HTMLMapElement; 36 35 … … 60 59 61 60 protected: 62 HTMLImageElement* hostImageElement() const;63 64 61 virtual bool needsPreferredWidthsRecalculation() const; 65 62 virtual RenderBox* embeddedContentBox() const; -
trunk/Source/WebCore/rendering/RenderObject.cpp
r140068 r140097 2251 2251 document()->isImageDocument() || 2252 2252 #endif 2253 (document()->settings() && document()->settings()->shouldRespectImageOrientation() && node() && (node()->hasTagName(HTMLNames::imgTag) || node()->hasTagName(HTMLNames::webkitInnerImageTag))) ? RespectImageOrientation : DoNotRespectImageOrientation;2253 (document()->settings() && document()->settings()->shouldRespectImageOrientation() && node() && node()->hasTagName(HTMLNames::imgTag)) ? RespectImageOrientation : DoNotRespectImageOrientation; 2254 2254 } 2255 2255 -
trunk/Source/WebCore/svg/SVGImageElement.h
r135069 r140097 23 23 24 24 #if ENABLE(SVG) 25 #include "ImageLoaderClient.h"26 25 #include "SVGAnimatedBoolean.h" 27 26 #include "SVGAnimatedLength.h" … … 40 39 public SVGLangSpace, 41 40 public SVGExternalResourcesRequired, 42 public SVGURIReference, 43 public ImageLoaderClientBase<SVGImageElement> { 41 public SVGURIReference { 44 42 public: 45 43 static PassRefPtr<SVGImageElement> create(const QualifiedName&, Document*); … … 47 45 private: 48 46 SVGImageElement(const QualifiedName&, Document*); 49 47 50 48 virtual bool isValid() const { return SVGTests::isValid(); } 51 49 virtual bool supportsFocus() const { return true; } -
trunk/Source/WebCore/svg/SVGImageLoader.cpp
r122824 r140097 27 27 #include "EventNames.h" 28 28 #include "HTMLParserIdioms.h" 29 #include "ImageLoaderClient.h"30 29 #include "RenderImage.h" 31 30 #include "SVGImageElement.h" … … 33 32 namespace WebCore { 34 33 35 SVGImageLoader::SVGImageLoader( ImageLoaderClient* client)36 : ImageLoader( client)34 SVGImageLoader::SVGImageLoader(SVGImageElement* node) 35 : ImageLoader(node) 37 36 { 38 37 } … … 41 40 { 42 41 if (image()->errorOccurred()) 43 client()->imageElement()->dispatchEvent(Event::create(eventNames().errorEvent, false, false));42 element()->dispatchEvent(Event::create(eventNames().errorEvent, false, false)); 44 43 else { 45 SVGImageElement* imageElement = static_cast<SVGImageElement*>( client()->imageElement());44 SVGImageElement* imageElement = static_cast<SVGImageElement*>(element()); 46 45 if (imageElement->externalResourcesRequiredBaseValue()) 47 46 imageElement->sendSVGLoadEventIfPossible(true); … … 51 50 String SVGImageLoader::sourceURI(const AtomicString& attribute) const 52 51 { 53 KURL base = client()->sourceElement()->baseURI();52 KURL base = element()->baseURI(); 54 53 if (base.isValid()) 55 54 return KURL(base, stripLeadingAndTrailingHTMLSpaces(attribute)).string(); 56 return client()->sourceElement()->document()->completeURL(stripLeadingAndTrailingHTMLSpaces(attribute));55 return element()->document()->completeURL(stripLeadingAndTrailingHTMLSpaces(attribute)); 57 56 } 58 57 -
trunk/Source/WebCore/svg/SVGImageLoader.h
r122824 r140097 30 30 class SVGImageLoader : public ImageLoader { 31 31 public: 32 SVGImageLoader( ImageLoaderClient*);32 SVGImageLoader(SVGImageElement*); 33 33 34 34 private:
Note: See TracChangeset
for help on using the changeset viewer.