summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/CSSMediaRule.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-09-13 12:51:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-19 20:50:05 +0200
commitd441d6f39bb846989d95bcf5caf387b42414718d (patch)
treee367e64a75991c554930278175d403c072de6bb8 /Source/WebCore/css/CSSMediaRule.cpp
parent0060b2994c07842f4c59de64b5e3e430525c4b90 (diff)
downloadqtwebkit-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.cpp132
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