1*6777b538SAndroid Build Coastguard Worker // Copyright 2021 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker #include "url/origin_abstract_tests.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker namespace url {
8*6777b538SAndroid Build Coastguard Worker
ExpectParsedUrlsEqual(const GURL & a,const GURL & b)9*6777b538SAndroid Build Coastguard Worker void ExpectParsedUrlsEqual(const GURL& a, const GURL& b) {
10*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a, b);
11*6777b538SAndroid Build Coastguard Worker const Parsed& a_parsed = a.parsed_for_possibly_invalid_spec();
12*6777b538SAndroid Build Coastguard Worker const Parsed& b_parsed = b.parsed_for_possibly_invalid_spec();
13*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.scheme.begin, b_parsed.scheme.begin);
14*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.scheme.len, b_parsed.scheme.len);
15*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.username.begin, b_parsed.username.begin);
16*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.username.len, b_parsed.username.len);
17*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.password.begin, b_parsed.password.begin);
18*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.password.len, b_parsed.password.len);
19*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.host.begin, b_parsed.host.begin);
20*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.host.len, b_parsed.host.len);
21*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.port.begin, b_parsed.port.begin);
22*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.port.len, b_parsed.port.len);
23*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.path.begin, b_parsed.path.begin);
24*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.path.len, b_parsed.path.len);
25*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.query.begin, b_parsed.query.begin);
26*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.query.len, b_parsed.query.len);
27*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.ref.begin, b_parsed.ref.begin);
28*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(a_parsed.ref.len, b_parsed.ref.len);
29*6777b538SAndroid Build Coastguard Worker }
30*6777b538SAndroid Build Coastguard Worker
31*6777b538SAndroid Build Coastguard Worker // static
CreateOriginFromString(std::string_view s)32*6777b538SAndroid Build Coastguard Worker Origin UrlOriginTestTraits::CreateOriginFromString(std::string_view s) {
33*6777b538SAndroid Build Coastguard Worker return Origin::Create(GURL(s));
34*6777b538SAndroid Build Coastguard Worker }
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Worker // static
CreateUniqueOpaqueOrigin()37*6777b538SAndroid Build Coastguard Worker Origin UrlOriginTestTraits::CreateUniqueOpaqueOrigin() {
38*6777b538SAndroid Build Coastguard Worker return Origin();
39*6777b538SAndroid Build Coastguard Worker }
40*6777b538SAndroid Build Coastguard Worker
41*6777b538SAndroid Build Coastguard Worker // static
CreateWithReferenceOrigin(std::string_view url,const Origin & reference_origin)42*6777b538SAndroid Build Coastguard Worker Origin UrlOriginTestTraits::CreateWithReferenceOrigin(
43*6777b538SAndroid Build Coastguard Worker std::string_view url,
44*6777b538SAndroid Build Coastguard Worker const Origin& reference_origin) {
45*6777b538SAndroid Build Coastguard Worker return Origin::Resolve(GURL(url), reference_origin);
46*6777b538SAndroid Build Coastguard Worker }
47*6777b538SAndroid Build Coastguard Worker
48*6777b538SAndroid Build Coastguard Worker // static
DeriveNewOpaqueOrigin(const Origin & reference_origin)49*6777b538SAndroid Build Coastguard Worker Origin UrlOriginTestTraits::DeriveNewOpaqueOrigin(
50*6777b538SAndroid Build Coastguard Worker const Origin& reference_origin) {
51*6777b538SAndroid Build Coastguard Worker return reference_origin.DeriveNewOpaqueOrigin();
52*6777b538SAndroid Build Coastguard Worker }
53*6777b538SAndroid Build Coastguard Worker
54*6777b538SAndroid Build Coastguard Worker // static
IsOpaque(const Origin & origin)55*6777b538SAndroid Build Coastguard Worker bool UrlOriginTestTraits::IsOpaque(const Origin& origin) {
56*6777b538SAndroid Build Coastguard Worker return origin.opaque();
57*6777b538SAndroid Build Coastguard Worker }
58*6777b538SAndroid Build Coastguard Worker
59*6777b538SAndroid Build Coastguard Worker // static
GetScheme(const Origin & origin)60*6777b538SAndroid Build Coastguard Worker std::string UrlOriginTestTraits::GetScheme(const Origin& origin) {
61*6777b538SAndroid Build Coastguard Worker return origin.scheme();
62*6777b538SAndroid Build Coastguard Worker }
63*6777b538SAndroid Build Coastguard Worker
64*6777b538SAndroid Build Coastguard Worker // static
GetHost(const Origin & origin)65*6777b538SAndroid Build Coastguard Worker std::string UrlOriginTestTraits::GetHost(const Origin& origin) {
66*6777b538SAndroid Build Coastguard Worker return origin.host();
67*6777b538SAndroid Build Coastguard Worker }
68*6777b538SAndroid Build Coastguard Worker
69*6777b538SAndroid Build Coastguard Worker // static
GetPort(const Origin & origin)70*6777b538SAndroid Build Coastguard Worker uint16_t UrlOriginTestTraits::GetPort(const Origin& origin) {
71*6777b538SAndroid Build Coastguard Worker return origin.port();
72*6777b538SAndroid Build Coastguard Worker }
73*6777b538SAndroid Build Coastguard Worker
74*6777b538SAndroid Build Coastguard Worker // static
GetTupleOrPrecursorTupleIfOpaque(const Origin & origin)75*6777b538SAndroid Build Coastguard Worker SchemeHostPort UrlOriginTestTraits::GetTupleOrPrecursorTupleIfOpaque(
76*6777b538SAndroid Build Coastguard Worker const Origin& origin) {
77*6777b538SAndroid Build Coastguard Worker return origin.GetTupleOrPrecursorTupleIfOpaque();
78*6777b538SAndroid Build Coastguard Worker }
79*6777b538SAndroid Build Coastguard Worker
80*6777b538SAndroid Build Coastguard Worker // static
IsSameOrigin(const Origin & a,const Origin & b)81*6777b538SAndroid Build Coastguard Worker bool UrlOriginTestTraits::IsSameOrigin(const Origin& a, const Origin& b) {
82*6777b538SAndroid Build Coastguard Worker return a.IsSameOriginWith(b);
83*6777b538SAndroid Build Coastguard Worker }
84*6777b538SAndroid Build Coastguard Worker
85*6777b538SAndroid Build Coastguard Worker // static
Serialize(const Origin & origin)86*6777b538SAndroid Build Coastguard Worker std::string UrlOriginTestTraits::Serialize(const Origin& origin) {
87*6777b538SAndroid Build Coastguard Worker std::string serialized = origin.Serialize();
88*6777b538SAndroid Build Coastguard Worker
89*6777b538SAndroid Build Coastguard Worker // Extra test assertion for GetURL (which doesn't have an equivalent in
90*6777b538SAndroid Build Coastguard Worker // blink::SecurityOrigin).
91*6777b538SAndroid Build Coastguard Worker ExpectParsedUrlsEqual(GURL(serialized), origin.GetURL());
92*6777b538SAndroid Build Coastguard Worker
93*6777b538SAndroid Build Coastguard Worker return serialized;
94*6777b538SAndroid Build Coastguard Worker }
95*6777b538SAndroid Build Coastguard Worker
96*6777b538SAndroid Build Coastguard Worker // static
IsValidUrl(std::string_view str)97*6777b538SAndroid Build Coastguard Worker bool UrlOriginTestTraits::IsValidUrl(std::string_view str) {
98*6777b538SAndroid Build Coastguard Worker return GURL(str).is_valid();
99*6777b538SAndroid Build Coastguard Worker }
100*6777b538SAndroid Build Coastguard Worker
101*6777b538SAndroid Build Coastguard Worker // This is an abstract test suite which is instantiated by each implementation.
102*6777b538SAndroid Build Coastguard Worker GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AbstractOriginTest);
103*6777b538SAndroid Build Coastguard Worker
104*6777b538SAndroid Build Coastguard Worker } // namespace url
105