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

Unified Diff: net/base/sdch_manager_unittest.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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 | « net/base/sdch_manager.cc ('k') | net/base/sdch_net_log_params.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/sdch_manager_unittest.cc
diff --git a/net/base/sdch_manager_unittest.cc b/net/base/sdch_manager_unittest.cc
deleted file mode 100644
index d2baa4b853092fe3e848e0e1e323a4c658f1eff0..0000000000000000000000000000000000000000
--- a/net/base/sdch_manager_unittest.cc
+++ /dev/null
@@ -1,708 +0,0 @@
-// Copyright 2014 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 <limits.h>
-
-#include <string>
-
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/stringprintf.h"
-#include "base/test/simple_test_clock.h"
-#include "net/base/net_log.h"
-#include "net/base/sdch_manager.h"
-#include "net/base/sdch_observer.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "url/gurl.h"
-
-namespace net {
-
-// Workaround for http://crbug.com/437794; remove when fixed.
-#if !defined(OS_IOS)
-
-//------------------------------------------------------------------------------
-// Provide sample data and compression results with a sample VCDIFF dictionary.
-// Note an SDCH dictionary has extra meta-data before the VCDIFF dictionary.
-static const char kTestVcdiffDictionary[] = "DictionaryFor"
- "SdchCompression1SdchCompression2SdchCompression3SdchCompression\n";
-
-//------------------------------------------------------------------------------
-
-class MockSdchObserver : public SdchObserver {
- public:
- MockSdchObserver()
- : dictionary_used_notifications_(0),
- get_dictionary_notifications_(0),
- clear_dictionaries_notifications_(0) {}
-
- std::string last_server_hash() const { return last_server_hash_; }
- int dictionary_used_notifications() const {
- return dictionary_used_notifications_;
- }
- const GURL& last_dictionary_request_url() const {
- return last_dictionary_request_url_;
- }
- const GURL& last_dictionary_url() const { return last_dictionary_url_; }
- int get_dictionary_notifications() const {
- return get_dictionary_notifications_;
- }
-
- int clear_dictionary_notifications() const {
- return clear_dictionaries_notifications_;
- }
-
- // SdchObserver implementation
- void OnDictionaryUsed(SdchManager* manager,
- const std::string& server_hash) override {
- last_server_hash_ = server_hash;
- ++dictionary_used_notifications_;
- }
-
- void OnGetDictionary(SdchManager* manager,
- const GURL& request_url,
- const GURL& dictionary_url) override {
- ++get_dictionary_notifications_;
- last_dictionary_request_url_ = request_url;
- last_dictionary_url_ = dictionary_url;
- }
- void OnClearDictionaries(SdchManager* manager) override {
- ++clear_dictionaries_notifications_;
- }
-
- private:
- int dictionary_used_notifications_;
- int get_dictionary_notifications_;
- int clear_dictionaries_notifications_;
-
- std::string last_server_hash_;
- GURL last_dictionary_request_url_;
- GURL last_dictionary_url_;
-
- DISALLOW_COPY_AND_ASSIGN(MockSdchObserver);
-};
-
-class SdchManagerTest : public testing::Test {
- protected:
- SdchManagerTest()
- : sdch_manager_(new SdchManager),
- default_support_(false),
- default_https_support_(false) {
- default_support_ = sdch_manager_->sdch_enabled();
- default_https_support_ = sdch_manager_->secure_scheme_supported();
- }
-
- ~SdchManagerTest() override {}
-
- SdchManager* sdch_manager() { return sdch_manager_.get(); }
-
- // Reset globals back to default state.
- void TearDown() override {
- SdchManager::EnableSdchSupport(default_support_);
- SdchManager::EnableSecureSchemeSupport(default_https_support_);
- }
-
- // Attempt to add a dictionary to the manager and probe for success or
- // failure.
- bool AddSdchDictionary(const std::string& dictionary_text,
- const GURL& gurl) {
- return sdch_manager_->AddSdchDictionary(dictionary_text, gurl, nullptr) ==
- SDCH_OK;
- }
-
- private:
- scoped_ptr<SdchManager> sdch_manager_;
- bool default_support_;
- bool default_https_support_;
-};
-
-static std::string NewSdchDictionary(const std::string& domain) {
- std::string dictionary;
- if (!domain.empty()) {
- dictionary.append("Domain: ");
- dictionary.append(domain);
- dictionary.append("\n");
- }
- dictionary.append("\n");
- dictionary.append(kTestVcdiffDictionary, sizeof(kTestVcdiffDictionary) - 1);
- return dictionary;
-}
-
-TEST_F(SdchManagerTest, DomainSupported) {
- GURL google_url("http://www.google.com");
-
- SdchManager::EnableSdchSupport(false);
- EXPECT_EQ(SDCH_DISABLED, sdch_manager()->IsInSupportedDomain(google_url));
- SdchManager::EnableSdchSupport(true);
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(google_url));
-}
-
-TEST_F(SdchManagerTest, DomainBlacklisting) {
- GURL test_url("http://www.test.com");
- GURL google_url("http://www.google.com");
-
- sdch_manager()->BlacklistDomain(test_url, SDCH_OK);
- EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET,
- sdch_manager()->IsInSupportedDomain(test_url));
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(google_url));
-
- sdch_manager()->BlacklistDomain(google_url, SDCH_OK);
- EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET,
- sdch_manager()->IsInSupportedDomain(google_url));
-}
-
-TEST_F(SdchManagerTest, DomainBlacklistingCaseSensitivity) {
- GURL test_url("http://www.TesT.com");
- GURL test2_url("http://www.tEst.com");
-
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(test_url));
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(test2_url));
- sdch_manager()->BlacklistDomain(test_url, SDCH_OK);
- EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET,
- sdch_manager()->IsInSupportedDomain(test2_url));
-}
-
-TEST_F(SdchManagerTest, BlacklistingReset) {
- GURL gurl("http://mytest.DoMain.com");
- std::string domain(gurl.host());
-
- sdch_manager()->ClearBlacklistings();
- EXPECT_EQ(sdch_manager()->BlackListDomainCount(domain), 0);
- EXPECT_EQ(sdch_manager()->BlacklistDomainExponential(domain), 0);
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(gurl));
-}
-
-TEST_F(SdchManagerTest, BlacklistingSingleBlacklist) {
- GURL gurl("http://mytest.DoMain.com");
- std::string domain(gurl.host());
- sdch_manager()->ClearBlacklistings();
-
- sdch_manager()->BlacklistDomain(gurl, SDCH_OK);
- EXPECT_EQ(sdch_manager()->BlackListDomainCount(domain), 1);
- EXPECT_EQ(sdch_manager()->BlacklistDomainExponential(domain), 1);
-
- // Check that any domain lookup reduces the blacklist counter.
- EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET,
- sdch_manager()->IsInSupportedDomain(gurl));
- EXPECT_EQ(sdch_manager()->BlackListDomainCount(domain), 0);
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(gurl));
-}
-
-TEST_F(SdchManagerTest, BlacklistingExponential) {
- GURL gurl("http://mytest.DoMain.com");
- std::string domain(gurl.host());
- sdch_manager()->ClearBlacklistings();
-
- int exponential = 1;
- for (int i = 1; i < 100; ++i) {
- sdch_manager()->BlacklistDomain(gurl, SDCH_OK);
- EXPECT_EQ(sdch_manager()->BlacklistDomainExponential(domain), exponential);
-
- EXPECT_EQ(sdch_manager()->BlackListDomainCount(domain), exponential);
- EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET,
- sdch_manager()->IsInSupportedDomain(gurl));
- EXPECT_EQ(sdch_manager()->BlackListDomainCount(domain), exponential - 1);
-
- // Simulate a large number of domain checks (which eventually remove the
- // blacklisting).
- sdch_manager()->ClearDomainBlacklisting(domain);
- EXPECT_EQ(sdch_manager()->BlackListDomainCount(domain), 0);
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(gurl));
-
- // Predict what exponential backoff will be.
- exponential = 1 + 2 * exponential;
- if (exponential < 0)
- exponential = INT_MAX; // We don't wrap.
- }
-}
-
-TEST_F(SdchManagerTest, CanSetExactMatchDictionary) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Perfect match should work.
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("http://" + dictionary_domain)));
-}
-
-TEST_F(SdchManagerTest, CanAdvertiseDictionaryOverHTTP) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("http://" + dictionary_domain)));
-
- // HTTP target URL can advertise dictionary.
- EXPECT_TRUE(sdch_manager()->GetDictionarySet(
- GURL("http://" + dictionary_domain + "/test")));
-}
-
-TEST_F(SdchManagerTest, CanNotAdvertiseDictionaryOverHTTPS) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("http://" + dictionary_domain)));
-
- // HTTPS target URL should NOT advertise dictionary.
- EXPECT_FALSE(sdch_manager()->GetDictionarySet(
- GURL("https://" + dictionary_domain + "/test")));
-}
-
-TEST_F(SdchManagerTest, CanUseHTTPSDictionaryOverHTTPSIfEnabled) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- SdchManager::EnableSecureSchemeSupport(false);
- EXPECT_FALSE(AddSdchDictionary(dictionary_text,
- GURL("https://" + dictionary_domain)));
- SdchManager::EnableSecureSchemeSupport(true);
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("https://" + dictionary_domain)));
-
- GURL target_url("https://" + dictionary_domain + "/test");
- // HTTPS target URL should advertise dictionary if secure scheme support is
- // enabled.
- EXPECT_TRUE(sdch_manager()->GetDictionarySet(target_url));
-
- // Dictionary should be available.
- std::string client_hash;
- std::string server_hash;
- sdch_manager()->GenerateHash(dictionary_text, &client_hash, &server_hash);
- SdchProblemCode problem_code;
- scoped_ptr<SdchManager::DictionarySet> dict_set(
- sdch_manager()->GetDictionarySetByHash(
- target_url, server_hash, &problem_code));
- EXPECT_EQ(SDCH_OK, problem_code);
- EXPECT_TRUE(dict_set.get());
- EXPECT_TRUE(dict_set->GetDictionary(server_hash));
-}
-
-TEST_F(SdchManagerTest, CanNotUseHTTPDictionaryOverHTTPS) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("http://" + dictionary_domain)));
-
- GURL target_url("https://" + dictionary_domain + "/test");
- // HTTPS target URL should not advertise dictionary acquired over HTTP even if
- // secure scheme support is enabled.
- SdchManager::EnableSecureSchemeSupport(true);
- EXPECT_FALSE(sdch_manager()->GetDictionarySet(target_url));
-
- std::string client_hash;
- std::string server_hash;
- sdch_manager()->GenerateHash(dictionary_text, &client_hash, &server_hash);
- SdchProblemCode problem_code;
- scoped_ptr<SdchManager::DictionarySet> dict_set(
- sdch_manager()->GetDictionarySetByHash(
- target_url, server_hash, &problem_code));
- EXPECT_FALSE(dict_set.get());
- EXPECT_EQ(SDCH_DICTIONARY_FOUND_HAS_WRONG_SCHEME, problem_code);
-}
-
-TEST_F(SdchManagerTest, CanNotUseHTTPSDictionaryOverHTTP) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- SdchManager::EnableSecureSchemeSupport(true);
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("https://" + dictionary_domain)));
-
- GURL target_url("http://" + dictionary_domain + "/test");
- // HTTP target URL should not advertise dictionary acquired over HTTPS even if
- // secure scheme support is enabled.
- EXPECT_FALSE(sdch_manager()->GetDictionarySet(target_url));
-
- std::string client_hash;
- std::string server_hash;
- sdch_manager()->GenerateHash(dictionary_text, &client_hash, &server_hash);
- SdchProblemCode problem_code;
- scoped_ptr<SdchManager::DictionarySet> dict_set(
- sdch_manager()->GetDictionarySetByHash(
- target_url, server_hash, &problem_code));
- EXPECT_FALSE(dict_set.get());
- EXPECT_EQ(SDCH_DICTIONARY_FOUND_HAS_WRONG_SCHEME, problem_code);
-}
-
-TEST_F(SdchManagerTest, FailToSetDomainMismatchDictionary) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Fail the "domain match" requirement.
- EXPECT_FALSE(AddSdchDictionary(dictionary_text,
- GURL("http://y.z.google.com")));
-}
-
-TEST_F(SdchManagerTest, FailToSetDotHostPrefixDomainDictionary) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Fail the HD with D being the domain and H having a dot requirement.
- EXPECT_FALSE(AddSdchDictionary(dictionary_text,
- GURL("http://w.x.y.z.google.com")));
-}
-
-TEST_F(SdchManagerTest, FailToSetDotHostPrefixDomainDictionaryTrailingDot) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Fail the HD with D being the domain and H having a dot requirement.
- EXPECT_FALSE(AddSdchDictionary(dictionary_text,
- GURL("http://w.x.y.z.google.com.")));
-}
-
-TEST_F(SdchManagerTest, FailToSetRepeatPrefixWithDotDictionary) {
- // Make sure that a prefix that matches the domain postfix won't confuse
- // the validation checks.
- std::string dictionary_domain("www.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Fail the HD with D being the domain and H having a dot requirement.
- EXPECT_FALSE(AddSdchDictionary(dictionary_text,
- GURL("http://www.google.com.www.google.com")));
-}
-
-TEST_F(SdchManagerTest, CanSetLeadingDotDomainDictionary) {
- // Make sure that a prefix that matches the domain postfix won't confuse
- // the validation checks.
- std::string dictionary_domain(".google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Verify that a leading dot in the domain is acceptable, as long as the host
- // name does not contain any dots preceding the matched domain name.
- EXPECT_TRUE(AddSdchDictionary(dictionary_text, GURL("http://www.google.com")));
-}
-
-TEST_F(SdchManagerTest,
- CanSetLeadingDotDomainDictionaryFromURLWithTrailingDot) {
- // Make sure that a prefix that matches the domain postfix won't confuse
- // the validation checks.
- std::string dictionary_domain(".google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Verify that a leading dot in the domain is acceptable, as long as the host
- // name does not contain any dots preceding the matched domain name.
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("http://www.google.com.")));
-}
-
-TEST_F(SdchManagerTest, CannotSetLeadingDotDomainDictionary) {
- // Make sure that a prefix that matches the domain postfix won't confuse
- // the validation checks.
- std::string dictionary_domain(".google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Verify that a leading dot in the domain does not affect the name containing
- // dots failure.
- EXPECT_FALSE(AddSdchDictionary(dictionary_text,
- GURL("http://www.subdomain.google.com")));
-}
-
-TEST_F(SdchManagerTest, CannotSetLeadingDotDomainDictionaryTrailingDot) {
- // Make sure that a prefix that matches the domain postfix won't confuse
- // the validation checks.
- std::string dictionary_domain(".google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Verify that a trailing period in the URL doesn't affect the check.
- EXPECT_FALSE(AddSdchDictionary(dictionary_text,
- GURL("http://www.subdomain.google.com.")));
-}
-
-// Make sure the order of the tests is not helping us or confusing things.
-// See test CanSetExactMatchDictionary above for first try.
-TEST_F(SdchManagerTest, CanStillSetExactMatchDictionary) {
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
-
- // Perfect match should *STILL* work.
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("http://" + dictionary_domain)));
-}
-
-TEST_F(SdchManagerTest, PathMatch) {
- bool (*PathMatch)(const std::string& path, const std::string& restriction) =
- SdchManager::Dictionary::PathMatch;
- // Perfect match is supported.
- EXPECT_TRUE(PathMatch("/search", "/search"));
- EXPECT_TRUE(PathMatch("/search/", "/search/"));
-
- // Prefix only works if last character of restriction is a slash, or first
- // character in path after a match is a slash. Validate each case separately.
-
- // Rely on the slash in the path (not at the end of the restriction).
- EXPECT_TRUE(PathMatch("/search/something", "/search"));
- EXPECT_TRUE(PathMatch("/search/s", "/search"));
- EXPECT_TRUE(PathMatch("/search/other", "/search"));
- EXPECT_TRUE(PathMatch("/search/something", "/search"));
-
- // Rely on the slash at the end of the restriction.
- EXPECT_TRUE(PathMatch("/search/something", "/search/"));
- EXPECT_TRUE(PathMatch("/search/s", "/search/"));
- EXPECT_TRUE(PathMatch("/search/other", "/search/"));
- EXPECT_TRUE(PathMatch("/search/something", "/search/"));
-
- // Make sure less that sufficient prefix match is false.
- EXPECT_FALSE(PathMatch("/sear", "/search"));
- EXPECT_FALSE(PathMatch("/", "/search"));
- EXPECT_FALSE(PathMatch(std::string(), "/search"));
-
- // Add examples with several levels of direcories in the restriction.
- EXPECT_FALSE(PathMatch("/search/something", "search/s"));
- EXPECT_FALSE(PathMatch("/search/", "/search/s"));
-
- // Make sure adding characters to path will also fail.
- EXPECT_FALSE(PathMatch("/searching", "/search/"));
- EXPECT_FALSE(PathMatch("/searching", "/search"));
-
- // Make sure we're case sensitive.
- EXPECT_FALSE(PathMatch("/ABC", "/abc"));
- EXPECT_FALSE(PathMatch("/abc", "/ABC"));
-}
-
-// The following are only applicable while we have a latency test in the code,
-// and can be removed when that functionality is stripped.
-TEST_F(SdchManagerTest, LatencyTestControls) {
- GURL url("http://www.google.com");
- GURL url2("http://www.google2.com");
-
- // First make sure we default to false.
- EXPECT_FALSE(sdch_manager()->AllowLatencyExperiment(url));
- EXPECT_FALSE(sdch_manager()->AllowLatencyExperiment(url2));
-
- // That we can set each to true.
- sdch_manager()->SetAllowLatencyExperiment(url, true);
- EXPECT_TRUE(sdch_manager()->AllowLatencyExperiment(url));
- EXPECT_FALSE(sdch_manager()->AllowLatencyExperiment(url2));
-
- sdch_manager()->SetAllowLatencyExperiment(url2, true);
- EXPECT_TRUE(sdch_manager()->AllowLatencyExperiment(url));
- EXPECT_TRUE(sdch_manager()->AllowLatencyExperiment(url2));
-
- // And can reset them to false.
- sdch_manager()->SetAllowLatencyExperiment(url, false);
- EXPECT_FALSE(sdch_manager()->AllowLatencyExperiment(url));
- EXPECT_TRUE(sdch_manager()->AllowLatencyExperiment(url2));
-
- sdch_manager()->SetAllowLatencyExperiment(url2, false);
- EXPECT_FALSE(sdch_manager()->AllowLatencyExperiment(url));
- EXPECT_FALSE(sdch_manager()->AllowLatencyExperiment(url2));
-}
-
-TEST_F(SdchManagerTest, CanUseMultipleManagers) {
- SdchManager second_manager;
-
- std::string dictionary_domain_1("x.y.z.google.com");
- std::string dictionary_domain_2("x.y.z.chromium.org");
-
- std::string dictionary_text_1(NewSdchDictionary(dictionary_domain_1));
- std::string dictionary_text_2(NewSdchDictionary(dictionary_domain_2));
-
- std::string tmp_hash;
- std::string server_hash_1;
- std::string server_hash_2;
-
- SdchManager::GenerateHash(dictionary_text_1, &tmp_hash, &server_hash_1);
- SdchManager::GenerateHash(dictionary_text_2, &tmp_hash, &server_hash_2);
-
- // Confirm that if you add directories to one manager, you
- // can't get them from the other.
- EXPECT_TRUE(AddSdchDictionary(dictionary_text_1,
- GURL("http://" + dictionary_domain_1)));
- scoped_ptr<SdchManager::DictionarySet> dict_set;
-
- SdchProblemCode problem_code;
- dict_set = sdch_manager()->GetDictionarySetByHash(
- GURL("http://" + dictionary_domain_1 + "/random_url"),
- server_hash_1, &problem_code);
- EXPECT_TRUE(dict_set);
- EXPECT_TRUE(dict_set->GetDictionary(server_hash_1));
- EXPECT_EQ(SDCH_OK, problem_code);
-
- second_manager.AddSdchDictionary(
- dictionary_text_2, GURL("http://" + dictionary_domain_2), nullptr);
- dict_set = second_manager.GetDictionarySetByHash(
- GURL("http://" + dictionary_domain_2 + "/random_url"),
- server_hash_2, &problem_code);
- EXPECT_TRUE(dict_set);
- EXPECT_TRUE(dict_set->GetDictionary(server_hash_2));
- EXPECT_EQ(SDCH_OK, problem_code);
-
- dict_set = sdch_manager()->GetDictionarySetByHash(
- GURL("http://" + dictionary_domain_2 + "/random_url"),
- server_hash_2, &problem_code);
- EXPECT_FALSE(dict_set);
- EXPECT_EQ(SDCH_DICTIONARY_HASH_NOT_FOUND, problem_code);
-
- dict_set = second_manager.GetDictionarySetByHash(
- GURL("http://" + dictionary_domain_1 + "/random_url"),
- server_hash_1, &problem_code);
- EXPECT_FALSE(dict_set);
- EXPECT_EQ(SDCH_DICTIONARY_HASH_NOT_FOUND, problem_code);
-}
-
-TEST_F(SdchManagerTest, HttpsCorrectlySupported) {
- GURL url("http://www.google.com");
- GURL secure_url("https://www.google.com");
-
- bool expect_https_support = true;
-
- SdchProblemCode expected_code =
- expect_https_support ? SDCH_OK : SDCH_SECURE_SCHEME_NOT_SUPPORTED;
-
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(url));
- EXPECT_EQ(expected_code, sdch_manager()->IsInSupportedDomain(secure_url));
-
- SdchManager::EnableSecureSchemeSupport(!expect_https_support);
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(url));
- EXPECT_NE(expected_code, sdch_manager()->IsInSupportedDomain(secure_url));
-}
-
-TEST_F(SdchManagerTest, ClearDictionaryData) {
- std::string dictionary_domain("x.y.z.google.com");
- GURL blacklist_url("http://bad.chromium.org");
-
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
- std::string tmp_hash;
- std::string server_hash;
-
- SdchManager::GenerateHash(dictionary_text, &tmp_hash, &server_hash);
-
- EXPECT_TRUE(AddSdchDictionary(dictionary_text,
- GURL("http://" + dictionary_domain)));
-
- scoped_ptr<SdchManager::DictionarySet> dict_set;
-
- SdchProblemCode problem_code;
- dict_set = sdch_manager()->GetDictionarySetByHash(
- GURL("http://" + dictionary_domain + "/random_url"),
- server_hash, &problem_code);
- EXPECT_TRUE(dict_set);
- EXPECT_TRUE(dict_set->GetDictionary(server_hash));
- EXPECT_EQ(SDCH_OK, problem_code);
-
- sdch_manager()->BlacklistDomain(GURL(blacklist_url), SDCH_OK);
- EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET,
- sdch_manager()->IsInSupportedDomain(blacklist_url));
-
- sdch_manager()->ClearData();
-
- dict_set = sdch_manager()->GetDictionarySetByHash(
- GURL("http://" + dictionary_domain + "/random_url"),
- server_hash, &problem_code);
- EXPECT_FALSE(dict_set);
- EXPECT_EQ(SDCH_DICTIONARY_HASH_NOT_FOUND, problem_code);
- EXPECT_EQ(SDCH_OK, sdch_manager()->IsInSupportedDomain(blacklist_url));
-}
-
-TEST_F(SdchManagerTest, GetDictionaryNotification) {
- GURL test_request_gurl(GURL("http://www.example.com/data"));
- GURL test_dictionary_gurl(GURL("http://www.example.com/dict"));
- MockSdchObserver observer;
- sdch_manager()->AddObserver(&observer);
-
- EXPECT_EQ(0, observer.get_dictionary_notifications());
- sdch_manager()->OnGetDictionary(test_request_gurl, test_dictionary_gurl);
- EXPECT_EQ(1, observer.get_dictionary_notifications());
- EXPECT_EQ(test_request_gurl, observer.last_dictionary_request_url());
- EXPECT_EQ(test_dictionary_gurl, observer.last_dictionary_url());
-
- sdch_manager()->RemoveObserver(&observer);
- sdch_manager()->OnGetDictionary(test_request_gurl, test_dictionary_gurl);
- EXPECT_EQ(1, observer.get_dictionary_notifications());
- EXPECT_EQ(test_request_gurl, observer.last_dictionary_request_url());
- EXPECT_EQ(test_dictionary_gurl, observer.last_dictionary_url());
-}
-
-TEST_F(SdchManagerTest, ExpirationCheckedProperly) {
- // Create an SDCH dictionary with an expiration time in the past.
- std::string dictionary_domain("x.y.z.google.com");
- std::string dictionary_text(base::StringPrintf(
- "Domain: %s\nMax-age: 0\n\n", dictionary_domain.c_str()));
- dictionary_text.append(
- kTestVcdiffDictionary, sizeof(kTestVcdiffDictionary) - 1);
- std::string client_hash;
- std::string server_hash;
- SdchManager::GenerateHash(dictionary_text, &client_hash, &server_hash);
- GURL target_gurl("http://" + dictionary_domain);
- AddSdchDictionary(dictionary_text, target_gurl);
-
- // It should be visible if looked up by hash whether expired or not.
- scoped_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock);
- clock->SetNow(base::Time::Now());
- clock->Advance(base::TimeDelta::FromMinutes(5));
- SdchProblemCode problem_code;
- scoped_ptr<SdchManager::DictionarySet> hash_set(
- sdch_manager()->GetDictionarySetByHash(
- target_gurl, server_hash, &problem_code).Pass());
- ASSERT_TRUE(hash_set);
- ASSERT_EQ(SDCH_OK, problem_code);
- const_cast<SdchManager::Dictionary*>(
- hash_set->GetDictionary(server_hash))->SetClockForTesting(
- clock.Pass());
-
- // Make sure it's not visible for advertisement, but is visible
- // if looked up by hash.
- EXPECT_FALSE(sdch_manager()->GetDictionarySet(target_gurl));
- EXPECT_TRUE(sdch_manager()->GetDictionarySetByHash(
- target_gurl, server_hash, &problem_code));
- EXPECT_EQ(SDCH_OK, problem_code);
-}
-
-TEST_F(SdchManagerTest, SdchOnByDefault) {
- GURL google_url("http://www.google.com");
- scoped_ptr<SdchManager> sdch_manager(new SdchManager);
-
- EXPECT_EQ(SDCH_OK, sdch_manager->IsInSupportedDomain(google_url));
- SdchManager::EnableSdchSupport(false);
- EXPECT_EQ(SDCH_DISABLED, sdch_manager->IsInSupportedDomain(google_url));
-}
-
-// Confirm dispatch of notification.
-TEST_F(SdchManagerTest, SdchDictionaryUsed) {
- MockSdchObserver observer;
- sdch_manager()->AddObserver(&observer);
-
- EXPECT_EQ(0, observer.dictionary_used_notifications());
- sdch_manager()->OnDictionaryUsed("xyzzy");
- EXPECT_EQ(1, observer.dictionary_used_notifications());
- EXPECT_EQ("xyzzy", observer.last_server_hash());
-
- std::string dictionary_domain("x.y.z.google.com");
- GURL target_gurl("http://" + dictionary_domain);
- std::string dictionary_text(NewSdchDictionary(dictionary_domain));
- std::string client_hash;
- std::string server_hash;
- SdchManager::GenerateHash(dictionary_text, &client_hash, &server_hash);
- EXPECT_TRUE(AddSdchDictionary(dictionary_text, target_gurl));
- EXPECT_EQ("xyzzy", observer.last_server_hash());
- EXPECT_EQ(1, observer.dictionary_used_notifications());
-
- EXPECT_TRUE(sdch_manager()->GetDictionarySet(target_gurl));
- EXPECT_EQ("xyzzy", observer.last_server_hash());
- EXPECT_EQ(1, observer.dictionary_used_notifications());
-
- sdch_manager()->RemoveObserver(&observer);
- EXPECT_EQ(1, observer.dictionary_used_notifications());
- EXPECT_EQ("xyzzy", observer.last_server_hash());
- sdch_manager()->OnDictionaryUsed("plugh");
- EXPECT_EQ(1, observer.dictionary_used_notifications());
- EXPECT_EQ("xyzzy", observer.last_server_hash());
-}
-
-#else
-
-TEST(SdchManagerTest, SdchOffByDefault) {
- GURL google_url("http://www.google.com");
- scoped_ptr<SdchManager> sdch_manager(new SdchManager);
-
- EXPECT_EQ(SDCH_DISABLED, sdch_manager->IsInSupportedDomain(google_url));
- SdchManager::EnableSdchSupport(true);
- EXPECT_EQ(SDCH_OK, sdch_manager->IsInSupportedDomain(google_url));
-}
-
-#endif // !defined(OS_IOS)
-
-} // namespace net
« no previous file with comments | « net/base/sdch_manager.cc ('k') | net/base/sdch_net_log_params.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698