Title: [97849] trunk/Source/WebCore
Revision
97849
Author
[email protected]
Date
2011-10-19 05:11:40 -0700 (Wed, 19 Oct 2011)

Log Message

MediaList: Remove inheritance from StyleBase.
https://bugs.webkit.org/show_bug.cgi?id=70203

Reviewed by Darin Adler.

* css/MediaList.h:
(WebCore::MediaList::parentStyleSheet):
(WebCore::MediaList::setParentStyleSheet):
* css/MediaList.cpp:
(WebCore::MediaList::MediaList):
(WebCore::MediaList::notifyChanged):

    Change MediaList to no longer inherit from StyleBase. The parent()/setParent()
    mechanism was replaced by explicit parentStyleSheet()/setParentStyleSheet().

* css/CSSImportRule.cpp:
(WebCore::CSSImportRule::CSSImportRule):
(WebCore::CSSImportRule::~CSSImportRule):
* css/CSSMediaRule.cpp:
(WebCore::CSSMediaRule::CSSMediaRule):
(WebCore::CSSMediaRule::~CSSMediaRule):

    Change StyleBase::setParent() calls to MediaList::setParentStyleSheet().
    CSSRules are never moved between stylesheets, so the parent style sheet pointer
    is valid for the MediaList's lifetime.

* css/StyleSheet.cpp:
(WebCore::StyleSheet::~StyleSheet):

    Change StyleBase::setParent() calls to MediaList::setParentStyleSheet().

(WebCore::StyleSheet::setMedia):

    Change StyleBase::setParent() calls to MediaList::setParentStyleSheet().
    Assert that the parent sheet is either null, or this, as MediaLists should never
    be reparented to other sheets.
    Assert that the StyleSheet is indeed a CSSStyleSheet.  XSLStyleSheet inherits from
    StyleSheet, but it shouldn't be using the MediaList.

* bindings/js/JSDOMBinding.h:
(WebCore::root):

    Add MediaList* specific overload for root() since it can't fall back
    to root(StyleBase*) anymore.

* WebCore.xcodeproj/project.pbxproj:

    Add some PrivateHeaders to accomodate the JSDOMBinding.h changes.

* css/CSSMediaRule.h:

    Remove unnecessary forward-declaration of MediaList.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (97848 => 97849)


--- trunk/Source/WebCore/ChangeLog	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/ChangeLog	2011-10-19 12:11:40 UTC (rev 97849)
@@ -1,3 +1,58 @@
+2011-10-19  Andreas Kling  <[email protected]>
+
+        MediaList: Remove inheritance from StyleBase.
+        https://bugs.webkit.org/show_bug.cgi?id=70203
+
+        Reviewed by Darin Adler.
+
+        * css/MediaList.h:
+        (WebCore::MediaList::parentStyleSheet):
+        (WebCore::MediaList::setParentStyleSheet):
+        * css/MediaList.cpp:
+        (WebCore::MediaList::MediaList):
+        (WebCore::MediaList::notifyChanged):
+
+            Change MediaList to no longer inherit from StyleBase. The parent()/setParent()
+            mechanism was replaced by explicit parentStyleSheet()/setParentStyleSheet().
+
+        * css/CSSImportRule.cpp:
+        (WebCore::CSSImportRule::CSSImportRule):
+        (WebCore::CSSImportRule::~CSSImportRule):
+        * css/CSSMediaRule.cpp:
+        (WebCore::CSSMediaRule::CSSMediaRule):
+        (WebCore::CSSMediaRule::~CSSMediaRule):
+
+            Change StyleBase::setParent() calls to MediaList::setParentStyleSheet().
+            CSSRules are never moved between stylesheets, so the parent style sheet pointer
+            is valid for the MediaList's lifetime.
+
+        * css/StyleSheet.cpp:
+        (WebCore::StyleSheet::~StyleSheet):
+
+            Change StyleBase::setParent() calls to MediaList::setParentStyleSheet().
+
+        (WebCore::StyleSheet::setMedia):
+
+            Change StyleBase::setParent() calls to MediaList::setParentStyleSheet().
+            Assert that the parent sheet is either null, or this, as MediaLists should never
+            be reparented to other sheets.
+            Assert that the StyleSheet is indeed a CSSStyleSheet.  XSLStyleSheet inherits from
+            StyleSheet, but it shouldn't be using the MediaList.
+
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::root):
+
+            Add MediaList* specific overload for root() since it can't fall back
+            to root(StyleBase*) anymore.
+
+        * WebCore.xcodeproj/project.pbxproj:
+
+            Add some PrivateHeaders to accomodate the JSDOMBinding.h changes.
+
+        * css/CSSMediaRule.h:
+
+            Remove unnecessary forward-declaration of MediaList.
+
 2011-10-19  Vsevolod Vlasov  <[email protected]>
 
         Web Inspector: Console messages for XHR logging should show call stack if available.

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (97848 => 97849)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2011-10-19 12:11:40 UTC (rev 97849)
@@ -3470,7 +3470,7 @@
 		A80E6CEF0A1989CA007FB8C5 /* CSSStyleRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC50A1989CA007FB8C5 /* CSSStyleRule.cpp */; };
 		A80E6CF00A1989CA007FB8C5 /* CSSInheritedValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC60A1989CA007FB8C5 /* CSSInheritedValue.cpp */; };
 		A80E6CF10A1989CA007FB8C5 /* FontValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CC70A1989CA007FB8C5 /* FontValue.cpp */; };
