Index: Source/core/css/MediaList.cpp |
diff --git a/Source/core/css/MediaList.cpp b/Source/core/css/MediaList.cpp |
index 11ae84b35d4a9b81b01b72d0a684dbc8633b60ca..bb67daa4d44474f6e91f3ca4faac58bd2a8db6bf 100644 |
--- a/Source/core/css/MediaList.cpp |
+++ b/Source/core/css/MediaList.cpp |
@@ -52,13 +52,15 @@ namespace WebCore { |
* CSS 3 Media Queries Spec (http://www.w3.org/TR/css3-mediaqueries/) |
*/ |
+DEFINE_GC_INFO(MediaQuerySet); |
+DEFINE_GC_INFO(MediaList); |
+ |
MediaQuerySet::MediaQuerySet() |
{ |
} |
MediaQuerySet::MediaQuerySet(const MediaQuerySet& o) |
- : RefCounted<MediaQuerySet>() |
- , m_queries(o.m_queries.size()) |
+ : m_queries(o.m_queries.size()) |
{ |
for (unsigned i = 0; i < m_queries.size(); ++i) |
m_queries[i] = o.m_queries[i]->copy(); |
@@ -68,7 +70,7 @@ MediaQuerySet::~MediaQuerySet() |
{ |
} |
-PassRefPtr<MediaQuerySet> MediaQuerySet::create(const String& mediaString) |
+PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQuerySet::create(const String& mediaString) |
{ |
if (mediaString.isEmpty()) |
return MediaQuerySet::create(); |
@@ -79,7 +81,7 @@ PassRefPtr<MediaQuerySet> MediaQuerySet::create(const String& mediaString) |
bool MediaQuerySet::set(const String& mediaString) |
{ |
- RefPtr<MediaQuerySet> result = create(mediaString); |
+ RefPtrWillBeRawPtr<MediaQuerySet> result = create(mediaString); |
m_queries.swap(result->m_queries); |
return true; |
} |
@@ -89,13 +91,13 @@ bool MediaQuerySet::add(const String& queryString) |
// To "parse a media query" for a given string means to follow "the parse |
// a media query list" steps and return "null" if more than one media query |
// is returned, or else the returned media query. |
- RefPtr<MediaQuerySet> result = create(queryString); |
+ RefPtrWillBeRawPtr<MediaQuerySet> result = create(queryString); |
// Only continue if exactly one media query is found, as described above. |
if (result->m_queries.size() != 1) |
return true; |
- OwnPtr<MediaQuery> newQuery = result->m_queries[0].release(); |
+ OwnPtrWillBeRawPtr<MediaQuery> newQuery = result->m_queries[0].release(); |
ASSERT(newQuery); |
// If comparing with any of the media queries in the collection of media |
@@ -115,13 +117,13 @@ bool MediaQuerySet::remove(const String& queryStringToRemove) |
// To "parse a media query" for a given string means to follow "the parse |
// a media query list" steps and return "null" if more than one media query |
// is returned, or else the returned media query. |
- RefPtr<MediaQuerySet> result = create(queryStringToRemove); |
+ RefPtrWillBeRawPtr<MediaQuerySet> result = create(queryStringToRemove); |
// Only continue if exactly one media query is found, as described above. |
if (result->m_queries.size() != 1) |
return true; |
- OwnPtr<MediaQuery> newQuery = result->m_queries[0].release(); |
+ OwnPtrWillBeRawPtr<MediaQuery> newQuery = result->m_queries[0].release(); |
ASSERT(newQuery); |
// Remove any media query from the collection of media queries for which |
@@ -139,7 +141,7 @@ bool MediaQuerySet::remove(const String& queryStringToRemove) |
return found; |
} |
-void MediaQuerySet::addMediaQuery(PassOwnPtr<MediaQuery> mediaQuery) |
+void MediaQuerySet::addMediaQuery(PassOwnPtrWillBeRawPtr<MediaQuery> mediaQuery) |
{ |
m_queries.append(mediaQuery); |
} |
@@ -159,6 +161,15 @@ String MediaQuerySet::mediaText() const |
return text.toString(); |
} |
+void MediaQuerySet::trace(Visitor* visitor) |
+{ |
+ // We don't support tracing of vectors of OwnPtrs (ie. OwnPtr<Vector<OwnPtr<MediaQuery> > >). |
haraken
2014/02/21 01:02:36
OwnPtr<Vector<OwnPtr<MediaQuery> > > => Vector<Own
wibling-chromium
2014/02/21 08:43:08
We talked a bit about this locally. We could fix t
wibling-chromium
2014/02/25 12:07:28
I tried this above and both when calling visitor->
haraken
2014/02/25 12:09:57
Makes sense. Having #if in a couple of places in a
|
+ // Since this is a transitional object we are just ifdef'ing it out when oilpan is not enabled. |
+#if ENABLE(OILPAN) |
+ visitor->trace(m_queries); |
+#endif |
+} |
+ |
MediaList::MediaList(MediaQuerySet* mediaQueries, CSSStyleSheet* parentSheet) |
: m_mediaQueries(mediaQueries) |
, m_parentStyleSheet(parentSheet) |
@@ -189,7 +200,7 @@ void MediaList::setMediaText(const String& value) |
String MediaList::item(unsigned index) const |
{ |
- const Vector<OwnPtr<MediaQuery> >& queries = m_mediaQueries->queryVector(); |
+ const WillBeHeapVector<OwnPtrWillBeMember<MediaQuery> >& queries = m_mediaQueries->queryVector(); |
if (index < queries.size()) |
return queries[index]->cssText(); |
return String(); |
@@ -228,6 +239,11 @@ void MediaList::reattach(MediaQuerySet* mediaQueries) |
m_mediaQueries = mediaQueries; |
} |
+void MediaList::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_mediaQueries); |
+} |
+ |
static void addResolutionWarningMessageToConsole(Document* document, const String& serializedExpression, const CSSPrimitiveValue* value) |
{ |
ASSERT(document); |
@@ -264,7 +280,7 @@ void reportMediaQueryWarningIfNeeded(Document* document, const MediaQuerySet* me |
if (!mediaQuerySet || !document) |
return; |
- const Vector<OwnPtr<MediaQuery> >& mediaQueries = mediaQuerySet->queryVector(); |
+ const WillBeHeapVector<OwnPtrWillBeMember<MediaQuery> >& mediaQueries = mediaQuerySet->queryVector(); |
const size_t queryCount = mediaQueries.size(); |
if (!queryCount) |