| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <limits.h> | 5 #include <limits.h> |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "net/base/sdch_manager.h" | 11 #include "net/base/sdch_manager.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 13 |
| 14 namespace net { | 14 namespace net { |
| 15 | 15 |
| 16 //------------------------------------------------------------------------------ | 16 //------------------------------------------------------------------------------ |
| 17 // Provide sample data and compression results with a sample VCDIFF dictionary. | 17 // Provide sample data and compression results with a sample VCDIFF dictionary. |
| 18 // Note an SDCH dictionary has extra meta-data before the VCDIFF dictionary. | 18 // Note an SDCH dictionary has extra meta-data before the VCDIFF dictionary. |
| 19 static const char kTestVcdiffDictionary[] = "DictionaryFor" | 19 static const char kTestVcdiffDictionary[] = "DictionaryFor" |
| 20 "SdchCompression1SdchCompression2SdchCompression3SdchCompression\n"; | 20 "SdchCompression1SdchCompression2SdchCompression3SdchCompression\n"; |
| 21 | 21 |
| 22 //------------------------------------------------------------------------------ | 22 //------------------------------------------------------------------------------ |
| 23 | 23 |
| 24 class SdchManagerTest : public testing::Test { | 24 class SdchManagerTest : public testing::Test { |
| 25 protected: | 25 protected: |
| 26 SdchManagerTest() | 26 SdchManagerTest() |
| 27 : sdch_manager_(new SdchManager) { | 27 : sdch_manager_(new SdchManager), |
| 28 default_support_(false), |
| 29 default_https_support_(false) { |
| 30 default_support_ = sdch_manager_->sdch_enabled(); |
| 31 default_https_support_ = sdch_manager_->secure_scheme_supported(); |
| 28 } | 32 } |
| 29 | 33 |
| 30 SdchManager* sdch_manager() { return sdch_manager_.get(); } | 34 SdchManager* sdch_manager() { return sdch_manager_.get(); } |
| 31 | 35 |
| 32 // Reset globals back to default state. | 36 // Reset globals back to default state. |
| 33 virtual void TearDown() { | 37 virtual void TearDown() { |
| 34 SdchManager::EnableSdchSupport(true); | 38 SdchManager::EnableSdchSupport(default_support_); |
| 35 SdchManager::EnableSecureSchemeSupport(false); | 39 SdchManager::EnableSecureSchemeSupport(default_https_support_); |
| 36 } | 40 } |
| 37 | 41 |
| 38 // Attempt to add a dictionary to the manager and probe for success or | 42 // Attempt to add a dictionary to the manager and probe for success or |
| 39 // failure. | 43 // failure. |
| 40 bool AddSdchDictionary(const std::string& dictionary_text, | 44 bool AddSdchDictionary(const std::string& dictionary_text, |
| 41 const GURL& gurl) { | 45 const GURL& gurl) { |
| 42 std::string list; | 46 std::string list; |
| 43 sdch_manager_->GetAvailDictionaryList(gurl, &list); | 47 sdch_manager_->GetAvailDictionaryList(gurl, &list); |
| 44 sdch_manager_->AddSdchDictionary(dictionary_text, gurl); | 48 sdch_manager_->AddSdchDictionary(dictionary_text, gurl); |
| 45 std::string list2; | 49 std::string list2; |
| 46 sdch_manager_->GetAvailDictionaryList(gurl, &list2); | 50 sdch_manager_->GetAvailDictionaryList(gurl, &list2); |
| 47 | 51 |
| 48 // The list of hashes should change iff the addition succeeds. | 52 // The list of hashes should change iff the addition succeeds. |
| 49 return (list != list2); | 53 return (list != list2); |
| 50 } | 54 } |
| 51 | 55 |
| 52 private: | 56 private: |
| 53 scoped_ptr<SdchManager> sdch_manager_; | 57 scoped_ptr<SdchManager> sdch_manager_; |
| 58 bool default_support_; |
| 59 bool default_https_support_; |
| 54 }; | 60 }; |
| 55 | 61 |
| 56 //------------------------------------------------------------------------------ | 62 //------------------------------------------------------------------------------ |
| 57 static std::string NewSdchDictionary(const std::string& domain) { | 63 static std::string NewSdchDictionary(const std::string& domain) { |
| 58 std::string dictionary; | 64 std::string dictionary; |
| 59 if (!domain.empty()) { | 65 if (!domain.empty()) { |
| 60 dictionary.append("Domain: "); | 66 dictionary.append("Domain: "); |
| 61 dictionary.append(domain); | 67 dictionary.append(domain); |
| 62 dictionary.append("\n"); | 68 dictionary.append("\n"); |
| 63 } | 69 } |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 sdch_manager()->GetAvailDictionaryList( | 191 sdch_manager()->GetAvailDictionaryList( |
| 186 GURL("https://" + dictionary_domain + "/test"), | 192 GURL("https://" + dictionary_domain + "/test"), |
| 187 &dictionary_list); | 193 &dictionary_list); |
| 188 EXPECT_TRUE(dictionary_list.empty()); | 194 EXPECT_TRUE(dictionary_list.empty()); |
| 189 } | 195 } |
| 190 | 196 |
| 191 TEST_F(SdchManagerTest, CanUseHTTPSDictionaryOverHTTPSIfEnabled) { | 197 TEST_F(SdchManagerTest, CanUseHTTPSDictionaryOverHTTPSIfEnabled) { |
| 192 std::string dictionary_domain("x.y.z.google.com"); | 198 std::string dictionary_domain("x.y.z.google.com"); |
| 193 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); | 199 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); |
| 194 | 200 |
| 201 SdchManager::EnableSecureSchemeSupport(false); |
| 195 EXPECT_FALSE(AddSdchDictionary(dictionary_text, | 202 EXPECT_FALSE(AddSdchDictionary(dictionary_text, |
| 196 GURL("https://" + dictionary_domain))); | 203 GURL("https://" + dictionary_domain))); |
| 197 SdchManager::EnableSecureSchemeSupport(true); | 204 SdchManager::EnableSecureSchemeSupport(true); |
| 198 EXPECT_TRUE(AddSdchDictionary(dictionary_text, | 205 EXPECT_TRUE(AddSdchDictionary(dictionary_text, |
| 199 GURL("https://" + dictionary_domain))); | 206 GURL("https://" + dictionary_domain))); |
| 200 | 207 |
| 201 GURL target_url("https://" + dictionary_domain + "/test"); | 208 GURL target_url("https://" + dictionary_domain + "/test"); |
| 202 std::string dictionary_list; | 209 std::string dictionary_list; |
| 203 // HTTPS target URL should advertise dictionary if secure scheme support is | 210 // HTTPS target URL should advertise dictionary if secure scheme support is |
| 204 // enabled. | 211 // enabled. |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 GURL("http://" + dictionary_domain_1 + "/random_url"), | 467 GURL("http://" + dictionary_domain_1 + "/random_url"), |
| 461 &dictionary); | 468 &dictionary); |
| 462 EXPECT_FALSE(dictionary.get()); | 469 EXPECT_FALSE(dictionary.get()); |
| 463 } | 470 } |
| 464 | 471 |
| 465 TEST_F(SdchManagerTest, HttpsCorrectlySupported) { | 472 TEST_F(SdchManagerTest, HttpsCorrectlySupported) { |
| 466 GURL url("http://www.google.com"); | 473 GURL url("http://www.google.com"); |
| 467 GURL secure_url("https://www.google.com"); | 474 GURL secure_url("https://www.google.com"); |
| 468 | 475 |
| 469 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(url)); | 476 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(url)); |
| 477 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(secure_url)); |
| 478 |
| 479 SdchManager::EnableSecureSchemeSupport(false); |
| 480 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(url)); |
| 470 EXPECT_FALSE(sdch_manager()->IsInSupportedDomain(secure_url)); | 481 EXPECT_FALSE(sdch_manager()->IsInSupportedDomain(secure_url)); |
| 471 | |
| 472 SdchManager::EnableSecureSchemeSupport(true); | |
| 473 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(url)); | |
| 474 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(secure_url)); | |
| 475 } | 482 } |
| 476 | 483 |
| 477 TEST_F(SdchManagerTest, ClearDictionaryData) { | 484 TEST_F(SdchManagerTest, ClearDictionaryData) { |
| 478 std::string dictionary_domain("x.y.z.google.com"); | 485 std::string dictionary_domain("x.y.z.google.com"); |
| 479 GURL blacklist_url("http://bad.chromium.org"); | 486 GURL blacklist_url("http://bad.chromium.org"); |
| 480 | 487 |
| 481 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); | 488 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); |
| 482 std::string tmp_hash; | 489 std::string tmp_hash; |
| 483 std::string server_hash; | 490 std::string server_hash; |
| 484 | 491 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 502 dictionary = NULL; | 509 dictionary = NULL; |
| 503 sdch_manager()->GetVcdiffDictionary( | 510 sdch_manager()->GetVcdiffDictionary( |
| 504 server_hash, | 511 server_hash, |
| 505 GURL("http://" + dictionary_domain + "/random_url"), | 512 GURL("http://" + dictionary_domain + "/random_url"), |
| 506 &dictionary); | 513 &dictionary); |
| 507 EXPECT_FALSE(dictionary.get()); | 514 EXPECT_FALSE(dictionary.get()); |
| 508 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(blacklist_url)); | 515 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(blacklist_url)); |
| 509 } | 516 } |
| 510 | 517 |
| 511 } // namespace net | 518 } // namespace net |
| 512 | |
| OLD | NEW |