Title: [93495] branches/chromium/835
Revision
93495
Author
cev...@google.com
Date
2011-08-22 01:39:01 -0700 (Mon, 22 Aug 2011)

Log Message

Merge 93397
BUG=76771
Review URL: http://codereview.chromium.org/7697013

Modified Paths

Diff

Modified: branches/chromium/835/LayoutTests/platform/chromium/test_expectations.txt (93494 => 93495)


--- branches/chromium/835/LayoutTests/platform/chromium/test_expectations.txt	2011-08-22 08:05:59 UTC (rev 93494)
+++ branches/chromium/835/LayoutTests/platform/chromium/test_expectations.txt	2011-08-22 08:39:01 UTC (rev 93495)
@@ -198,6 +198,15 @@
 // Would have to be implemented much differently to work in v8.
 WONTFIX : fast/dom/gc-10.html = FAIL
 
+// Proper retention of CSS objects is tricky.  Disable the tests for now.
+
+BUGWK66377 : fast/dom/StyleSheet/gc-declaration-parent-rule.html = TEXT
+BUGWK66377 : fast/dom/StyleSheet/gc-inline-style-cssvalues.html = TEXT
+BUGWK66377 : fast/dom/StyleSheet/gc-parent-rule.html = TEXT
+BUGWK66377 : fast/dom/StyleSheet/gc-parent-stylesheet.html = TEXT
+BUGWK66377 : fast/dom/StyleSheet/gc-rule-children-wrappers.html = TEXT
+BUGWK66377 : fast/dom/StyleSheet/gc-styleheet-wrapper.xhtml = TEXT
+
 // This fails because we're missing various useless apple-specific
 // properties on the window object.
 // This test also timeouts in Debug mode.

Modified: branches/chromium/835/Source/WebCore/bindings/v8/V8GCController.cpp (93494 => 93495)


--- branches/chromium/835/Source/WebCore/bindings/v8/V8GCController.cpp	2011-08-22 08:05:59 UTC (rev 93494)
+++ branches/chromium/835/Source/WebCore/bindings/v8/V8GCController.cpp	2011-08-22 08:39:01 UTC (rev 93495)
@@ -286,40 +286,6 @@
     return GroupId(root);
 }
 
-static GroupId calculateGroupId(StyleBase* styleBase)
-{
-    ASSERT(styleBase);
-    StyleBase* current = styleBase;
-    StyleSheet* styleSheet = 0;
-    while (true) {
-        // Special case: CSSStyleDeclarations might be either inline and in this case
-        // we need to group them with their node or regular ones.
-        if (current->isMutableStyleDeclaration()) {
-            CSSMutableStyleDeclaration* cssMutableStyleDeclaration = static_cast<CSSMutableStyleDeclaration*>(current);
-            if (cssMutableStyleDeclaration->isInlineStyleDeclaration())
-                return calculateGroupId(cssMutableStyleDeclaration->node());
-            // Either we have no parent, or this parent is a CSSRule.
-            ASSERT(cssMutableStyleDeclaration->parent() == cssMutableStyleDeclaration->parentRule());
-        }
-
-        if (current->isStyleSheet())
-            styleSheet = static_cast<StyleSheet*>(current);
-
-        StyleBase* parent = current->parent();
-        if (!parent)
-            break;
-        current = parent;
-    }
-
-    if (styleSheet) {
-        if (Node* ownerNode = styleSheet->ownerNode())
-            return calculateGroupId(ownerNode);
-        return GroupId(styleSheet);
-    }
-
-    return GroupId(current);
-}
-
 class GrouperVisitor : public DOMWrapperMap<Node>::Visitor, public DOMWrapperMap<void>::Visitor {
 public:
     void visitDOMWrapper(DOMDataStore* store, Node* node, v8::Persistent<v8::Object> wrapper)
@@ -347,49 +313,6 @@
 
     void visitDOMWrapper(DOMDataStore* store, void* object, v8::Persistent<v8::Object> wrapper)
     {
-        WrapperTypeInfo* typeInfo = V8DOMWrapper::domWrapperType(wrapper);
-
-        if (typeInfo->isSubclass(&V8StyleSheetList::info)) {
-            StyleSheetList* styleSheetList = static_cast<StyleSheetList*>(object);
-            GroupId groupId(styleSheetList);
-            if (Document* document = styleSheetList->document())
-                groupId = GroupId(document);
-            m_grouper.append(GrouperItem(groupId, wrapper));
-
-        } else if (typeInfo->isSubclass(&V8DOMImplementation::info)) {
-            DOMImplementation* domImplementation = static_cast<DOMImplementation*>(object);
-            GroupId groupId(domImplementation);
-            if (Document* document = domImplementation->document())
-                groupId = GroupId(document);
-            m_grouper.append(GrouperItem(groupId, wrapper));
-
-        } else if (typeInfo->isSubclass(&V8StyleSheet::info) || typeInfo->isSubclass(&V8CSSRule::info)) {
-            m_grouper.append(GrouperItem(calculateGroupId(static_cast<StyleBase*>(object)), wrapper));
-
-        } else if (typeInfo->isSubclass(&V8CSSStyleDeclaration::info)) {
-            CSSStyleDeclaration* cssStyleDeclaration = static_cast<CSSStyleDeclaration*>(object);
-
-            GroupId groupId = calculateGroupId(cssStyleDeclaration);
-            m_grouper.append(GrouperItem(groupId, wrapper));
-
-            // Keep alive "dirty" primitive values (i.e. the ones that
-            // have user-added properties) by creating implicit
-            // references between the style declaration and the values
-            // in it.
-            if (cssStyleDeclaration->isMutableStyleDeclaration()) {
-                CSSMutableStyleDeclaration* cssMutableStyleDeclaration = static_cast<CSSMutableStyleDeclaration*>(cssStyleDeclaration);
-                Vector<v8::Persistent<v8::Value> > values;
-                values.reserveCapacity(cssMutableStyleDeclaration->length());
-                CSSMutableStyleDeclaration::const_iterator end = cssMutableStyleDeclaration->end();
-                for (CSSMutableStyleDeclaration::const_iterator it = cssMutableStyleDeclaration->begin(); it != end; ++it) {
-                    v8::Persistent<v8::Object> value = store->domObjectMap().get(it->value());
-                    if (!value.IsEmpty() && value->IsDirty())
-                        values.append(value);
-                }
-                if (!values.isEmpty())
-                    v8::V8::AddImplicitReferences(wrapper, values.data(), values.size());
-            }
-        }
     }
 
     void applyGrouping()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to