diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebCore/css/CSSMediaRule.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebCore/css/CSSMediaRule.cpp')
-rw-r--r-- | Source/WebCore/css/CSSMediaRule.cpp | 132 |
1 files changed, 12 insertions, 120 deletions
diff --git a/Source/WebCore/css/CSSMediaRule.cpp b/Source/WebCore/css/CSSMediaRule.cpp index fc8624da0..13fdd6cf8 100644 --- a/Source/WebCore/css/CSSMediaRule.cpp +++ b/Source/WebCore/css/CSSMediaRule.cpp @@ -28,162 +28,54 @@ #include "CSSStyleSheet.h" #include "ExceptionCode.h" #include "StyleRule.h" -#include "WebCoreMemoryInstrumentation.h" -#include <wtf/MemoryInstrumentationVector.h> #include <wtf/text/StringBuilder.h> namespace WebCore { CSSMediaRule::CSSMediaRule(StyleRuleMedia* mediaRule, CSSStyleSheet* parent) - : CSSRule(parent) - , m_mediaRule(mediaRule) - , m_childRuleCSSOMWrappers(mediaRule->childRules().size()) + : CSSGroupingRule(mediaRule, parent) { } CSSMediaRule::~CSSMediaRule() { - ASSERT(m_childRuleCSSOMWrappers.size() == m_mediaRule->childRules().size()); - - for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { - if (m_childRuleCSSOMWrappers[i]) - m_childRuleCSSOMWrappers[i]->setParentRule(0); - } if (m_mediaCSSOMWrapper) m_mediaCSSOMWrapper->clearParentRule(); } -unsigned CSSMediaRule::insertRule(const String& ruleString, unsigned index, ExceptionCode& ec) -{ - ASSERT(m_childRuleCSSOMWrappers.size() == m_mediaRule->childRules().size()); - - if (index > m_mediaRule->childRules().size()) { - // INDEX_SIZE_ERR: Raised if the specified index is not a valid insertion point. - ec = INDEX_SIZE_ERR; - return 0; - } - - CSSParser parser(parserContext()); - CSSStyleSheet* styleSheet = parentStyleSheet(); - RefPtr<StyleRuleBase> newRule = parser.parseRule(styleSheet ? styleSheet->contents() : 0, ruleString); - if (!newRule) { - // SYNTAX_ERR: Raised if the specified rule has a syntax error and is unparsable. - ec = SYNTAX_ERR; - return 0; - } - - if (newRule->isImportRule()) { - // FIXME: an HIERARCHY_REQUEST_ERR should also be thrown for a @charset or a nested - // @media rule. They are currently not getting parsed, resulting in a SYNTAX_ERR - // to get raised above. - - // HIERARCHY_REQUEST_ERR: Raised if the rule cannot be inserted at the specified - // index, e.g., if an @import rule is inserted after a standard rule set or other - // at-rule. - ec = HIERARCHY_REQUEST_ERR; - return 0; - } - CSSStyleSheet::RuleMutationScope mutationScope(this); - - m_mediaRule->wrapperInsertRule(index, newRule); - - m_childRuleCSSOMWrappers.insert(index, RefPtr<CSSRule>()); - return index; -} - -void CSSMediaRule::deleteRule(unsigned index, ExceptionCode& ec) +MediaQuerySet* CSSMediaRule::mediaQueries() const { - ASSERT(m_childRuleCSSOMWrappers.size() == m_mediaRule->childRules().size()); - - if (index >= m_mediaRule->childRules().size()) { - // INDEX_SIZE_ERR: Raised if the specified index does not correspond to a - // rule in the media rule list. - ec = INDEX_SIZE_ERR; - return; - } - - CSSStyleSheet::RuleMutationScope mutationScope(this); - - m_mediaRule->wrapperRemoveRule(index); - - if (m_childRuleCSSOMWrappers[index]) - m_childRuleCSSOMWrappers[index]->setParentRule(0); - m_childRuleCSSOMWrappers.remove(index); + return toStyleRuleMedia(m_groupRule.get())->mediaQueries(); } String CSSMediaRule::cssText() const { StringBuilder result; result.append("@media "); - if (m_mediaRule->mediaQueries()) { - result.append(m_mediaRule->mediaQueries()->mediaText()); + if (mediaQueries()) { + result.append(mediaQueries()->mediaText()); result.append(' '); } - result.append("{ \n"); - - unsigned size = length(); - for (unsigned i = 0; i < size; ++i) { - result.append(" "); - result.append(item(i)->cssText()); - result.append('\n'); - } - + result.appendLiteral("{ \n"); + appendCssTextForItems(result); result.append('}'); return result.toString(); } MediaList* CSSMediaRule::media() const { - if (!m_mediaRule->mediaQueries()) + if (!mediaQueries()) return 0; if (!m_mediaCSSOMWrapper) - m_mediaCSSOMWrapper = MediaList::create(m_mediaRule->mediaQueries(), const_cast<CSSMediaRule*>(this)); + m_mediaCSSOMWrapper = MediaList::create(mediaQueries(), const_cast<CSSMediaRule*>(this)); return m_mediaCSSOMWrapper.get(); } -unsigned CSSMediaRule::length() const -{ - return m_mediaRule->childRules().size(); -} - -CSSRule* CSSMediaRule::item(unsigned index) const -{ - if (index >= length()) - return 0; - ASSERT(m_childRuleCSSOMWrappers.size() == m_mediaRule->childRules().size()); - RefPtr<CSSRule>& rule = m_childRuleCSSOMWrappers[index]; - if (!rule) - rule = m_mediaRule->childRules()[index]->createCSSOMWrapper(const_cast<CSSMediaRule*>(this)); - return rule.get(); -} - -CSSRuleList* CSSMediaRule::cssRules() const -{ - if (!m_ruleListCSSOMWrapper) - m_ruleListCSSOMWrapper = adoptPtr(new LiveCSSRuleList<CSSMediaRule>(const_cast<CSSMediaRule*>(this))); - return m_ruleListCSSOMWrapper.get(); -} - void CSSMediaRule::reattach(StyleRuleBase* rule) { - ASSERT(rule); - ASSERT(rule->isMediaRule()); - m_mediaRule = static_cast<StyleRuleMedia*>(rule); - if (m_mediaCSSOMWrapper && m_mediaRule->mediaQueries()) - m_mediaCSSOMWrapper->reattach(m_mediaRule->mediaQueries()); - for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { - if (m_childRuleCSSOMWrappers[i]) - m_childRuleCSSOMWrappers[i]->reattach(m_mediaRule->childRules()[i].get()); - } -} - -void CSSMediaRule::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const -{ - MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CSS); - CSSRule::reportMemoryUsage(memoryObjectInfo); - info.addMember(m_mediaCSSOMWrapper); - info.addMember(m_childRuleCSSOMWrappers); - info.addMember(m_ruleListCSSOMWrapper); + CSSGroupingRule::reattach(rule); + if (m_mediaCSSOMWrapper && mediaQueries()) + m_mediaCSSOMWrapper->reattach(mediaQueries()); } } // namespace WebCore |