OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef ResourceLoaderOptionsTest_h |
| 6 #define ResourceLoaderOptionsTest_h |
| 7 |
| 8 #include "config.h" |
| 9 #include "core/fetch/ResourceLoaderOptions.h" |
| 10 |
| 11 #include "wtf/TypeTraits.h" |
| 12 |
| 13 #include <gtest/gtest.h> |
| 14 |
| 15 namespace blink { |
| 16 |
| 17 namespace { |
| 18 |
| 19 TEST(ResourceLoaderOptionsTest, DeepCopy) |
| 20 { |
| 21 // Check that the fields of ResourceLoaderOptions are enums, |
| 22 // except for initiatorInfo and securityOrigin. |
| 23 COMPILE_ASSERT(WTF::IsConvertibleToInteger<DataBufferingPolicy>::value, Data
BufferingPolicy_is_enum); |
| 24 COMPILE_ASSERT(WTF::IsConvertibleToInteger<StoredCredentials>::value, Stored
Credentials_is_enum); |
| 25 COMPILE_ASSERT(WTF::IsConvertibleToInteger<CredentialRequest>::value, Creden
tialRequest_is_enum); |
| 26 COMPILE_ASSERT(WTF::IsConvertibleToInteger<ContentSecurityPolicyCheck>::valu
e, ContentSecurityPolicyCheck_is_enum); |
| 27 COMPILE_ASSERT(WTF::IsConvertibleToInteger<RequestInitiatorContext>::value,
RequestInitiatorContext_is_enum); |
| 28 COMPILE_ASSERT(WTF::IsConvertibleToInteger<MixedContentBlockingTreatment>::v
alue, MixedContentBlockingTreatment_is_enum); |
| 29 COMPILE_ASSERT(WTF::IsConvertibleToInteger<SynchronousPolicy>::value, Synchr
onousPolicy_is_enum); |
| 30 COMPILE_ASSERT(WTF::IsConvertibleToInteger<CORSEnabled>::value, CORSEnabled_
is_enum); |
| 31 |
| 32 ResourceLoaderOptions original; |
| 33 RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::createFromString("ht
tp://www.google.com"); |
| 34 original.securityOrigin = securityOrigin; |
| 35 original.initiatorInfo.name = AtomicString("xmlhttprequest"); |
| 36 |
| 37 CrossThreadResourceLoaderOptionsData copyData = CrossThreadCopier<ResourceLo
aderOptions>::copy(original); |
| 38 ResourceLoaderOptions copy = copyData; |
| 39 |
| 40 // Check that contents are correctly copied to |copyData| |
| 41 EXPECT_EQ(original.dataBufferingPolicy, copyData.dataBufferingPolicy); |
| 42 EXPECT_EQ(original.allowCredentials, copyData.allowCredentials); |
| 43 EXPECT_EQ(original.credentialsRequested, copyData.credentialsRequested); |
| 44 EXPECT_EQ(original.contentSecurityPolicyOption, copyData.contentSecurityPoli
cyOption); |
| 45 EXPECT_EQ(original.initiatorInfo.name, copyData.initiatorInfo.name); |
| 46 EXPECT_EQ(original.initiatorInfo.position, copyData.initiatorInfo.position); |
| 47 EXPECT_EQ(original.initiatorInfo.startTime, copyData.initiatorInfo.startTime
); |
| 48 EXPECT_EQ(original.requestInitiatorContext, copyData.requestInitiatorContext
); |
| 49 EXPECT_EQ(original.mixedContentBlockingTreatment, copyData.mixedContentBlock
ingTreatment); |
| 50 EXPECT_EQ(original.synchronousPolicy, copyData.synchronousPolicy); |
| 51 EXPECT_EQ(original.corsEnabled, copyData.corsEnabled); |
| 52 EXPECT_EQ(original.securityOrigin->protocol(), copyData.securityOrigin->prot
ocol()); |
| 53 EXPECT_EQ(original.securityOrigin->host(), copyData.securityOrigin->host()); |
| 54 EXPECT_EQ(original.securityOrigin->domain(), copyData.securityOrigin->domain
()); |
| 55 |
| 56 // Check that pointers are different between |original| and |copyData| |
| 57 EXPECT_NE(original.initiatorInfo.name.impl(), copyData.initiatorInfo.name.im
pl()); |
| 58 EXPECT_NE(original.securityOrigin.get(), copyData.securityOrigin.get()); |
| 59 EXPECT_NE(original.securityOrigin->protocol().impl(), copyData.securityOrigi
n->protocol().impl()); |
| 60 EXPECT_NE(original.securityOrigin->host().impl(), copyData.securityOrigin->h
ost().impl()); |
| 61 EXPECT_NE(original.securityOrigin->domain().impl(), copyData.securityOrigin-
>domain().impl()); |
| 62 |
| 63 // Check that contents are correctly copied to |copy| |
| 64 EXPECT_EQ(original.dataBufferingPolicy, copy.dataBufferingPolicy); |
| 65 EXPECT_EQ(original.allowCredentials, copy.allowCredentials); |
| 66 EXPECT_EQ(original.credentialsRequested, copy.credentialsRequested); |
| 67 EXPECT_EQ(original.contentSecurityPolicyOption, copy.contentSecurityPolicyOp
tion); |
| 68 EXPECT_EQ(original.initiatorInfo.name, copy.initiatorInfo.name); |
| 69 EXPECT_EQ(original.initiatorInfo.position, copy.initiatorInfo.position); |
| 70 EXPECT_EQ(original.initiatorInfo.startTime, copy.initiatorInfo.startTime); |
| 71 EXPECT_EQ(original.requestInitiatorContext, copy.requestInitiatorContext); |
| 72 EXPECT_EQ(original.mixedContentBlockingTreatment, copy.mixedContentBlockingT
reatment); |
| 73 EXPECT_EQ(original.synchronousPolicy, copy.synchronousPolicy); |
| 74 EXPECT_EQ(original.corsEnabled, copy.corsEnabled); |
| 75 EXPECT_EQ(original.securityOrigin->protocol(), copy.securityOrigin->protocol
()); |
| 76 EXPECT_EQ(original.securityOrigin->host(), copy.securityOrigin->host()); |
| 77 EXPECT_EQ(original.securityOrigin->domain(), copy.securityOrigin->domain()); |
| 78 |
| 79 // Check that pointers are different between |original| and |copy| |
| 80 // FIXME: When |original| and |copy| are in different threads, then |
| 81 // EXPECT_NE(original.initiatorInfo.name.impl(), copy.initiatorInfo.name.imp
l()); |
| 82 // should pass. However, in the unit test here, these two pointers are the |
| 83 // same, because initiatorInfo.name is AtomicString. |
| 84 EXPECT_NE(original.securityOrigin.get(), copy.securityOrigin.get()); |
| 85 EXPECT_NE(original.securityOrigin->protocol().impl(), copy.securityOrigin->p
rotocol().impl()); |
| 86 EXPECT_NE(original.securityOrigin->host().impl(), copy.securityOrigin->host(
).impl()); |
| 87 EXPECT_NE(original.securityOrigin->domain().impl(), copy.securityOrigin->dom
ain().impl()); |
| 88 |
| 89 // FIXME: The checks for content equality/pointer inequality for |
| 90 // securityOrigin here is not complete (i.e. m_filePath is not checked). |
| 91 // A unit test for SecurityOrigin::isolatedCopy() that covers these checks |
| 92 // should be added. |
| 93 } |
| 94 |
| 95 } // namespace |
| 96 |
| 97 } // namespace blink |
| 98 |
| 99 #endif // ResourceLoaderOptionsTest_h |
OLD | NEW |