Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / fetch / ResourceLoaderOptionsTest.cpp
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, DataBufferingPolicy_is_enum);
24     COMPILE_ASSERT(WTF::IsConvertibleToInteger<StoredCredentials>::value, StoredCredentials_is_enum);
25     COMPILE_ASSERT(WTF::IsConvertibleToInteger<CredentialRequest>::value, CredentialRequest_is_enum);
26     COMPILE_ASSERT(WTF::IsConvertibleToInteger<ContentSecurityPolicyCheck>::value, ContentSecurityPolicyCheck_is_enum);
27     COMPILE_ASSERT(WTF::IsConvertibleToInteger<RequestInitiatorContext>::value, RequestInitiatorContext_is_enum);
28     COMPILE_ASSERT(WTF::IsConvertibleToInteger<MixedContentBlockingTreatment>::value, MixedContentBlockingTreatment_is_enum);
29     COMPILE_ASSERT(WTF::IsConvertibleToInteger<SynchronousPolicy>::value, SynchronousPolicy_is_enum);
30     COMPILE_ASSERT(WTF::IsConvertibleToInteger<CORSEnabled>::value, CORSEnabled_is_enum);
31
32     ResourceLoaderOptions original;
33     RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::createFromString("http://www.google.com");
34     original.securityOrigin = securityOrigin;
35     original.initiatorInfo.name = AtomicString("xmlhttprequest");
36
37     CrossThreadResourceLoaderOptionsData copyData = CrossThreadCopier<ResourceLoaderOptions>::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.contentSecurityPolicyOption);
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.mixedContentBlockingTreatment);
50     EXPECT_EQ(original.synchronousPolicy, copyData.synchronousPolicy);
51     EXPECT_EQ(original.corsEnabled, copyData.corsEnabled);
52     EXPECT_EQ(original.securityOrigin->protocol(), copyData.securityOrigin->protocol());
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.impl());
58     EXPECT_NE(original.securityOrigin.get(), copyData.securityOrigin.get());
59     EXPECT_NE(original.securityOrigin->protocol().impl(), copyData.securityOrigin->protocol().impl());
60     EXPECT_NE(original.securityOrigin->host().impl(), copyData.securityOrigin->host().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.contentSecurityPolicyOption);
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.mixedContentBlockingTreatment);
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.impl());
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->protocol().impl());
86     EXPECT_NE(original.securityOrigin->host().impl(), copy.securityOrigin->host().impl());
87     EXPECT_NE(original.securityOrigin->domain().impl(), copy.securityOrigin->domain().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