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

Side by Side Diff: Source/core/html/HTMLAnchorElement.cpp

Issue 22604008: Allow SVG images to not taint the canvas with drawImage/drawPattern (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Simon Hausmann <hausmann@kde.org> 4 * (C) 2000 Simon Hausmann <hausmann@kde.org>
5 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 5 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
6 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 6 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 30 matching lines...) Expand all
41 #include "core/page/Chrome.h" 41 #include "core/page/Chrome.h"
42 #include "core/page/ChromeClient.h" 42 #include "core/page/ChromeClient.h"
43 #include "core/page/Frame.h" 43 #include "core/page/Frame.h"
44 #include "core/page/Page.h" 44 #include "core/page/Page.h"
45 #include "core/page/Settings.h" 45 #include "core/page/Settings.h"
46 #include "core/platform/HistogramSupport.h" 46 #include "core/platform/HistogramSupport.h"
47 #include "core/platform/PlatformMouseEvent.h" 47 #include "core/platform/PlatformMouseEvent.h"
48 #include "core/platform/network/DNS.h" 48 #include "core/platform/network/DNS.h"
49 #include "core/platform/network/ResourceRequest.h" 49 #include "core/platform/network/ResourceRequest.h"
50 #include "core/rendering/RenderImage.h" 50 #include "core/rendering/RenderImage.h"
51 #include "core/svg/graphics/SVGImage.h"
51 #include "public/platform/Platform.h" 52 #include "public/platform/Platform.h"
52 #include "public/platform/WebPrescientNetworking.h" 53 #include "public/platform/WebPrescientNetworking.h"
53 #include "public/platform/WebURL.h" 54 #include "public/platform/WebURL.h"
54 #include "weborigin/KnownPorts.h" 55 #include "weborigin/KnownPorts.h"
55 #include "weborigin/SecurityOrigin.h" 56 #include "weborigin/SecurityOrigin.h"
56 #include "weborigin/SecurityPolicy.h" 57 #include "weborigin/SecurityPolicy.h"
57 #include "wtf/text/StringBuilder.h" 58 #include "wtf/text/StringBuilder.h"
58 59
59 namespace WebCore { 60 namespace WebCore {
60 61
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 275
275 } 276 }
276 277
277 ContainerNode::setActive(down, pause); 278 ContainerNode::setActive(down, pause);
278 } 279 }
279 280
280 void HTMLAnchorElement::parseAttribute(const QualifiedName& name, const AtomicSt ring& value) 281 void HTMLAnchorElement::parseAttribute(const QualifiedName& name, const AtomicSt ring& value)
281 { 282 {
282 if (name == hrefAttr) { 283 if (name == hrefAttr) {
283 bool wasLink = isLink(); 284 bool wasLink = isLink();
284 setIsLink(!value.isNull()); 285 setIsLink(!value.isNull() && !shouldProhibitLinks(this));
285 if (wasLink != isLink()) { 286 if (wasLink != isLink()) {
286 didAffectSelector(AffectedSelectorLink | AffectedSelectorVisited | A ffectedSelectorEnabled); 287 didAffectSelector(AffectedSelectorLink | AffectedSelectorVisited | A ffectedSelectorEnabled);
287 if (wasLink && treeScope()->adjustedFocusedElement() == this) { 288 if (wasLink && treeScope()->adjustedFocusedElement() == this) {
288 // We might want to call blur(), but it's dangerous to dispatch 289 // We might want to call blur(), but it's dangerous to dispatch
289 // events here. 290 // events here.
290 document()->setNeedsFocusedElementCheck(); 291 document()->setNeedsFocusedElementCheck();
291 } 292 }
292 } 293 }
293 if (isLink()) { 294 if (isLink()) {
294 String parsedURL = stripLeadingAndTrailingHTMLSpaces(value); 295 String parsedURL = stripLeadingAndTrailingHTMLSpaces(value);
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 bool isEnterKeyKeydownEvent(Event* event) 643 bool isEnterKeyKeydownEvent(Event* event)
643 { 644 {
644 return event->type() == eventNames().keydownEvent && event->isKeyboardEvent( ) && toKeyboardEvent(event)->keyIdentifier() == "Enter"; 645 return event->type() == eventNames().keydownEvent && event->isKeyboardEvent( ) && toKeyboardEvent(event)->keyIdentifier() == "Enter";
645 } 646 }
646 647
647 bool isLinkClick(Event* event) 648 bool isLinkClick(Event* event)
648 { 649 {
649 return event->type() == eventNames().clickEvent && (!event->isMouseEvent() | | toMouseEvent(event)->button() != RightButton); 650 return event->type() == eventNames().clickEvent && (!event->isMouseEvent() | | toMouseEvent(event)->button() != RightButton);
650 } 651 }
651 652
653 bool shouldProhibitLinks(Element* element)
654 {
655 return SVGImage::isInSVGImage(element);
656 }
657
652 bool HTMLAnchorElement::willRespondToMouseClickEvents() 658 bool HTMLAnchorElement::willRespondToMouseClickEvents()
653 { 659 {
654 return isLink() || HTMLElement::willRespondToMouseClickEvents(); 660 return isLink() || HTMLElement::willRespondToMouseClickEvents();
655 } 661 }
656 662
657 typedef HashMap<const HTMLAnchorElement*, RefPtr<Element> > RootEditableElementM ap; 663 typedef HashMap<const HTMLAnchorElement*, RefPtr<Element> > RootEditableElementM ap;
658 664
659 static RootEditableElementMap& rootEditableElementMap() 665 static RootEditableElementMap& rootEditableElementMap()
660 { 666 {
661 DEFINE_STATIC_LOCAL(RootEditableElementMap, map, ()); 667 DEFINE_STATIC_LOCAL(RootEditableElementMap, map, ());
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 857
852 // The precision of current MouseOver trigger is too low to actually trigger preconnects. 858 // The precision of current MouseOver trigger is too low to actually trigger preconnects.
853 if (motivation == WebKit::WebPreconnectMotivationLinkMouseOver) 859 if (motivation == WebKit::WebPreconnectMotivationLinkMouseOver)
854 return; 860 return;
855 861
856 preconnectToURL(url, motivation); 862 preconnectToURL(url, motivation);
857 m_hasIssuedPreconnect = true; 863 m_hasIssuedPreconnect = true;
858 } 864 }
859 865
860 } 866 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698