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

Side by Side Diff: Source/web/tests/WebDocumentTest.cpp

Issue 1075163002: Ancestors count towards first-partyness. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Tests. Created 5 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/RuntimeEnabledFeatures.in ('k') | Source/web/tests/data/first_party/empty.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 6
7 #include "public/web/WebDocument.h" 7 #include "public/web/WebDocument.h"
8 8
9 #include "core/CSSPropertyNames.h" 9 #include "core/CSSPropertyNames.h"
10 #include "core/dom/NodeComputedStyle.h" 10 #include "core/dom/NodeComputedStyle.h"
11 #include "core/dom/StyleEngine.h" 11 #include "core/dom/StyleEngine.h"
12 #include "core/frame/LocalFrame.h" 12 #include "core/frame/LocalFrame.h"
13 #include "core/html/HTMLElement.h" 13 #include "core/html/HTMLElement.h"
14 #include "core/style/ComputedStyle.h" 14 #include "core/style/ComputedStyle.h"
15 #include "core/page/Page.h" 15 #include "core/page/Page.h"
16 #include "platform/RuntimeEnabledFeatures.h"
16 #include "platform/graphics/Color.h" 17 #include "platform/graphics/Color.h"
17 #include "platform/testing/URLTestHelpers.h" 18 #include "platform/testing/URLTestHelpers.h"
19 #include "platform/weborigin/SecurityOrigin.h"
18 #include "web/tests/FrameTestHelpers.h" 20 #include "web/tests/FrameTestHelpers.h"
19 #include <gtest/gtest.h> 21 #include <gtest/gtest.h>
20 22
21 namespace { 23 namespace {
22 24
23 using blink::FrameTestHelpers::WebViewHelper; 25 using blink::FrameTestHelpers::WebViewHelper;
24 using blink::URLTestHelpers::toKURL; 26 using blink::URLTestHelpers::toKURL;
25 using namespace blink; 27 using namespace blink;
26 28
27 TEST(WebDocumentTest, InsertStyleSheet) 29 TEST(WebDocumentTest, InsertStyleSheet)
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 199
198 ASSERT_FALSE(coreDoc->isTransitionDocument()); 200 ASSERT_FALSE(coreDoc->isTransitionDocument());
199 201
200 frame->document().setIsTransitionDocument(true); 202 frame->document().setIsTransitionDocument(true);
201 ASSERT_TRUE(coreDoc->isTransitionDocument()); 203 ASSERT_TRUE(coreDoc->isTransitionDocument());
202 204
203 frame->document().setIsTransitionDocument(false); 205 frame->document().setIsTransitionDocument(false);
204 ASSERT_FALSE(coreDoc->isTransitionDocument()); 206 ASSERT_FALSE(coreDoc->isTransitionDocument());
205 } 207 }
206 208
207 } 209 namespace {
210 const char* baseURLOriginA = "http://example.test:0/";
211 const char* baseURLOriginB = "http://not-example.test:0/";
212 const char* emptyFile = "first_party/empty.html";
213 const char* nestedData = "first_party/nested-data.html";
214 const char* nestedOriginA = "first_party/nested-originA.html";
215 const char* nestedOriginAInOriginA = "first_party/nested-originA-in-originA. html";
216 const char* nestedOriginAInOriginB = "first_party/nested-originA-in-originB. html";
217 const char* nestedOriginB = "first_party/nested-originB.html";
218 const char* nestedOriginBInOriginA = "first_party/nested-originB-in-originA. html";
219 const char* nestedOriginBInOriginB = "first_party/nested-originB-in-originB. html";
220 const char* nestedSrcDoc = "first_party/nested-srcdoc.html";
221
222 static KURL toOriginA(const char* file)
223 {
224 return toKURL(std::string(baseURLOriginA) + file);
225 }
226
227 static KURL toOriginB(const char* file)
228 {
229 return toKURL(std::string(baseURLOriginB) + file);
230 }
231 }
232
233 class WebDocumentFirstPartyTest : public ::testing::Test {
234 public:
235 static void SetUpTestCase();
236
237 protected:
238 void load(const char*);
239 Document* topDocument() const;
240 Document* nestedDocument() const;
241 Document* nestedNestedDocument() const;
242
243 WebViewHelper m_webViewHelper;
244 };
245
246 void WebDocumentFirstPartyTest::SetUpTestCase()
247 {
248 URLTestHelpers::registerMockedURLLoad(toOriginA(emptyFile), WebString::fromU TF8(emptyFile));
249 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedData), WebString::from UTF8(nestedData));
250 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginA), WebString::f romUTF8(nestedOriginA));
251 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginAInOriginA), Web String::fromUTF8(nestedOriginAInOriginA));
252 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginAInOriginB), Web String::fromUTF8(nestedOriginAInOriginB));
253 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginB), WebString::f romUTF8(nestedOriginB));
254 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginBInOriginA), Web String::fromUTF8(nestedOriginBInOriginA));
255 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedOriginBInOriginB), Web String::fromUTF8(nestedOriginBInOriginB));
256 URLTestHelpers::registerMockedURLLoad(toOriginA(nestedSrcDoc), WebString::fr omUTF8(nestedSrcDoc));
257
258 URLTestHelpers::registerMockedURLLoad(toOriginB(emptyFile), WebString::fromU TF8(emptyFile));
259 URLTestHelpers::registerMockedURLLoad(toOriginB(nestedOriginA), WebString::f romUTF8(nestedOriginA));
260 URLTestHelpers::registerMockedURLLoad(toOriginB(nestedOriginB), WebString::f romUTF8(nestedOriginB));
261 }
262
263 void WebDocumentFirstPartyTest::load(const char* file)
264 {
265 m_webViewHelper.initializeAndLoad(std::string(baseURLOriginA) + file);
266 }
267
268 Document* WebDocumentFirstPartyTest::topDocument() const
269 {
270 return toLocalFrame(m_webViewHelper.webViewImpl()->page()->mainFrame())->doc ument();
271 }
272
273 Document* WebDocumentFirstPartyTest::nestedDocument() const
274 {
275 return toLocalFrame(m_webViewHelper.webViewImpl()->page()->mainFrame()->tree ().firstChild())->document();
276 }
277
278 Document* WebDocumentFirstPartyTest::nestedNestedDocument() const
279 {
280 return toLocalFrame(m_webViewHelper.webViewImpl()->page()->mainFrame()->tree ().firstChild()->tree().firstChild())->document();
281 }
282
283 TEST_F(WebDocumentFirstPartyTest, Empty)
284 {
285 load(emptyFile);
286
287 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
288 ASSERT_EQ(toOriginA(emptyFile), topDocument()->firstPartyForCookies());
289
290 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
291 ASSERT_EQ(toOriginA(emptyFile), topDocument()->firstPartyForCookies());
292 }
293
294 TEST_F(WebDocumentFirstPartyTest, NestedOriginA)
295 {
296 load(nestedOriginA);
297
298 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
299 ASSERT_EQ(toOriginA(nestedOriginA), topDocument()->firstPartyForCookies());
300 ASSERT_EQ(toOriginA(nestedOriginA), nestedDocument()->firstPartyForCookies() );
301
302 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
303 ASSERT_EQ(toOriginA(nestedOriginA), topDocument()->firstPartyForCookies());
304 ASSERT_EQ(toOriginA(nestedOriginA), nestedDocument()->firstPartyForCookies() );
305 }
306
307 TEST_F(WebDocumentFirstPartyTest, NestedOriginAInOriginA)
308 {
309 load(nestedOriginAInOriginA);
310
311 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
312 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), topDocument()->firstPartyForCoo kies());
313 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedDocument()->firstPartyFor Cookies());
314 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedNestedDocument()->firstPa rtyForCookies());
315
316 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
317 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), topDocument()->firstPartyForCoo kies());
318 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedDocument()->firstPartyFor Cookies());
319 ASSERT_EQ(toOriginA(nestedOriginAInOriginA), nestedNestedDocument()->firstPa rtyForCookies());
320 }
321
322 TEST_F(WebDocumentFirstPartyTest, NestedOriginAInOriginB)
323 {
324 load(nestedOriginAInOriginB);
325
326 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
327 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), topDocument()->firstPartyForCoo kies());
328 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), nestedDocument()->firstPartyFor Cookies());
329 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), nestedNestedDocument()->firstPa rtyForCookies());
330
331 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
332 ASSERT_EQ(toOriginA(nestedOriginAInOriginB), topDocument()->firstPartyForCoo kies());
333 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedDocument()->f irstPartyForCookies());
334 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedNestedDocumen t()->firstPartyForCookies());
335 }
336
337 TEST_F(WebDocumentFirstPartyTest, NestedOriginB)
338 {
339 load(nestedOriginB);
340
341 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
342 ASSERT_EQ(toOriginA(nestedOriginB), topDocument()->firstPartyForCookies());
343 ASSERT_EQ(toOriginA(nestedOriginB), nestedDocument()->firstPartyForCookies() );
344
345 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
346 ASSERT_EQ(toOriginA(nestedOriginB), topDocument()->firstPartyForCookies());
347 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedDocument()->f irstPartyForCookies());
348 }
349
350 TEST_F(WebDocumentFirstPartyTest, NestedOriginBInOriginA)
351 {
352 load(nestedOriginBInOriginA);
353
354 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
355 ASSERT_EQ(toOriginA(nestedOriginBInOriginA), topDocument()->firstPartyForCoo kies());
356 ASSERT_EQ(toOriginA(nestedOriginBInOriginA), nestedDocument()->firstPartyFor Cookies());
357 ASSERT_EQ(toOriginA(nestedOriginBInOriginA), nestedNestedDocument()->firstPa rtyForCookies());
358
359 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
360 ASSERT_EQ(toOriginA(nestedOriginBInOriginA), topDocument()->firstPartyForCoo kies());
361 ASSERT_EQ(toOriginA(nestedOriginBInOriginA), nestedDocument()->firstPartyFor Cookies());
362 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedNestedDocumen t()->firstPartyForCookies());
363 }
364
365 TEST_F(WebDocumentFirstPartyTest, NestedOriginBInOriginB)
366 {
367 load(nestedOriginBInOriginB);
368
369 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
370 ASSERT_EQ(toOriginA(nestedOriginBInOriginB), topDocument()->firstPartyForCoo kies());
371 ASSERT_EQ(toOriginA(nestedOriginBInOriginB), nestedDocument()->firstPartyFor Cookies());
372 ASSERT_EQ(toOriginA(nestedOriginBInOriginB), nestedNestedDocument()->firstPa rtyForCookies());
373
374 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
375 ASSERT_EQ(toOriginA(nestedOriginBInOriginB), topDocument()->firstPartyForCoo kies());
376 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedDocument()->f irstPartyForCookies());
377 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedNestedDocumen t()->firstPartyForCookies());
378 }
379
380 TEST_F(WebDocumentFirstPartyTest, NestedSrcdoc)
381 {
382 load(nestedSrcDoc);
383
384 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
385 ASSERT_EQ(toOriginA(nestedSrcDoc), topDocument()->firstPartyForCookies());
386 ASSERT_EQ(toOriginA(nestedSrcDoc), nestedDocument()->firstPartyForCookies()) ;
387
388 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
389 ASSERT_EQ(toOriginA(nestedSrcDoc), topDocument()->firstPartyForCookies());
390 ASSERT_EQ(toOriginA(nestedSrcDoc), nestedDocument()->firstPartyForCookies()) ;
391 }
392
393 TEST_F(WebDocumentFirstPartyTest, NestedData)
394 {
395 load(nestedData);
396
397 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(false);
398 ASSERT_EQ(toOriginA(nestedData), topDocument()->firstPartyForCookies());
399 ASSERT_EQ(toOriginA(nestedData), nestedDocument()->firstPartyForCookies());
400
401 RuntimeEnabledFeatures::setFirstPartyIncludesAncestorsEnabled(true);
402 ASSERT_EQ(toOriginA(nestedData), topDocument()->firstPartyForCookies());
403 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedDocument()->f irstPartyForCookies());
404 }
405 }
OLDNEW
« no previous file with comments | « Source/platform/RuntimeEnabledFeatures.in ('k') | Source/web/tests/data/first_party/empty.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698