Index: chrome/browser/garbled_text_url_tracker_unittest.cc |
diff --git a/chrome/browser/garbled_text_url_tracker_unittest.cc b/chrome/browser/garbled_text_url_tracker_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e0be762bf68087a63734ae222c601618ca6fcd44 |
--- /dev/null |
+++ b/chrome/browser/garbled_text_url_tracker_unittest.cc |
@@ -0,0 +1,106 @@ |
+// Copyright (c) 2012 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 "base/memory/scoped_ptr.h" |
+#include "chrome/browser/garbled_text_url_tracker.h" |
+#include "chrome/browser/prefs/pref_service.h" |
+#include "chrome/common/pref_names.h" |
+#include "chrome/test/base/testing_profile.h" |
+#include "googleurl/src/gurl.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+class GarbledTextURLTrackerTest : public testing::Test { |
+ public: |
+ typedef GarbledTextURLTracker::Blacklist Blacklist; |
+ typedef GarbledTextURLTracker::GarbledURLs GarbledURLs; |
+ GarbledTextURLTrackerTest() {} |
+ |
+ protected: |
+ virtual void SetUp() OVERRIDE { |
+ enabled_.Init(prefs::kEnableAutoGarbledTextFix, |
+ profile_.GetPrefs(), NULL); |
+ } |
+ |
+ virtual void TearDown() OVERRIDE { |
+ } |
+ |
+ const BooleanPrefMember& enabled() { |
+ return enabled_; |
+ } |
+ |
+ void set_enabled(bool enabled) { |
+ enabled_.SetValue(enabled); |
+ } |
+ |
+ private: |
+ TestingProfile profile_; |
+ BooleanPrefMember enabled_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(GarbledTextURLTrackerTest); |
+}; |
+ |
+TEST_F(GarbledTextURLTrackerTest, QueryAndAddTest) { |
+ std::string kBlacklist[] = { |
+ "foo.example.com", |
+ "bar.example.com", |
+ "baz.example.com", |
+ }; |
+ GarbledTextURLTracker tracker( |
+ enabled(), |
+ Blacklist(kBlacklist, kBlacklist + arraysize(kBlacklist))); |
+ |
+ EXPECT_TRUE(tracker.NeedsEncodingDetection( |
+ GURL("https://foo.example.com/apple/banana/cherry.csv"))); |
+ EXPECT_FALSE(tracker.NeedsEncodingDetection( |
+ GURL("ftp://fizz.example.com/cat/dog.png"))); |
+ |
+ GURL kGarbledURLs[] = { |
+ GURL("http://fizz.example.com/hoge/fuga/piyo.html"), |
+ GURL("file://buzz.example.com/fuga.txt"), |
+ GURL("http://fizz.example.com/piyo.css"), |
+ }; |
+ Blacklist delta; |
+ tracker.UpdateBlacklist( |
+ GarbledURLs(kGarbledURLs, kGarbledURLs + arraysize(kGarbledURLs)), |
+ &delta); |
+ EXPECT_EQ(2u, delta.size()); |
+ EXPECT_TRUE(delta.find("fizz.example.com") != delta.end()); |
+ EXPECT_TRUE(delta.find("buzz.example.com") != delta.end()); |
+ |
+ EXPECT_TRUE(tracker.NeedsEncodingDetection( |
+ GURL("gopher://fizz.example.com/pakeratta.dat"))); |
+ EXPECT_FALSE(tracker.NeedsEncodingDetection( |
+ GURL("wss://puyo.example.com/fire/ice.xml"))); |
+} |
+ |
+TEST_F(GarbledTextURLTrackerTest, DisablingTest) { |
+ std::string kBlacklist[] = { |
+ "coffee.example.com", |
+ "tea.example.com", |
+ }; |
+ GarbledTextURLTracker tracker( |
+ enabled(), |
+ Blacklist(kBlacklist, kBlacklist + arraysize(kBlacklist))); |
+ |
+ set_enabled(false); |
+ EXPECT_FALSE(tracker.NeedsEncodingDetection( |
+ GURL("http://coffee.example.com/cup.txt"))); |
+ EXPECT_FALSE(tracker.NeedsEncodingDetection( |
+ GURL("http://vodka.example.com/barrel.bat"))); |
+ |
+ GURL kGarbledURLs[] = { |
+ GURL("http://tabasco.example.com/stein.tar"), |
+ }; |
+ Blacklist delta; |
+ tracker.UpdateBlacklist( |
+ GarbledURLs(kGarbledURLs, kGarbledURLs + arraysize(kGarbledURLs)), |
+ &delta); |
+ EXPECT_TRUE(delta.empty()); |
+ |
+ set_enabled(true); |
+ EXPECT_TRUE(tracker.NeedsEncodingDetection( |
+ GURL("http://coffee.example.com/milk.js"))); |
+ EXPECT_FALSE(tracker.NeedsEncodingDetection( |
+ GURL("http://tabasco.example.com/"))); |
+} |