• Home
  • Raw
  • Download

Lines Matching full:origin

13 #include "url/origin.h"
45 // it's not committable as a non-opaque origin. in SetUp()
50 ::testing::AssertionResult DoEqualityComparisons(const url::Origin& a, in DoEqualityComparisons()
51 const url::Origin& b, in DoEqualityComparisons()
73 bool HasNonceTokenBeenInitialized(const url::Origin& origin) { in HasNonceTokenBeenInitialized() argument
74 EXPECT_TRUE(origin.opaque()); in HasNonceTokenBeenInitialized()
76 return !origin.nonce_->token_.is_empty(); in HasNonceTokenBeenInitialized()
79 Origin::Nonce CreateNonce() { return Origin::Nonce(); } in CreateNonce()
81 Origin::Nonce CreateNonce(base::UnguessableToken nonce) { in CreateNonce()
82 return Origin::Nonce(nonce); in CreateNonce()
85 const base::UnguessableToken* GetNonce(const Origin& origin) { in GetNonce() argument
86 return origin.GetNonceForSerialization(); in GetNonce()
89 // Wrappers around url::Origin methods to expose it to tests.
91 std::optional<Origin> UnsafelyCreateOpaqueOriginWithoutNormalization( in UnsafelyCreateOpaqueOriginWithoutNormalization()
95 const Origin::Nonce& nonce) { in UnsafelyCreateOpaqueOriginWithoutNormalization()
96 return Origin::UnsafelyCreateOpaqueOriginWithoutNormalization( in UnsafelyCreateOpaqueOriginWithoutNormalization()
100 std::optional<std::string> SerializeWithNonce(const Origin& origin) { in SerializeWithNonce() argument
101 return origin.SerializeWithNonce(); in SerializeWithNonce()
104 std::optional<std::string> SerializeWithNonceAndInitIfNeeded(Origin& origin) { in SerializeWithNonceAndInitIfNeeded() argument
105 return origin.SerializeWithNonceAndInitIfNeeded(); in SerializeWithNonceAndInitIfNeeded()
108 std::optional<Origin> Deserialize(const std::string& value) { in Deserialize()
109 return Origin::Deserialize(value); in Deserialize()
123 Origin origin = Origin::Create(url); in TestSerialization() local
124 std::string serialized = origin.Serialize(); in TestSerialization()
126 ExpectParsedUrlsEqual(GURL(serialized), origin.GetURL()); in TestSerialization()
132 out << origin; in TestSerialization()
150 // A default-constructed Origin should should be cross origin to everything in TEST_P()
152 url::Origin opaque_a, opaque_b; in TEST_P()
167 // Two default-constructed Origins should always be cross origin to each in TEST_P()
181 // the UnguessableToken. Copying an origin, however, should trigger this. in TEST_P()
192 // Move-initializing to a fresh Origin should restore the lazy initialization. in TEST_P()
193 opaque_a = url::Origin(); in TEST_P()
217 EXPECT_LT(opaque_a, url::Origin::Create(GURL("http://www.google.com"))); in TEST_P()
218 EXPECT_LT(opaque_b, url::Origin::Create(GURL("http://www.google.com"))); in TEST_P()
220 EXPECT_EQ(opaque_b, url::Origin::Resolve(GURL(), opaque_b)); in TEST_P()
221 EXPECT_EQ(opaque_b, url::Origin::Resolve(GURL("about:blank"), opaque_b)); in TEST_P()
222 EXPECT_EQ(opaque_b, url::Origin::Resolve(GURL("about:srcdoc"), opaque_b)); in TEST_P()
224 url::Origin::Resolve(GURL("about:blank?hello#whee"), opaque_b)); in TEST_P()
243 Origin origin = Origin::CreateFromNormalizedTuple( in TEST_P() local
246 EXPECT_EQ(test_case.scheme, origin.scheme()); in TEST_P()
247 EXPECT_EQ(test_case.host, origin.host()); in TEST_P()
248 EXPECT_EQ(test_case.port, origin.port()); in TEST_P()
323 // Validate the comparison logic still works when creating a canonical origin, in TEST_P()
327 // with each freshly-constructed Origin (that's not copied). in TEST_P()
328 std::vector<Origin> origins; in TEST_P()
330 origins.push_back(Origin::Create(GURL(test_url))); in TEST_P()
332 const Origin& current = origins[i]; in TEST_P()
334 const Origin& to_compare = origins[j]; in TEST_P()
360 std::optional<url::Origin> origin = in TEST_P() local
361 url::Origin::UnsafelyCreateTupleOriginWithoutNormalization( in TEST_P()
363 ASSERT_TRUE(origin); in TEST_P()
364 EXPECT_EQ(test.scheme, origin->scheme()); in TEST_P()
365 EXPECT_EQ(test.host, origin->host()); in TEST_P()
366 EXPECT_EQ(test.port, origin->port()); in TEST_P()
367 EXPECT_FALSE(origin->opaque()); in TEST_P()
368 EXPECT_TRUE(origin->IsSameOriginWith(*origin)); in TEST_P()
370 ExpectParsedUrlsEqual(GURL(origin->Serialize()), origin->GetURL()); in TEST_P()
373 std::optional<url::Origin> opaque_origin = in TEST_P()
378 EXPECT_FALSE(*opaque_origin == origin); in TEST_P()
380 origin->GetTupleOrPrecursorTupleIfOpaque()); in TEST_P()
384 EXPECT_FALSE(*opaque_origin == origin->DeriveNewOpaqueOrigin()); in TEST_P()
419 EXPECT_FALSE(url::Origin::UnsafelyCreateTupleOriginWithoutNormalization( in TEST_P()
423 // An empty scheme/host/port tuple is not a valid tuple origin. in TEST_P()
425 url::Origin::UnsafelyCreateTupleOriginWithoutNormalization("", "", 0)); in TEST_P()
429 std::optional<url::Origin> anonymous_opaque = in TEST_P()
459 EXPECT_FALSE(url::Origin::UnsafelyCreateTupleOriginWithoutNormalization( in TEST_P()
507 Origin origin = Origin::Create(url); in TEST_P() local
510 origin.DomainIs(test_case.lower_ascii_domain)); in TEST_P()
512 origin.DeriveNewOpaqueOrigin().DomainIs(test_case.lower_ascii_domain)); in TEST_P()
518 EXPECT_FALSE(Origin::Create(invalid_url).DomainIs("google.com")); in TEST_P()
521 EXPECT_FALSE(Origin().DomainIs("")); in TEST_P()
522 EXPECT_FALSE(Origin().DomainIs("com")); in TEST_P()
526 Origin origin1 = Origin::Create(GURL("https://foo.com/bar")); in TEST_P()
533 Origin opaque_unique_origin = Origin(); in TEST_P()
535 Origin regular_origin = Origin::Create(GURL("https://a.com/")); in TEST_P()
536 Origin opaque_precursor_origin = regular_origin.DeriveNewOpaqueOrigin(); in TEST_P()
538 Origin file_origin = Origin::Create(GURL("file:///foo/bar")); in TEST_P()
539 Origin file_opaque_precursor_origin = file_origin.DeriveNewOpaqueOrigin(); in TEST_P()
540 Origin file_host_origin = Origin::Create(GURL("file://a.com/foo/bar")); in TEST_P()
541 Origin file_host_opaque_precursor_origin = in TEST_P()
544 Origin non_standard_scheme_origin = in TEST_P()
545 Origin::Create(GURL("non-standard-scheme:foo")); in TEST_P()
546 Origin non_standard_opaque_precursor_origin = in TEST_P()
550 Origin new_standard_origin = Origin::Create(GURL("new-standard://host/")); in TEST_P()
551 Origin new_standard_opaque_precursor_origin = in TEST_P()
555 Origin no_access_origin = in TEST_P()
556 Origin::Create(GURL("standard-but-noaccess://b.com")); in TEST_P()
557 Origin no_access_opaque_precursor_origin = in TEST_P()
560 Origin local_non_standard_origin = in TEST_P()
561 Origin::Create(GURL("local-but-nonstandard://a.com")); in TEST_P()
562 Origin local_non_standard_opaque_precursor_origin = in TEST_P()
565 // Call origin.CanBeDerivedFrom(url) for each of the following test cases in TEST_P()
569 raw_ptr<Origin> origin; in TEST_P() member
575 // Web URL can commit in an opaque origin with precursor information. in TEST_P()
579 // origin. It must have precursor information. in TEST_P()
582 // Cross-origin URLs should never work. in TEST_P()
586 // data: URL can never commit in a regular, non-opaque origin. in TEST_P()
588 // This is the default case: data: URLs commit in opaque origin carrying in TEST_P()
589 // precursor information for the origin that created them. in TEST_P()
592 // opaque unique origin. in TEST_P()
595 // about:blank can commit in regular origin (default case for iframes). in TEST_P()
601 // in opaque unique origin. in TEST_P()
604 // Default behavior of srcdoc is to inherit the origin of the parent in TEST_P()
621 // opaque origin. in TEST_P()
628 // However, they can result in regular file: origin and an opaque one in TEST_P()
629 // containing another file: origin as precursor. in TEST_P()
632 // It should not be possible to get an opaque unique origin for file: in TEST_P()
633 // as it is a standard scheme and will always result in a tuple origin in TEST_P()
634 // or will always be derived by other origin. in TEST_P()
654 // A non-standard scheme should never commit in an standard origin or in TEST_P()
655 // opaque origin with standard precursor information. in TEST_P()
659 // own origin. in TEST_P()
667 // No access scheme can only commit in opaque origin. in TEST_P()
688 SCOPED_TRACE(testing::Message() << "(origin, url): (" << *test_case.origin in TEST_P()
691 test_case.origin->CanBeDerivedFrom(GURL(test_case.url))); in TEST_P()
703 SCOPED_TRACE(testing::Message() << "(origin, url): (" << *test_case.origin in TEST_P()
706 test_case.origin->CanBeDerivedFrom(GURL(test_case.url))); in TEST_P()
711 Origin http_origin = Origin::Create(GURL("http://192.168.9.1")); in TEST_P()
714 Origin http_opaque_origin = http_origin.DeriveNewOpaqueOrigin(); in TEST_P()
724 Origin data_origin = Origin::Create(GURL("data:")); in TEST_P()
728 // The nonce of the origin will be initialized if a new opaque origin is in TEST_P()
730 Origin data_derived_origin = data_origin.DeriveNewOpaqueOrigin(); in TEST_P()
738 Origin file_origin = Origin::Create(GURL("file:///etc/passwd")); in TEST_P()
742 Origin file_server_origin = in TEST_P()
743 Origin::Create(GURL("file://example.com/etc/passwd")); in TEST_P()
757 Origin origin = Origin::Create(url); in TEST_P() local
758 std::optional<std::string> serialized = SerializeWithNonce(origin); in TEST_P()
761 std::optional<Origin> deserialized = Deserialize(std::move(*serialized)); in TEST_P()
764 EXPECT_TRUE(DoEqualityComparisons(origin, deserialized.value(), true)); in TEST_P()
765 EXPECT_EQ(origin.GetDebugString(), deserialized.value().GetDebugString()); in TEST_P()
785 Origin origin = Origin::Create(url); in TEST_P() local
786 std::optional<std::string> serialized = SerializeWithNonce(origin); in TEST_P()
787 std::optional<Origin> deserialized = Deserialize(std::move(*serialized)); in TEST_P()
792 EXPECT_EQ(origin.GetDebugString(), deserialized.value().GetDebugString()); in TEST_P()
797 Origin opaque; in TEST_P()
801 std::optional<Origin> deserialized = Deserialize(std::move(*serialized)); in TEST_P()
812 Origin origin = Origin::Create(url); in TEST_P() local
814 SerializeWithNonceAndInitIfNeeded(origin); in TEST_P()
815 std::optional<Origin> deserialized = Deserialize(std::move(*serialized)); in TEST_P()
819 EXPECT_EQ(origin, deserialized.value()); in TEST_P()
824 Origin opaque; in TEST_P()
830 std::optional<Origin> deserialized = Deserialize(std::move(*serialized)); in TEST_P()
838 url::Origin opaque_origin; in TEST_P()
840 url::Origin foo_origin = url::Origin::Create(foo_url); in TEST_P()
842 url::Origin bar_origin = url::Origin::Create(bar_url); in TEST_P()
863 url::Origin a_origin = url::Origin::Create(a_url); in TEST_P()
864 url::Origin b_origin = url::Origin::Create(b_url); in TEST_P()
884 url::Origin a_origin = url::Origin::Create(a_url); in TEST_P()
885 url::Origin b_origin = url::Origin::Create(b_url); in TEST_P()
892 // same origin. This is not ideal, given that a host and a port are available in TEST_P()
901 url::Origin another_scheme_origin = url::Origin::Create(another_scheme_url); in TEST_P()