| Index: chrome/browser/android/datausage/external_data_use_observer_unittest.cc
|
| diff --git a/chrome/browser/android/datausage/external_data_use_observer_unittest.cc b/chrome/browser/android/datausage/external_data_use_observer_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..090475505518a72ce273f1d5a800d40474809745
|
| --- /dev/null
|
| +++ b/chrome/browser/android/datausage/external_data_use_observer_unittest.cc
|
| @@ -0,0 +1,197 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/android/datausage/external_data_use_observer.h"
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "components/data_usage/core/data_use.h"
|
| +#include "components/data_usage/core/data_use_aggregator.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace chrome {
|
| +
|
| +namespace android {
|
| +
|
| +TEST(ExternalDataUseObserverTest, SingleRegex) {
|
| + scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
|
| + new data_usage::DataUseAggregator());
|
| + scoped_ptr<ExternalDataUseObserver> external_data_use_observer(
|
| + new ExternalDataUseObserver(data_use_aggregator.get()));
|
| +
|
| + const struct {
|
| + std::string url;
|
| + std::string regex;
|
| + bool expect_match;
|
| + } tests[] = {
|
| + {"http://www.google.com", "http://www.google.com/", true},
|
| + {"http://www.Google.com", "http://www.google.com/", true},
|
| + {"http://www.googleacom", "http://www.google.com/", true},
|
| + {"http://www.googleaacom", "http://www.google.com/", false},
|
| + {"http://www.google.com", "https://www.google.com/", false},
|
| + {"http://www.google.com", "{http|https}://www\\.google\\.com/search.*",
|
| + false},
|
| + {"https://www.google.com/search=test",
|
| + "https://www\\.google\\.com/search.*", true},
|
| + {"https://www.googleacom/search=test",
|
| + "https://www\\.google\\.com/search.*", false},
|
| + {"https://www.google.com/Search=test",
|
| + "https://www\\.google\\.com/search.*", true},
|
| + {"www.google.com", "http://www.google.com", false},
|
| + {"www.google.com:80", "http://www.google.com", false},
|
| + {"http://www.google.com:80", "http://www.google.com", false},
|
| + {"http://www.google.com:80/", "http://www.google.com/", true},
|
| + {"", "http://www.google.com", false},
|
| + {"", "", false},
|
| + {"https://www.google.com", "http://www.google.com", false},
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(tests); ++i) {
|
| + external_data_use_observer->RegisterURLRegexes(
|
| + std::vector<std::string>(1, tests[i].regex));
|
| + EXPECT_EQ(tests[i].expect_match,
|
| + external_data_use_observer->Matches(GURL(tests[i].url)))
|
| + << i;
|
| + }
|
| +}
|
| +
|
| +TEST(ExternalDataUseObserverTest, TwoRegex) {
|
| + scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
|
| + new data_usage::DataUseAggregator());
|
| + scoped_ptr<ExternalDataUseObserver> external_data_use_observer(
|
| + new ExternalDataUseObserver(data_use_aggregator.get()));
|
| +
|
| + const struct {
|
| + std::string url;
|
| + std::string regex1;
|
| + std::string regex2;
|
| + bool expect_match;
|
| + } tests[] = {
|
| + {"http://www.google.com", "http://www.google.com/",
|
| + "https://www.google.com/", true},
|
| + {"http://www.googleacom", "http://www.google.com/",
|
| + "http://www.google.com/", true},
|
| + {"https://www.google.com", "http://www.google.com/",
|
| + "https://www.google.com/", true},
|
| + {"https://www.googleacom", "http://www.google.com/",
|
| + "https://www.google.com/", true},
|
| + {"http://www.google.com", "{http|https}://www\\.google\\.com/search.*",
|
| + "", false},
|
| + {"http://www.google.com/search=test",
|
| + "http://www\\.google\\.com/search.*",
|
| + "https://www\\.google\\.com/search.*", true},
|
| + {"https://www.google.com/search=test",
|
| + "http://www\\.google\\.com/search.*",
|
| + "https://www\\.google\\.com/search.*", true},
|
| + {"http://google.com/search=test", "http://www\\.google\\.com/search.*",
|
| + "https://www\\.google\\.com/search.*", false},
|
| + {"https://www.googleacom/search=test", "",
|
| + "https://www\\.google\\.com/search.*", false},
|
| + {"https://www.google.com/Search=test", "",
|
| + "https://www\\.google\\.com/search.*", true},
|
| + {"www.google.com", "http://www.google.com", "", false},
|
| + {"www.google.com:80", "http://www.google.com", "", false},
|
| + {"http://www.google.com:80", "http://www.google.com", "", false},
|
| + {"", "http://www.google.com", "", false},
|
| + {"https://www.google.com", "http://www.google.com", "", false},
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(tests); ++i) {
|
| + std::vector<std::string> url_regexes;
|
| + url_regexes.push_back(tests[i].regex1);
|
| + url_regexes.push_back(tests[i].regex2);
|
| + external_data_use_observer->RegisterURLRegexes(url_regexes);
|
| + EXPECT_EQ(tests[i].expect_match,
|
| + external_data_use_observer->Matches(GURL(tests[i].url)))
|
| + << i;
|
| + }
|
| +}
|
| +
|
| +TEST(ExternalDataUseObserverTest, MultipleRegex) {
|
| + scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
|
| + new data_usage::DataUseAggregator());
|
| + scoped_ptr<ExternalDataUseObserver> external_data_use_observer(
|
| + new ExternalDataUseObserver(data_use_aggregator.get()));
|
| +
|
| + std::vector<std::string> url_regexes;
|
| + url_regexes.push_back("http://www\\.google\\.com/#q=.*");
|
| + url_regexes.push_back("https://www\\.google\\.com/#q=.*");
|
| + url_regexes.push_back("http://www\\.google\\.co\\.in/#q=.*");
|
| + url_regexes.push_back("https://www\\.google\\.co\\.in/#q=.*");
|
| + external_data_use_observer->RegisterURLRegexes(url_regexes);
|
| +
|
| + const struct {
|
| + std::string url;
|
| + bool expect_match;
|
| + } tests[] = {
|
| + {"", false},
|
| + {"http://www.google.com", false},
|
| + {"http://www.googleacom", false},
|
| + {"https://www.google.com", false},
|
| + {"https://www.googleacom", false},
|
| + {"http://www.google.com", false},
|
| + {"quic://www.google.com/q=test", false},
|
| + {"http://www.google.com/q=test", false},
|
| + {"http://www.google.com/.q=test", false},
|
| + {"http://www.google.com/#q=test", true},
|
| + {"https://www.google.com/#q=test", true},
|
| + {"http://www.google.co.in/#q=test", true},
|
| + {"https://www.google.co.in/#q=test", true},
|
| + {"http://www.google.co.br/#q=test", false},
|
| + {"http://google.com/#q=test", false},
|
| + {"https://www.googleacom/#q=test", false},
|
| + {"https://www.google.com/#Q=test", true}, // case in-sensitive
|
| + {"www.google.com/#q=test", false},
|
| + {"www.google.com:80/#q=test", false},
|
| + {"http://www.google.com:80/#q=test", true},
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(tests); ++i) {
|
| + EXPECT_EQ(tests[i].expect_match,
|
| + external_data_use_observer->Matches(GURL(tests[i].url)))
|
| + << i << tests[i].url;
|
| + }
|
| +}
|
| +
|
| +TEST(ExternalDataUseObserverTest, ChangeRegex) {
|
| + scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
|
| + new data_usage::DataUseAggregator());
|
| + scoped_ptr<ExternalDataUseObserver> external_data_use_observer(
|
| + new ExternalDataUseObserver(data_use_aggregator.get()));
|
| +
|
| + // When no regex is specified, the URL match should fail.
|
| + EXPECT_FALSE(external_data_use_observer->Matches(GURL("")));
|
| + EXPECT_FALSE(
|
| + external_data_use_observer->Matches(GURL("http://www.google.com")));
|
| +
|
| + std::vector<std::string> url_regexes;
|
| + url_regexes.push_back("http://www\\.google\\.com/#q=.*");
|
| + url_regexes.push_back("https://www\\.google\\.com/#q=.*");
|
| + external_data_use_observer->RegisterURLRegexes(url_regexes);
|
| +
|
| + EXPECT_FALSE(external_data_use_observer->Matches(GURL("")));
|
| + EXPECT_TRUE(
|
| + external_data_use_observer->Matches(GURL("http://www.google.com#q=abc")));
|
| + EXPECT_FALSE(external_data_use_observer->Matches(
|
| + GURL("http://www.google.co.in#q=abc")));
|
| +
|
| + // Change the regular expressions to verify that the new regexes replace
|
| + // the ones specified before.
|
| + url_regexes.clear();
|
| + url_regexes.push_back("http://www\\.google\\.co\\.in/#q=.*");
|
| + url_regexes.push_back("https://www\\.google\\.co\\.in/#q=.*");
|
| + external_data_use_observer->RegisterURLRegexes(url_regexes);
|
| + EXPECT_FALSE(external_data_use_observer->Matches(GURL("")));
|
| + EXPECT_FALSE(
|
| + external_data_use_observer->Matches(GURL("http://www.google.com#q=abc")));
|
| + EXPECT_TRUE(external_data_use_observer->Matches(
|
| + GURL("http://www.google.co.in#q=abc")));
|
| +}
|
| +
|
| +} // namespace android
|
| +
|
| +} // namespace chrome
|
|
|