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

Unified Diff: chrome/browser/android/data_usage/external_data_use_observer_unittest.cc

Issue 1447363006: ExternalDataUseObserver matches package names (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed invalid DCHECK Created 5 years, 1 month 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
« no previous file with comments | « chrome/browser/android/data_usage/external_data_use_observer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
diff --git a/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc b/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
index 844a260c157414011a22f05685855a29788c2e2f..36d58732381681f175e7e798f6e92abc3d83dabd 100644
--- a/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
+++ b/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
@@ -106,6 +106,7 @@ TEST_F(ExternalDataUseObserverTest, SingleRegex) {
std::string label("test");
for (size_t i = 0; i < arraysize(tests); ++i) {
external_data_use_observer()->RegisterURLRegexes(
+ // App package name not specified in the matching rule.
std::vector<std::string>(1, std::string()),
std::vector<std::string>(1, tests[i].regex),
std::vector<std::string>(1, "label"));
@@ -119,6 +120,14 @@ TEST_F(ExternalDataUseObserverTest, SingleRegex) {
expected_label = "label";
EXPECT_EQ(expected_label, label);
+ EXPECT_FALSE(external_data_use_observer()->MatchesAppPackageName(
+ "com.example.helloworld", &label))
+ << i;
+ // Empty package name should not match against empty package name in the
+ // matching rule.
+ EXPECT_FALSE(external_data_use_observer()->MatchesAppPackageName(
+ std::string(), &label))
+ << i;
}
}
@@ -158,16 +167,25 @@ TEST_F(ExternalDataUseObserverTest, TwoRegex) {
{"https://www.google.com", "http://www.google.com", "", false},
};
- std::string label;
+ std::string got_label;
for (size_t i = 0; i < arraysize(tests); ++i) {
std::vector<std::string> url_regexes;
url_regexes.push_back(tests[i].regex1 + "|" + tests[i].regex2);
+ const std::string label("label");
external_data_use_observer()->RegisterURLRegexes(
- std::vector<std::string>(url_regexes.size(), std::string()),
- url_regexes, std::vector<std::string>(url_regexes.size(), "label"));
- EXPECT_EQ(tests[i].expect_match,
- external_data_use_observer()->Matches(GURL(tests[i].url), &label))
+ std::vector<std::string>(url_regexes.size(), "com.example.helloworld"),
+ url_regexes, std::vector<std::string>(url_regexes.size(), label));
+ EXPECT_EQ(tests[i].expect_match, external_data_use_observer()->Matches(
+ GURL(tests[i].url), &got_label))
<< i;
+ const std::string expected_label =
+ tests[i].expect_match ? label : std::string();
+ EXPECT_EQ(got_label, expected_label);
+
+ EXPECT_TRUE(external_data_use_observer()->MatchesAppPackageName(
+ "com.example.helloworld", &got_label))
+ << i;
+ EXPECT_EQ(label, got_label);
}
}
@@ -466,7 +484,8 @@ TEST_F(ExternalDataUseObserverTest, TimestampsMergedCorrectly) {
->second.end_time.ToJavaTime());
}
-// Tests the behavior when multiple matching rules are available.
+// Tests the behavior when multiple matching rules are available for URL and
+// package name matching.
TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) {
std::vector<std::string> url_regexes;
url_regexes.push_back(
@@ -480,9 +499,14 @@ TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) {
labels.push_back(label_foo);
labels.push_back(label_bar);
+ std::vector<std::string> app_package_names;
+ const std::string app_foo("com.example.foo");
+ const std::string app_bar("com.example.bar");
+ app_package_names.push_back(app_foo);
+ app_package_names.push_back(app_bar);
+
external_data_use_observer()->FetchMatchingRulesDoneOnIOThread(
- std::vector<std::string>(url_regexes.size(), std::string()), url_regexes,
- labels);
+ app_package_names, url_regexes, labels);
EXPECT_EQ(0U, external_data_use_observer()->buffered_data_reports_.size());
EXPECT_FALSE(external_data_use_observer()->submit_data_report_pending_);
EXPECT_FALSE(external_data_use_observer()->matching_rules_fetch_pending_);
@@ -526,6 +550,26 @@ TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) {
EXPECT_EQ(label_bar, it.first.label);
EXPECT_EQ("mccmnc", it.first.mcc_mnc);
}
+
+ // Test if labels are matched properly for app package names.
+ std::string got_label;
+ EXPECT_TRUE(
+ external_data_use_observer()->MatchesAppPackageName(app_foo, &got_label));
+ EXPECT_EQ(label_foo, got_label);
+
+ got_label = "";
+ EXPECT_TRUE(
+ external_data_use_observer()->MatchesAppPackageName(app_bar, &got_label));
+ EXPECT_EQ(label_bar, got_label);
+
+ got_label = "";
+ EXPECT_FALSE(external_data_use_observer()->MatchesAppPackageName(
+ "com.example.unmatched", &got_label));
+ EXPECT_EQ(std::string(), got_label);
+
+ EXPECT_FALSE(external_data_use_observer()->MatchesAppPackageName(
+ std::string(), &got_label));
+ EXPECT_EQ(std::string(), got_label);
}
// Tests that hash function reports distinct values. This test may fail if there
« no previous file with comments | « chrome/browser/android/data_usage/external_data_use_observer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698