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

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

Issue 2837023005: Move MediaQuery classes off BlinkGC heap (Closed)
Patch Set: fix Created 3 years, 8 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: third_party/WebKit/Source/core/css/MediaList.cpp
diff --git a/third_party/WebKit/Source/core/css/MediaList.cpp b/third_party/WebKit/Source/core/css/MediaList.cpp
index ee1d1464db63c8864269332977cda2288352e6be..4624db917c5335ea07f1c61387e00caa94680181 100644
--- a/third_party/WebKit/Source/core/css/MediaList.cpp
+++ b/third_party/WebKit/Source/core/css/MediaList.cpp
@@ -22,7 +22,6 @@
#include <memory>
#include "bindings/core/v8/ExceptionState.h"
#include "core/css/CSSStyleSheet.h"
-#include "core/css/MediaQuery.h"
#include "core/css/MediaQueryExp.h"
#include "core/css/parser/MediaQueryParser.h"
#include "platform/wtf/text/StringBuilder.h"
@@ -58,7 +57,7 @@ MediaQuerySet::MediaQuerySet(const MediaQuerySet& o)
queries_[i] = o.queries_[i]->Copy();
}
-MediaQuerySet* MediaQuerySet::Create(const String& media_string) {
+PassRefPtr<MediaQuerySet> MediaQuerySet::Create(const String& media_string) {
if (media_string.IsEmpty())
return MediaQuerySet::Create();
@@ -66,7 +65,7 @@ MediaQuerySet* MediaQuerySet::Create(const String& media_string) {
}
bool MediaQuerySet::Set(const String& media_string) {
- MediaQuerySet* result = Create(media_string);
+ RefPtr<MediaQuerySet> result = Create(media_string);
// TODO(keishi) Changed DCHECK to CHECK for crbug.com/699269 diagnosis
for (const auto& query : result->queries_) {
CHECK(query);
@@ -79,25 +78,25 @@ bool MediaQuerySet::Add(const String& query_string) {
// 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.
- MediaQuerySet* result = Create(query_string);
+ RefPtr<MediaQuerySet> result = Create(query_string);
// Only continue if exactly one media query is found, as described above.
if (result->queries_.size() != 1)
return true;
- MediaQuery* new_query = result->queries_[0].Release();
+ std::unique_ptr<MediaQuery> new_query = std::move(result->queries_[0]);
// TODO(keishi) Changed DCHECK to CHECK for crbug.com/699269 diagnosis
CHECK(new_query);
// If comparing with any of the media queries in the collection of media
// queries returns true terminate these steps.
for (size_t i = 0; i < queries_.size(); ++i) {
- MediaQuery* query = queries_[i].Get();
- if (*query == *new_query)
+ MediaQuery& query = *queries_[i];
+ if (query == *new_query)
return true;
}
- queries_.push_back(new_query);
+ queries_.push_back(std::move(new_query));
return true;
}
@@ -105,13 +104,13 @@ bool MediaQuerySet::Remove(const String& query_string_to_remove) {
// 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.
- MediaQuerySet* result = Create(query_string_to_remove);
+ RefPtr<MediaQuerySet> result = Create(query_string_to_remove);
// Only continue if exactly one media query is found, as described above.
if (result->queries_.size() != 1)
return true;
- MediaQuery* new_query = result->queries_[0].Release();
+ std::unique_ptr<MediaQuery> new_query = std::move(result->queries_[0]);
// TODO(keishi) Changed DCHECK to CHECK for crbug.com/699269 diagnosis
CHECK(new_query);
@@ -119,8 +118,8 @@ bool MediaQuerySet::Remove(const String& query_string_to_remove) {
// comparing with the media query returns true.
bool found = false;
for (size_t i = 0; i < queries_.size(); ++i) {
- MediaQuery* query = queries_[i].Get();
- if (*query == *new_query) {
+ MediaQuery& query = *queries_[i];
+ if (query == *new_query) {
queries_.erase(i);
--i;
found = true;
@@ -130,10 +129,10 @@ bool MediaQuerySet::Remove(const String& query_string_to_remove) {
return found;
}
-void MediaQuerySet::AddMediaQuery(MediaQuery* media_query) {
+void MediaQuerySet::AddMediaQuery(std::unique_ptr<MediaQuery> media_query) {
// TODO(keishi) Changed DCHECK to CHECK for crbug.com/699269 diagnosis
CHECK(media_query);
- queries_.push_back(media_query);
+ queries_.push_back(std::move(media_query));
}
String MediaQuerySet::MediaText() const {
@@ -150,16 +149,13 @@ String MediaQuerySet::MediaText() const {
return text.ToString();
}
-DEFINE_TRACE(MediaQuerySet) {
- visitor->Trace(queries_);
-}
-
-MediaList::MediaList(MediaQuerySet* media_queries, CSSStyleSheet* parent_sheet)
+MediaList::MediaList(RefPtr<MediaQuerySet> media_queries,
+ CSSStyleSheet* parent_sheet)
: media_queries_(media_queries),
parent_style_sheet_(parent_sheet),
parent_rule_(nullptr) {}
-MediaList::MediaList(MediaQuerySet* media_queries, CSSRule* parent_rule)
+MediaList::MediaList(RefPtr<MediaQuerySet> media_queries, CSSRule* parent_rule)
: media_queries_(media_queries),
parent_style_sheet_(nullptr),
parent_rule_(parent_rule) {}
@@ -174,7 +170,8 @@ void MediaList::setMediaText(const String& value) {
}
String MediaList::item(unsigned index) const {
- const HeapVector<Member<MediaQuery>>& queries = media_queries_->QueryVector();
+ const Vector<std::unique_ptr<MediaQuery>>& queries =
+ media_queries_->QueryVector();
if (index < queries.size())
return queries[index]->CssText();
return String();
@@ -210,7 +207,7 @@ void MediaList::appendMedium(const String& medium,
parent_style_sheet_->DidMutate();
}
-void MediaList::Reattach(MediaQuerySet* media_queries) {
+void MediaList::Reattach(RefPtr<MediaQuerySet> media_queries) {
// TODO(keishi) Changed DCHECK to CHECK for crbug.com/699269 diagnosis
CHECK(media_queries);
for (const auto& query : media_queries->QueryVector()) {
@@ -220,7 +217,6 @@ void MediaList::Reattach(MediaQuerySet* media_queries) {
}
DEFINE_TRACE(MediaList) {
- visitor->Trace(media_queries_);
visitor->Trace(parent_style_sheet_);
visitor->Trace(parent_rule_);
}

Powered by Google App Engine
This is Rietveld 408576698