Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/browsing_data_helper.h" | 5 #include "chrome/browser/browsing_data_helper.h" |
| 6 | 6 |
| 7 #include "base/stringprintf.h" | 7 #include "base/stringprintf.h" |
| 8 #include "chrome/browser/extensions/mock_extension_special_storage_policy.h" | |
| 8 #include "chrome/common/url_constants.h" | 9 #include "chrome/common/url_constants.h" |
| 9 #include "content/public/common/url_constants.h" | 10 #include "content/public/common/url_constants.h" |
| 11 #include "googleurl/src/gurl.h" | |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 11 #include "googleurl/src/gurl.h" | |
| 12 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" | 13 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" |
| 13 | 14 |
| 14 namespace { | 15 namespace { |
| 15 | 16 |
| 17 const char kTestOrigin1[] = "http://host1:1/"; | |
| 18 const char kTestOrigin2[] = "http://host2:1/"; | |
| 19 const char kTestOrigin3[] = "http://host3:1/"; | |
| 20 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; | |
| 21 const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; | |
| 22 | |
| 23 const GURL kOrigin1(kTestOrigin1); | |
| 24 const GURL kOrigin2(kTestOrigin2); | |
| 25 const GURL kOrigin3(kTestOrigin3); | |
| 26 const GURL kOriginExt(kTestOriginExt); | |
| 27 const GURL kOriginDevTools(kTestOriginDevTools); | |
| 28 | |
| 29 const int kExtension = BrowsingDataHelper::EXTENSION; | |
| 30 const int kProtected = BrowsingDataHelper::PROTECTED_WEB; | |
| 31 const int kUnprotected = BrowsingDataHelper::UNPROTECTED_WEB; | |
| 32 | |
| 16 class BrowsingDataHelperTest : public testing::Test { | 33 class BrowsingDataHelperTest : public testing::Test { |
| 17 public: | 34 public: |
| 18 BrowsingDataHelperTest() {} | 35 BrowsingDataHelperTest() {} |
| 19 virtual ~BrowsingDataHelperTest() {} | 36 virtual ~BrowsingDataHelperTest() {} |
| 20 | 37 |
| 21 bool IsValidScheme(const std::string& scheme) { | 38 bool IsValidScheme(const std::string& scheme) { |
| 22 GURL test(scheme + "://example.com"); | 39 GURL test(scheme + "://example.com"); |
| 23 return (BrowsingDataHelper::HasValidScheme(test) && | 40 return (BrowsingDataHelper::HasValidScheme(test) && |
| 24 BrowsingDataHelper::IsValidScheme(scheme) && | 41 BrowsingDataHelper::IsValidScheme(scheme) && |
| 25 BrowsingDataHelper::IsValidScheme( | 42 BrowsingDataHelper::IsValidScheme( |
| 26 WebKit::WebString::fromUTF8(scheme))); | 43 WebKit::WebString::fromUTF8(scheme))); |
| 27 } | 44 } |
| 28 | 45 |
| 46 bool Match(const GURL& origin, | |
| 47 int mask, | |
| 48 ExtensionSpecialStoragePolicy* policy) { | |
| 49 return BrowsingDataHelper::DoesOriginMatchMask(origin, mask, policy); | |
| 50 } | |
| 51 | |
| 29 private: | 52 private: |
| 30 DISALLOW_COPY_AND_ASSIGN(BrowsingDataHelperTest); | 53 DISALLOW_COPY_AND_ASSIGN(BrowsingDataHelperTest); |
| 31 }; | 54 }; |
| 32 | 55 |
| 33 TEST_F(BrowsingDataHelperTest, WebSafeSchemesAreValid) { | 56 TEST_F(BrowsingDataHelperTest, WebSafeSchemesAreValid) { |
| 34 EXPECT_TRUE(IsValidScheme(chrome::kHttpScheme)); | 57 EXPECT_TRUE(IsValidScheme(chrome::kHttpScheme)); |
| 35 EXPECT_TRUE(IsValidScheme(chrome::kHttpsScheme)); | 58 EXPECT_TRUE(IsValidScheme(chrome::kHttpsScheme)); |
| 36 EXPECT_TRUE(IsValidScheme(chrome::kFtpScheme)); | 59 EXPECT_TRUE(IsValidScheme(chrome::kFtpScheme)); |
| 37 EXPECT_TRUE(IsValidScheme(chrome::kDataScheme)); | 60 EXPECT_TRUE(IsValidScheme(chrome::kDataScheme)); |
| 38 EXPECT_TRUE(IsValidScheme("feed")); | 61 EXPECT_TRUE(IsValidScheme("feed")); |
| 39 EXPECT_TRUE(IsValidScheme(chrome::kBlobScheme)); | 62 EXPECT_TRUE(IsValidScheme(chrome::kBlobScheme)); |
| 40 EXPECT_TRUE(IsValidScheme(chrome::kFileSystemScheme)); | 63 EXPECT_TRUE(IsValidScheme(chrome::kFileSystemScheme)); |
| 41 | 64 |
| 42 EXPECT_FALSE(IsValidScheme("invalid-scheme-i-just-made-up")); | 65 EXPECT_FALSE(IsValidScheme("invalid-scheme-i-just-made-up")); |
| 43 } | 66 } |
| 44 | 67 |
| 45 TEST_F(BrowsingDataHelperTest, ChromeSchemesAreInvalid) { | 68 TEST_F(BrowsingDataHelperTest, ChromeSchemesAreInvalid) { |
| 46 EXPECT_FALSE(IsValidScheme(chrome::kExtensionScheme)); | 69 EXPECT_FALSE(IsValidScheme(chrome::kExtensionScheme)); |
| 47 EXPECT_FALSE(IsValidScheme(chrome::kAboutScheme)); | 70 EXPECT_FALSE(IsValidScheme(chrome::kAboutScheme)); |
| 48 EXPECT_FALSE(IsValidScheme(chrome::kChromeDevToolsScheme)); | 71 EXPECT_FALSE(IsValidScheme(chrome::kChromeDevToolsScheme)); |
| 49 EXPECT_FALSE(IsValidScheme(chrome::kChromeInternalScheme)); | 72 EXPECT_FALSE(IsValidScheme(chrome::kChromeInternalScheme)); |
| 50 EXPECT_FALSE(IsValidScheme(chrome::kChromeUIScheme)); | 73 EXPECT_FALSE(IsValidScheme(chrome::kChromeUIScheme)); |
| 51 EXPECT_FALSE(IsValidScheme(chrome::kJavaScriptScheme)); | 74 EXPECT_FALSE(IsValidScheme(chrome::kJavaScriptScheme)); |
| 52 EXPECT_FALSE(IsValidScheme(chrome::kMailToScheme)); | 75 EXPECT_FALSE(IsValidScheme(chrome::kMailToScheme)); |
| 53 EXPECT_FALSE(IsValidScheme(chrome::kMetadataScheme)); | 76 EXPECT_FALSE(IsValidScheme(chrome::kMetadataScheme)); |
| 54 EXPECT_FALSE(IsValidScheme(chrome::kSwappedOutScheme)); | 77 EXPECT_FALSE(IsValidScheme(chrome::kSwappedOutScheme)); |
| 55 EXPECT_FALSE(IsValidScheme(chrome::kViewSourceScheme)); | 78 EXPECT_FALSE(IsValidScheme(chrome::kViewSourceScheme)); |
| 56 } | 79 } |
| 57 | 80 |
| 81 TEST_F(BrowsingDataHelperTest, TestMatches) { | |
| 82 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = | |
| 83 new MockExtensionSpecialStoragePolicy; | |
| 84 // Protect kOrigin1. | |
| 85 mock_policy->AddProtected(kOrigin1.GetOrigin()); | |
| 86 | |
| 87 EXPECT_FALSE(Match(kOrigin1, kUnprotected, mock_policy)); | |
|
Bernhard Bauer
2012/05/31 15:57:31
You might be able to make this a bit easier to tes
Mike West
2012/06/01 13:35:17
Extensions are both protected and extensions. Book
Bernhard Bauer
2012/06/01 13:59:35
We're defining extension as "everything with a chr
Mike West
2012/06/01 14:11:53
No, you're right. Again, I successfully confused m
Bernhard Bauer
2012/06/04 09:06:43
In that case I feel obligated to point out that yo
| |
| 88 EXPECT_TRUE(Match(kOrigin2, kUnprotected, mock_policy)); | |
| 89 EXPECT_FALSE(Match(kOriginExt, kUnprotected, mock_policy)); | |
| 90 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected, mock_policy)); | |
| 91 | |
| 92 EXPECT_TRUE(Match(kOrigin1, kProtected, mock_policy)); | |
| 93 EXPECT_FALSE(Match(kOrigin2, kProtected, mock_policy)); | |
| 94 EXPECT_FALSE(Match(kOriginExt, kProtected, mock_policy)); | |
| 95 EXPECT_FALSE(Match(kOriginDevTools, kProtected, mock_policy)); | |
| 96 | |
| 97 EXPECT_FALSE(Match(kOrigin1, kExtension, mock_policy)); | |
| 98 EXPECT_FALSE(Match(kOrigin2, kExtension, mock_policy)); | |
| 99 EXPECT_TRUE(Match(kOriginExt, kExtension, mock_policy)); | |
| 100 EXPECT_TRUE(Match(kOriginDevTools, kExtension, mock_policy)); | |
| 101 | |
| 102 EXPECT_TRUE(Match(kOrigin1, kUnprotected | kProtected, mock_policy)); | |
| 103 EXPECT_TRUE(Match(kOrigin2, kUnprotected | kProtected, mock_policy)); | |
| 104 EXPECT_FALSE(Match(kOriginExt, kUnprotected | kProtected, mock_policy)); | |
| 105 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected | kProtected, mock_policy)); | |
| 106 | |
| 107 EXPECT_TRUE(Match(kOrigin1, kProtected | kExtension, mock_policy)); | |
| 108 EXPECT_FALSE(Match(kOrigin2, kProtected | kExtension, mock_policy)); | |
| 109 EXPECT_TRUE(Match(kOriginExt, kProtected | kExtension, mock_policy)); | |
| 110 EXPECT_TRUE(Match(kOriginDevTools, kProtected | kExtension, mock_policy)); | |
| 111 | |
| 112 EXPECT_TRUE(Match(kOrigin1, kUnprotected | kProtected | kExtension, | |
| 113 mock_policy)); | |
| 114 EXPECT_TRUE(Match(kOrigin2, kUnprotected | kProtected | kExtension, | |
| 115 mock_policy)); | |
| 116 EXPECT_TRUE(Match(kOriginExt, kUnprotected | kProtected | kExtension, | |
| 117 mock_policy)); | |
| 118 EXPECT_TRUE(Match(kOriginDevTools, kUnprotected | kProtected | kExtension, | |
| 119 mock_policy)); | |
| 120 } | |
| 121 | |
| 58 } // namespace | 122 } // namespace |
| OLD | NEW |