Chromium Code Reviews| 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) |