-		A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CC80A1989CA007FB8C5 /* CSSRuleList.h */; };
+		A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CC80A1989CA007FB8C5 /* CSSRuleList.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		A80E6CF30A1989CA007FB8C5 /* FontFamilyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CC90A1989CA007FB8C5 /* FontFamilyValue.h */; };
 		A80E6CF40A1989CA007FB8C5 /* ShadowValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CCA0A1989CA007FB8C5 /* ShadowValue.cpp */; };
 		A80E6CF50A1989CA007FB8C5 /* CSSPageRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CCB0A1989CA007FB8C5 /* CSSPageRule.cpp */; };
@@ -3495,7 +3495,7 @@
 		A80E6D090A1989CA007FB8C5 /* CSSRuleList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6CDF0A1989CA007FB8C5 /* CSSRuleList.cpp */; };
 		A80E6D0B0A1989CA007FB8C5 /* DashboardRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CE10A1989CA007FB8C5 /* DashboardRegion.h */; };
 		A80E6D0C0A1989CA007FB8C5 /* CSSStyleRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CE20A1989CA007FB8C5 /* CSSStyleRule.h */; };
-		A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CE30A1989CA007FB8C5 /* CSSRule.h */; };
+		A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CE30A1989CA007FB8C5 /* CSSRule.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		A80E6DFB0A199067007FB8C5 /* CSSMutableStyleDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A80E6DF90A199067007FB8C5 /* CSSMutableStyleDeclaration.cpp */; };
 		A80E6DFC0A199067007FB8C5 /* CSSMutableStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6DFA0A199067007FB8C5 /* CSSMutableStyleDeclaration.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		A80E6E0F0A19911C007FB8C5 /* CSSStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6E0D0A19911C007FB8C5 /* CSSStyleDeclaration.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -3947,14 +3947,14 @@
 		A8EA7EC00A1945D000A8EF5F /* EntityReference.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7EB80A1945D000A8EF5F /* EntityReference.h */; };
 		A8EA7EC10A1945D000A8EF5F /* EntityReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA7EB90A1945D000A8EF5F /* EntityReference.cpp */; };
 		A8EA7EC20A1945D000A8EF5F /* Entity.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7EBA0A1945D000A8EF5F /* Entity.h */; };
-		A8EA80070A19516E00A8EF5F /* CSSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7FFF0A19516E00A8EF5F /* CSSStyleSheet.h */; };
+		A8EA80070A19516E00A8EF5F /* CSSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA7FFF0A19516E00A8EF5F /* CSSStyleSheet.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		A8EA80080A19516E00A8EF5F /* CSSStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80000A19516E00A8EF5F /* CSSStyleSheet.cpp */; };
 		A8EA80090A19516E00A8EF5F /* MediaList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80010A19516E00A8EF5F /* MediaList.cpp */; };
 		A8EA800A0A19516E00A8EF5F /* StyleSheetList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80020A19516E00A8EF5F /* StyleSheetList.h */; };
 		A8EA800B0A19516E00A8EF5F /* StyleSheetList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80030A19516E00A8EF5F /* StyleSheetList.cpp */; };
