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

Unified Diff: chrome/browser/android/datausage/external_data_use_observer_android_unittest.cc

Issue 1393073002: Add external data use observer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@datause_accounting_scliitle_cl_do_not_edit_2
Patch Set: More tests Created 5 years, 2 months 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: chrome/browser/android/datausage/external_data_use_observer_android_unittest.cc
diff --git a/chrome/browser/android/datausage/external_data_use_observer_android_unittest.cc b/chrome/browser/android/datausage/external_data_use_observer_android_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cb2d4630bad7f799c21de279e9573b1276a92f13
--- /dev/null
+++ b/chrome/browser/android/datausage/external_data_use_observer_android_unittest.cc
@@ -0,0 +1,194 @@
+// 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_android.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(ExternalDataUseObserverAndroidTest, SingleRegex) {
+ scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
+ new data_usage::DataUseAggregator());
+ scoped_ptr<ExternalDataUseObserverAndroid> external_data_use_observer_android(
+ new ExternalDataUseObserverAndroid(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_android->RegisterURLRegexes(
+ std::vector<std::string>(1, tests[i].regex));
+ EXPECT_EQ(tests[i].expect_match,
+ external_data_use_observer_android->Matches(GURL(tests[i].url)))
+ << i;
+ }
+}
+
+TEST(ExternalDataUseObserverAndroidTest, TwoRegex) {
+ scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
+ new data_usage::DataUseAggregator());
+ scoped_ptr<ExternalDataUseObserverAndroid> external_data_use_observer_android(
+ new ExternalDataUseObserverAndroid(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_android->RegisterURLRegexes(url_regexes);
+ EXPECT_EQ(tests[i].expect_match,
+ external_data_use_observer_android->Matches(GURL(tests[i].url)))
+ << i;
+ }
+}
+
+TEST(ExternalDataUseObserverAndroidTest, MultipleRegex) {
+ scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
+ new data_usage::DataUseAggregator());
+ scoped_ptr<ExternalDataUseObserverAndroid> external_data_use_observer_android(
+ new ExternalDataUseObserverAndroid(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_android->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_android->Matches(GURL(tests[i].url)))
+ << i << tests[i].url;
+ }
+}
+
+TEST(ExternalDataUseObserverAndroidTest, ChangeRegex) {
+ scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator(
+ new data_usage::DataUseAggregator());
+ scoped_ptr<ExternalDataUseObserverAndroid> external_data_use_observer_android(
+ new ExternalDataUseObserverAndroid(data_use_aggregator.get()));
+
+ EXPECT_FALSE(external_data_use_observer_android->Matches(GURL("")));
+ EXPECT_FALSE(external_data_use_observer_android->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_android->RegisterURLRegexes(url_regexes);
+
+ EXPECT_FALSE(external_data_use_observer_android->Matches(GURL("")));
+ EXPECT_TRUE(external_data_use_observer_android->Matches(
+ GURL("http://www.google.com#q=abc")));
+ EXPECT_FALSE(external_data_use_observer_android->Matches(
+ GURL("http://www.google.co.in#q=abc")));
+
+ 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_android->RegisterURLRegexes(url_regexes);
+ EXPECT_FALSE(external_data_use_observer_android->Matches(GURL("")));
+ EXPECT_FALSE(external_data_use_observer_android->Matches(
+ GURL("http://www.google.com#q=abc")));
+ EXPECT_TRUE(external_data_use_observer_android->Matches(
+ GURL("http://www.google.co.in#q=abc")));
+}
+
+} // namespace android
+
+} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698