Oilpan: fix build after r202625.
[chromium-blink-merge.git] / third_party / WebKit / Source / core / fetch / ResourceLoaderOptionsTest.cpp
blob7c8860327ed3accc04d93df6656988ca387ba079
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.
5 #ifndef ResourceLoaderOptionsTest_h
6 #define ResourceLoaderOptionsTest_h
8 #include "config.h"
9 #include "core/fetch/ResourceLoaderOptions.h"
11 #include "wtf/TypeTraits.h"
13 #include <gtest/gtest.h>
15 namespace blink {
17 namespace {
19 TEST(ResourceLoaderOptionsTest, DeepCopy)
21 // Check that the fields of ResourceLoaderOptions are enums,
22 // except for initiatorInfo and securityOrigin.
23 static_assert(WTF::IsEnum<DataBufferingPolicy>::value, "DataBufferingPolicy should be an enum");
24 static_assert(WTF::IsEnum<StoredCredentials>::value, "StoredCredentials should be an enum");
25 static_assert(WTF::IsEnum<CredentialRequest>::value, "CredentialRequest should be an enum");
26 static_assert(WTF::IsEnum<ContentSecurityPolicyDisposition>::value, "ContentSecurityPolicyDisposition should be an enum");
27 static_assert(WTF::IsEnum<RequestInitiatorContext>::value, "RequestInitiatorContext should be an enum");
28 static_assert(WTF::IsEnum<SynchronousPolicy>::value, "SynchronousPolicy should be an enum");
29 static_assert(WTF::IsEnum<CORSEnabled>::value, "CORSEnabled should be an enum");
31 ResourceLoaderOptions original;
32 RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::createFromString("http://www.google.com");
33 original.securityOrigin = securityOrigin;
34 original.initiatorInfo.name = AtomicString("xmlhttprequest");
36 CrossThreadResourceLoaderOptionsData copyData = CrossThreadCopier<ResourceLoaderOptions>::copy(original);
37 ResourceLoaderOptions copy = copyData;
39 // Check that contents are correctly copied to |copyData|
40 EXPECT_EQ(original.dataBufferingPolicy, copyData.dataBufferingPolicy);
41 EXPECT_EQ(original.allowCredentials, copyData.allowCredentials);
42 EXPECT_EQ(original.credentialsRequested, copyData.credentialsRequested);
43 EXPECT_EQ(original.contentSecurityPolicyOption, copyData.contentSecurityPolicyOption);
44 EXPECT_EQ(original.initiatorInfo.name, copyData.initiatorInfo.name);
45 EXPECT_EQ(original.initiatorInfo.position, copyData.initiatorInfo.position);
46 EXPECT_EQ(original.initiatorInfo.startTime, copyData.initiatorInfo.startTime);
47 EXPECT_EQ(original.requestInitiatorContext, copyData.requestInitiatorContext);
48 EXPECT_EQ(original.synchronousPolicy, copyData.synchronousPolicy);
49 EXPECT_EQ(original.corsEnabled, copyData.corsEnabled);
50 EXPECT_EQ(original.securityOrigin->protocol(), copyData.securityOrigin->protocol());
51 EXPECT_EQ(original.securityOrigin->host(), copyData.securityOrigin->host());
52 EXPECT_EQ(original.securityOrigin->domain(), copyData.securityOrigin->domain());
54 // Check that pointers are different between |original| and |copyData|
55 EXPECT_NE(original.initiatorInfo.name.impl(), copyData.initiatorInfo.name.impl());
56 EXPECT_NE(original.securityOrigin.get(), copyData.securityOrigin.get());
57 EXPECT_NE(original.securityOrigin->protocol().impl(), copyData.securityOrigin->protocol().impl());
58 EXPECT_NE(original.securityOrigin->host().impl(), copyData.securityOrigin->host().impl());
59 EXPECT_NE(original.securityOrigin->domain().impl(), copyData.securityOrigin->domain().impl());
61 // Check that contents are correctly copied to |copy|
62 EXPECT_EQ(original.dataBufferingPolicy, copy.dataBufferingPolicy);
63 EXPECT_EQ(original.allowCredentials, copy.allowCredentials);
64 EXPECT_EQ(original.credentialsRequested, copy.credentialsRequested);
65 EXPECT_EQ(original.contentSecurityPolicyOption, copy.contentSecurityPolicyOption);
66 EXPECT_EQ(original.initiatorInfo.name, copy.initiatorInfo.name);
67 EXPECT_EQ(original.initiatorInfo.position, copy.initiatorInfo.position);
68 EXPECT_EQ(original.initiatorInfo.startTime, copy.initiatorInfo.startTime);
69 EXPECT_EQ(original.requestInitiatorContext, copy.requestInitiatorContext);
70 EXPECT_EQ(original.synchronousPolicy, copy.synchronousPolicy);
71 EXPECT_EQ(original.corsEnabled, copy.corsEnabled);
72 EXPECT_EQ(original.securityOrigin->protocol(), copy.securityOrigin->protocol());
73 EXPECT_EQ(original.securityOrigin->host(), copy.securityOrigin->host());
74 EXPECT_EQ(original.securityOrigin->domain(), copy.securityOrigin->domain());
76 // Check that pointers are different between |original| and |copy|
77 // FIXME: When |original| and |copy| are in different threads, then
78 // EXPECT_NE(original.initiatorInfo.name.impl(), copy.initiatorInfo.name.impl());
79 // should pass. However, in the unit test here, these two pointers are the
80 // same, because initiatorInfo.name is AtomicString.
81 EXPECT_NE(original.securityOrigin.get(), copy.securityOrigin.get());
82 EXPECT_NE(original.securityOrigin->protocol().impl(), copy.securityOrigin->protocol().impl());
83 EXPECT_NE(original.securityOrigin->host().impl(), copy.securityOrigin->host().impl());
84 EXPECT_NE(original.securityOrigin->domain().impl(), copy.securityOrigin->domain().impl());
86 // FIXME: The checks for content equality/pointer inequality for
87 // securityOrigin here is not complete (i.e. m_filePath is not checked).
88 // A unit test for SecurityOrigin::isolatedCopy() that covers these checks
89 // should be added.
92 } // namespace
94 } // namespace blink
96 #endif // ResourceLoaderOptionsTest_h