Make kUseRegistrableDomainInNetworkIsolationKey only affect HTTP origins.
Previously, it would make NetworkIsolationKeys replace hostnames with
eTLD+1's regardless of scheme.
Bug: 1030824
Change-Id: I79889920ed99f8d13d7a470e6aa2b2f7ac480f6c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1972577
Reviewed-by: Shivani Sharma <[email protected]>
Commit-Queue: Matt Menke <[email protected]>
Cr-Commit-Position: refs/heads/master@{#725963}
diff --git a/net/base/network_isolation_key_unittest.cc b/net/base/network_isolation_key_unittest.cc
index af421263..43b3f19 100644
--- a/net/base/network_isolation_key_unittest.cc
+++ b/net/base/network_isolation_key_unittest.cc
@@ -11,6 +11,7 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/origin.h"
+#include "url/url_util.h"
namespace net {
@@ -490,6 +491,30 @@
EXPECT_EQ(key_copied, key_bar);
}
+// Make sure that kUseRegistrableDomainInNetworkIsolationKey does not affect the
+// host when using a non-standard scheme.
+TEST(NetworkIsolationKeyTest, UseRegistrableDomainWithNonStandardScheme) {
+ base::test::ScopedFeatureList feature_list;
+ feature_list.InitAndEnableFeature(
+ features::kUseRegistrableDomainInNetworkIsolationKey);
+
+ // Have to register the scheme, or url::Origin::Create() will return an opaque
+ // origin.
+ url::AddStandardScheme("foo", url::SCHEME_WITH_HOST);
+
+ url::Origin origin = url::Origin::Create(GURL("foo://a.foo.com"));
+ ASSERT_FALSE(origin.opaque());
+ ASSERT_EQ(origin.scheme(), "foo");
+ ASSERT_EQ(origin.host(), "a.foo.com");
+
+ net::NetworkIsolationKey key(origin, origin);
+ EXPECT_EQ(origin, key.GetTopFrameOrigin());
+ EXPECT_FALSE(key.GetTopFrameOrigin()->opaque());
+ EXPECT_EQ(key.GetTopFrameOrigin()->scheme(), "foo");
+ EXPECT_EQ(key.GetTopFrameOrigin()->host(), "a.foo.com");
+ EXPECT_EQ(origin.Serialize(), key.ToString());
+}
+
TEST_F(NetworkIsolationKeyWithFrameOriginTest, CreateWithNewFrameOrigin) {
url::Origin origin_a = url::Origin::Create(GURL("http://a.com"));
url::Origin origin_b = url::Origin::Create(GURL("http://b.com"));