diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
commit | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch) | |
tree | 988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebCore/css/WebKitCSSRegionRule.cpp | |
parent | dd91e772430dc294e3bf478c119ef8d43c0a3358 (diff) | |
download | qtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz |
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/WebCore/css/WebKitCSSRegionRule.cpp')
-rw-r--r-- | Source/WebCore/css/WebKitCSSRegionRule.cpp | 62 |
1 files changed, 44 insertions, 18 deletions
diff --git a/Source/WebCore/css/WebKitCSSRegionRule.cpp b/Source/WebCore/css/WebKitCSSRegionRule.cpp index cc377c461..df1c9b079 100644 --- a/Source/WebCore/css/WebKitCSSRegionRule.cpp +++ b/Source/WebCore/css/WebKitCSSRegionRule.cpp @@ -32,43 +32,69 @@ #include "WebKitCSSRegionRule.h" #include "CSSParser.h" -#include "CSSParserValues.h" #include "CSSRuleList.h" -#include "Document.h" -#include "ExceptionCode.h" +#include "StyleRule.h" +#include <wtf/text/StringBuilder.h> namespace WebCore { -WebKitCSSRegionRule::WebKitCSSRegionRule(CSSStyleSheet* parent, Vector<OwnPtr<CSSParserSelector> >* selectors, PassRefPtr<CSSRuleList> rules) +WebKitCSSRegionRule::WebKitCSSRegionRule(StyleRuleRegion* regionRule, CSSStyleSheet* parent) : CSSRule(parent, CSSRule::WEBKIT_REGION_RULE) - , m_ruleList(rules) + , m_regionRule(regionRule) + , m_childRuleCSSOMWrappers(regionRule->childRules().size()) { - for (unsigned index = 0; index < m_ruleList->length(); ++index) - m_ruleList->item(index)->setParentRule(this); - - m_selectorList.adoptSelectorVector(*selectors); } WebKitCSSRegionRule::~WebKitCSSRegionRule() { - for (unsigned index = 0; index < m_ruleList->length(); ++index) - m_ruleList->item(index)->setParentRule(0); + for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { + if (m_childRuleCSSOMWrappers[i]) + m_childRuleCSSOMWrappers[i]->setParentRule(0); + } } String WebKitCSSRegionRule::cssText() const { - String result = "@-webkit-region "; + StringBuilder result; + result.append("@-webkit-region "); // First add the selectors. - result += m_selectorList.selectorsText(); + result.append(m_regionRule->selectorList().selectorsText()); // Then add the rules. - result += " { \n"; + result.append(" { \n"); + + unsigned size = length(); + for (unsigned i = 0; i < size; ++i) { + result.append(" "); + result.append(item(i)->cssText()); + result.append("\n"); + } + result.append("}"); + return result.toString(); +} + +unsigned WebKitCSSRegionRule::length() const +{ + return m_regionRule->childRules().size(); +} - if (m_ruleList) - result += m_ruleList->rulesText(); +CSSRule* WebKitCSSRegionRule::item(unsigned index) const +{ + if (index >= length()) + return 0; + ASSERT(m_childRuleCSSOMWrappers.size() == m_regionRule->childRules().size()); + RefPtr<CSSRule>& rule = m_childRuleCSSOMWrappers[index]; + if (!rule) + rule = m_regionRule->childRules()[index]->createCSSOMWrapper(const_cast<WebKitCSSRegionRule*>(this)); + return rule.get(); +} - result += "}"; - return result; +CSSRuleList* WebKitCSSRegionRule::cssRules() const +{ + if (!m_ruleListCSSOMWrapper) + m_ruleListCSSOMWrapper = adoptPtr(new LiveCSSRuleList<WebKitCSSRegionRule>(const_cast<WebKitCSSRegionRule*>(this))); + return m_ruleListCSSOMWrapper.get(); } + } // namespace WebCore |