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

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

Issue 789403005: Keep a separate list of :host(-context) rules. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Added tests Created 6 years 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/RuleSet.h ('k') | Source/core/css/RuleSetTest.cpp » ('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 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 ASSERT_NOT_REACHED(); 221 ASSERT_NOT_REACHED();
222 return true; 222 return true;
223 } 223 }
224 } 224 }
225 225
226 if (!tagName.isEmpty()) { 226 if (!tagName.isEmpty()) {
227 addToRuleSet(tagName, ensurePendingRules()->tagRules, ruleData); 227 addToRuleSet(tagName, ensurePendingRules()->tagRules, ruleData);
228 return true; 228 return true;
229 } 229 }
230 230
231 if (component.isHostPseudoClass()) {
232 m_shadowHostRules.append(ruleData);
233 return true;
234 }
231 return false; 235 return false;
232 } 236 }
233 237
234 void RuleSet::addRule(StyleRule* rule, unsigned selectorIndex, AddRuleFlags addR uleFlags) 238 void RuleSet::addRule(StyleRule* rule, unsigned selectorIndex, AddRuleFlags addR uleFlags)
235 { 239 {
236 RuleData ruleData(rule, selectorIndex, m_ruleCount++, addRuleFlags); 240 RuleData ruleData(rule, selectorIndex, m_ruleCount++, addRuleFlags);
237 m_features.collectFeaturesFromRuleData(ruleData); 241 m_features.collectFeaturesFromRuleData(ruleData);
238 242
239 if (!findBestRuleSetAndAdd(ruleData.selector(), ruleData)) { 243 if (!findBestRuleSetAndAdd(ruleData.selector(), ruleData)) {
240 // If we didn't find a specialized map to stick it in, file under univer sal rules. 244 // If we didn't find a specialized map to stick it in, file under univer sal rules.
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 ASSERT(m_pendingRules); 351 ASSERT(m_pendingRules);
348 OwnPtrWillBeRawPtr<PendingRuleMaps> pendingRules = m_pendingRules.release(); 352 OwnPtrWillBeRawPtr<PendingRuleMaps> pendingRules = m_pendingRules.release();
349 compactPendingRules(pendingRules->idRules, m_idRules); 353 compactPendingRules(pendingRules->idRules, m_idRules);
350 compactPendingRules(pendingRules->classRules, m_classRules); 354 compactPendingRules(pendingRules->classRules, m_classRules);
351 compactPendingRules(pendingRules->tagRules, m_tagRules); 355 compactPendingRules(pendingRules->tagRules, m_tagRules);
352 compactPendingRules(pendingRules->shadowPseudoElementRules, m_shadowPseudoEl ementRules); 356 compactPendingRules(pendingRules->shadowPseudoElementRules, m_shadowPseudoEl ementRules);
353 m_linkPseudoClassRules.shrinkToFit(); 357 m_linkPseudoClassRules.shrinkToFit();
354 m_cuePseudoRules.shrinkToFit(); 358 m_cuePseudoRules.shrinkToFit();
355 m_focusPseudoClassRules.shrinkToFit(); 359 m_focusPseudoClassRules.shrinkToFit();
356 m_universalRules.shrinkToFit(); 360 m_universalRules.shrinkToFit();
361 m_shadowHostRules.shrinkToFit();
357 m_pageRules.shrinkToFit(); 362 m_pageRules.shrinkToFit();
358 m_viewportRules.shrinkToFit(); 363 m_viewportRules.shrinkToFit();
359 m_fontFaceRules.shrinkToFit(); 364 m_fontFaceRules.shrinkToFit();
360 m_keyframesRules.shrinkToFit(); 365 m_keyframesRules.shrinkToFit();
361 m_treeBoundaryCrossingRules.shrinkToFit(); 366 m_treeBoundaryCrossingRules.shrinkToFit();
362 m_shadowDistributedRules.shrinkToFit(); 367 m_shadowDistributedRules.shrinkToFit();
363 } 368 }
364 369
365 void MinimalRuleData::trace(Visitor* visitor) 370 void MinimalRuleData::trace(Visitor* visitor)
366 { 371 {
(...skipping 19 matching lines...) Expand all
386 { 391 {
387 #if ENABLE(OILPAN) 392 #if ENABLE(OILPAN)
388 visitor->trace(m_idRules); 393 visitor->trace(m_idRules);
389 visitor->trace(m_classRules); 394 visitor->trace(m_classRules);
390 visitor->trace(m_tagRules); 395 visitor->trace(m_tagRules);
391 visitor->trace(m_shadowPseudoElementRules); 396 visitor->trace(m_shadowPseudoElementRules);
392 visitor->trace(m_linkPseudoClassRules); 397 visitor->trace(m_linkPseudoClassRules);
393 visitor->trace(m_cuePseudoRules); 398 visitor->trace(m_cuePseudoRules);
394 visitor->trace(m_focusPseudoClassRules); 399 visitor->trace(m_focusPseudoClassRules);
395 visitor->trace(m_universalRules); 400 visitor->trace(m_universalRules);
401 visitor->trace(m_shadowHostRules);
396 visitor->trace(m_features); 402 visitor->trace(m_features);
397 visitor->trace(m_pageRules); 403 visitor->trace(m_pageRules);
398 visitor->trace(m_viewportRules); 404 visitor->trace(m_viewportRules);
399 visitor->trace(m_fontFaceRules); 405 visitor->trace(m_fontFaceRules);
400 visitor->trace(m_keyframesRules); 406 visitor->trace(m_keyframesRules);
401 visitor->trace(m_treeBoundaryCrossingRules); 407 visitor->trace(m_treeBoundaryCrossingRules);
402 visitor->trace(m_shadowDistributedRules); 408 visitor->trace(m_shadowDistributedRules);
403 visitor->trace(m_viewportDependentMediaQueryResults); 409 visitor->trace(m_viewportDependentMediaQueryResults);
404 visitor->trace(m_pendingRules); 410 visitor->trace(m_pendingRules);
405 #ifndef NDEBUG 411 #ifndef NDEBUG
406 visitor->trace(m_allRules); 412 visitor->trace(m_allRules);
407 #endif 413 #endif
408 #endif 414 #endif
409 } 415 }
410 416
411 #ifndef NDEBUG 417 #ifndef NDEBUG
412 void RuleSet::show() 418 void RuleSet::show()
413 { 419 {
414 for (const auto& rule: m_allRules) 420 for (const auto& rule: m_allRules)
415 rule.selector().show(); 421 rule.selector().show();
416 } 422 }
417 #endif 423 #endif
418 424
419 } // namespace blink 425 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/RuleSet.h ('k') | Source/core/css/RuleSetTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698