Chromium Code Reviews| Index: content/browser/child_process_security_policy_unittest.cc |
| diff --git a/content/browser/child_process_security_policy_unittest.cc b/content/browser/child_process_security_policy_unittest.cc |
| index 90befd6d8aae9587de14c67cbef773c03d6b356b..10262d6ca2127014fbe3535144ae1ec8266fcc9c 100644 |
| --- a/content/browser/child_process_security_policy_unittest.cc |
| +++ b/content/browser/child_process_security_policy_unittest.cc |
| @@ -130,20 +130,28 @@ TEST_F(ChildProcessSecurityPolicyTest, StandardSchemesTest) { |
| p->Add(kRendererID); |
| // Safe |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com/"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("https://www.paypal.com/"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com/"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("https://www.paypal.com/"), |
| + ResourceType::MAIN_FRAME)); |
|
Charlie Reis
2012/11/28 18:58:26
Just to test both code paths, let's make this one
|
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("ftp://ftp.gnu.org/"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>"), |
| + ResourceType::MAIN_FRAME)); |
| EXPECT_TRUE(p->CanRequestURL(kRendererID, |
| - GURL("view-source:http://www.google.com/"))); |
| + GURL("view-source:http://www.google.com/"), |
| + ResourceType::MAIN_FRAME)); |
| EXPECT_TRUE(p->CanRequestURL( |
| - kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); |
| + kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"), |
| + ResourceType::LAST_TYPE)); |
|
irobert
2012/11/28 01:27:57
For these tests, resource type does not matter the
Charlie Reis
2012/11/28 18:58:26
Sure, but might as well use something realistic.
|
| // Dangerous |
| EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| - GURL("file:///etc/passwd"))); |
| + GURL("file:///etc/passwd"), |
| + ResourceType::LAST_TYPE)); |
| EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| - GURL("chrome://foo/bar"))); |
| + GURL("chrome://foo/bar"), |
| + ResourceType::LAST_TYPE)); |
| p->Remove(kRendererID); |
| } |
| @@ -154,28 +162,41 @@ TEST_F(ChildProcessSecurityPolicyTest, AboutTest) { |
| p->Add(kRendererID); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:blank"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:BlAnK"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:BlAnK"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:blank"))); |
| - |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:memory"))); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:cache"))); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:hang"))); |
| - |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBoUt:memory"))); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:CrASh"))); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("abOuT:cAChe"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:blank"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:BlAnK"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:BlAnK"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:blank"), |
| + ResourceType::MAIN_FRAME)); |
| + |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:memory"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:cache"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:hang"), |
| + ResourceType::MAIN_FRAME)); |
| + |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBoUt:memory"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:CrASh"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("abOuT:cAChe"), |
| + ResourceType::MAIN_FRAME)); |
| // Requests for about: pages should be denied. |
| p->GrantRequestURL(kRendererID, GURL("about:crash")); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"), |
| + ResourceType::MAIN_FRAME)); |
| // These requests for chrome:// pages should be granted. |
| GURL chrome_url("chrome://foo"); |
| p->GrantRequestURL(kRendererID, chrome_url); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, chrome_url)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, chrome_url, |
| + ResourceType::MAIN_FRAME)); |
| p->Remove(kRendererID); |
| } |
| @@ -186,9 +207,11 @@ TEST_F(ChildProcessSecurityPolicyTest, JavaScriptTest) { |
| p->Add(kRendererID); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"), |
| + ResourceType::MAIN_FRAME)); |
| p->GrantRequestURL(kRendererID, GURL("javascript:alert('xss')")); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"), |
| + ResourceType::MAIN_FRAME)); |
| p->Remove(kRendererID); |
| } |
| @@ -200,15 +223,18 @@ TEST_F(ChildProcessSecurityPolicyTest, RegisterWebSafeSchemeTest) { |
| p->Add(kRendererID); |
| // Currently, "asdf" is destined for ShellExecute, so it is allowed. |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"), |
| + ResourceType::MAIN_FRAME)); |
| // Once we register "asdf", we default to deny. |
| RegisterTestScheme("asdf"); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"), |
| + ResourceType::MAIN_FRAME)); |
| // We can allow new schemes by adding them to the whitelist. |
| p->RegisterWebSafeScheme("asdf"); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"), |
| + ResourceType::MAIN_FRAME)); |
| // Cleanup. |
| p->Remove(kRendererID); |
| @@ -220,25 +246,33 @@ TEST_F(ChildProcessSecurityPolicyTest, CanServiceCommandsTest) { |
| p->Add(kRendererID); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"), |
| + ResourceType::LAST_TYPE)); |
|
Charlie Reis
2012/11/28 18:58:26
Let's make these all MAIN_FRAME, since the intent
|
| p->GrantRequestURL(kRendererID, GURL("file:///etc/passwd")); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"), |
| + ResourceType::LAST_TYPE)); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("evil-scheme:/path"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("evil-scheme:/path"), |
| + ResourceType::LAST_TYPE)); |
| std::set<std::string> disabled_set; |
| disabled_set.insert("evil-scheme"); |
| p->RegisterDisabledSchemes(disabled_set); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com"))); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("evil-scheme:/path"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com"), |
| + ResourceType::LAST_TYPE)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("evil-scheme:/path"), |
| + ResourceType::LAST_TYPE)); |
| disabled_set.clear(); |
| p->RegisterDisabledSchemes(disabled_set); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("evil-scheme:/path"))); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("evil-scheme:/path"), |
| + ResourceType::LAST_TYPE)); |
| // We should forget our state if we repeat a renderer id. |
| p->Remove(kRendererID); |
| p->Add(kRendererID); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"), |
| + ResourceType::LAST_TYPE)); |
| p->Remove(kRendererID); |
| } |
| @@ -250,18 +284,24 @@ TEST_F(ChildProcessSecurityPolicyTest, ViewSource) { |
| // View source is determined by the embedded scheme. |
| EXPECT_TRUE(p->CanRequestURL(kRendererID, |
| - GURL("view-source:http://www.google.com/"))); |
| + GURL("view-source:http://www.google.com/"), |
| + ResourceType::MAIN_FRAME)); |
| EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| - GURL("view-source:file:///etc/passwd"))); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| + GURL("view-source:file:///etc/passwd"), |
| + ResourceType::LAST_TYPE)); |
|
Charlie Reis
2012/11/28 18:58:26
Same: these should all be MAIN_FRAME.
|
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"), |
| + ResourceType::LAST_TYPE)); |
| EXPECT_FALSE(p->CanRequestURL( |
| - kRendererID, GURL("view-source:view-source:http://www.google.com/"))); |
| + kRendererID, GURL("view-source:view-source:http://www.google.com/"), |
| + ResourceType::MAIN_FRAME)); |
| p->GrantRequestURL(kRendererID, GURL("view-source:file:///etc/passwd")); |
| // View source needs to be able to request the embedded scheme. |
| EXPECT_TRUE(p->CanRequestURL(kRendererID, |
| - GURL("view-source:file:///etc/passwd"))); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| + GURL("view-source:file:///etc/passwd"), |
| + ResourceType::MAIN_FRAME)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"), |
| + ResourceType::LAST_TYPE)); |
| p->Remove(kRendererID); |
| } |
| @@ -274,16 +314,22 @@ TEST_F(ChildProcessSecurityPolicyTest, SpecificFile) { |
| GURL icon_url("file:///tmp/foo.png"); |
| GURL sensitive_url("file:///etc/passwd"); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, icon_url)); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, icon_url, |
| + ResourceType::IMAGE)); |
|
Charlie Reis
2012/11/28 18:58:26
Even though this is an image, let's treat these al
|
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url, |
| + ResourceType::LAST_TYPE)); |
| p->GrantRequestSpecificFileURL(kRendererID, icon_url); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url, |
| + ResourceType::IMAGE)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url, |
| + ResourceType::LAST_TYPE)); |
| p->GrantRequestURL(kRendererID, icon_url); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, sensitive_url)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url, |
| + ResourceType::IMAGE)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, sensitive_url, |
| + ResourceType::LAST_TYPE)); |
| p->Remove(kRendererID); |
| } |
| @@ -497,10 +543,12 @@ TEST_F(ChildProcessSecurityPolicyTest, CanServiceWebUIBindings) { |
| p->Add(kRendererID); |
| EXPECT_FALSE(p->HasWebUIBindings(kRendererID)); |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, url)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, url, |
| + ResourceType::MAIN_FRAME)); |
| p->GrantWebUIBindings(kRendererID); |
| EXPECT_TRUE(p->HasWebUIBindings(kRendererID)); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, url)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, url, |
| + ResourceType::MAIN_FRAME)); |
| p->Remove(kRendererID); |
| } |
| @@ -518,7 +566,8 @@ TEST_F(ChildProcessSecurityPolicyTest, RemoveRace) { |
| p->GrantReadFile(kRendererID, file); |
| p->GrantWebUIBindings(kRendererID); |
| - EXPECT_TRUE(p->CanRequestURL(kRendererID, url)); |
| + EXPECT_TRUE(p->CanRequestURL(kRendererID, url, |
| + ResourceType::LAST_TYPE)); |
|
Charlie Reis
2012/11/28 18:58:26
MAIN_FRAME
|
| EXPECT_TRUE(p->CanReadFile(kRendererID, file)); |
| EXPECT_TRUE(p->HasWebUIBindings(kRendererID)); |
| @@ -529,7 +578,8 @@ TEST_F(ChildProcessSecurityPolicyTest, RemoveRace) { |
| // prepared to answer policy questions about renderers who no longer exist. |
| // In this case, we default to secure behavior. |
| - EXPECT_FALSE(p->CanRequestURL(kRendererID, url)); |
| + EXPECT_FALSE(p->CanRequestURL(kRendererID, url, |
| + ResourceType::MAIN_FRAME)); |
| EXPECT_FALSE(p->CanReadFile(kRendererID, file)); |
| EXPECT_FALSE(p->HasWebUIBindings(kRendererID)); |
| } |