Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Side by Side Diff: Source/core/fetch/ResourceLoaderOptionsTest.cpp

Issue 583903003: [Thread-safe] Take isolatedCopy of SecurityOrigin in ResourceLoaderOptions when passed across thread (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add unit tests. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/fetch/ResourceLoaderOptions.h ('k') | Source/wtf/text/TextPosition.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 <gmock/gmock.h>
abarth-chromium 2014/10/16 16:21:31 Why do we need gmock?
hiroshige 2014/10/20 05:19:01 Removed.
14 #include <gtest/gtest.h>
15
16 namespace blink {
17
18 namespace {
19
20 TEST(ResourceLoaderOptionsTest, DeepCopy)
21 {
22 // Check that the fields of ResourceLoaderOptions are enums,
23 // except for initiatorInfo and securityOrigin.
24 COMPILE_ASSERT(WTF::IsConvertibleToInteger<DataBufferingPolicy>::value, Data BufferingPolicy_is_enum);
25 COMPILE_ASSERT(WTF::IsConvertibleToInteger<StoredCredentials>::value, Stored Credentials_is_enum);
26 COMPILE_ASSERT(WTF::IsConvertibleToInteger<CredentialRequest>::value, Creden tialRequest_is_enum);
27 COMPILE_ASSERT(WTF::IsConvertibleToInteger<ContentSecurityPolicyCheck>::valu e, ContentSecurityPolicyCheck_is_enum);
28 COMPILE_ASSERT(WTF::IsConvertibleToInteger<RequestInitiatorContext>::value, RequestInitiatorContext_is_enum);
29 COMPILE_ASSERT(WTF::IsConvertibleToInteger<MixedContentBlockingTreatment>::v alue, MixedContentBlockingTreatment_is_enum);
30 COMPILE_ASSERT(WTF::IsConvertibleToInteger<SynchronousPolicy>::value, Synchr onousPolicy_is_enum);
31 COMPILE_ASSERT(WTF::IsConvertibleToInteger<CORSEnabled>::value, CORSEnabled_ is_enum);
32
33 ResourceLoaderOptions original;
34 RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::createFromString("ht tp://www.google.com");
35 original.securityOrigin = securityOrigin;
36 original.initiatorInfo.name = AtomicString("xmlhttprequest");
37
38 CrossThreadResourceLoaderOptionsData copyData = CrossThreadCopier<ResourceLo aderOptions>::copy(original);
39 ResourceLoaderOptions copy = copyData;
40
41 // Check that contents are correctly copied to |copyData|
42 EXPECT_EQ(original.dataBufferingPolicy, copyData.dataBufferingPolicy);
43 EXPECT_EQ(original.allowCredentials, copyData.allowCredentials);
44 EXPECT_EQ(original.credentialsRequested, copyData.credentialsRequested);
45 EXPECT_EQ(original.contentSecurityPolicyOption, copyData.contentSecurityPoli cyOption);
46 EXPECT_EQ(original.initiatorInfo.name, copyData.initiatorInfo.name);
47 EXPECT_EQ(original.initiatorInfo.position, copyData.initiatorInfo.position);
48 EXPECT_EQ(original.initiatorInfo.startTime, copyData.initiatorInfo.startTime );
49 EXPECT_EQ(original.requestInitiatorContext, copyData.requestInitiatorContext );
50 EXPECT_EQ(original.mixedContentBlockingTreatment, copyData.mixedContentBlock ingTreatment);
51 EXPECT_EQ(original.synchronousPolicy, copyData.synchronousPolicy);
52 EXPECT_EQ(original.corsEnabled, copyData.corsEnabled);
53 EXPECT_EQ(original.securityOrigin->protocol(), copyData.securityOrigin->prot ocol());
54 EXPECT_EQ(original.securityOrigin->host(), copyData.securityOrigin->host());
55 EXPECT_EQ(original.securityOrigin->domain(), copyData.securityOrigin->domain ());
56
57 // Check that pointers are different between |original| and |copyData|
58 EXPECT_NE(original.initiatorInfo.name.impl(), copyData.initiatorInfo.name.im pl());
59 EXPECT_NE(original.securityOrigin.get(), copyData.securityOrigin.get());
60 EXPECT_NE(original.securityOrigin->protocol().impl(), copyData.securityOrigi n->protocol().impl());
61 EXPECT_NE(original.securityOrigin->host().impl(), copyData.securityOrigin->h ost().impl());
62 EXPECT_NE(original.securityOrigin->domain().impl(), copyData.securityOrigin- >domain().impl());
63
64 // Check that contents are correctly copied to |copy|
65 EXPECT_EQ(original.dataBufferingPolicy, copy.dataBufferingPolicy);
66 EXPECT_EQ(original.allowCredentials, copy.allowCredentials);
67 EXPECT_EQ(original.credentialsRequested, copy.credentialsRequested);
68 EXPECT_EQ(original.contentSecurityPolicyOption, copy.contentSecurityPolicyOp tion);
69 EXPECT_EQ(original.initiatorInfo.name, copy.initiatorInfo.name);
70 EXPECT_EQ(original.initiatorInfo.position, copy.initiatorInfo.position);
71 EXPECT_EQ(original.initiatorInfo.startTime, copy.initiatorInfo.startTime);
72 EXPECT_EQ(original.requestInitiatorContext, copy.requestInitiatorContext);
73 EXPECT_EQ(original.mixedContentBlockingTreatment, copy.mixedContentBlockingT reatment);
74 EXPECT_EQ(original.synchronousPolicy, copy.synchronousPolicy);
75 EXPECT_EQ(original.corsEnabled, copy.corsEnabled);
76 EXPECT_EQ(original.securityOrigin->protocol(), copy.securityOrigin->protocol ());
77 EXPECT_EQ(original.securityOrigin->host(), copy.securityOrigin->host());
78 EXPECT_EQ(original.securityOrigin->domain(), copy.securityOrigin->domain());
79
80 // Check that pointers are different between |original| and |copy|
81 // FIXME: When |original| and |copy| are in different threads, then
82 // EXPECT_NE(original.initiatorInfo.name.impl(), copy.initiatorInfo.name.imp l());
83 // should pass. However, in the unit test here, these two pointers are the
84 // same, because initiatorInfo.name is AtomicString.
85 EXPECT_NE(original.securityOrigin.get(), copy.securityOrigin.get());
86 EXPECT_NE(original.securityOrigin->protocol().impl(), copy.securityOrigin->p rotocol().impl());
87 EXPECT_NE(original.securityOrigin->host().impl(), copy.securityOrigin->host( ).impl());
88 EXPECT_NE(original.securityOrigin->domain().impl(), copy.securityOrigin->dom ain().impl());
89
90 // FIXME: The checks for content equality/pointer inequality for
91 // securityOrigin here is not complete (i.e. m_filePath is not checked).
92 // A unit test for SecurityOrigin::isolatedCopy() that covers these checks
93 // should be added.
94 }
95
96 } // namespace
97
98 } // namespace blink
99
100 #endif // ResourceLoaderOptionsTest_h
OLDNEW
« no previous file with comments | « Source/core/fetch/ResourceLoaderOptions.h ('k') | Source/wtf/text/TextPosition.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698