OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "public/web/WebDocument.h" | 6 #include "public/web/WebDocument.h" |
7 | 7 |
8 #include "core/CSSPropertyNames.h" | 8 #include "core/CSSPropertyNames.h" |
9 #include "core/HTMLNames.h" | 9 #include "core/HTMLNames.h" |
10 #include "core/dom/NodeComputedStyle.h" | 10 #include "core/dom/NodeComputedStyle.h" |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 133 |
134 // Crossorigin set to 'use-credentials' should trigger using credentials. | 134 // Crossorigin set to 'use-credentials' should trigger using credentials. |
135 linkManifest->setAttribute(HTMLNames::crossoriginAttr, "use-credentials"); | 135 linkManifest->setAttribute(HTMLNames::crossoriginAttr, "use-credentials"); |
136 ASSERT_TRUE(webDoc.manifestUseCredentials()); | 136 ASSERT_TRUE(webDoc.manifestUseCredentials()); |
137 } | 137 } |
138 | 138 |
139 namespace { | 139 namespace { |
140 | 140 |
141 const char* baseURLOriginA = "http://example.test:0/"; | 141 const char* baseURLOriginA = "http://example.test:0/"; |
142 const char* baseURLOriginSubA = "http://subdomain.example.test:0/"; | 142 const char* baseURLOriginSubA = "http://subdomain.example.test:0/"; |
| 143 const char* baseURLOriginSecureA = "https://example.test:0/"; |
143 const char* baseURLOriginB = "http://not-example.test:0/"; | 144 const char* baseURLOriginB = "http://not-example.test:0/"; |
144 const char* emptyFile = "first_party/empty.html"; | 145 const char* emptyFile = "first_party/empty.html"; |
145 const char* nestedData = "first_party/nested-data.html"; | 146 const char* nestedData = "first_party/nested-data.html"; |
146 const char* nestedOriginA = "first_party/nested-originA.html"; | 147 const char* nestedOriginA = "first_party/nested-originA.html"; |
147 const char* nestedOriginSubA = "first_party/nested-originSubA.html"; | 148 const char* nestedOriginSubA = "first_party/nested-originSubA.html"; |
| 149 const char* nestedOriginSecureA = "first_party/nested-originSecureA.html"; |
148 const char* nestedOriginAInOriginA = "first_party/nested-originA-in-originA.html
"; | 150 const char* nestedOriginAInOriginA = "first_party/nested-originA-in-originA.html
"; |
149 const char* nestedOriginAInOriginB = "first_party/nested-originA-in-originB.html
"; | 151 const char* nestedOriginAInOriginB = "first_party/nested-originA-in-originB.html
"; |
150 const char* nestedOriginB = "first_party/nested-originB.html"; | 152 const char* nestedOriginB = "first_party/nested-originB.html"; |
151 const char* nestedOriginBInOriginA = "first_party/nested-originB-in-originA.html
"; | 153 const char* nestedOriginBInOriginA = "first_party/nested-originB-in-originA.html
"; |
152 const char* nestedOriginBInOriginB = "first_party/nested-originB-in-originB.html
"; | 154 const char* nestedOriginBInOriginB = "first_party/nested-originB-in-originB.html
"; |
153 const char* nestedSrcDoc = "first_party/nested-srcdoc.html"; | 155 const char* nestedSrcDoc = "first_party/nested-srcdoc.html"; |
154 | 156 |
155 KURL toOriginA(const char* file) | 157 KURL toOriginA(const char* file) |
156 { | 158 { |
157 return toKURL(std::string(baseURLOriginA) + file); | 159 return toKURL(std::string(baseURLOriginA) + file); |
158 } | 160 } |
159 | 161 |
160 KURL toOriginSubA(const char* file) | 162 KURL toOriginSubA(const char* file) |
161 { | 163 { |
162 return toKURL(std::string(baseURLOriginSubA) + file); | 164 return toKURL(std::string(baseURLOriginSubA) + file); |
163 } | 165 } |
164 | 166 |
| 167 KURL toOriginSecureA(const char* file) |
| 168 { |
| 169 return toKURL(std::string(baseURLOriginSecureA) + file); |
| 170 } |
| 171 |
165 KURL toOriginB(const char* file) | 172 KURL toOriginB(const char* file) |
166 { | 173 { |
167 return toKURL(std::string(baseURLOriginB) + file); | 174 return toKURL(std::string(baseURLOriginB) + file); |
168 } | 175 } |
169 | 176 |
170 } // anonymous namespace | 177 } // anonymous namespace |
171 | 178 |
172 class WebDocumentFirstPartyTest : public WebDocumentTest { | 179 class WebDocumentFirstPartyTest : public WebDocumentTest { |
173 public: | 180 public: |
174 static void SetUpTestCase(); | 181 static void SetUpTestCase(); |
175 | 182 |
176 protected: | 183 protected: |
177 void load(const char*); | 184 void load(const char*); |
178 Document* nestedDocument() const; | 185 Document* nestedDocument() const; |
179 Document* nestedNestedDocument() const; | 186 Document* nestedNestedDocument() const; |
180 }; | 187 }; |
181 | 188 |
182 void WebDocumentFirstPartyTest::SetUpTestCase() | 189 void WebDocumentFirstPartyTest::SetUpTestCase() |
183 { | 190 { |
184 URLTestHelpers::registerMockedURLLoad(toOriginA(emptyFile), WebString::fromU
TF8(emptyFile)); | 191 URLTestHelpers::registerMockedURLLoad(toOriginA(emptyFile), WebString::fromU
TF8(emptyFile)); |
185 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedData), WebString::from
UTF8(nestedData)); | 192 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedData), WebString::from
UTF8(nestedData)); |
186 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginA), WebString::f
romUTF8(nestedOriginA)); | 193 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginA), WebString::f
romUTF8(nestedOriginA)); |
187 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginSubA), WebString
::fromUTF8(nestedOriginSubA)); | 194 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginSubA), WebString
::fromUTF8(nestedOriginSubA)); |
| 195 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginSecureA), WebStr
ing::fromUTF8(nestedOriginSecureA)); |
188 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginAInOriginA), Web
String::fromUTF8(nestedOriginAInOriginA)); | 196 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginAInOriginA), Web
String::fromUTF8(nestedOriginAInOriginA)); |
189 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginAInOriginB), Web
String::fromUTF8(nestedOriginAInOriginB)); | 197 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginAInOriginB), Web
String::fromUTF8(nestedOriginAInOriginB)); |
190 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginB), WebString::f
romUTF8(nestedOriginB)); | 198 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginB), WebString::f
romUTF8(nestedOriginB)); |
191 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginBInOriginA), Web
String::fromUTF8(nestedOriginBInOriginA)); | 199 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginBInOriginA), Web
String::fromUTF8(nestedOriginBInOriginA)); |
192 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginBInOriginB), Web
String::fromUTF8(nestedOriginBInOriginB)); | 200 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginBInOriginB), Web
String::fromUTF8(nestedOriginBInOriginB)); |
193 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedSrcDoc), WebString::fr
omUTF8(nestedSrcDoc)); | 201 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedSrcDoc), WebString::fr
omUTF8(nestedSrcDoc)); |
194 | 202 |
195 URLTestHelpers::registerMockedURLLoad(toOriginSubA(emptyFile), WebString::fr
omUTF8(emptyFile)); | 203 URLTestHelpers::registerMockedURLLoad(toOriginSubA(emptyFile), WebString::fr
omUTF8(emptyFile)); |
| 204 URLTestHelpers::registerMockedURLLoad(toOriginSecureA(emptyFile), WebString:
:fromUTF8(emptyFile)); |
196 | 205 |
197 URLTestHelpers::registerMockedURLLoad(toOriginB(emptyFile), WebString::fromU
TF8(emptyFile)); | 206 URLTestHelpers::registerMockedURLLoad(toOriginB(emptyFile), WebString::fromU
TF8(emptyFile)); |
198 URLTestHelpers::registerMockedURLLoad(toOriginB(nestedOriginA), WebString::f
romUTF8(nestedOriginA)); | 207 URLTestHelpers::registerMockedURLLoad(toOriginB(nestedOriginA), WebString::f
romUTF8(nestedOriginA)); |
199 URLTestHelpers::registerMockedURLLoad(toOriginB(nestedOriginB), WebString::f
romUTF8(nestedOriginB)); | 208 URLTestHelpers::registerMockedURLLoad(toOriginB(nestedOriginB), WebString::f
romUTF8(nestedOriginB)); |
200 } | 209 } |
201 | 210 |
202 void WebDocumentFirstPartyTest::load(const char* file) | 211 void WebDocumentFirstPartyTest::load(const char* file) |
203 { | 212 { |
204 m_webViewHelper.initializeAndLoad(std::string(baseURLOriginA) + file); | 213 m_webViewHelper.initializeAndLoad(std::string(baseURLOriginA) + file); |
205 } | 214 } |
(...skipping 24 matching lines...) Expand all Loading... |
230 } | 239 } |
231 | 240 |
232 TEST_F(WebDocumentFirstPartyTest, NestedOriginSubA) | 241 TEST_F(WebDocumentFirstPartyTest, NestedOriginSubA) |
233 { | 242 { |
234 load(nestedOriginSubA); | 243 load(nestedOriginSubA); |
235 | 244 |
236 ASSERT_EQ(toOriginA(nestedOriginSubA), topDocument()->firstPartyForCookies()
); | 245 ASSERT_EQ(toOriginA(nestedOriginSubA), topDocument()->firstPartyForCookies()
); |
237 ASSERT_EQ(toOriginA(nestedOriginSubA), nestedDocument()->firstPartyForCookie
s()); | 246 ASSERT_EQ(toOriginA(nestedOriginSubA), nestedDocument()->firstPartyForCookie
s()); |
238 } | 247 } |
239 | 248 |
| 249 TEST_F(WebDocumentFirstPartyTest, NestedOriginSecureA) |
| 250 { |
| 251 load(nestedOriginSecureA); |
| 252 |
| 253 ASSERT_EQ(toOriginA(nestedOriginSecureA), topDocument()->firstPartyForCookie
s()); |
| 254 ASSERT_EQ(toOriginA(nestedOriginSecureA), nestedDocument()->firstPartyForCoo
kies()); |
| 255 } |
| 256 |
240 TEST_F(WebDocumentFirstPartyTest, NestedOriginAInOriginA) | 257 TEST_F(WebDocumentFirstPartyTest, NestedOriginAInOriginA) |
241 { | 258 { |
242 load(nestedOriginAInOriginA); | 259 load(nestedOriginAInOriginA); |
243 | 260 |
244 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), topDocument()->firstPartyForCoo
kies()); | 261 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), topDocument()->firstPartyForCoo
kies()); |
245 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedDocument()->firstPartyFor
Cookies()); | 262 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedDocument()->firstPartyFor
Cookies()); |
246 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedNestedDocument()->firstPa
rtyForCookies()); | 263 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedNestedDocument()->firstPa
rtyForCookies()); |
247 } | 264 } |
248 | 265 |
249 TEST_F(WebDocumentFirstPartyTest, NestedOriginAInOriginB) | 266 TEST_F(WebDocumentFirstPartyTest, NestedOriginAInOriginB) |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 load(nestedOriginAInOriginB); | 319 load(nestedOriginAInOriginB); |
303 | 320 |
304 SchemeRegistry::registerURLSchemeAsFirstPartyWhenTopLevel("http"); | 321 SchemeRegistry::registerURLSchemeAsFirstPartyWhenTopLevel("http"); |
305 | 322 |
306 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), topDocument()->firstPartyForCoo
kies()); | 323 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), topDocument()->firstPartyForCoo
kies()); |
307 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), nestedDocument()->firstPartyFor
Cookies()); | 324 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), nestedDocument()->firstPartyFor
Cookies()); |
308 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), nestedNestedDocument()->firstPa
rtyForCookies()); | 325 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), nestedNestedDocument()->firstPa
rtyForCookies()); |
309 } | 326 } |
310 | 327 |
311 } // namespace blink | 328 } // namespace blink |
OLD | NEW |