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

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLLinkElement.cpp

Issue 2424943002: Add ReferrerPolicy support to preload (Closed)
Patch Set: Created 4 years, 2 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
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) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@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 * Copyright (C) 2009 Rob Buis (rwlbuis@gmail.com) 6 * Copyright (C) 2009 Rob Buis (rwlbuis@gmail.com)
7 * Copyright (C) 2011 Google Inc. All rights reserved. 7 * Copyright (C) 2011 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 // Log href attribute before logging resource fetching in process(). 96 // Log href attribute before logging resource fetching in process().
97 logUpdateAttributeIfIsolatedWorldAndInDocument("link", hrefAttr, oldValue, 97 logUpdateAttributeIfIsolatedWorldAndInDocument("link", hrefAttr, oldValue,
98 value); 98 value);
99 process(); 99 process();
100 } else if (name == typeAttr) { 100 } else if (name == typeAttr) {
101 m_type = value; 101 m_type = value;
102 process(); 102 process();
103 } else if (name == asAttr) { 103 } else if (name == asAttr) {
104 m_as = value; 104 m_as = value;
105 process(); 105 process();
106 } else if (name == referrerpolicyAttr) {
107 m_referrerPolicy = value;
106 } else if (name == sizesAttr) { 108 } else if (name == sizesAttr) {
107 m_sizes->setValue(value); 109 m_sizes->setValue(value);
108 } else if (name == mediaAttr) { 110 } else if (name == mediaAttr) {
109 m_media = value.lower(); 111 m_media = value.lower();
110 process(); 112 process();
111 } else if (name == scopeAttr) { 113 } else if (name == scopeAttr) {
112 m_scope = value; 114 m_scope = value;
113 process(); 115 process();
114 } else if (name == disabledAttr) { 116 } else if (name == disabledAttr) {
115 UseCounter::count(document(), UseCounter::HTMLLinkElementDisabled); 117 UseCounter::count(document(), UseCounter::HTMLLinkElementDisabled);
116 if (LinkStyle* link = linkStyle()) 118 if (LinkStyle* link = linkStyle())
117 link->setDisabledState(!value.isNull()); 119 link->setDisabledState(!value.isNull());
118 } else { 120 } else {
119 if (name == titleAttr) { 121 if (name == titleAttr) {
120 if (LinkStyle* link = linkStyle()) 122 if (LinkStyle* link = linkStyle())
121 link->setSheetTitle(value, StyleEngine::UpdateActiveSheets); 123 link->setSheetTitle(value, StyleEngine::UpdateActiveSheets);
122 } 124 }
123 125
124 HTMLElement::parseAttribute(name, oldValue, value); 126 HTMLElement::parseAttribute(name, oldValue, value);
125 } 127 }
126 } 128 }
127 129
128 bool HTMLLinkElement::shouldLoadLink() { 130 bool HTMLLinkElement::shouldLoadLink() {
129 return isInDocumentTree() || (isConnected() && m_relAttribute.isStyleSheet()); 131 return isInDocumentTree() || (isConnected() && m_relAttribute.isStyleSheet());
130 } 132 }
131 133
132 bool HTMLLinkElement::loadLink(const String& type, 134 bool HTMLLinkElement::loadLink(const String& type,
133 const String& as, 135 const String& as,
134 const String& media, 136 const String& media,
137 const String& referrerPolicy,
135 const KURL& url) { 138 const KURL& url) {
136 return m_linkLoader->loadLink( 139 return m_linkLoader->loadLink(
137 m_relAttribute, 140 m_relAttribute,
138 crossOriginAttributeValue(fastGetAttribute(HTMLNames::crossoriginAttr)), 141 crossOriginAttributeValue(fastGetAttribute(HTMLNames::crossoriginAttr)),
139 type, as, media, url, document(), NetworkHintsInterfaceImpl()); 142 type, as, media, referrerPolicy, url, document(),
143 NetworkHintsInterfaceImpl());
140 } 144 }
141 145
142 LinkResource* HTMLLinkElement::linkResourceToProcess() { 146 LinkResource* HTMLLinkElement::linkResourceToProcess() {
143 if (!shouldLoadLink()) { 147 if (!shouldLoadLink()) {
144 DCHECK(!linkStyle() || !linkStyle()->hasSheet()); 148 DCHECK(!linkStyle() || !linkStyle()->hasSheet());
145 return nullptr; 149 return nullptr;
146 } 150 }
147 151
148 if (!m_link) { 152 if (!m_link) {
149 if (m_relAttribute.isImport()) { 153 if (m_relAttribute.isImport()) {
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 m_owner->document().getSecurityOrigin()); 615 m_owner->document().getSecurityOrigin());
612 } 616 }
613 m_fetchFollowingCORS = false; 617 m_fetchFollowingCORS = false;
614 } 618 }
615 619
616 void LinkStyle::process() { 620 void LinkStyle::process() {
617 DCHECK(m_owner->shouldProcessStyle()); 621 DCHECK(m_owner->shouldProcessStyle());
618 String type = m_owner->typeValue().lower(); 622 String type = m_owner->typeValue().lower();
619 String as = m_owner->asValue().lower(); 623 String as = m_owner->asValue().lower();
620 String media = m_owner->media().lower(); 624 String media = m_owner->media().lower();
625 String referrerPolicy = m_owner->referrerPolicy().lower();
621 LinkRequestBuilder builder(m_owner); 626 LinkRequestBuilder builder(m_owner);
622 627
623 if (m_owner->relAttribute().getIconType() != InvalidIcon && 628 if (m_owner->relAttribute().getIconType() != InvalidIcon &&
624 builder.url().isValid() && !builder.url().isEmpty()) { 629 builder.url().isValid() && !builder.url().isEmpty()) {
625 if (!m_owner->shouldLoadLink()) 630 if (!m_owner->shouldLoadLink())
626 return; 631 return;
627 if (!document().getSecurityOrigin()->canDisplay(builder.url())) 632 if (!document().getSecurityOrigin()->canDisplay(builder.url()))
628 return; 633 return;
629 if (!document().contentSecurityPolicy()->allowImageFromSource( 634 if (!document().contentSecurityPolicy()->allowImageFromSource(
630 builder.url())) 635 builder.url()))
631 return; 636 return;
632 if (document().frame() && document().frame()->loader().client()) 637 if (document().frame() && document().frame()->loader().client())
633 document().frame()->loader().client()->dispatchDidChangeIcons( 638 document().frame()->loader().client()->dispatchDidChangeIcons(
634 m_owner->relAttribute().getIconType()); 639 m_owner->relAttribute().getIconType());
635 } 640 }
636 641
637 if (!m_owner->loadLink(type, as, media, builder.url())) 642 if (!m_owner->loadLink(type, as, media, referrerPolicy, builder.url()))
638 return; 643 return;
639 644
640 if (m_disabledState != Disabled && m_owner->relAttribute().isStyleSheet() && 645 if (m_disabledState != Disabled && m_owner->relAttribute().isStyleSheet() &&
641 styleSheetTypeIsSupported(type) && shouldLoadResource() && 646 styleSheetTypeIsSupported(type) && shouldLoadResource() &&
642 builder.url().isValid()) { 647 builder.url().isValid()) {
643 if (resource()) { 648 if (resource()) {
644 removePendingSheet(); 649 removePendingSheet();
645 clearResource(); 650 clearResource();
646 clearFetchFollowingCORS(); 651 clearFetchFollowingCORS();
647 } 652 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 removePendingSheet(); 739 removePendingSheet();
735 } 740 }
736 741
737 DEFINE_TRACE(LinkStyle) { 742 DEFINE_TRACE(LinkStyle) {
738 visitor->trace(m_sheet); 743 visitor->trace(m_sheet);
739 LinkResource::trace(visitor); 744 LinkResource::trace(visitor);
740 ResourceOwner<StyleSheetResource>::trace(visitor); 745 ResourceOwner<StyleSheetResource>::trace(visitor);
741 } 746 }
742 747
743 } // namespace blink 748 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698