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

Side by Side Diff: content/browser/site_instance_impl_unittest.cc

Issue 2831683002: Introduce support for origins that require process isolation. (Closed)
Patch Set: Charlie's comments (round 3) Created 3 years, 6 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
« no previous file with comments | « content/browser/site_instance_impl.cc ('k') | content/common/site_isolation_policy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/site_instance_impl.h" 5 #include "content/browser/site_instance_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
(...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 main_instance = nullptr; 836 main_instance = nullptr;
837 EXPECT_EQ(1, browser_client()->GetAndClearSiteInstanceDeleteCount()); 837 EXPECT_EQ(1, browser_client()->GetAndClearSiteInstanceDeleteCount());
838 EXPECT_EQ(0, browser_client()->GetAndClearBrowsingInstanceDeleteCount()); 838 EXPECT_EQ(0, browser_client()->GetAndClearBrowsingInstanceDeleteCount());
839 839
840 // Free the subframe instance, which should free the browsing instance. 840 // Free the subframe instance, which should free the browsing instance.
841 subframe_instance = nullptr; 841 subframe_instance = nullptr;
842 EXPECT_EQ(1, browser_client()->GetAndClearSiteInstanceDeleteCount()); 842 EXPECT_EQ(1, browser_client()->GetAndClearSiteInstanceDeleteCount());
843 EXPECT_EQ(1, browser_client()->GetAndClearBrowsingInstanceDeleteCount()); 843 EXPECT_EQ(1, browser_client()->GetAndClearBrowsingInstanceDeleteCount());
844 } 844 }
845 845
846 TEST_F(SiteInstanceTest, IsolatedOrigins) {
847 GURL foo_url("http://www.foo.com");
848 GURL isolated_foo_url("http://isolated.foo.com");
849 GURL isolated_bar_url("http://isolated.bar.com");
850
851 auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
852
853 EXPECT_FALSE(policy->IsIsolatedOrigin(url::Origin(isolated_foo_url)));
854 EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, foo_url, isolated_foo_url));
855
856 policy->AddIsolatedOrigin(url::Origin(isolated_foo_url));
857 EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin(isolated_foo_url)));
858 EXPECT_FALSE(policy->IsIsolatedOrigin(url::Origin(foo_url)));
859 EXPECT_FALSE(policy->IsIsolatedOrigin(url::Origin(GURL("http://foo.com"))));
860 EXPECT_FALSE(
861 policy->IsIsolatedOrigin(url::Origin(GURL("http://www.bar.com"))));
862 EXPECT_FALSE(
863 policy->IsIsolatedOrigin(url::Origin(GURL("https://isolated.foo.com"))));
864 EXPECT_FALSE(policy->IsIsolatedOrigin(
865 url::Origin(GURL("http://isolated.foo.com:12345"))));
866 EXPECT_FALSE(policy->IsIsolatedOrigin(
867 url::Origin(GURL("http://bar.isolated.foo.com"))));
868
869 policy->AddIsolatedOrigin(url::Origin(isolated_bar_url));
870 EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin(isolated_bar_url)));
871
872 // IsSameWebSite should compare origins rather than sites if either URL is an
873 // isolated origin.
874 EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, foo_url, isolated_foo_url));
875 EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, foo_url));
876 EXPECT_FALSE(
877 SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, isolated_bar_url));
878 EXPECT_TRUE(
879 SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, isolated_foo_url));
880
881 // Ensure blob and filesystem URLs with isolated origins are compared
882 // correctly.
883 GURL isolated_blob_foo_url("blob:http://isolated.foo.com/uuid");
884 EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url,
885 isolated_blob_foo_url));
886 GURL isolated_filesystem_foo_url("filesystem:http://isolated.foo.com/bar/");
887 EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url,
888 isolated_filesystem_foo_url));
889
890 // The site URL for an isolated origin should be the full origin rather than
891 // eTLD+1.
892 EXPECT_EQ(isolated_foo_url,
893 SiteInstance::GetSiteForURL(nullptr, isolated_foo_url));
894 EXPECT_EQ(isolated_bar_url,
895 SiteInstance::GetSiteForURL(nullptr, isolated_bar_url));
896 EXPECT_EQ(isolated_foo_url,
897 SiteInstance::GetSiteForURL(nullptr, isolated_blob_foo_url));
898 EXPECT_EQ(isolated_foo_url,
899 SiteInstance::GetSiteForURL(nullptr, isolated_filesystem_foo_url));
900
901 // Isolated origins always require a dedicated process.
902 EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
903 nullptr, isolated_foo_url));
904 EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
905 nullptr, isolated_bar_url));
906 EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
907 nullptr, isolated_blob_foo_url));
908 EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
909 nullptr, isolated_filesystem_foo_url));
910 }
911
846 } // namespace content 912 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/site_instance_impl.cc ('k') | content/common/site_isolation_policy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698