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

Side by Side Diff: url/origin_unittest.cc

Issue 2714813003: Add an identity component for unique/opaque url::Origins.
Patch Set: . Created 3 years, 10 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
« url/origin.cc ('K') | « url/origin.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 23 matching lines...) Expand all
34 EXPECT_EQ(a_parsed.ref.begin, b_parsed.ref.begin); 34 EXPECT_EQ(a_parsed.ref.begin, b_parsed.ref.begin);
35 EXPECT_EQ(a_parsed.ref.len, b_parsed.ref.len); 35 EXPECT_EQ(a_parsed.ref.len, b_parsed.ref.len);
36 } 36 }
37 37
38 TEST(OriginTest, UniqueOriginComparison) { 38 TEST(OriginTest, UniqueOriginComparison) {
39 url::Origin unique_origin; 39 url::Origin unique_origin;
40 EXPECT_EQ("", unique_origin.scheme()); 40 EXPECT_EQ("", unique_origin.scheme());
41 EXPECT_EQ("", unique_origin.host()); 41 EXPECT_EQ("", unique_origin.host());
42 EXPECT_EQ(0, unique_origin.port()); 42 EXPECT_EQ(0, unique_origin.port());
43 EXPECT_TRUE(unique_origin.unique()); 43 EXPECT_TRUE(unique_origin.unique());
44 EXPECT_FALSE(unique_origin.IsSameOriginWith(unique_origin)); 44 EXPECT_TRUE(unique_origin.IsSameOriginWith(unique_origin));
45 45
46 const char* const urls[] = {"data:text/html,Hello!", 46 const char* const urls[] = {"data:text/html,Hello!",
47 "javascript:alert(1)", 47 "javascript:alert(1)",
48 "file://example.com:443/etc/passwd", 48 "file://example.com:443/etc/passwd",
49 "yay", 49 "yay",
50 "http::///invalid.example.com/"}; 50 "http::///invalid.example.com/"};
51 51
52 for (auto* test_url : urls) { 52 for (auto* test_url : urls) {
53 SCOPED_TRACE(test_url); 53 SCOPED_TRACE(test_url);
54 GURL url(test_url); 54 GURL url(test_url);
55 url::Origin origin(url); 55 url::Origin origin(url);
56 url::Origin origin_copy(origin);
56 EXPECT_EQ("", origin.scheme()); 57 EXPECT_EQ("", origin.scheme());
57 EXPECT_EQ("", origin.host()); 58 EXPECT_EQ("", origin.host());
58 EXPECT_EQ(0, origin.port()); 59 EXPECT_EQ(0, origin.port());
59 EXPECT_TRUE(origin.unique()); 60 EXPECT_TRUE(origin.unique());
60 EXPECT_FALSE(origin.IsSameOriginWith(origin)); 61 EXPECT_TRUE(origin.IsSameOriginWith(origin));
61 EXPECT_FALSE(unique_origin.IsSameOriginWith(origin)); 62 EXPECT_FALSE(unique_origin.IsSameOriginWith(origin));
62 EXPECT_FALSE(origin.IsSameOriginWith(unique_origin)); 63 EXPECT_FALSE(origin.IsSameOriginWith(unique_origin));
64 EXPECT_TRUE(origin.IsSameOriginWith(origin_copy));
63 65
64 ExpectParsedUrlsEqual(GURL(origin.Serialize()), origin.GetURL()); 66 ExpectParsedUrlsEqual(GURL(origin.Serialize()), origin.GetURL());
65 } 67 }
66 } 68 }
67 69
68 TEST(OriginTest, ConstructFromTuple) { 70 TEST(OriginTest, ConstructFromTuple) {
69 struct TestCases { 71 struct TestCases {
70 const char* const scheme; 72 const char* const scheme;
71 const char* const host; 73 const char* const host;
72 const uint16_t port; 74 const uint16_t port;
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 400
399 for (const auto& test : cases) { 401 for (const auto& test : cases) {
400 SCOPED_TRACE(testing::Message() << test.scheme << "://" << test.host << ":" 402 SCOPED_TRACE(testing::Message() << test.scheme << "://" << test.host << ":"
401 << test.port); 403 << test.port);
402 url::Origin origin = url::Origin::UnsafelyCreateOriginWithoutNormalization( 404 url::Origin origin = url::Origin::UnsafelyCreateOriginWithoutNormalization(
403 test.scheme, test.host, test.port); 405 test.scheme, test.host, test.port);
404 EXPECT_EQ("", origin.scheme()); 406 EXPECT_EQ("", origin.scheme());
405 EXPECT_EQ("", origin.host()); 407 EXPECT_EQ("", origin.host());
406 EXPECT_EQ(0, origin.port()); 408 EXPECT_EQ(0, origin.port());
407 EXPECT_TRUE(origin.unique()); 409 EXPECT_TRUE(origin.unique());
408 EXPECT_FALSE(origin.IsSameOriginWith(origin)); 410 EXPECT_TRUE(origin.IsSameOriginWith(origin));
409 411
410 ExpectParsedUrlsEqual(GURL(origin.Serialize()), origin.GetURL()); 412 ExpectParsedUrlsEqual(GURL(origin.Serialize()), origin.GetURL());
411 } 413 }
412 } 414 }
413 415
414 TEST(OriginTest, UnsafelyCreateUniqueViaEmbeddedNulls) { 416 TEST(OriginTest, UnsafelyCreateUniqueViaEmbeddedNulls) {
415 struct TestCases { 417 struct TestCases {
416 const char* scheme; 418 const char* scheme;
417 size_t scheme_length; 419 size_t scheme_length;
418 const char* host; 420 const char* host;
419 size_t host_length; 421 size_t host_length;
420 uint16_t port; 422 uint16_t port;
421 } cases[] = {{"http\0more", 9, "example.com", 11, 80}, 423 } cases[] = {{"http\0more", 9, "example.com", 11, 80},
422 {"http\0", 5, "example.com", 11, 80}, 424 {"http\0", 5, "example.com", 11, 80},
423 {"\0http", 5, "example.com", 11, 80}, 425 {"\0http", 5, "example.com", 11, 80},
424 {"http", 4, "example.com\0not-example.com", 27, 80}, 426 {"http", 4, "example.com\0not-example.com", 27, 80},
425 {"http", 4, "example.com\0", 12, 80}, 427 {"http", 4, "example.com\0", 12, 80},
426 {"http", 4, "\0example.com", 12, 80}}; 428 {"http", 4, "\0example.com", 12, 80}};
427 429
428 for (const auto& test : cases) { 430 for (const auto& test : cases) {
429 SCOPED_TRACE(testing::Message() << test.scheme << "://" << test.host << ":" 431 SCOPED_TRACE(testing::Message() << test.scheme << "://" << test.host << ":"
430 << test.port); 432 << test.port);
431 url::Origin origin = url::Origin::UnsafelyCreateOriginWithoutNormalization( 433 url::Origin origin = url::Origin::UnsafelyCreateOriginWithoutNormalization(
432 std::string(test.scheme, test.scheme_length), 434 std::string(test.scheme, test.scheme_length),
433 std::string(test.host, test.host_length), test.port); 435 std::string(test.host, test.host_length), test.port);
434 EXPECT_EQ("", origin.scheme()); 436 EXPECT_EQ("", origin.scheme());
435 EXPECT_EQ("", origin.host()); 437 EXPECT_EQ("", origin.host());
436 EXPECT_EQ(0, origin.port()); 438 EXPECT_EQ(0, origin.port());
437 EXPECT_TRUE(origin.unique()); 439 EXPECT_TRUE(origin.unique());
438 EXPECT_FALSE(origin.IsSameOriginWith(origin)); 440 EXPECT_TRUE(origin.IsSameOriginWith(origin));
439 441
440 ExpectParsedUrlsEqual(GURL(origin.Serialize()), origin.GetURL()); 442 ExpectParsedUrlsEqual(GURL(origin.Serialize()), origin.GetURL());
441 } 443 }
442 } 444 }
443 445
444 TEST(OriginTest, DomainIs) { 446 TEST(OriginTest, DomainIs) {
445 const struct { 447 const struct {
446 const char* url; 448 const char* url;
447 const char* lower_ascii_domain; 449 const char* lower_ascii_domain;
448 bool expected_domain_is; 450 bool expected_domain_is;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 GURL invalid_url("google.com"); 494 GURL invalid_url("google.com");
493 ASSERT_FALSE(invalid_url.is_valid()); 495 ASSERT_FALSE(invalid_url.is_valid());
494 EXPECT_FALSE(url::Origin(invalid_url).DomainIs("google.com")); 496 EXPECT_FALSE(url::Origin(invalid_url).DomainIs("google.com"));
495 497
496 // Unique origins. 498 // Unique origins.
497 EXPECT_FALSE(url::Origin().DomainIs("")); 499 EXPECT_FALSE(url::Origin().DomainIs(""));
498 EXPECT_FALSE(url::Origin().DomainIs("com")); 500 EXPECT_FALSE(url::Origin().DomainIs("com"));
499 } 501 }
500 502
501 } // namespace url 503 } // namespace url
OLDNEW
« url/origin.cc ('K') | « url/origin.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698