Chromium Code Reviews| 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..a3d1ab407096a5db4fccb50ae2d0045c5c861783 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,19 @@ 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; |
| + Node* node; |
| + NodeVector potentialSourceNodes; |
| + getChildNodes(*this, potentialSourceNodes); |
|
esprehn
2015/12/14 22:52:42
This copies every kid into a vector, if you're rem
|
| + |
| + for (unsigned i = 0; i < potentialSourceNodes.size(); ++i) { |
| + node = potentialSourceNodes[i].get(); |
| + if (sourceElement == node || (next && node == next)) |
| + seenSource = true; |
| + if (isHTMLImageElement(node) && seenSource) |
| + toHTMLImageElement(node)->selectSourceURL(ImageLoader::UpdateNormal); |
| } |
| } |