| // Copyright 2017 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 "content/public/browser/site_isolation_policy.h" |
| |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "url/gurl.h" |
| #include "url/origin.h" |
| |
| namespace content { |
| |
| // Verifies parsing logic in SiteIsolationPolicy::ParseIsolatedOrigins. |
| TEST(SiteIsolationPolicyTest, ParseIsolatedOrigins) { |
| // Invalid and unique origins are not permitted. |
| EXPECT_THAT(SiteIsolationPolicy::ParseIsolatedOrigins("foo"), |
| testing::IsEmpty()); |
| EXPECT_THAT(SiteIsolationPolicy::ParseIsolatedOrigins(""), |
| testing::IsEmpty()); |
| EXPECT_THAT(SiteIsolationPolicy::ParseIsolatedOrigins("about:blank"), |
| testing::IsEmpty()); |
| |
| // Single simple, valid origin. |
| EXPECT_THAT( |
| SiteIsolationPolicy::ParseIsolatedOrigins("http://isolated.foo.com"), |
| testing::ElementsAre( |
| url::Origin::Create(GURL("http://isolated.foo.com")))); |
| |
| // Multiple comma-separated origins. |
| EXPECT_THAT( |
| SiteIsolationPolicy::ParseIsolatedOrigins( |
| "http://a.com,https://b.com,,https://c.com:8000"), |
| testing::ElementsAre(url::Origin::Create(GURL("http://a.com")), |
| url::Origin::Create(GURL("https://b.com")), |
| url::Origin::Create(GURL("https://c.com:8000")))); |
| |
| // ParseIsolatedOrigins should not do any deduplication (that is the job of |
| // ChildProcessSecurityPolicyImpl::AddIsolatedOrigins). |
| EXPECT_THAT( |
| SiteIsolationPolicy::ParseIsolatedOrigins( |
| "https://b.com,https://b.com,https://b.com:1234"), |
| testing::ElementsAre(url::Origin::Create(GURL("https://b.com")), |
| url::Origin::Create(GURL("https://b.com")), |
| url::Origin::Create(GURL("https://b.com:1234")))); |
| } |
| |
| } // namespace content |