TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_Mutated) { ActiveStyleSheetVector oldSheets; ActiveStyleSheetVector newSheets; HeapVector<Member<RuleSet>> changedRuleSets; CSSStyleSheet* sheet1 = createSheet(); CSSStyleSheet* sheet2 = createSheet(); CSSStyleSheet* sheet3 = createSheet(); oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); sheet2->contents()->clearRuleSet(); sheet2->contents()->ensureRuleSet(MediaQueryEvaluator(), RuleHasDocumentSecurityOrigin); EXPECT_NE(oldSheets[1].second, &sheet2->contents()->ruleSet()); newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); EXPECT_EQ(ActiveSheetsChanged, compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); ASSERT_EQ(2u, changedRuleSets.size()); EXPECT_EQ(&sheet2->contents()->ruleSet(), changedRuleSets[0]); EXPECT_EQ(oldSheets[1].second, changedRuleSets[1]); }
static CSSStyleSheet* createSheet(const String& cssText = String()) { StyleSheetContents* contents = StyleSheetContents::create(CSSParserContext(HTMLStandardMode, nullptr)); contents->parseString(cssText); contents->ensureRuleSet(MediaQueryEvaluator(), RuleHasDocumentSecurityOrigin); return CSSStyleSheet::create(contents); }
bool InspectorPageAgent::applyViewportStyleOverride(StyleResolver* resolver) { if (!m_deviceMetricsOverridden || !m_emulateViewportEnabled) return false; RefPtrWillBeRawPtr<StyleSheetContents> styleSheet = StyleSheetContents::create(CSSParserContext(UASheetMode, 0)); styleSheet->parseString(String(viewportAndroidUserAgentStyleSheet, sizeof(viewportAndroidUserAgentStyleSheet))); OwnPtrWillBeRawPtr<RuleSet> ruleSet = RuleSet::create(); ruleSet->addRulesFromSheet(styleSheet.get(), MediaQueryEvaluator("screen")); resolver->viewportStyleResolver()->collectViewportRules(ruleSet.get(), ViewportStyleResolver::UserAgentOrigin); return true; }
StyleEngineTest::RuleSetInvalidation StyleEngineTest::scheduleInvalidationsForRules(TreeScope& treeScope, const String& cssText) { StyleSheetContents* sheet = StyleSheetContents::create(CSSParserContext(HTMLStandardMode, nullptr)); sheet->parseString(cssText); HeapVector<Member<RuleSet>> ruleSets; RuleSet& ruleSet = sheet->ensureRuleSet(MediaQueryEvaluator(), RuleHasDocumentSecurityOrigin); ruleSet.compactRulesIfNeeded(); if (ruleSet.needsFullRecalcForRuleSetInvalidation()) return RuleSetInvalidationFullRecalc; ruleSets.append(&ruleSet); styleEngine().scheduleInvalidationsForRuleSets(treeScope, ruleSets); return RuleSetInvalidationsScheduled; }
RuleSet& CSSTestHelper::ruleSet() { RuleSet& ruleSet = m_styleSheet->contents()->ensureRuleSet(MediaQueryEvaluator(), RuleHasNoSpecialState); ruleSet.compactRulesIfNeeded(); return ruleSet; }