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

Unified Diff: chrome/browser/android/datausage/external_data_use_observer_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: assert added 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
« no previous file with comments | « chrome/browser/android/datausage/external_data_use_observer.cc ('k') | chrome/browser/io_thread.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/browser/android/datausage/external_data_use_observer.cc ('k') | chrome/browser/io_thread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698