| Index: Source/core/html/forms/ImageInputType.cpp
|
| diff --git a/Source/core/html/forms/ImageInputType.cpp b/Source/core/html/forms/ImageInputType.cpp
|
| index 8966cfa7cae9f4e7948383655787c660f176b53a..fa98dce704df61032bdd12c58210ff8a249f80da 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().imageLoader()->updateFromElement(ImageLoader::UpdateIgnorePreviousError);
|
| -}
|
| -
|
| -void ImageInputType::valueAttributeChanged()
|
| -{
|
| - if (m_useFallbackContent)
|
| - return;
|
| - BaseButtonInputType::valueAttributeChanged();
|
| }
|
|
|
| void ImageInputType::startResourceLoading()
|
| @@ -161,12 +146,17 @@
|
| HTMLImageLoader* imageLoader = element().imageLoader();
|
| 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()
|
| @@ -247,57 +237,4 @@
|
| return srcAttr;
|
| }
|
|
|
| -void ImageInputType::ensureFallbackContent()
|
| -{
|
| - if (m_useFallbackContent)
|
| - return;
|
| - setUseFallbackContent();
|
| - reattachFallbackContent();
|
| -}
|
| -
|
| -void ImageInputType::setUseFallbackContent()
|
| -{
|
| - if (m_useFallbackContent)
|
| - return;
|
| - m_useFallbackContent = true;
|
| - 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
|
|
|