origin_abstract_tests.cc 3.1 KB

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