Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Unified Diff: third_party/WebKit/Source/core/svg/SVGImageElement.cpp

Issue 2868323002: Remove the SVGImageElement::needs_loader_uri_update_ flag (Closed)
Patch Set: Make test fail on 'error' Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/svg/SVGImageElement.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/svg/SVGImageElement.cpp
diff --git a/third_party/WebKit/Source/core/svg/SVGImageElement.cpp b/third_party/WebKit/Source/core/svg/SVGImageElement.cpp
index 19538f81bedd9e09be72bcf0ae1f1d5808afbb60..3f15697a2a2de79c7972f33d1b59ae0930bdd524 100644
--- a/third_party/WebKit/Source/core/svg/SVGImageElement.cpp
+++ b/third_party/WebKit/Source/core/svg/SVGImageElement.cpp
@@ -22,9 +22,8 @@
#include "core/svg/SVGImageElement.h"
#include "core/CSSPropertyNames.h"
+#include "core/SVGNames.h"
#include "core/dom/StyleChangeReason.h"
-#include "core/frame/ImageBitmap.h"
-#include "core/frame/LocalDOMWindow.h"
#include "core/layout/LayoutImageResource.h"
#include "core/layout/svg/LayoutSVGImage.h"
@@ -53,8 +52,7 @@ inline SVGImageElement::SVGImageElement(Document& document)
preserve_aspect_ratio_(SVGAnimatedPreserveAspectRatio::Create(
this,
SVGNames::preserveAspectRatioAttr)),
- image_loader_(SVGImageLoader::Create(this)),
- needs_loader_uri_update_(true) {
+ image_loader_(SVGImageLoader::Create(this)) {
AddToPropertyMap(x_);
AddToPropertyMap(y_);
AddToPropertyMap(width_);
@@ -77,13 +75,13 @@ DEFINE_TRACE(SVGImageElement) {
bool SVGImageElement::CurrentFrameHasSingleSecurityOrigin() const {
if (LayoutSVGImage* layout_svg_image = ToLayoutSVGImage(GetLayoutObject())) {
- if (layout_svg_image->ImageResource()->HasImage()) {
- if (Image* image =
- layout_svg_image->ImageResource()->CachedImage()->GetImage())
+ LayoutImageResource* layout_image_resource =
+ layout_svg_image->ImageResource();
+ if (layout_image_resource->HasImage()) {
+ if (Image* image = layout_image_resource->CachedImage()->GetImage())
return image->CurrentFrameHasSingleSecurityOrigin();
}
}
-
return true;
}
@@ -140,11 +138,7 @@ void SVGImageElement::SvgAttributeChanged(const QualifiedName& attr_name) {
if (SVGURIReference::IsKnownAttribute(attr_name)) {
SVGElement::InvalidationGuard invalidation_guard(this);
- if (isConnected())
- GetImageLoader().UpdateFromElement(
- ImageLoader::kUpdateIgnorePreviousError);
- else
- needs_loader_uri_update_ = true;
+ GetImageLoader().UpdateFromElement(ImageLoader::kUpdateIgnorePreviousError);
return;
}
@@ -162,40 +156,29 @@ LayoutObject* SVGImageElement::CreateLayoutObject(const ComputedStyle&) {
}
bool SVGImageElement::HaveLoadedRequiredResources() {
- return !needs_loader_uri_update_ && !GetImageLoader().HasPendingActivity();
+ return !GetImageLoader().HasPendingActivity();
}
void SVGImageElement::AttachLayoutTree(const AttachContext& context) {
SVGGraphicsElement::AttachLayoutTree(context);
if (LayoutSVGImage* image_obj = ToLayoutSVGImage(GetLayoutObject())) {
- if (image_obj->ImageResource()->HasImage())
+ LayoutImageResource* layout_image_resource = image_obj->ImageResource();
+ if (layout_image_resource->HasImage())
return;
-
- image_obj->ImageResource()->SetImageResource(GetImageLoader().GetImage());
+ layout_image_resource->SetImageResource(GetImageLoader().GetImage());
}
}
Node::InsertionNotificationRequest SVGImageElement::InsertedInto(
ContainerNode* root_parent) {
- SVGGraphicsElement::InsertedInto(root_parent);
- if (!root_parent->isConnected())
- return kInsertionDone;
-
- // We can only resolve base URIs properly after tree insertion - hence, URI
- // mutations while detached are deferred until this point.
- if (needs_loader_uri_update_) {
- GetImageLoader().UpdateFromElement(ImageLoader::kUpdateIgnorePreviousError);
- needs_loader_uri_update_ = false;
- } else {
- // A previous loader update may have failed to actually fetch the image if
- // the document was inactive. In that case, force a re-update (but don't
- // clear previous errors).
- if (!GetImageLoader().GetImage())
- GetImageLoader().UpdateFromElement();
- }
+ // A previous loader update may have failed to actually fetch the image if
+ // the document was inactive. In that case, force a re-update (but don't
+ // clear previous errors).
+ if (root_parent->isConnected() && !GetImageLoader().GetImage())
+ GetImageLoader().UpdateFromElement(ImageLoader::kUpdateNormal);
- return kInsertionDone;
+ return SVGGraphicsElement::InsertedInto(root_parent);
}
FloatSize SVGImageElement::SourceDefaultObjectSize() {
@@ -211,6 +194,7 @@ const AtomicString SVGImageElement::ImageSourceURL() const {
}
void SVGImageElement::DidMoveToNewDocument(Document& old_document) {
+ // TODO(fs): Initiate a new load (like HTMLImageElement.)
GetImageLoader().ElementDidMoveToNewDocument();
SVGGraphicsElement::DidMoveToNewDocument(old_document);
}
« no previous file with comments | « third_party/WebKit/Source/core/svg/SVGImageElement.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698