| Index: third_party/WebKit/Source/core/dom/DocumentTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/DocumentTest.cpp b/third_party/WebKit/Source/core/dom/DocumentTest.cpp
|
| index b83d53bc9b6e018e041bf0db41ab1f61f87dbb1e..3ab50aee52d67afe271255a2e1bf51fe3e0493a7 100644
|
| --- a/third_party/WebKit/Source/core/dom/DocumentTest.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/DocumentTest.cpp
|
| @@ -37,6 +37,7 @@
|
| #include "core/testing/DummyPageHolder.h"
|
| #include "platform/heap/Handle.h"
|
| #include "platform/weborigin/ReferrerPolicy.h"
|
| +#include "platform/weborigin/SchemeRegistry.h"
|
| #include "platform/weborigin/SecurityOrigin.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -353,4 +354,40 @@ TEST_F(DocumentTest, StyleVersion)
|
| EXPECT_NE(previousStyleVersion, document().styleVersion());
|
| }
|
|
|
| +TEST_F(DocumentTest, EnforceSandboxFlags)
|
| +{
|
| + RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("http://example.test");
|
| + document().setSecurityOrigin(origin);
|
| + SandboxFlags mask = SandboxNavigation;
|
| + document().enforceSandboxFlags(mask);
|
| + EXPECT_EQ(origin, document().getSecurityOrigin());
|
| + EXPECT_FALSE(document().getSecurityOrigin()->isPotentiallyTrustworthy());
|
| +
|
| + mask |= SandboxOrigin;
|
| + document().enforceSandboxFlags(mask);
|
| + EXPECT_TRUE(document().getSecurityOrigin()->isUnique());
|
| + EXPECT_FALSE(document().getSecurityOrigin()->isPotentiallyTrustworthy());
|
| +
|
| + // A unique origin does not bypass secure context checks unless it
|
| + // is also potentially trustworthy.
|
| + SchemeRegistry::registerURLSchemeBypassingSecureContextCheck("very-special-scheme");
|
| + origin = SecurityOrigin::createFromString("very-special-scheme://example.test");
|
| + document().setSecurityOrigin(origin);
|
| + document().enforceSandboxFlags(mask);
|
| + EXPECT_TRUE(document().getSecurityOrigin()->isUnique());
|
| + EXPECT_FALSE(document().getSecurityOrigin()->isPotentiallyTrustworthy());
|
| +
|
| + SchemeRegistry::registerURLSchemeAsSecure("very-special-scheme");
|
| + document().setSecurityOrigin(origin);
|
| + document().enforceSandboxFlags(mask);
|
| + EXPECT_TRUE(document().getSecurityOrigin()->isUnique());
|
| + EXPECT_TRUE(document().getSecurityOrigin()->isPotentiallyTrustworthy());
|
| +
|
| + origin = SecurityOrigin::createFromString("https://example.test");
|
| + document().setSecurityOrigin(origin);
|
| + document().enforceSandboxFlags(mask);
|
| + EXPECT_TRUE(document().getSecurityOrigin()->isUnique());
|
| + EXPECT_TRUE(document().getSecurityOrigin()->isPotentiallyTrustworthy());
|
| +}
|
| +
|
| } // namespace blink
|
|
|