Index: Source/core/html/forms/ImageInputType.cpp |
diff --git a/Source/core/html/forms/ImageInputType.cpp b/Source/core/html/forms/ImageInputType.cpp |
index 6c6f624e70d399cd4d397058cb5a89ff2c6adb46..e4c64d83f6f7385dcfcd300ec271e9821d035c28 100644 |
--- a/Source/core/html/forms/ImageInputType.cpp |
+++ b/Source/core/html/forms/ImageInputType.cpp |
@@ -25,16 +25,13 @@ |
#include "core/HTMLNames.h" |
#include "core/InputTypeNames.h" |
-#include "core/dom/shadow/ShadowRoot.h" |
#include "core/events/MouseEvent.h" |
#include "core/fetch/ImageResource.h" |
#include "core/html/FormDataList.h" |
#include "core/html/HTMLFormElement.h" |
-#include "core/html/HTMLImageFallbackHelper.h" |
#include "core/html/HTMLImageLoader.h" |
#include "core/html/HTMLInputElement.h" |
#include "core/html/parser/HTMLParserIdioms.h" |
-#include "core/rendering/RenderBlockFlow.h" |
#include "core/rendering/RenderImage.h" |
#include "wtf/PassOwnPtr.h" |
#include "wtf/text/StringBuilder.h" |
@@ -45,7 +42,6 @@ |
inline ImageInputType::ImageInputType(HTMLInputElement& element) |
: BaseButtonInputType(element) |
- , m_useFallbackContent(false) |
{ |
} |
@@ -121,10 +117,8 @@ |
event->setDefaultHandled(); |
} |
-RenderObject* ImageInputType::createRenderer(RenderStyle* style) const |
-{ |
- if (m_useFallbackContent) |
- return new RenderBlockFlow(&element()); |
+RenderObject* ImageInputType::createRenderer(RenderStyle*) const |
+{ |
RenderImage* image = new RenderImage(&element()); |
image->setImageResource(RenderImageResource::create()); |
return image; |
@@ -132,12 +126,10 @@ |
void ImageInputType::altAttributeChanged() |
{ |
- if (element().userAgentShadowRoot()) { |
- Element* text = element().userAgentShadowRoot()->getElementById("alttext"); |
- String value = element().altText(); |
- if (text && text->textContent() != value) |
- text->setTextContent(element().altText()); |
- } |
+ RenderImage* image = toRenderImage(element().renderer()); |
+ if (!image) |
+ return; |
+ image->updateAltText(); |
} |
void ImageInputType::srcAttributeChanged() |
@@ -145,13 +137,6 @@ |
if (!element().renderer()) |
return; |
element().ensureImageLoader().updateFromElement(ImageLoader::UpdateIgnorePreviousError); |
-} |
- |
-void ImageInputType::valueAttributeChanged() |
-{ |
- if (m_useFallbackContent) |
- return; |
- BaseButtonInputType::valueAttributeChanged(); |
} |
void ImageInputType::startResourceLoading() |
@@ -161,12 +146,17 @@ |
HTMLImageLoader& imageLoader = element().ensureImageLoader(); |
imageLoader.updateFromElement(); |
- RenderObject* renderer = element().renderer(); |
- if (!renderer || !renderer->isRenderImage()) |
- return; |
- |
- RenderImageResource* imageResource = toRenderImage(renderer)->imageResource(); |
+ RenderImage* renderer = toRenderImage(element().renderer()); |
+ if (!renderer) |
+ return; |
+ |
+ RenderImageResource* imageResource = renderer->imageResource(); |
imageResource->setImageResource(imageLoader.image()); |
+ |
+ // If we have no image at all because we have no src attribute, set |
+ // image height and width for the alt text instead. |
+ if (!imageLoader.image() && !imageResource->cachedImage()) |
+ renderer->setImageSizeForAltText(); |
} |
bool ImageInputType::shouldRespectAlignAttribute() |
@@ -243,59 +233,4 @@ |
return srcAttr; |
} |
-void ImageInputType::ensureFallbackContent() |
-{ |
- if (m_useFallbackContent) |
- return; |
- setUseFallbackContent(); |
- reattachFallbackContent(); |
-} |
- |
-void ImageInputType::setUseFallbackContent() |
-{ |
- if (m_useFallbackContent) |
- return; |
- m_useFallbackContent = true; |
- if (element().document().inStyleRecalc()) |
- return; |
- if (ShadowRoot* root = element().userAgentShadowRoot()) |
- root->removeChildren(); |
- createShadowSubtree(); |
-} |
- |
-void ImageInputType::ensurePrimaryContent() |
-{ |
- if (!m_useFallbackContent) |
- return; |
- m_useFallbackContent = false; |
- reattachFallbackContent(); |
-} |
- |
-void ImageInputType::reattachFallbackContent() |
-{ |
- // This can happen inside of attach() in the middle of a recalcStyle so we need to |
- // reattach synchronously here. |
- if (element().document().inStyleRecalc()) |
- element().reattach(); |
- else |
- element().lazyReattachIfAttached(); |
-} |
- |
-void ImageInputType::createShadowSubtree() |
-{ |
- if (!m_useFallbackContent) { |
- BaseButtonInputType::createShadowSubtree(); |
- return; |
- } |
- HTMLImageFallbackHelper::createAltTextShadowTree(element()); |
-} |
- |
-PassRefPtr<RenderStyle> ImageInputType::customStyleForRenderer(PassRefPtr<RenderStyle> newStyle) |
-{ |
- if (!m_useFallbackContent) |
- return newStyle; |
- |
- return HTMLImageFallbackHelper::customStyleForAltText(element(), newStyle); |
-} |
- |
} // namespace blink |