summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/WebKitCSSRegionRule.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
commit2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch)
tree988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebCore/css/WebKitCSSRegionRule.cpp
parentdd91e772430dc294e3bf478c119ef8d43c0a3358 (diff)
downloadqtwebkit-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.cpp62
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