| 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
|
|
|