Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(544)

Unified Diff: Source/core/css/MediaList.cpp

Issue 170283019: Change various helper classes to transition types to get CSSValue entirely onto the gc heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698