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

Unified Diff: components/arc/intent_helper/intent_filter.cc

Issue 2556463003: Use mojo typemaps to simplify arc::IntentFilter::IntentFilter() (reland) (Closed)
Patch Set: Rebased Created 4 years 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: components/arc/intent_helper/intent_filter.cc
diff --git a/components/arc/intent_helper/intent_filter.cc b/components/arc/intent_helper/intent_filter.cc
index de104aeccb3a48dca94cc78be020d330f4fb0199..85f30b4f204165a6136f372d8d0e015ded071c0e 100644
--- a/components/arc/intent_helper/intent_filter.cc
+++ b/components/arc/intent_helper/intent_filter.cc
@@ -6,31 +6,27 @@
#include "base/compiler_specific.h"
#include "base/strings/string_util.h"
+#include "components/arc/common/intent_helper.mojom.h"
#include "url/gurl.h"
namespace arc {
-IntentFilter::IntentFilter(const mojom::IntentFilterPtr& mojo_intent_filter) {
- // TODO(yusukes): Use mojo typemaps to simplify the constructor.
- if (mojo_intent_filter->data_authorities.has_value()) {
- for (const mojom::AuthorityEntryPtr& authorityptr :
- *mojo_intent_filter->data_authorities) {
- authorities_.emplace_back(authorityptr);
- }
- }
+IntentFilter::IntentFilter() = default;
+IntentFilter::IntentFilter(IntentFilter&& other) = default;
+
+IntentFilter::IntentFilter(
+ std::vector<IntentFilter::AuthorityEntry> authorities,
+ std::vector<IntentFilter::PatternMatcher> paths)
+ : authorities_(std::move(authorities)) {
// In order to register a path we need to have at least one authority.
- if (!authorities_.empty() && mojo_intent_filter->data_paths.has_value()) {
- for (const mojom::PatternMatcherPtr& pattern :
- *mojo_intent_filter->data_paths) {
- paths_.emplace_back(pattern);
- }
- }
+ if (!authorities_.empty())
+ paths_ = std::move(paths);
}
-IntentFilter::IntentFilter(const IntentFilter& other) = default;
-
IntentFilter::~IntentFilter() = default;
+IntentFilter& IntentFilter::operator=(IntentFilter&& other) = default;
+
// Logically, this maps to IntentFilter#match, but this code only deals with
// view intents for http/https URLs and so it really only implements the
// #matchData part of the match code.
@@ -73,9 +69,15 @@ bool IntentFilter::MatchDataAuthority(const GURL& url) const {
return false;
}
+IntentFilter::AuthorityEntry::AuthorityEntry() = default;
IntentFilter::AuthorityEntry::AuthorityEntry(
- const mojom::AuthorityEntryPtr& entry)
- : host_(entry->host), port_(entry->port) {
+ IntentFilter::AuthorityEntry&& other) = default;
+
+IntentFilter::AuthorityEntry& IntentFilter::AuthorityEntry::operator=(
+ IntentFilter::AuthorityEntry&& other) = default;
+
+IntentFilter::AuthorityEntry::AuthorityEntry(const std::string& host, int port)
+ : host_(host), port_(port) {
// Wildcards are only allowed at the front of the host string.
wild_ = !host_.empty() && host_[0] == '*';
if (wild_) {
@@ -118,9 +120,16 @@ bool IntentFilter::AuthorityEntry::Match(const GURL& url) const {
}
}
+IntentFilter::PatternMatcher::PatternMatcher() = default;
IntentFilter::PatternMatcher::PatternMatcher(
- const mojom::PatternMatcherPtr& pattern)
- : pattern_(pattern->pattern), match_type_(pattern->type) {}
+ IntentFilter::PatternMatcher&& other) = default;
+
+IntentFilter::PatternMatcher::PatternMatcher(const std::string& pattern,
+ mojom::PatternType match_type)
+ : pattern_(pattern), match_type_(match_type) {}
+
+IntentFilter::PatternMatcher& IntentFilter::PatternMatcher::operator=(
+ IntentFilter::PatternMatcher&& other) = default;
// Transcribed from android's PatternMatcher#matchPattern.
bool IntentFilter::PatternMatcher::Match(const std::string& str) const {
« no previous file with comments | « components/arc/intent_helper/intent_filter.h ('k') | components/arc/intent_helper/intent_filter_struct_traits.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698