-		A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80040A19516E00A8EF5F /* StyleSheet.h */; };
+		A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80040A19516E00A8EF5F /* StyleSheet.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		A8EA800D0A19516E00A8EF5F /* StyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8EA80050A19516E00A8EF5F /* StyleSheet.cpp */; };
-		A8EA800E0A19516E00A8EF5F /* MediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80060A19516E00A8EF5F /* MediaList.h */; };
+		A8EA800E0A19516E00A8EF5F /* MediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EA80060A19516E00A8EF5F /* MediaList.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		A8F46A840CB20A9D003A9670 /* DOMSVGClipPathElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8503612C0ACE007B001F3D9E /* DOMSVGClipPathElement.h */; };
 		A8F46A880CB20A9D003A9670 /* DOMSVGGradientElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85C9A2EC0AD7E90300FBFF1E /* DOMSVGGradientElement.h */; };
 		A8F46A890CB20A9D003A9670 /* DOMSVGAnimateColorElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 850361280ACE007B001F3D9E /* DOMSVGAnimateColorElement.h */; };
@@ -21566,10 +21566,15 @@
 			buildActionMask = 2147483647;
 			files = (
 				3106037014327D2E00ABF4BA /* WebKitCSSFilterValue.h in Headers */,
+				A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */,
+				A8EA80070A19516E00A8EF5F /* CSSStyleSheet.h in Headers */,
 				319AE064142D6B24006563A1 /* StyleFilterData.h in Headers */,
 				319AE068142D78DD006563A1 /* FilterOperation.h in Headers */,
 				319AE06A142D78DD006563A1 /* FilterOperations.h in Headers */,
+				A8EA800E0A19516E00A8EF5F /* MediaList.h in Headers */,
 				5D8C4DC01428222C0026CE72 /* DisplaySleepDisabler.h in Headers */,
+				A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */,
+				A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */,
 				B5B5DC6A119BB3D5002A8790 /* AbstractDatabase.h in Headers */,
 				41E1B1D10FF5986900576B3B /* AbstractWorker.h in Headers */,
 				29A8122E0FBB9C1D00510293 /* AccessibilityARIAGridCell.h in Headers */,
@@ -21852,8 +21857,6 @@
 				82E3D8DF122EA0D1003AE5BC /* CSSPropertySourceData.h in Headers */,
 				9362640B0DE1137D009D5A00 /* CSSReflectionDirection.h in Headers */,
 				BC5A12E00DC0414800C9AFAD /* CSSReflectValue.h in Headers */,
-				A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */,
-				A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */,
 				371F51A10D262FA000ECE0D5 /* CSSSegmentedFontFace.h in Headers */,
 				A80E73520A199C77007FB8C5 /* CSSSelector.h in Headers */,
 				E4C1789B0EE6903800824D69 /* CSSSelectorList.h in Headers */,
@@ -21861,7 +21864,6 @@
 				A80E6E0F0A19911C007FB8C5 /* CSSStyleDeclaration.h in Headers */,
 				A80E6D0C0A1989CA007FB8C5 /* CSSStyleRule.h in Headers */,
 				BC772B400C4EA91E0083285F /* CSSStyleSelector.h in Headers */,
-				A8EA80070A19516E00A8EF5F /* CSSStyleSheet.h in Headers */,
 				BC80C9880CD294EE00A0B7B3 /* CSSTimingFunctionValue.h in Headers */,
 				371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */,
 				DD7CDF250A23CF9800069928 /* CSSUnknownRule.h in Headers */,
@@ -23576,7 +23578,6 @@
 				97205AB81239291000B17380 /* MediaDocument.h in Headers */,
 				E44613AD0CD6331000FADA75 /* MediaError.h in Headers */,
 				4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */,
-				A8EA800E0A19516E00A8EF5F /* MediaList.h in Headers */,
 				E44613E40CD681A200FADA75 /* MediaPlayer.h in Headers */,
 				076F0D0E12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h in Headers */,
 				E44613E60CD681A900FADA75 /* MediaPlayerPrivateQTKit.h in Headers */,
@@ -24094,7 +24095,6 @@
 				BC2272E40E82EE9B00E7F975 /* StyleRareInheritedData.h in Headers */,
 				BC2272BD0E82EAAE00E7F975 /* StyleRareNonInheritedData.h in Headers */,
 				BC2272870E82E70700E7F975 /* StyleReflection.h in Headers */,
-				A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */,
 				A8EA800A0A19516E00A8EF5F /* StyleSheetList.h in Headers */,
 				BC5EB5E50E81BF6D00B25965 /* StyleSurroundData.h in Headers */,
 				BC5EB8100E81F2CE00B25965 /* StyleTransformData.h in Headers */,

Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (97848 => 97849)


--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h	2011-10-19 12:11:40 UTC (rev 97849)
@@ -22,11 +22,13 @@
 #ifndef JSDOMBinding_h
 #define JSDOMBinding_h
 
+#include "CSSStyleSheet.h"
 #include "JSDOMGlobalObject.h"
 #include "JSDOMWrapper.h"
 #include "DOMWrapperWorld.h"
 #include "Document.h"
 #include "Element.h"
+#include "MediaList.h"
 #include "StyleBase.h"
 #include <heap/Weak.h>
 #include <runtime/FunctionPrototype.h>
@@ -184,6 +186,13 @@
         return styleBase;
     }
 
