示例#1
0
void CSSGlobalRuleSet::update(Document& document) {
  if (!m_isDirty)
    return;

  m_isDirty = false;
  m_features.clear();
  m_hasFullscreenUAStyle = false;

  CSSDefaultStyleSheets& defaultStyleSheets = CSSDefaultStyleSheets::instance();
  if (defaultStyleSheets.defaultStyle()) {
    m_features.add(defaultStyleSheets.defaultStyle()->features());
    m_hasFullscreenUAStyle = defaultStyleSheets.fullscreenStyleSheet();
  }

  if (document.isViewSource())
    m_features.add(defaultStyleSheets.defaultViewSourceStyle()->features());

  if (m_watchedSelectorsRuleSet)
    m_features.add(m_watchedSelectorsRuleSet->features());

  document.styleEngine().collectScopedStyleFeaturesTo(m_features);

  m_siblingRuleSet = makeRuleSet(m_features.siblingRules());
  m_uncommonAttributeRuleSet = makeRuleSet(m_features.uncommonAttributeRules());
}
void DocumentRuleSets::collectFeatures()
{
    m_features.clear();
    // Collect all ids and rules using sibling selectors (:first-child and similar)
    // in the current set of stylesheets. Style sharing code uses this information to reject
    // sharing candidates.
    if (CSSDefaultStyleSheets::defaultStyle)
        m_features.add(CSSDefaultStyleSheets::defaultStyle->features());
    if (m_authorStyle)
        m_features.add(m_authorStyle->features());
    if (m_userStyle)
        m_features.add(m_userStyle->features());

    m_siblingRuleSet = makeRuleSet(m_features.siblingRules);
    m_uncommonAttributeRuleSet = makeRuleSet(m_features.uncommonAttributeRules);
}
示例#3
0
RuleSet* DocumentRuleSets::ancestorClassRules(AtomicStringImpl* className) const
{
    auto addResult = m_ancestorClassRuleSet.add(className, nullptr);
    if (addResult.isNewEntry) {
        if (auto* rules = m_features.ancestorClassRules.get(className))
            addResult.iterator->value = makeRuleSet(*rules);
    }
    return addResult.iterator->value.get();
}
 void finishAddingSelectors() {
   m_siblingRuleSet = makeRuleSet(m_ruleSet->features().siblingRules);
   m_uncommonAttributeRuleSet =
       makeRuleSet(m_ruleSet->features().uncommonAttributeRules);
 }