OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/site_details.h" | 5 #include "chrome/browser/site_details.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <utility> | 10 #include <utility> |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 "</body></html>", | 235 "</body></html>", |
236 name.c_str(), iframe_url.c_str(), iframe_url2.c_str())); | 236 name.c_str(), iframe_url.c_str(), iframe_url2.c_str())); |
237 dir->WriteManifest(manifest.ToJSON()); | 237 dir->WriteManifest(manifest.ToJSON()); |
238 | 238 |
239 const Extension* extension = LoadExtension(dir->UnpackedPath()); | 239 const Extension* extension = LoadExtension(dir->UnpackedPath()); |
240 EXPECT_TRUE(extension); | 240 EXPECT_TRUE(extension); |
241 temp_dirs_.push_back(dir.release()); | 241 temp_dirs_.push_back(dir.release()); |
242 return extension; | 242 return extension; |
243 } | 243 } |
244 | 244 |
245 // Creates a V2 platform app that loads a web iframe in the app's sandbox | 245 // Creates a V2 platform app that tries to loads a web iframe in the app's |
246 // page. | 246 // sandbox page. Starting in version 57, Chrome will no longer allow external |
247 // TODO(lazyboy): Deprecate this behavior in https://crbug.com/615585. | 247 // web content inside sandboxed pages. So the iframe is expected to be |
| 248 // blocked. |
248 void CreateAppWithSandboxPage(const std::string& name) { | 249 void CreateAppWithSandboxPage(const std::string& name) { |
249 std::unique_ptr<TestExtensionDir> dir(new TestExtensionDir); | 250 std::unique_ptr<TestExtensionDir> dir(new TestExtensionDir); |
250 | 251 |
251 DictionaryBuilder manifest; | 252 DictionaryBuilder manifest; |
252 manifest.Set("name", name) | 253 manifest.Set("name", name) |
253 .Set("version", "1.0") | 254 .Set("version", "1.0") |
254 .Set("manifest_version", 2) | 255 .Set("manifest_version", 2) |
255 .Set("sandbox", | 256 .Set("sandbox", |
256 DictionaryBuilder() | 257 DictionaryBuilder() |
257 .Set("pages", ListBuilder().Append("sandbox.html").Build()) | 258 .Set("pages", ListBuilder().Append("sandbox.html").Build()) |
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 EXPECT_THAT(details->uma()->GetAllSamples( | 934 EXPECT_THAT(details->uma()->GetAllSamples( |
934 "SiteIsolation.IsolateExtensionsProcessCountNoLimit"), | 935 "SiteIsolation.IsolateExtensionsProcessCountNoLimit"), |
935 HasOneSample(4)); | 936 HasOneSample(4)); |
936 EXPECT_THAT(GetRenderProcessCount(), DependingOnPolicy(2, 4, 4)); | 937 EXPECT_THAT(GetRenderProcessCount(), DependingOnPolicy(2, 4, 4)); |
937 EXPECT_THAT(details->GetOutOfProcessIframeCount(), | 938 EXPECT_THAT(details->GetOutOfProcessIframeCount(), |
938 DependingOnPolicy(0, 2, 2)); | 939 DependingOnPolicy(0, 2, 2)); |
939 | 940 |
940 EXPECT_TRUE(IsInTrial("SiteIsolationExtensionsActive")); | 941 EXPECT_TRUE(IsInTrial("SiteIsolationExtensionsActive")); |
941 } | 942 } |
942 | 943 |
943 // Due to http://crbug.com/612711, we are not isolating iframes from platform | 944 // Creates a V2 platform app that tries to loads a web iframe in the app's |
944 // apps with --isolate-extenions. | 945 // sandbox page. Starting in version 57, Chrome will no longer allow external |
945 IN_PROC_BROWSER_TEST_F(SiteDetailsBrowserTest, PlatformAppsNotIsolated) { | 946 // web content inside sandboxed pages. So the iframe is expected to be |
946 // --site-per-process will still isolate iframes from platform apps, so skip | 947 // blocked. If an error page is displayed, it shouldn't be loaded inside a |
947 // the test in that case. | 948 // different process. |
948 if (content::AreAllSitesIsolatedForTesting()) | 949 IN_PROC_BROWSER_TEST_F(SiteDetailsBrowserTest, |
949 return; | 950 PlatformAppsErrorPagesArentOOPIF) { |
950 CreateAppWithSandboxPage("Extension One"); | 951 CreateAppWithSandboxPage("Extension One"); |
951 scoped_refptr<TestMemoryDetails> details = new TestMemoryDetails(); | 952 scoped_refptr<TestMemoryDetails> details = new TestMemoryDetails(); |
952 details->StartFetchAndWait(); | 953 details->StartFetchAndWait(); |
953 EXPECT_EQ(0, details->GetOutOfProcessIframeCount()); | 954 EXPECT_EQ(0, details->GetOutOfProcessIframeCount()); |
954 } | 955 } |
955 | 956 |
956 // Exercises accounting in the case where an extension has two different-site | 957 // Exercises accounting in the case where an extension has two different-site |
957 // web iframes. | 958 // web iframes. |
958 IN_PROC_BROWSER_TEST_F(SiteDetailsBrowserTest, ExtensionWithTwoWebIframes) { | 959 IN_PROC_BROWSER_TEST_F(SiteDetailsBrowserTest, ExtensionWithTwoWebIframes) { |
959 scoped_refptr<TestMemoryDetails> details = new TestMemoryDetails(); | 960 scoped_refptr<TestMemoryDetails> details = new TestMemoryDetails(); |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1293 content::NavigateIframeToURL( | 1294 content::NavigateIframeToURL( |
1294 tab, "child-1", extension2->GetResourceURL("/blank_iframe.html")); | 1295 tab, "child-1", extension2->GetResourceURL("/blank_iframe.html")); |
1295 details = new TestMemoryDetails(); | 1296 details = new TestMemoryDetails(); |
1296 details->StartFetchAndWait(); | 1297 details->StartFetchAndWait(); |
1297 EXPECT_THAT(details->uma()->GetAllSamples( | 1298 EXPECT_THAT(details->uma()->GetAllSamples( |
1298 "SiteIsolation.SiteInstancesPerBrowsingInstance"), | 1299 "SiteIsolation.SiteInstancesPerBrowsingInstance"), |
1299 DependingOnPolicy(ElementsAre(Bucket(1, 2)), | 1300 DependingOnPolicy(ElementsAre(Bucket(1, 2)), |
1300 ElementsAre(Bucket(1, 1), Bucket(3, 1)), | 1301 ElementsAre(Bucket(1, 1), Bucket(3, 1)), |
1301 ElementsAre(Bucket(1, 1), Bucket(5, 1)))); | 1302 ElementsAre(Bucket(1, 1), Bucket(5, 1)))); |
1302 } | 1303 } |
OLD | NEW |