Index: third_party/WebKit/Source/core/html/HTMLPictureElement.cpp |
diff --git a/third_party/WebKit/Source/core/html/HTMLPictureElement.cpp b/third_party/WebKit/Source/core/html/HTMLPictureElement.cpp |
index f71379d9380dfb70f566c90e38b603870d037655..96fa451878770a4c6d00f32638eb8557b1619097 100644 |
--- a/third_party/WebKit/Source/core/html/HTMLPictureElement.cpp |
+++ b/third_party/WebKit/Source/core/html/HTMLPictureElement.cpp |
@@ -9,6 +9,7 @@ |
#include "core/dom/ElementTraversal.h" |
#include "core/frame/UseCounter.h" |
#include "core/html/HTMLImageElement.h" |
+#include "core/html/HTMLSourceElement.h" |
#include "core/loader/ImageLoader.h" |
namespace blink { |
@@ -22,10 +23,14 @@ inline HTMLPictureElement::HTMLPictureElement(Document& document) |
DEFINE_NODE_FACTORY(HTMLPictureElement) |
-void HTMLPictureElement::sourceOrMediaChanged() |
+void HTMLPictureElement::sourceOrMediaChanged(HTMLElement* sourceElement, Node* next) |
{ |
- for (HTMLImageElement* imageElement = Traversal<HTMLImageElement>::firstChild(*this); imageElement; imageElement = Traversal<HTMLImageElement>::nextSibling(*imageElement)) { |
- imageElement->selectSourceURL(ImageLoader::UpdateNormal); |
+ bool seenSource = false; |
+ for (HTMLElement* element = Traversal<HTMLElement>::firstChild(*this); element; element = Traversal<HTMLElement>::nextSibling(*element)) { |
+ if (sourceElement == element || (next && element == next)) |
+ seenSource = true; |
+ if (isHTMLImageElement(element) && seenSource) |
+ toHTMLImageElement(element)->selectSourceURL(ImageLoader::UpdateNormal); |
} |
} |