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

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

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.h
diff --git a/components/arc/intent_helper/intent_filter.h b/components/arc/intent_helper/intent_filter.h
index eb07523432deb312d8cfc597ec493e4ef28a67e7..e6c447f5873520e49fd24d18134337ed6f7a4a2c 100644
--- a/components/arc/intent_helper/intent_filter.h
+++ b/components/arc/intent_helper/intent_filter.h
@@ -8,55 +8,90 @@
#include <string>
#include <vector>
-#include "components/arc/common/intent_helper.mojom.h"
+#include "base/macros.h"
class GURL;
namespace arc {
+namespace mojom {
+enum class PatternType;
+} // namespace mojom
+
// A chrome-side implementation of Android's IntentFilter class. This is used
// to approximate the intent filtering and determine whether a given URL is
// likely to be handled by any android-side apps, prior to making expensive IPC
// calls.
class IntentFilter {
public:
- explicit IntentFilter(const mojom::IntentFilterPtr& mojo_intent_filter);
- IntentFilter(const IntentFilter& other);
- ~IntentFilter();
-
- bool Match(const GURL& url) const;
-
- private:
// A helper class for handling matching of the host part of the URL.
class AuthorityEntry {
public:
- explicit AuthorityEntry(const mojom::AuthorityEntryPtr& entry);
+ AuthorityEntry();
+ AuthorityEntry(AuthorityEntry&& other);
+ AuthorityEntry(const std::string& host, int port);
+
+ AuthorityEntry& operator=(AuthorityEntry&& other);
+
bool Match(const GURL& url) const;
+ const std::string& host() const { return host_; }
+ int port() const { return port_; }
+
private:
std::string host_;
bool wild_;
int port_;
+
+ DISALLOW_COPY_AND_ASSIGN(AuthorityEntry);
};
// A helper class for handling matching of various patterns in the URL.
class PatternMatcher {
public:
- explicit PatternMatcher(const mojom::PatternMatcherPtr& pattern);
+ PatternMatcher();
+ PatternMatcher(PatternMatcher&& other);
+ PatternMatcher(const std::string& pattern, mojom::PatternType match_type);
+
+ PatternMatcher& operator=(PatternMatcher&& other);
+
bool Match(const std::string& match) const;
+ const std::string& pattern() const { return pattern_; }
+ mojom::PatternType match_type() const { return match_type_; }
+
private:
bool MatchGlob(const std::string& match) const;
std::string pattern_;
mojom::PatternType match_type_;
+
+ DISALLOW_COPY_AND_ASSIGN(PatternMatcher);
};
+ IntentFilter();
+ IntentFilter(IntentFilter&& other);
+ IntentFilter(std::vector<AuthorityEntry> authorities,
+ std::vector<PatternMatcher> paths);
+ ~IntentFilter();
+
+ IntentFilter& operator=(IntentFilter&& other);
+
+ bool Match(const GURL& url) const;
+
+ const std::vector<AuthorityEntry>& authorities() const {
+ return authorities_;
+ }
+ const std::vector<PatternMatcher>& paths() const { return paths_; }
+
+ private:
bool MatchDataAuthority(const GURL& url) const;
bool HasDataPath(const GURL& url) const;
std::vector<AuthorityEntry> authorities_;
std::vector<PatternMatcher> paths_;
+
+ DISALLOW_COPY_AND_ASSIGN(IntentFilter);
};
} // namespace arc
« no previous file with comments | « components/arc/intent_helper/arc_intent_helper_bridge_unittest.cc ('k') | components/arc/intent_helper/intent_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698