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

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: Rebase and revert member to persistent in StorageEvent 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..d0698cef119c8a313756f548010ba4af84ba036b 100644
--- a/Source/core/css/MediaList.cpp
+++ b/Source/core/css/MediaList.cpp
@@ -57,8 +57,7 @@ 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 +67,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 +78,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 +88,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 +114,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 +138,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,10 +158,19 @@ 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> > >).
+ // 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)
- , m_parentRule(0)
+ , m_parentRule(nullptr)
{
}
@@ -189,7 +197,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 +236,12 @@ void MediaList::reattach(MediaQuerySet* mediaQueries)
m_mediaQueries = mediaQueries;
}
+void MediaList::trace(Visitor* visitor)
+{
+ visitor->trace(m_mediaQueries);
+ visitor->trace(m_parentRule);
+}
+
static void addResolutionWarningMessageToConsole(Document* document, const String& serializedExpression, const CSSPrimitiveValue* value)
{
ASSERT(document);
@@ -264,7 +278,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)
@@ -275,7 +289,7 @@ void reportMediaQueryWarningIfNeeded(Document* document, const MediaQuerySet* me
if (equalIgnoringCase(query->mediaType(), "print"))
continue;
- const ExpressionVector& expressions = query->expressions();
+ const ExpressionHeapVector& expressions = query->expressions();
for (size_t j = 0; j < expressions.size(); ++j) {
const MediaQueryExp* expression = expressions.at(j).get();
if (isResolutionMediaFeature(expression->mediaFeature())) {

Powered by Google App Engine
This is Rietveld 408576698