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

Side by Side Diff: Source/core/css/StyleSheetContents.cpp

Issue 989173003: Fix template angle bracket syntax in css (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « Source/core/css/StyleSheetContents.h ('k') | Source/core/css/StyleSheetList.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 return; 364 return;
365 365
366 // Avoid |CSSSStyleSheet| and |ownerNode| being deleted by scripts that run via 366 // Avoid |CSSSStyleSheet| and |ownerNode| being deleted by scripts that run via
367 // ScriptableDocumentParser::executeScriptsWaitingForResources(). Also prote ct 367 // ScriptableDocumentParser::executeScriptsWaitingForResources(). Also prote ct
368 // the |CSSStyleSheet| from being deleted during iteration via the |sheetLoa ded| 368 // the |CSSStyleSheet| from being deleted during iteration via the |sheetLoa ded|
369 // method. 369 // method.
370 // 370 //
371 // When a sheet is loaded it is moved from the set of loading clients 371 // When a sheet is loaded it is moved from the set of loading clients
372 // to the set of completed clients. We therefore need the copy in order to 372 // to the set of completed clients. We therefore need the copy in order to
373 // not modify the set while iterating it. 373 // not modify the set while iterating it.
374 WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > loadingClients; 374 WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet>> loadingClients;
375 copyToVector(m_loadingClients, loadingClients); 375 copyToVector(m_loadingClients, loadingClients);
376 376
377 for (unsigned i = 0; i < loadingClients.size(); ++i) { 377 for (unsigned i = 0; i < loadingClients.size(); ++i) {
378 if (loadingClients[i]->loadCompleted()) 378 if (loadingClients[i]->loadCompleted())
379 continue; 379 continue;
380 380
381 // sheetLoaded might be invoked after its owner node is removed from doc ument. 381 // sheetLoaded might be invoked after its owner node is removed from doc ument.
382 if (RefPtrWillBeRawPtr<Node> ownerNode = loadingClients[i]->ownerNode()) { 382 if (RefPtrWillBeRawPtr<Node> ownerNode = loadingClients[i]->ownerNode()) {
383 if (loadingClients[i]->sheetLoaded()) 383 if (loadingClients[i]->sheetLoaded())
384 ownerNode->notifyLoadedSheetAndAllCriticalSubresources(m_didLoad ErrorOccur); 384 ownerNode->notifyLoadedSheetAndAllCriticalSubresources(m_didLoad ErrorOccur);
(...skipping 14 matching lines...) Expand all
399 void StyleSheetContents::startLoadingDynamicSheet() 399 void StyleSheetContents::startLoadingDynamicSheet()
400 { 400 {
401 StyleSheetContents* root = rootStyleSheet(); 401 StyleSheetContents* root = rootStyleSheet();
402 for (const auto& client : root->m_loadingClients) 402 for (const auto& client : root->m_loadingClients)
403 client->startLoadingDynamicSheet(); 403 client->startLoadingDynamicSheet();
404 // Copy the completed clients to a vector for iteration. 404 // Copy the completed clients to a vector for iteration.
405 // startLoadingDynamicSheet will move the style sheet from the 405 // startLoadingDynamicSheet will move the style sheet from the
406 // completed state to the loading state which modifies the set of 406 // completed state to the loading state which modifies the set of
407 // completed clients. We therefore need the copy in order to not 407 // completed clients. We therefore need the copy in order to not
408 // modify the set of completed clients while iterating it. 408 // modify the set of completed clients while iterating it.
409 WillBeHeapVector<RawPtrWillBeMember<CSSStyleSheet> > completedClients; 409 WillBeHeapVector<RawPtrWillBeMember<CSSStyleSheet>> completedClients;
410 copyToVector(root->m_completedClients, completedClients); 410 copyToVector(root->m_completedClients, completedClients);
411 for (unsigned i = 0; i < completedClients.size(); ++i) 411 for (unsigned i = 0; i < completedClients.size(); ++i)
412 completedClients[i]->startLoadingDynamicSheet(); 412 completedClients[i]->startLoadingDynamicSheet();
413 } 413 }
414 414
415 StyleSheetContents* StyleSheetContents::rootStyleSheet() const 415 StyleSheetContents* StyleSheetContents::rootStyleSheet() const
416 { 416 {
417 const StyleSheetContents* root = this; 417 const StyleSheetContents* root = this;
418 while (root->parentStyleSheet()) 418 while (root->parentStyleSheet())
419 root = root->parentStyleSheet(); 419 root = root->parentStyleSheet();
(...skipping 20 matching lines...) Expand all
440 StyleSheetContents* root = rootStyleSheet(); 440 StyleSheetContents* root = rootStyleSheet();
441 return root->clientSingleOwnerDocument(); 441 return root->clientSingleOwnerDocument();
442 } 442 }
443 443
444 KURL StyleSheetContents::completeURL(const String& url) const 444 KURL StyleSheetContents::completeURL(const String& url) const
445 { 445 {
446 // FIXME: This is only OK when we have a singleOwnerNode, right? 446 // FIXME: This is only OK when we have a singleOwnerNode, right?
447 return m_parserContext.completeURL(url); 447 return m_parserContext.completeURL(url);
448 } 448 }
449 449
450 static bool childRulesHaveFailedOrCanceledSubresources(const WillBeHeapVector<Re fPtrWillBeMember<StyleRuleBase> >& rules) 450 static bool childRulesHaveFailedOrCanceledSubresources(const WillBeHeapVector<Re fPtrWillBeMember<StyleRuleBase>>& rules)
451 { 451 {
452 for (unsigned i = 0; i < rules.size(); ++i) { 452 for (unsigned i = 0; i < rules.size(); ++i) {
453 const StyleRuleBase* rule = rules[i].get(); 453 const StyleRuleBase* rule = rules[i].get();
454 switch (rule->type()) { 454 switch (rule->type()) {
455 case StyleRuleBase::Style: 455 case StyleRuleBase::Style:
456 if (toStyleRule(rule)->properties().hasFailedOrCanceledSubresources( )) 456 if (toStyleRule(rule)->properties().hasFailedOrCanceledSubresources( ))
457 return true; 457 return true;
458 break; 458 break;
459 case StyleRuleBase::FontFace: 459 case StyleRuleBase::FontFace:
460 if (toStyleRuleFontFace(rule)->properties().hasFailedOrCanceledSubre sources()) 460 if (toStyleRuleFontFace(rule)->properties().hasFailedOrCanceledSubre sources())
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 575
576 RuleSet& StyleSheetContents::ensureRuleSet(const MediaQueryEvaluator& medium, Ad dRuleFlags addRuleFlags) 576 RuleSet& StyleSheetContents::ensureRuleSet(const MediaQueryEvaluator& medium, Ad dRuleFlags addRuleFlags)
577 { 577 {
578 if (!m_ruleSet) { 578 if (!m_ruleSet) {
579 m_ruleSet = RuleSet::create(); 579 m_ruleSet = RuleSet::create();
580 m_ruleSet->addRulesFromSheet(this, medium, addRuleFlags); 580 m_ruleSet->addRulesFromSheet(this, medium, addRuleFlags);
581 } 581 }
582 return *m_ruleSet.get(); 582 return *m_ruleSet.get();
583 } 583 }
584 584
585 static void clearResolvers(WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyleShee t> >& clients) 585 static void clearResolvers(WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyleShee t>>& clients)
586 { 586 {
587 for (const auto& sheet : clients) { 587 for (const auto& sheet : clients) {
588 if (Document* document = sheet->ownerDocument()) 588 if (Document* document = sheet->ownerDocument())
589 document->styleEngine().clearResolver(); 589 document->styleEngine().clearResolver();
590 } 590 }
591 } 591 }
592 592
593 void StyleSheetContents::clearRuleSet() 593 void StyleSheetContents::clearRuleSet()
594 { 594 {
595 if (StyleSheetContents* parentSheet = parentStyleSheet()) 595 if (StyleSheetContents* parentSheet = parentStyleSheet())
596 parentSheet->clearRuleSet(); 596 parentSheet->clearRuleSet();
597 597
598 // Don't want to clear the StyleResolver if the RuleSet hasn't been created 598 // Don't want to clear the StyleResolver if the RuleSet hasn't been created
599 // since we only clear the StyleResolver so that it's members are properly 599 // since we only clear the StyleResolver so that it's members are properly
600 // updated in ScopedStyleResolver::addRulesFromSheet. 600 // updated in ScopedStyleResolver::addRulesFromSheet.
601 if (!m_ruleSet) 601 if (!m_ruleSet)
602 return; 602 return;
603 603
604 // Clearing the ruleSet means we need to recreate the styleResolver data str uctures. 604 // Clearing the ruleSet means we need to recreate the styleResolver data str uctures.
605 // See the StyleResolver calls in ScopedStyleResolver::addRulesFromSheet. 605 // See the StyleResolver calls in ScopedStyleResolver::addRulesFromSheet.
606 clearResolvers(m_loadingClients); 606 clearResolvers(m_loadingClients);
607 clearResolvers(m_completedClients); 607 clearResolvers(m_completedClients);
608 m_ruleSet.clear(); 608 m_ruleSet.clear();
609 } 609 }
610 610
611 static void removeFontFaceRules(WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyl eSheet> >& clients, const StyleRuleFontFace* fontFaceRule) 611 static void removeFontFaceRules(WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyl eSheet>>& clients, const StyleRuleFontFace* fontFaceRule)
612 { 612 {
613 for (const auto& sheet : clients) { 613 for (const auto& sheet : clients) {
614 if (Node* ownerNode = sheet->ownerNode()) 614 if (Node* ownerNode = sheet->ownerNode())
615 ownerNode->document().styleEngine().removeFontFaceRules(WillBeHeapVe ctor<RawPtrWillBeMember<const StyleRuleFontFace>>(1, fontFaceRule)); 615 ownerNode->document().styleEngine().removeFontFaceRules(WillBeHeapVe ctor<RawPtrWillBeMember<const StyleRuleFontFace>>(1, fontFaceRule));
616 } 616 }
617 } 617 }
618 618
619 void StyleSheetContents::notifyRemoveFontFaceRule(const StyleRuleFontFace* fontF aceRule) 619 void StyleSheetContents::notifyRemoveFontFaceRule(const StyleRuleFontFace* fontF aceRule)
620 { 620 {
621 StyleSheetContents* root = rootStyleSheet(); 621 StyleSheetContents* root = rootStyleSheet();
622 removeFontFaceRules(root->m_loadingClients, fontFaceRule); 622 removeFontFaceRules(root->m_loadingClients, fontFaceRule);
623 removeFontFaceRules(root->m_completedClients, fontFaceRule); 623 removeFontFaceRules(root->m_completedClients, fontFaceRule);
624 } 624 }
625 625
626 static void findFontFaceRulesFromRules(const WillBeHeapVector<RefPtrWillBeMember <StyleRuleBase> >& rules, WillBeHeapVector<RawPtrWillBeMember<const StyleRuleFon tFace> >& fontFaceRules) 626 static void findFontFaceRulesFromRules(const WillBeHeapVector<RefPtrWillBeMember <StyleRuleBase>>& rules, WillBeHeapVector<RawPtrWillBeMember<const StyleRuleFont Face>>& fontFaceRules)
627 { 627 {
628 for (unsigned i = 0; i < rules.size(); ++i) { 628 for (unsigned i = 0; i < rules.size(); ++i) {
629 StyleRuleBase* rule = rules[i].get(); 629 StyleRuleBase* rule = rules[i].get();
630 630
631 if (rule->isFontFaceRule()) { 631 if (rule->isFontFaceRule()) {
632 fontFaceRules.append(toStyleRuleFontFace(rule)); 632 fontFaceRules.append(toStyleRuleFontFace(rule));
633 } else if (rule->isMediaRule()) { 633 } else if (rule->isMediaRule()) {
634 StyleRuleMedia* mediaRule = toStyleRuleMedia(rule); 634 StyleRuleMedia* mediaRule = toStyleRuleMedia(rule);
635 // We cannot know whether the media rule matches or not, but 635 // We cannot know whether the media rule matches or not, but
636 // for safety, remove @font-face in the media rule (if exists). 636 // for safety, remove @font-face in the media rule (if exists).
637 findFontFaceRulesFromRules(mediaRule->childRules(), fontFaceRules); 637 findFontFaceRulesFromRules(mediaRule->childRules(), fontFaceRules);
638 } 638 }
639 } 639 }
640 } 640 }
641 641
642 void StyleSheetContents::findFontFaceRules(WillBeHeapVector<RawPtrWillBeMember<c onst StyleRuleFontFace> >& fontFaceRules) 642 void StyleSheetContents::findFontFaceRules(WillBeHeapVector<RawPtrWillBeMember<c onst StyleRuleFontFace>>& fontFaceRules)
643 { 643 {
644 for (unsigned i = 0; i < m_importRules.size(); ++i) { 644 for (unsigned i = 0; i < m_importRules.size(); ++i) {
645 if (!m_importRules[i]->styleSheet()) 645 if (!m_importRules[i]->styleSheet())
646 continue; 646 continue;
647 m_importRules[i]->styleSheet()->findFontFaceRules(fontFaceRules); 647 m_importRules[i]->styleSheet()->findFontFaceRules(fontFaceRules);
648 } 648 }
649 649
650 findFontFaceRulesFromRules(childRules(), fontFaceRules); 650 findFontFaceRulesFromRules(childRules(), fontFaceRules);
651 } 651 }
652 652
653 DEFINE_TRACE(StyleSheetContents) 653 DEFINE_TRACE(StyleSheetContents)
654 { 654 {
655 #if ENABLE(OILPAN) 655 #if ENABLE(OILPAN)
656 visitor->trace(m_ownerRule); 656 visitor->trace(m_ownerRule);
657 visitor->trace(m_importRules); 657 visitor->trace(m_importRules);
658 visitor->trace(m_childRules); 658 visitor->trace(m_childRules);
659 visitor->trace(m_loadingClients); 659 visitor->trace(m_loadingClients);
660 visitor->trace(m_completedClients); 660 visitor->trace(m_completedClients);
661 visitor->trace(m_ruleSet); 661 visitor->trace(m_ruleSet);
662 #endif 662 #endif
663 } 663 }
664 664
665 } 665 }
OLDNEW
« no previous file with comments | « Source/core/css/StyleSheetContents.h ('k') | Source/core/css/StyleSheetList.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698