+    inline void* root(MediaList* mediaList)
+    {
+        if (CSSStyleSheet* parentStyleSheet = mediaList->parentStyleSheet())
+            return root(parentStyleSheet);
+        return mediaList;
+    }
+
     const JSC::HashTable* getHashTableForGlobalData(JSC::JSGlobalData&, const JSC::HashTable* staticTable);
 
     void reportException(JSC::ExecState*, JSC::JSValue exception);

Modified: trunk/Source/WebCore/css/CSSImportRule.cpp (97848 => 97849)


--- trunk/Source/WebCore/css/CSSImportRule.cpp	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/css/CSSImportRule.cpp	2011-10-19 12:11:40 UTC (rev 97849)
@@ -39,7 +39,7 @@
     , m_loading(false)
 {
     if (m_lstMedia)
-        m_lstMedia->setParent(this);
+        m_lstMedia->setParentStyleSheet(parent);
     else
         m_lstMedia = MediaList::create(this, String());
 }
@@ -47,7 +47,7 @@
 CSSImportRule::~CSSImportRule()
 {
     if (m_lstMedia)
-        m_lstMedia->setParent(0);
+        m_lstMedia->setParentStyleSheet(0);
     if (m_styleSheet)
         m_styleSheet->setParent(0);
     if (m_cachedSheet)

Modified: trunk/Source/WebCore/css/CSSMediaRule.cpp (97848 => 97849)


--- trunk/Source/WebCore/css/CSSMediaRule.cpp	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/css/CSSMediaRule.cpp	2011-10-19 12:11:40 UTC (rev 97849)
@@ -33,7 +33,7 @@
     , m_lstMedia(media)
     , m_lstCSSRules(rules)
 {
-    m_lstMedia->setParent(this);
+    m_lstMedia->setParentStyleSheet(parent);
     int length = m_lstCSSRules->length();
     for (int i = 0; i < length; i++)
         m_lstCSSRules->item(i)->setParent(this);
@@ -42,7 +42,7 @@
 CSSMediaRule::~CSSMediaRule()
 {
     if (m_lstMedia)
-        m_lstMedia->setParent(0);
+        m_lstMedia->setParentStyleSheet(0);
 
     int length = m_lstCSSRules->length();
     for (int i = 0; i < length; i++)

Modified: trunk/Source/WebCore/css/CSSMediaRule.h (97848 => 97849)


--- trunk/Source/WebCore/css/CSSMediaRule.h	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/css/CSSMediaRule.h	2011-10-19 12:11:40 UTC (rev 97849)
@@ -31,7 +31,6 @@
 namespace WebCore {
 
 class CSSRuleList;
-class MediaList;
 
 class CSSMediaRule : public CSSRule {
 public:

Modified: trunk/Source/WebCore/css/MediaList.cpp (97848 => 97849)


--- trunk/Source/WebCore/css/MediaList.cpp	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/css/MediaList.cpp	2011-10-19 12:11:40 UTC (rev 97849)
@@ -57,15 +57,15 @@
  * throw SYNTAX_ERR exception.
  */
 
-MediaList::MediaList(CSSStyleSheet* parentSheet, bool fallbackToDescriptor)
-    : StyleBase(parentSheet)
-    , m_fallback(fallbackToDescriptor)
+MediaList::MediaList(CSSStyleSheet* parentStyleSheet, bool fallbackToDescriptor)
+    : m_fallback(fallbackToDescriptor)
+    , m_parentStyleSheet(parentStyleSheet)
 {
 }
 
-MediaList::MediaList(CSSStyleSheet* parentSheet, const String& media, bool fallbackToDescriptor)
-    : StyleBase(parentSheet)
-    , m_fallback(fallbackToDescriptor)
+MediaList::MediaList(CSSStyleSheet* parentStyleSheet, const String& media, bool fallbackToDescriptor)
+    : m_fallback(fallbackToDescriptor)
+    , m_parentStyleSheet(parentStyleSheet)
 {
     ExceptionCode ec = 0;
     setMediaText(media, ec);
@@ -82,8 +82,8 @@
 }
 
 MediaList::MediaList(CSSImportRule* parentRule, const String& media)
-    : StyleBase(parentRule)
-    , m_fallback(false)
+    : m_fallback(false)
+    , m_parentStyleSheet(parentRule->parentStyleSheet())
 {
     ExceptionCode ec = 0;
     setMediaText(media, ec);
@@ -248,10 +248,10 @@
 
 void MediaList::notifyChanged()
 {
-    for (StyleBase* p = parent(); p; p = p->parent()) {
-        if (p->isCSSStyleSheet())
-            return static_cast<CSSStyleSheet*>(p)->styleSheetChanged();
-    }
+    if (!m_parentStyleSheet)
+        return;
+
+    m_parentStyleSheet->styleSheetChanged();
 }
 
 }

Modified: trunk/Source/WebCore/css/MediaList.h (97848 => 97849)


--- trunk/Source/WebCore/css/MediaList.h	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/css/MediaList.h	2011-10-19 12:11:40 UTC (rev 97849)
@@ -21,20 +21,21 @@
 #ifndef MediaList_h
 #define MediaList_h
 
-#include "StyleBase.h"
 #include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
 class CSSImportRule;
+class CSSRule;
 class CSSStyleSheet;
 class MediaQuery;
 
 typedef int ExceptionCode;
 
-class MediaList : public StyleBase {
+class MediaList : public RefCounted<MediaList> {
 public:
     static PassRefPtr<MediaList> create()
     {
@@ -76,6 +77,14 @@
     void appendMediaQuery(PassOwnPtr<MediaQuery>);
     const Vector<MediaQuery*>& mediaQueries() const { return m_queries; }
 
+    CSSStyleSheet* parentStyleSheet() const { return m_parentStyleSheet; }
+    void setParentStyleSheet(CSSStyleSheet* styleSheet)
+    {
+        // MediaList should never be moved between style sheets.
+        ASSERT(styleSheet == m_parentStyleSheet || !m_parentStyleSheet || !styleSheet);
+        m_parentStyleSheet = styleSheet;
+    }
+
 private:
     MediaList(CSSStyleSheet* parentSheet, bool fallbackToDescription);
     MediaList(CSSStyleSheet* parentSheet, const String& media, bool fallbackToDescription);
@@ -83,8 +92,10 @@
 
     void notifyChanged();
 
+    bool m_fallback; // true if failed media query parsing should fallback to media description parsing.
+
+    CSSStyleSheet* m_parentStyleSheet;
     Vector<MediaQuery*> m_queries;
-    bool m_fallback; // true if failed media query parsing should fallback to media description parsing
 };
 
 } // namespace

Modified: trunk/Source/WebCore/css/StyleSheet.cpp (97848 => 97849)


--- trunk/Source/WebCore/css/StyleSheet.cpp	2011-10-19 12:02:18 UTC (rev 97848)
+++ trunk/Source/WebCore/css/StyleSheet.cpp	2011-10-19 12:11:40 UTC (rev 97849)
@@ -20,6 +20,7 @@
 #include "config.h"
 #include "StyleSheet.h"
 
+#include "CSSStyleSheet.h"
 #include "MediaList.h"
 #include "Node.h"
 
@@ -55,7 +56,7 @@
 StyleSheet::~StyleSheet()
 {
     if (m_media)
-        m_media->setParent(0);
+        m_media->setParentStyleSheet(0);
 }
 
 StyleSheet* StyleSheet::parentStyleSheet() const
@@ -65,11 +66,14 @@
 
 void StyleSheet::setMedia(PassRefPtr<MediaList> media)
 {
+    ASSERT(isCSSStyleSheet());
+    ASSERT(!media->parentStyleSheet() || media->parentStyleSheet() == this);
+
     if (m_media)
-        m_media->setParent(0);
+        m_media->setParentStyleSheet(0);
 
     m_media = media;
-    m_media->setParent(this);
+    m_media->setParentStyleSheet(static_cast<CSSStyleSheet*>(this));
 }
 
 KURL StyleSheet::completeURL(const String& url) const
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to