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

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

Issue 1686483002: Oilpan: Remove most WillBe types from the code base (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 return; 117 return;
118 } 118 }
119 if (state == ParseHeight && i > start) { 119 if (state == ParseHeight && i > start) {
120 int height = charactersToInt(value + start, i - start); 120 int height = charactersToInt(value + start, i - start);
121 iconSizes.append(IntSize(width, height)); 121 iconSizes.append(IntSize(width, height));
122 } 122 }
123 } 123 }
124 124
125 static LinkEventSender& linkLoadEventSender() 125 static LinkEventSender& linkLoadEventSender()
126 { 126 {
127 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<LinkEventSender>, sharedLoadEvent Sender, (LinkEventSender::create(EventTypeNames::load))); 127 DEFINE_STATIC_LOCAL(Persistent<LinkEventSender>, sharedLoadEventSender, (Lin kEventSender::create(EventTypeNames::load)));
128 return *sharedLoadEventSender; 128 return *sharedLoadEventSender;
129 } 129 }
130 130
131 static bool styleSheetTypeIsSupported(const String& type) 131 static bool styleSheetTypeIsSupported(const String& type)
132 { 132 {
133 String trimmedType = ContentType(type).type(); 133 String trimmedType = ContentType(type).type();
134 return trimmedType.isEmpty() || MIMETypeRegistry::isSupportedStyleSheetMIMET ype(trimmedType); 134 return trimmedType.isEmpty() || MIMETypeRegistry::isSupportedStyleSheetMIMET ype(trimmedType);
135 } 135 }
136 136
137 void HTMLLinkElement::parseSizesAttribute(const AtomicString& value, Vector<IntS ize>& iconSizes) 137 void HTMLLinkElement::parseSizesAttribute(const AtomicString& value, Vector<IntS ize>& iconSizes)
(...skipping 10 matching lines...) Expand all
148 inline HTMLLinkElement::HTMLLinkElement(Document& document, bool createdByParser ) 148 inline HTMLLinkElement::HTMLLinkElement(Document& document, bool createdByParser )
149 : HTMLElement(linkTag, document) 149 : HTMLElement(linkTag, document)
150 , m_linkLoader(LinkLoader::create(this)) 150 , m_linkLoader(LinkLoader::create(this))
151 , m_sizes(DOMTokenList::create(this)) 151 , m_sizes(DOMTokenList::create(this))
152 , m_relList(RelList::create(this).leakRef()) 152 , m_relList(RelList::create(this).leakRef())
153 , m_createdByParser(createdByParser) 153 , m_createdByParser(createdByParser)
154 , m_isInShadowTree(false) 154 , m_isInShadowTree(false)
155 { 155 {
156 } 156 }
157 157
158 PassRefPtrWillBeRawPtr<HTMLLinkElement> HTMLLinkElement::create(Document& docume nt, bool createdByParser) 158 RawPtr<HTMLLinkElement> HTMLLinkElement::create(Document& document, bool created ByParser)
159 { 159 {
160 return adoptRefWillBeNoop(new HTMLLinkElement(document, createdByParser)); 160 return new HTMLLinkElement(document, createdByParser);
161 } 161 }
162 162
163 HTMLLinkElement::~HTMLLinkElement() 163 HTMLLinkElement::~HTMLLinkElement()
164 { 164 {
165 #if !ENABLE(OILPAN) 165 #if !ENABLE(OILPAN)
166 m_sizes->setObserver(nullptr); 166 m_sizes->setObserver(nullptr);
167 m_relList->setObserver(nullptr); 167 m_relList->setObserver(nullptr);
168 m_link.clear(); 168 m_link.clear();
169 if (inDocument()) 169 if (inDocument())
170 document().styleEngine().removeStyleSheetCandidateNode(this); 170 document().styleEngine().removeStyleSheetCandidateNode(this);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 230
231 if (!m_link) { 231 if (!m_link) {
232 if (m_relAttribute.isImport()) { 232 if (m_relAttribute.isImport()) {
233 m_link = LinkImport::create(this); 233 m_link = LinkImport::create(this);
234 } else if (m_relAttribute.isManifest()) { 234 } else if (m_relAttribute.isManifest()) {
235 m_link = LinkManifest::create(this); 235 m_link = LinkManifest::create(this);
236 } else if (RuntimeEnabledFeatures::linkServiceWorkerEnabled() && m_relAt tribute.isServiceWorker()) { 236 } else if (RuntimeEnabledFeatures::linkServiceWorkerEnabled() && m_relAt tribute.isServiceWorker()) {
237 if (document().frame()) 237 if (document().frame())
238 m_link = document().frame()->loader().client()->createServiceWor kerLinkResource(this); 238 m_link = document().frame()->loader().client()->createServiceWor kerLinkResource(this);
239 } else { 239 } else {
240 OwnPtrWillBeRawPtr<LinkStyle> link = LinkStyle::create(this); 240 RawPtr<LinkStyle> link = LinkStyle::create(this);
241 if (fastHasAttribute(disabledAttr)) { 241 if (fastHasAttribute(disabledAttr)) {
242 UseCounter::count(document(), UseCounter::HTMLLinkElementDisable d); 242 UseCounter::count(document(), UseCounter::HTMLLinkElementDisable d);
243 link->setDisabledState(true); 243 link->setDisabledState(true);
244 } 244 }
245 m_link = link.release(); 245 m_link = link.release();
246 } 246 }
247 } 247 }
248 248
249 return m_link.get(); 249 return m_link.get();
250 } 250 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 return; 307 return;
308 308
309 m_linkLoader->released(); 309 m_linkLoader->released();
310 310
311 if (m_isInShadowTree) { 311 if (m_isInShadowTree) {
312 ASSERT(!linkStyle() || !linkStyle()->hasSheet()); 312 ASSERT(!linkStyle() || !linkStyle()->hasSheet());
313 return; 313 return;
314 } 314 }
315 document().styleEngine().removeStyleSheetCandidateNode(this); 315 document().styleEngine().removeStyleSheetCandidateNode(this);
316 316
317 RefPtrWillBeRawPtr<StyleSheet> removedSheet = sheet(); 317 RawPtr<StyleSheet> removedSheet = sheet();
318 318
319 if (m_link) 319 if (m_link)
320 m_link->ownerRemoved(); 320 m_link->ownerRemoved();
321 321
322 document().removedStyleSheet(removedSheet.get()); 322 document().removedStyleSheet(removedSheet.get());
323 } 323 }
324 324
325 void HTMLLinkElement::finishParsingChildren() 325 void HTMLLinkElement::finishParsingChildren()
326 { 326 {
327 m_createdByParser = false; 327 m_createdByParser = false;
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 { 469 {
470 visitor->trace(m_link); 470 visitor->trace(m_link);
471 visitor->trace(m_sizes); 471 visitor->trace(m_sizes);
472 visitor->trace(m_linkLoader); 472 visitor->trace(m_linkLoader);
473 visitor->trace(m_relList); 473 visitor->trace(m_relList);
474 HTMLElement::trace(visitor); 474 HTMLElement::trace(visitor);
475 LinkLoaderClient::trace(visitor); 475 LinkLoaderClient::trace(visitor);
476 DOMTokenListObserver::trace(visitor); 476 DOMTokenListObserver::trace(visitor);
477 } 477 }
478 478
479 PassOwnPtrWillBeRawPtr<LinkStyle> LinkStyle::create(HTMLLinkElement* owner) 479 RawPtr<LinkStyle> LinkStyle::create(HTMLLinkElement* owner)
480 { 480 {
481 return adoptPtrWillBeNoop(new LinkStyle(owner)); 481 return new LinkStyle(owner);
482 } 482 }
483 483
484 LinkStyle::LinkStyle(HTMLLinkElement* owner) 484 LinkStyle::LinkStyle(HTMLLinkElement* owner)
485 : LinkResource(owner) 485 : LinkResource(owner)
486 , m_disabledState(Unset) 486 , m_disabledState(Unset)
487 , m_pendingSheetType(None) 487 , m_pendingSheetType(None)
488 , m_loading(false) 488 , m_loading(false)
489 , m_firedLoad(false) 489 , m_firedLoad(false)
490 , m_loadedSheet(false) 490 , m_loadedSheet(false)
491 , m_fetchFollowingCORS(false) 491 , m_fetchFollowingCORS(false)
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 // While the stylesheet is asynchronously loading, the owner can be moved un der 530 // While the stylesheet is asynchronously loading, the owner can be moved un der
531 // shadow tree. In that case, cancel any processing on the loaded content. 531 // shadow tree. In that case, cancel any processing on the loaded content.
532 if (m_owner->isInShadowTree()) { 532 if (m_owner->isInShadowTree()) {
533 m_loading = false; 533 m_loading = false;
534 removePendingSheet(); 534 removePendingSheet();
535 if (m_sheet) 535 if (m_sheet)
536 clearSheet(); 536 clearSheet();
537 return; 537 return;
538 } 538 }
539 // Completing the sheet load may cause scripts to execute. 539 // Completing the sheet load may cause scripts to execute.
540 RefPtrWillBeRawPtr<Node> protector(m_owner.get()); 540 RawPtr<Node> protector(m_owner.get());
541 541
542 CSSParserContext parserContext(m_owner->document(), 0, baseURL, charset); 542 CSSParserContext parserContext(m_owner->document(), 0, baseURL, charset);
543 543
544 DEFINE_STATIC_LOCAL(EnumerationHistogram, restoredCachedStyleSheetHistogram, ("Blink.RestoredCachedStyleSheet", 2)); 544 DEFINE_STATIC_LOCAL(EnumerationHistogram, restoredCachedStyleSheetHistogram, ("Blink.RestoredCachedStyleSheet", 2));
545 DEFINE_STATIC_LOCAL(EnumerationHistogram, restoredCachedStyleSheet2Histogram , ("Blink.RestoredCachedStyleSheet2", StyleSheetCacheStatusCount)); 545 DEFINE_STATIC_LOCAL(EnumerationHistogram, restoredCachedStyleSheet2Histogram , ("Blink.RestoredCachedStyleSheet2", StyleSheetCacheStatusCount));
546 546
547 if (RefPtrWillBeRawPtr<StyleSheetContents> restoredSheet = const_cast<CSSSty leSheetResource*>(cachedStyleSheet)->restoreParsedStyleSheet(parserContext)) { 547 if (RawPtr<StyleSheetContents> restoredSheet = const_cast<CSSStyleSheetResou rce*>(cachedStyleSheet)->restoreParsedStyleSheet(parserContext)) {
548 ASSERT(restoredSheet->isCacheable()); 548 ASSERT(restoredSheet->isCacheable());
549 ASSERT(!restoredSheet->isLoading()); 549 ASSERT(!restoredSheet->isLoading());
550 550
551 if (m_sheet) 551 if (m_sheet)
552 clearSheet(); 552 clearSheet();
553 m_sheet = CSSStyleSheet::create(restoredSheet, m_owner); 553 m_sheet = CSSStyleSheet::create(restoredSheet, m_owner);
554 m_sheet->setMediaQueries(MediaQuerySet::create(m_owner->media())); 554 m_sheet->setMediaQueries(MediaQuerySet::create(m_owner->media()));
555 m_sheet->setTitle(m_owner->title()); 555 m_sheet->setTitle(m_owner->title());
556 setCrossOriginStylesheetStatus(m_sheet.get()); 556 setCrossOriginStylesheetStatus(m_sheet.get());
557 557
558 m_loading = false; 558 m_loading = false;
559 restoredSheet->checkLoaded(); 559 restoredSheet->checkLoaded();
560 560
561 restoredCachedStyleSheetHistogram.count(true); 561 restoredCachedStyleSheetHistogram.count(true);
562 restoredCachedStyleSheet2Histogram.count(StyleSheetInMemoryCache); 562 restoredCachedStyleSheet2Histogram.count(StyleSheetInMemoryCache);
563 return; 563 return;
564 } 564 }
565 restoredCachedStyleSheetHistogram.count(false); 565 restoredCachedStyleSheetHistogram.count(false);
566 StyleSheetCacheStatus cacheStatus = cachedStyleSheet->response().wasCached() ? StyleSheetInDiskCache : StyleSheetNewEntry; 566 StyleSheetCacheStatus cacheStatus = cachedStyleSheet->response().wasCached() ? StyleSheetInDiskCache : StyleSheetNewEntry;
567 restoredCachedStyleSheet2Histogram.count(cacheStatus); 567 restoredCachedStyleSheet2Histogram.count(cacheStatus);
568 568
569 RefPtrWillBeRawPtr<StyleSheetContents> styleSheet = StyleSheetContents::crea te(href, parserContext); 569 RawPtr<StyleSheetContents> styleSheet = StyleSheetContents::create(href, par serContext);
570 570
571 if (m_sheet) 571 if (m_sheet)
572 clearSheet(); 572 clearSheet();
573 573
574 m_sheet = CSSStyleSheet::create(styleSheet, m_owner); 574 m_sheet = CSSStyleSheet::create(styleSheet, m_owner);
575 m_sheet->setMediaQueries(MediaQuerySet::create(m_owner->media())); 575 m_sheet->setMediaQueries(MediaQuerySet::create(m_owner->media()));
576 m_sheet->setTitle(m_owner->title()); 576 m_sheet->setTitle(m_owner->title());
577 setCrossOriginStylesheetStatus(m_sheet.get()); 577 setCrossOriginStylesheetStatus(m_sheet.get());
578 578
579 styleSheet->parseAuthorStyleSheet(cachedStyleSheet, m_owner->document().getS ecurityOrigin()); 579 styleSheet->parseAuthorStyleSheet(cachedStyleSheet, m_owner->document().getS ecurityOrigin());
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 734
735 if (!m_owner->shouldLoadLink()) 735 if (!m_owner->shouldLoadLink())
736 return; 736 return;
737 737
738 m_loading = true; 738 m_loading = true;
739 739
740 bool mediaQueryMatches = true; 740 bool mediaQueryMatches = true;
741 LocalFrame* frame = loadingFrame(); 741 LocalFrame* frame = loadingFrame();
742 if (!m_owner->media().isEmpty() && frame && frame->document()) { 742 if (!m_owner->media().isEmpty() && frame && frame->document()) {
743 RefPtr<ComputedStyle> documentStyle = StyleResolver::styleForDocumen t(*frame->document()); 743 RefPtr<ComputedStyle> documentStyle = StyleResolver::styleForDocumen t(*frame->document());
744 RefPtrWillBeRawPtr<MediaQuerySet> media = MediaQuerySet::create(m_ow ner->media()); 744 RawPtr<MediaQuerySet> media = MediaQuerySet::create(m_owner->media() );
745 MediaQueryEvaluator evaluator(frame); 745 MediaQueryEvaluator evaluator(frame);
746 mediaQueryMatches = evaluator.eval(media.get()); 746 mediaQueryMatches = evaluator.eval(media.get());
747 } 747 }
748 748
749 // Don't hold up layout tree construction and script execution on styles heets 749 // Don't hold up layout tree construction and script execution on styles heets
750 // that are not needed for the layout at the moment. 750 // that are not needed for the layout at the moment.
751 bool blocking = mediaQueryMatches && !m_owner->isAlternate() && m_owner- >isCreatedByParser(); 751 bool blocking = mediaQueryMatches && !m_owner->isAlternate() && m_owner- >isCreatedByParser();
752 addPendingSheet(blocking ? Blocking : NonBlocking); 752 addPendingSheet(blocking ? Blocking : NonBlocking);
753 753
754 // Load stylesheets that are not needed for the layout immediately with low priority. 754 // Load stylesheets that are not needed for the layout immediately with low priority.
755 // When the link element is created by scripts, load the stylesheets asy nchronously but in high priority. 755 // When the link element is created by scripts, load the stylesheets asy nchronously but in high priority.
756 bool lowPriority = !mediaQueryMatches || m_owner->isAlternate(); 756 bool lowPriority = !mediaQueryMatches || m_owner->isAlternate();
757 FetchRequest request = builder.build(lowPriority); 757 FetchRequest request = builder.build(lowPriority);
758 CrossOriginAttributeValue crossOrigin = crossOriginAttributeValue(m_owne r->fastGetAttribute(HTMLNames::crossoriginAttr)); 758 CrossOriginAttributeValue crossOrigin = crossOriginAttributeValue(m_owne r->fastGetAttribute(HTMLNames::crossoriginAttr));
759 if (crossOrigin != CrossOriginAttributeNotSet) { 759 if (crossOrigin != CrossOriginAttributeNotSet) {
760 request.setCrossOriginAccessControl(document().getSecurityOrigin(), crossOrigin); 760 request.setCrossOriginAccessControl(document().getSecurityOrigin(), crossOrigin);
761 setFetchFollowingCORS(); 761 setFetchFollowingCORS();
762 } 762 }
763 setResource(CSSStyleSheetResource::fetch(request, document().fetcher())) ; 763 setResource(CSSStyleSheetResource::fetch(request, document().fetcher())) ;
764 764
765 if (m_loading && !resource()) { 765 if (m_loading && !resource()) {
766 // The request may have been denied if (for example) the stylesheet is local and the document is remote, or if there was a Content Security Policy F ailure. 766 // The request may have been denied if (for example) the stylesheet is local and the document is remote, or if there was a Content Security Policy F ailure.
767 // setCSSStyleSheet() can be called synchronuosly in setResource() a nd thus resource() is null and |m_loading| is false in such cases even if the re quest succeeds. 767 // setCSSStyleSheet() can be called synchronuosly in setResource() a nd thus resource() is null and |m_loading| is false in such cases even if the re quest succeeds.
768 m_loading = false; 768 m_loading = false;
769 removePendingSheet(); 769 removePendingSheet();
770 notifyLoadedSheetAndAllCriticalSubresources(Node::ErrorOccurredLoadi ngSubresource); 770 notifyLoadedSheetAndAllCriticalSubresources(Node::ErrorOccurredLoadi ngSubresource);
771 } 771 }
772 } else if (m_sheet) { 772 } else if (m_sheet) {
773 // we no longer contain a stylesheet, e.g. perhaps rel or type was chang ed 773 // we no longer contain a stylesheet, e.g. perhaps rel or type was chang ed
774 RefPtrWillBeRawPtr<StyleSheet> removedSheet = m_sheet.get(); 774 RawPtr<StyleSheet> removedSheet = m_sheet.get();
775 clearSheet(); 775 clearSheet();
776 document().removedStyleSheet(removedSheet.get()); 776 document().removedStyleSheet(removedSheet.get());
777 } 777 }
778 } 778 }
779 779
780 void LinkStyle::setSheetTitle(const String& title) 780 void LinkStyle::setSheetTitle(const String& title)
781 { 781 {
782 if (m_sheet) 782 if (m_sheet)
783 m_sheet->setTitle(title); 783 m_sheet->setTitle(title);
784 } 784 }
785 785
786 void LinkStyle::ownerRemoved() 786 void LinkStyle::ownerRemoved()
787 { 787 {
788 if (m_sheet) 788 if (m_sheet)
789 clearSheet(); 789 clearSheet();
790 790
791 if (styleSheetIsLoading()) 791 if (styleSheetIsLoading())
792 removePendingSheet(); 792 removePendingSheet();
793 } 793 }
794 794
795 DEFINE_TRACE(LinkStyle) 795 DEFINE_TRACE(LinkStyle)
796 { 796 {
797 visitor->trace(m_sheet); 797 visitor->trace(m_sheet);
798 LinkResource::trace(visitor); 798 LinkResource::trace(visitor);
799 ResourceOwner<StyleSheetResource>::trace(visitor); 799 ResourceOwner<StyleSheetResource>::trace(visitor);
800 } 800 }
801 801
802 } // namespace blink 802 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698