| OLD | NEW |
| 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 <set> | 5 #include <set> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "content/browser/child_process_security_policy_impl.h" | 9 #include "content/browser/child_process_security_policy_impl.h" |
| 10 #include "content/public/common/url_constants.h" | 10 #include "content/public/common/url_constants.h" |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 | 150 |
| 151 EXPECT_FALSE(p->IsPseudoScheme(kChromeUIScheme)); | 151 EXPECT_FALSE(p->IsPseudoScheme(kChromeUIScheme)); |
| 152 } | 152 } |
| 153 | 153 |
| 154 TEST_F(ChildProcessSecurityPolicyTest, StandardSchemesTest) { | 154 TEST_F(ChildProcessSecurityPolicyTest, StandardSchemesTest) { |
| 155 ChildProcessSecurityPolicyImpl* p = | 155 ChildProcessSecurityPolicyImpl* p = |
| 156 ChildProcessSecurityPolicyImpl::GetInstance(); | 156 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 157 | 157 |
| 158 p->Add(kRendererID); | 158 p->Add(kRendererID); |
| 159 | 159 |
| 160 // Safe to request, redirect or commit. | 160 // Safe to request or commit. |
| 161 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com/"))); | 161 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com/"))); |
| 162 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("https://www.paypal.com/"))); | 162 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("https://www.paypal.com/"))); |
| 163 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); | 163 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); |
| 164 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); | 164 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); |
| 165 EXPECT_TRUE(p->CanRequestURL( | 165 EXPECT_TRUE(p->CanRequestURL( |
| 166 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); | 166 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); |
| 167 EXPECT_TRUE(p->CanRedirectToURL(GURL("http://www.google.com/"))); | |
| 168 EXPECT_TRUE(p->CanRedirectToURL(GURL("https://www.paypal.com/"))); | |
| 169 EXPECT_TRUE(p->CanRedirectToURL(GURL("ftp://ftp.gnu.org/"))); | |
| 170 EXPECT_TRUE(p->CanRedirectToURL(GURL("data:text/html,<b>Hi</b>"))); | |
| 171 EXPECT_TRUE( | |
| 172 p->CanRedirectToURL(GURL("filesystem:http://localhost/temporary/a.gif"))); | |
| 173 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("http://www.google.com/"))); | 167 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("http://www.google.com/"))); |
| 174 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("https://www.paypal.com/"))); | 168 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("https://www.paypal.com/"))); |
| 175 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); | 169 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); |
| 176 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); | 170 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); |
| 177 EXPECT_TRUE(p->CanCommitURL( | 171 EXPECT_TRUE(p->CanCommitURL( |
| 178 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); | 172 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); |
| 179 EXPECT_TRUE( | 173 EXPECT_TRUE( |
| 180 p->CanSetAsOriginHeader(kRendererID, GURL("http://www.google.com/"))); | 174 p->CanSetAsOriginHeader(kRendererID, GURL("http://www.google.com/"))); |
| 181 EXPECT_TRUE( | 175 EXPECT_TRUE( |
| 182 p->CanSetAsOriginHeader(kRendererID, GURL("https://www.paypal.com/"))); | 176 p->CanSetAsOriginHeader(kRendererID, GURL("https://www.paypal.com/"))); |
| 183 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("ftp://ftp.gnu.org/"))); | 177 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("ftp://ftp.gnu.org/"))); |
| 184 EXPECT_TRUE( | 178 EXPECT_TRUE( |
| 185 p->CanSetAsOriginHeader(kRendererID, GURL("data:text/html,<b>Hi</b>"))); | 179 p->CanSetAsOriginHeader(kRendererID, GURL("data:text/html,<b>Hi</b>"))); |
| 186 EXPECT_TRUE(p->CanSetAsOriginHeader( | 180 EXPECT_TRUE(p->CanSetAsOriginHeader( |
| 187 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); | 181 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); |
| 188 | 182 |
| 189 // Dangerous to request, commit, or set as origin header. | 183 // Dangerous to request, commit, or set as origin header. |
| 190 EXPECT_FALSE(p->CanRequestURL(kRendererID, | 184 EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| 191 GURL("file:///etc/passwd"))); | 185 GURL("file:///etc/passwd"))); |
| 192 EXPECT_FALSE(p->CanRequestURL(kRendererID, | 186 EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| 193 GURL("chrome://foo/bar"))); | 187 GURL("chrome://foo/bar"))); |
| 194 EXPECT_FALSE(p->CanRequestURL(kRendererID, | 188 EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| 195 GURL("view-source:http://www.google.com/"))); | 189 GURL("view-source:http://www.google.com/"))); |
| 196 EXPECT_TRUE(p->CanRedirectToURL(GURL("file:///etc/passwd"))); | |
| 197 EXPECT_TRUE(p->CanRedirectToURL(GURL("chrome://foo/bar"))); | |
| 198 EXPECT_FALSE(p->CanRedirectToURL(GURL("view-source:http://www.google.com/"))); | |
| 199 EXPECT_FALSE(p->CanCommitURL(kRendererID, | 190 EXPECT_FALSE(p->CanCommitURL(kRendererID, |
| 200 GURL("file:///etc/passwd"))); | 191 GURL("file:///etc/passwd"))); |
| 201 EXPECT_FALSE(p->CanCommitURL(kRendererID, | 192 EXPECT_FALSE(p->CanCommitURL(kRendererID, |
| 202 GURL("chrome://foo/bar"))); | 193 GURL("chrome://foo/bar"))); |
| 203 EXPECT_FALSE( | 194 EXPECT_FALSE( |
| 204 p->CanCommitURL(kRendererID, GURL("view-source:http://www.google.com/"))); | 195 p->CanCommitURL(kRendererID, GURL("view-source:http://www.google.com/"))); |
| 205 EXPECT_FALSE( | 196 EXPECT_FALSE( |
| 206 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); | 197 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); |
| 207 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("chrome://foo/bar"))); | 198 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("chrome://foo/bar"))); |
| 208 EXPECT_FALSE(p->CanSetAsOriginHeader( | 199 EXPECT_FALSE(p->CanSetAsOriginHeader( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 232 kRendererID, GURL("blob:http://username@localhost/some-guid"))); | 223 kRendererID, GURL("blob:http://username@localhost/some-guid"))); |
| 233 EXPECT_FALSE(p->CanRequestURL( | 224 EXPECT_FALSE(p->CanRequestURL( |
| 234 kRendererID, GURL("blob:http://username @localhost/some-guid"))); | 225 kRendererID, GURL("blob:http://username @localhost/some-guid"))); |
| 235 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("blob:blob:some-guid"))); | 226 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("blob:blob:some-guid"))); |
| 236 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("blob:some-guid"))); | 227 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("blob:some-guid"))); |
| 237 EXPECT_FALSE(p->CanRequestURL(kRendererID, | 228 EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| 238 GURL("blob:filesystem:http://localhost/path"))); | 229 GURL("blob:filesystem:http://localhost/path"))); |
| 239 EXPECT_FALSE(p->CanRequestURL(kRendererID, | 230 EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| 240 GURL("filesystem:blob:http://localhost/guid"))); | 231 GURL("filesystem:blob:http://localhost/guid"))); |
| 241 | 232 |
| 242 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:http://localhost/some-guid"))); | |
| 243 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:null/some-guid"))); | |
| 244 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:http://localhost/some-guid"))); | |
| 245 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:NulL/some-guid"))); | |
| 246 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:NulL/some-guid#fragment"))); | |
| 247 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:NulL/some-guid?query"))); | |
| 248 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:blobinternal://some-guid"))); | |
| 249 EXPECT_TRUE( | |
| 250 p->CanRedirectToURL(GURL("blob:http://username@localhost/some-guid"))); | |
| 251 EXPECT_TRUE(p->CanRedirectToURL( | |
| 252 GURL("blob:http://username @localhost/some-guid"))); | |
| 253 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:blob:some-guid"))); | |
| 254 EXPECT_TRUE(p->CanRedirectToURL(GURL("blob:some-guid"))); | |
| 255 EXPECT_TRUE( | |
| 256 p->CanRedirectToURL(GURL("blob:filesystem:http://localhost/path"))); | |
| 257 EXPECT_FALSE( | |
| 258 p->CanRedirectToURL(GURL("filesystem:blob:http://localhost/guid"))); | |
| 259 | |
| 260 EXPECT_TRUE( | 233 EXPECT_TRUE( |
| 261 p->CanCommitURL(kRendererID, GURL("blob:http://localhost/some-guid"))); | 234 p->CanCommitURL(kRendererID, GURL("blob:http://localhost/some-guid"))); |
| 262 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("blob:null/some-guid"))); | 235 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("blob:null/some-guid"))); |
| 263 EXPECT_TRUE( | 236 EXPECT_TRUE( |
| 264 p->CanCommitURL(kRendererID, GURL("blob:http://localhost/some-guid"))); | 237 p->CanCommitURL(kRendererID, GURL("blob:http://localhost/some-guid"))); |
| 265 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("blob:NulL/some-guid"))); | 238 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("blob:NulL/some-guid"))); |
| 266 EXPECT_TRUE( | 239 EXPECT_TRUE( |
| 267 p->CanCommitURL(kRendererID, GURL("blob:NulL/some-guid#fragment"))); | 240 p->CanCommitURL(kRendererID, GURL("blob:NulL/some-guid#fragment"))); |
| 268 EXPECT_TRUE( | 241 EXPECT_TRUE( |
| 269 p->CanCommitURL(kRendererID, GURL("blob:blobinternal://some-guid"))); | 242 p->CanCommitURL(kRendererID, GURL("blob:blobinternal://some-guid"))); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 284 TEST_F(ChildProcessSecurityPolicyTest, AboutTest) { | 257 TEST_F(ChildProcessSecurityPolicyTest, AboutTest) { |
| 285 ChildProcessSecurityPolicyImpl* p = | 258 ChildProcessSecurityPolicyImpl* p = |
| 286 ChildProcessSecurityPolicyImpl::GetInstance(); | 259 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 287 | 260 |
| 288 p->Add(kRendererID); | 261 p->Add(kRendererID); |
| 289 | 262 |
| 290 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:blank"))); | 263 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:blank"))); |
| 291 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:BlAnK"))); | 264 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:BlAnK"))); |
| 292 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBouT:BlAnK"))); | 265 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBouT:BlAnK"))); |
| 293 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:blank"))); | 266 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:blank"))); |
| 294 EXPECT_TRUE(p->CanRedirectToURL(GURL("about:blank"))); | |
| 295 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:BlAnK"))); | |
| 296 EXPECT_FALSE(p->CanRedirectToURL(GURL("aBouT:BlAnK"))); | |
| 297 EXPECT_TRUE(p->CanRedirectToURL(GURL("aBouT:blank"))); | |
| 298 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:blank"))); | 267 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:blank"))); |
| 299 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:BlAnK"))); | 268 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:BlAnK"))); |
| 300 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBouT:BlAnK"))); | 269 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBouT:BlAnK"))); |
| 301 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("aBouT:blank"))); | 270 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("aBouT:blank"))); |
| 302 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("about:blank"))); | 271 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("about:blank"))); |
| 303 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:BlAnK"))); | 272 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:BlAnK"))); |
| 304 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBouT:BlAnK"))); | 273 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBouT:BlAnK"))); |
| 305 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("aBouT:blank"))); | 274 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("aBouT:blank"))); |
| 306 | 275 |
| 307 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:srcdoc"))); | 276 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:srcdoc"))); |
| 308 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:srcdoc"))); | |
| 309 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:srcdoc"))); | 277 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:srcdoc"))); |
| 310 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:srcdoc"))); | 278 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:srcdoc"))); |
| 311 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:SRCDOC"))); | 279 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:SRCDOC"))); |
| 312 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:SRCDOC"))); | 280 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:SRCDOC"))); |
| 313 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:SRCDOC"))); | 281 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:SRCDOC"))); |
| 314 | 282 |
| 315 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); | 283 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); |
| 316 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:cache"))); | 284 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:cache"))); |
| 317 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:hang"))); | 285 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:hang"))); |
| 318 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:version"))); | 286 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:version"))); |
| 319 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:crash"))); | |
| 320 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:cache"))); | |
| 321 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:hang"))); | |
| 322 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:version"))); | |
| 323 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash"))); | 287 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash"))); |
| 324 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:cache"))); | 288 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:cache"))); |
| 325 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:hang"))); | 289 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:hang"))); |
| 326 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:version"))); | 290 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:version"))); |
| 327 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:crash"))); | 291 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:crash"))); |
| 328 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:cache"))); | 292 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:cache"))); |
| 329 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:hang"))); | 293 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:hang"))); |
| 330 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:version"))); | 294 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:version"))); |
| 331 | 295 |
| 332 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBoUt:version"))); | 296 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBoUt:version"))); |
| 333 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:CrASh"))); | 297 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:CrASh"))); |
| 334 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("abOuT:cAChe"))); | 298 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("abOuT:cAChe"))); |
| 335 EXPECT_FALSE(p->CanRedirectToURL(GURL("aBoUt:version"))); | |
| 336 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:CrASh"))); | |
| 337 EXPECT_FALSE(p->CanRedirectToURL(GURL("abOuT:cAChe"))); | |
| 338 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version"))); | 299 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version"))); |
| 339 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:CrASh"))); | 300 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:CrASh"))); |
| 340 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("abOuT:cAChe"))); | 301 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("abOuT:cAChe"))); |
| 341 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version"))); | 302 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version"))); |
| 342 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBoUt:version"))); | 303 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBoUt:version"))); |
| 343 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:CrASh"))); | 304 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:CrASh"))); |
| 344 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("abOuT:cAChe"))); | 305 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("abOuT:cAChe"))); |
| 345 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBoUt:version"))); | 306 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBoUt:version"))); |
| 346 | 307 |
| 347 // Requests for about: pages should be denied. | 308 // Requests for about: pages should be denied. |
| 348 p->GrantRequestURL(kRendererID, GURL("about:crash")); | 309 p->GrantRequestURL(kRendererID, GURL("about:crash")); |
| 349 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); | 310 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); |
| 350 EXPECT_FALSE(p->CanRedirectToURL(GURL("about:crash"))); | |
| 351 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash"))); | 311 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash"))); |
| 352 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:crash"))); | 312 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:crash"))); |
| 353 | 313 |
| 354 // These requests for chrome:// pages should be granted. | 314 // These requests for chrome:// pages should be granted. |
| 355 GURL chrome_url("chrome://foo"); | 315 GURL chrome_url("chrome://foo"); |
| 356 p->GrantRequestURL(kRendererID, chrome_url); | 316 p->GrantRequestURL(kRendererID, chrome_url); |
| 357 EXPECT_TRUE(p->CanRequestURL(kRendererID, chrome_url)); | 317 EXPECT_TRUE(p->CanRequestURL(kRendererID, chrome_url)); |
| 358 EXPECT_TRUE(p->CanRedirectToURL(GURL(chrome_url))); | |
| 359 EXPECT_TRUE(p->CanCommitURL(kRendererID, chrome_url)); | 318 EXPECT_TRUE(p->CanCommitURL(kRendererID, chrome_url)); |
| 360 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, chrome_url)); | 319 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, chrome_url)); |
| 361 | 320 |
| 362 p->Remove(kRendererID); | 321 p->Remove(kRendererID); |
| 363 } | 322 } |
| 364 | 323 |
| 365 TEST_F(ChildProcessSecurityPolicyTest, JavaScriptTest) { | 324 TEST_F(ChildProcessSecurityPolicyTest, JavaScriptTest) { |
| 366 ChildProcessSecurityPolicyImpl* p = | 325 ChildProcessSecurityPolicyImpl* p = |
| 367 ChildProcessSecurityPolicyImpl::GetInstance(); | 326 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 368 | 327 |
| 369 p->Add(kRendererID); | 328 p->Add(kRendererID); |
| 370 | 329 |
| 371 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); | 330 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); |
| 372 EXPECT_FALSE(p->CanRedirectToURL(GURL("javascript:alert('xss')"))); | |
| 373 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')"))); | 331 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')"))); |
| 374 EXPECT_FALSE( | 332 EXPECT_FALSE( |
| 375 p->CanSetAsOriginHeader(kRendererID, GURL("javascript:alert('xss')"))); | 333 p->CanSetAsOriginHeader(kRendererID, GURL("javascript:alert('xss')"))); |
| 376 p->GrantRequestURL(kRendererID, GURL("javascript:alert('xss')")); | 334 p->GrantRequestURL(kRendererID, GURL("javascript:alert('xss')")); |
| 377 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); | 335 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); |
| 378 EXPECT_FALSE(p->CanRedirectToURL(GURL("javascript:alert('xss')"))); | |
| 379 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')"))); | 336 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')"))); |
| 380 EXPECT_FALSE( | 337 EXPECT_FALSE( |
| 381 p->CanSetAsOriginHeader(kRendererID, GURL("javascript:alert('xss')"))); | 338 p->CanSetAsOriginHeader(kRendererID, GURL("javascript:alert('xss')"))); |
| 382 | 339 |
| 383 p->Remove(kRendererID); | 340 p->Remove(kRendererID); |
| 384 } | 341 } |
| 385 | 342 |
| 386 TEST_F(ChildProcessSecurityPolicyTest, SuboriginTest) { | 343 TEST_F(ChildProcessSecurityPolicyTest, SuboriginTest) { |
| 387 ChildProcessSecurityPolicyImpl* p = | 344 ChildProcessSecurityPolicyImpl* p = |
| 388 ChildProcessSecurityPolicyImpl::GetInstance(); | 345 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 389 | 346 |
| 390 p->Add(kRendererID); | 347 p->Add(kRendererID); |
| 391 | 348 |
| 392 // Suborigin URLs are not requestable or committable. | 349 // Suborigin URLs are not requestable or committable. |
| 393 EXPECT_FALSE( | 350 EXPECT_FALSE( |
| 394 p->CanRequestURL(kRendererID, GURL("http-so://foobar.example.com"))); | 351 p->CanRequestURL(kRendererID, GURL("http-so://foobar.example.com"))); |
| 395 EXPECT_FALSE( | 352 EXPECT_FALSE( |
| 396 p->CanRequestURL(kRendererID, GURL("https-so://foobar.example.com"))); | 353 p->CanRequestURL(kRendererID, GURL("https-so://foobar.example.com"))); |
| 397 EXPECT_FALSE(p->CanRedirectToURL(GURL("http-so://foobar.example.com"))); | |
| 398 EXPECT_FALSE(p->CanRedirectToURL(GURL("https-so://foobar.example.com"))); | |
| 399 EXPECT_FALSE( | 354 EXPECT_FALSE( |
| 400 p->CanCommitURL(kRendererID, GURL("http-so://foobar.example.com"))); | 355 p->CanCommitURL(kRendererID, GURL("http-so://foobar.example.com"))); |
| 401 EXPECT_FALSE( | 356 EXPECT_FALSE( |
| 402 p->CanCommitURL(kRendererID, GURL("https-so://foobar.example.com"))); | 357 p->CanCommitURL(kRendererID, GURL("https-so://foobar.example.com"))); |
| 403 | 358 |
| 404 // It's not possible to grant suborigins requestable status. | 359 // It's not possible to grant suborigins requestable status. |
| 405 p->GrantRequestURL(kRendererID, GURL("https-so://foobar.example.com")); | 360 p->GrantRequestURL(kRendererID, GURL("https-so://foobar.example.com")); |
| 406 EXPECT_FALSE( | 361 EXPECT_FALSE( |
| 407 p->CanCommitURL(kRendererID, GURL("https-so://foobar.example.com"))); | 362 p->CanCommitURL(kRendererID, GURL("https-so://foobar.example.com"))); |
| 408 | 363 |
| 409 // Suborigin URLs are valid origin headers. | 364 // Suborigin URLs are valid origin headers. |
| 410 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, | 365 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, |
| 411 GURL("http-so://foobar.example.com"))); | 366 GURL("http-so://foobar.example.com"))); |
| 412 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, | 367 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, |
| 413 GURL("https-so://foobar.example.com"))); | 368 GURL("https-so://foobar.example.com"))); |
| 414 | 369 |
| 415 p->Remove(kRendererID); | 370 p->Remove(kRendererID); |
| 416 } | 371 } |
| 417 | 372 |
| 418 TEST_F(ChildProcessSecurityPolicyTest, RegisterWebSafeSchemeTest) { | 373 TEST_F(ChildProcessSecurityPolicyTest, RegisterWebSafeSchemeTest) { |
| 419 ChildProcessSecurityPolicyImpl* p = | 374 ChildProcessSecurityPolicyImpl* p = |
| 420 ChildProcessSecurityPolicyImpl::GetInstance(); | 375 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 421 | 376 |
| 422 p->Add(kRendererID); | 377 p->Add(kRendererID); |
| 423 | 378 |
| 424 // Currently, "asdf" is destined for ShellExecute, so it is allowed to be | 379 // Currently, "asdf" is destined for ShellExecute, so it is allowed to be |
| 425 // requested but not committed. | 380 // requested but not committed. |
| 426 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); | 381 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); |
| 427 EXPECT_TRUE(p->CanRedirectToURL(GURL("asdf:rockers"))); | |
| 428 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); | 382 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); |
| 429 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers"))); | 383 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers"))); |
| 430 | 384 |
| 431 // Once we register "asdf", we default to deny. | 385 // Once we register "asdf", we default to deny. |
| 432 RegisterTestScheme("asdf"); | 386 RegisterTestScheme("asdf"); |
| 433 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); | 387 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); |
| 434 EXPECT_TRUE(p->CanRedirectToURL(GURL("asdf:rockers"))); | |
| 435 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); | 388 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); |
| 436 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers"))); | 389 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers"))); |
| 437 | 390 |
| 438 // We can allow new schemes by adding them to the whitelist. | 391 // We can allow new schemes by adding them to the whitelist. |
| 439 p->RegisterWebSafeScheme("asdf"); | 392 p->RegisterWebSafeScheme("asdf"); |
| 440 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); | 393 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); |
| 441 EXPECT_TRUE(p->CanRedirectToURL(GURL("asdf:rockers"))); | |
| 442 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); | 394 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); |
| 443 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers"))); | 395 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers"))); |
| 444 | 396 |
| 445 // Cleanup. | 397 // Cleanup. |
| 446 p->Remove(kRendererID); | 398 p->Remove(kRendererID); |
| 447 } | 399 } |
| 448 | 400 |
| 449 TEST_F(ChildProcessSecurityPolicyTest, CanServiceCommandsTest) { | 401 TEST_F(ChildProcessSecurityPolicyTest, CanServiceCommandsTest) { |
| 450 ChildProcessSecurityPolicyImpl* p = | 402 ChildProcessSecurityPolicyImpl* p = |
| 451 ChildProcessSecurityPolicyImpl::GetInstance(); | 403 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 452 | 404 |
| 453 p->Add(kRendererID); | 405 p->Add(kRendererID); |
| 454 | 406 |
| 455 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); | 407 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| 456 EXPECT_TRUE(p->CanRedirectToURL(GURL("file:///etc/passwd"))); | |
| 457 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); | 408 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); |
| 458 EXPECT_FALSE( | 409 EXPECT_FALSE( |
| 459 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); | 410 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); |
| 460 p->GrantRequestURL(kRendererID, GURL("file:///etc/passwd")); | 411 p->GrantRequestURL(kRendererID, GURL("file:///etc/passwd")); |
| 461 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); | 412 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| 462 EXPECT_TRUE(p->CanRedirectToURL(GURL("file:///etc/passwd"))); | |
| 463 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); | 413 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); |
| 464 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); | 414 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); |
| 465 | 415 |
| 466 // We should forget our state if we repeat a renderer id. | 416 // We should forget our state if we repeat a renderer id. |
| 467 p->Remove(kRendererID); | 417 p->Remove(kRendererID); |
| 468 p->Add(kRendererID); | 418 p->Add(kRendererID); |
| 469 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); | 419 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| 470 EXPECT_TRUE(p->CanRedirectToURL(GURL("file:///etc/passwd"))); | |
| 471 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); | 420 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); |
| 472 EXPECT_FALSE( | 421 EXPECT_FALSE( |
| 473 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); | 422 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); |
| 474 p->Remove(kRendererID); | 423 p->Remove(kRendererID); |
| 475 } | 424 } |
| 476 | 425 |
| 477 TEST_F(ChildProcessSecurityPolicyTest, ViewSource) { | 426 TEST_F(ChildProcessSecurityPolicyTest, ViewSource) { |
| 478 ChildProcessSecurityPolicyImpl* p = | 427 ChildProcessSecurityPolicyImpl* p = |
| 479 ChildProcessSecurityPolicyImpl::GetInstance(); | 428 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 480 | 429 |
| 481 p->Add(kRendererID); | 430 p->Add(kRendererID); |
| 482 | 431 |
| 483 // Child processes cannot request view source URLs. | 432 // Child processes cannot request view source URLs. |
| 484 EXPECT_FALSE(p->CanRequestURL(kRendererID, | 433 EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| 485 GURL("view-source:http://www.google.com/"))); | 434 GURL("view-source:http://www.google.com/"))); |
| 486 EXPECT_FALSE(p->CanRequestURL(kRendererID, | 435 EXPECT_FALSE(p->CanRequestURL(kRendererID, |
| 487 GURL("view-source:file:///etc/passwd"))); | 436 GURL("view-source:file:///etc/passwd"))); |
| 488 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); | 437 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| 489 EXPECT_FALSE(p->CanRequestURL( | 438 EXPECT_FALSE(p->CanRequestURL( |
| 490 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); | 439 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); |
| 491 | 440 |
| 492 // Child processes cannot be redirected to view source URLs. | |
| 493 EXPECT_FALSE(p->CanRedirectToURL(GURL("view-source:http://www.google.com/"))); | |
| 494 EXPECT_FALSE(p->CanRedirectToURL(GURL("view-source:file:///etc/passwd"))); | |
| 495 EXPECT_TRUE(p->CanRedirectToURL(GURL("file:///etc/passwd"))); | |
| 496 EXPECT_FALSE(p->CanRedirectToURL( | |
| 497 GURL("view-source:view-source:http://www.google.com/"))); | |
| 498 | |
| 499 // View source URLs don't actually commit; the renderer is put into view | 441 // View source URLs don't actually commit; the renderer is put into view |
| 500 // source mode, and the inner URL commits. | 442 // source mode, and the inner URL commits. |
| 501 EXPECT_FALSE(p->CanCommitURL(kRendererID, | 443 EXPECT_FALSE(p->CanCommitURL(kRendererID, |
| 502 GURL("view-source:http://www.google.com/"))); | 444 GURL("view-source:http://www.google.com/"))); |
| 503 EXPECT_FALSE(p->CanCommitURL(kRendererID, | 445 EXPECT_FALSE(p->CanCommitURL(kRendererID, |
| 504 GURL("view-source:file:///etc/passwd"))); | 446 GURL("view-source:file:///etc/passwd"))); |
| 505 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); | 447 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); |
| 506 EXPECT_FALSE(p->CanCommitURL( | 448 EXPECT_FALSE(p->CanCommitURL( |
| 507 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); | 449 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); |
| 508 | 450 |
| 509 // View source URLs should not be setable as origin headers | 451 // View source URLs should not be setable as origin headers |
| 510 EXPECT_FALSE(p->CanSetAsOriginHeader( | 452 EXPECT_FALSE(p->CanSetAsOriginHeader( |
| 511 kRendererID, GURL("view-source:http://www.google.com/"))); | 453 kRendererID, GURL("view-source:http://www.google.com/"))); |
| 512 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, | 454 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, |
| 513 GURL("view-source:file:///etc/passwd"))); | 455 GURL("view-source:file:///etc/passwd"))); |
| 514 EXPECT_FALSE( | 456 EXPECT_FALSE( |
| 515 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); | 457 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); |
| 516 EXPECT_FALSE(p->CanSetAsOriginHeader( | 458 EXPECT_FALSE(p->CanSetAsOriginHeader( |
| 517 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); | 459 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); |
| 518 | 460 |
| 519 p->GrantRequestURL(kRendererID, GURL("view-source:file:///etc/passwd")); | 461 p->GrantRequestURL(kRendererID, GURL("view-source:file:///etc/passwd")); |
| 520 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); | 462 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); |
| 521 EXPECT_TRUE(p->CanRedirectToURL(GURL("file:///etc/passwd"))); | |
| 522 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); | 463 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); |
| 523 EXPECT_FALSE( | 464 EXPECT_FALSE( |
| 524 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); | 465 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd"))); |
| 525 EXPECT_FALSE( | 466 EXPECT_FALSE( |
| 526 p->CanRequestURL(kRendererID, GURL("view-source:file:///etc/passwd"))); | 467 p->CanRequestURL(kRendererID, GURL("view-source:file:///etc/passwd"))); |
| 527 EXPECT_FALSE(p->CanRedirectToURL(GURL("view-source:file:///etc/passwd"))); | |
| 528 EXPECT_FALSE(p->CanCommitURL(kRendererID, | 468 EXPECT_FALSE(p->CanCommitURL(kRendererID, |
| 529 GURL("view-source:file:///etc/passwd"))); | 469 GURL("view-source:file:///etc/passwd"))); |
| 530 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, | 470 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, |
| 531 GURL("view-source:file:///etc/passwd"))); | 471 GURL("view-source:file:///etc/passwd"))); |
| 532 p->Remove(kRendererID); | 472 p->Remove(kRendererID); |
| 533 } | 473 } |
| 534 | 474 |
| 535 TEST_F(ChildProcessSecurityPolicyTest, SpecificFile) { | 475 TEST_F(ChildProcessSecurityPolicyTest, SpecificFile) { |
| 536 ChildProcessSecurityPolicyImpl* p = | 476 ChildProcessSecurityPolicyImpl* p = |
| 537 ChildProcessSecurityPolicyImpl::GetInstance(); | 477 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 538 | 478 |
| 539 p->Add(kRendererID); | 479 p->Add(kRendererID); |
| 540 | 480 |
| 541 GURL icon_url("file:///tmp/foo.png"); | 481 GURL icon_url("file:///tmp/foo.png"); |
| 542 GURL sensitive_url("file:///etc/passwd"); | 482 GURL sensitive_url("file:///etc/passwd"); |
| 543 EXPECT_FALSE(p->CanRequestURL(kRendererID, icon_url)); | 483 EXPECT_FALSE(p->CanRequestURL(kRendererID, icon_url)); |
| 544 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); | 484 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); |
| 545 EXPECT_TRUE(p->CanRedirectToURL(icon_url)); | |
| 546 EXPECT_TRUE(p->CanRedirectToURL(sensitive_url)); | |
| 547 EXPECT_FALSE(p->CanCommitURL(kRendererID, icon_url)); | 485 EXPECT_FALSE(p->CanCommitURL(kRendererID, icon_url)); |
| 548 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url)); | 486 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url)); |
| 549 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, icon_url)); | 487 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, icon_url)); |
| 550 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, sensitive_url)); | 488 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, sensitive_url)); |
| 551 | 489 |
| 552 p->GrantRequestSpecificFileURL(kRendererID, icon_url); | 490 p->GrantRequestSpecificFileURL(kRendererID, icon_url); |
| 553 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); | 491 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); |
| 554 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); | 492 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); |
| 555 EXPECT_TRUE(p->CanRedirectToURL(icon_url)); | |
| 556 EXPECT_TRUE(p->CanRedirectToURL(sensitive_url)); | |
| 557 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url)); | 493 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url)); |
| 558 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url)); | 494 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url)); |
| 559 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, icon_url)); | 495 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, icon_url)); |
| 560 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, sensitive_url)); | 496 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, sensitive_url)); |
| 561 | 497 |
| 562 p->GrantRequestURL(kRendererID, icon_url); | 498 p->GrantRequestURL(kRendererID, icon_url); |
| 563 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); | 499 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); |
| 564 EXPECT_TRUE(p->CanRequestURL(kRendererID, sensitive_url)); | 500 EXPECT_TRUE(p->CanRequestURL(kRendererID, sensitive_url)); |
| 565 EXPECT_TRUE(p->CanRedirectToURL(icon_url)); | |
| 566 EXPECT_TRUE(p->CanRedirectToURL(sensitive_url)); | |
| 567 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url)); | 501 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url)); |
| 568 EXPECT_TRUE(p->CanCommitURL(kRendererID, sensitive_url)); | 502 EXPECT_TRUE(p->CanCommitURL(kRendererID, sensitive_url)); |
| 569 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, icon_url)); | 503 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, icon_url)); |
| 570 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, sensitive_url)); | 504 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, sensitive_url)); |
| 571 | 505 |
| 572 p->Remove(kRendererID); | 506 p->Remove(kRendererID); |
| 573 } | 507 } |
| 574 | 508 |
| 575 TEST_F(ChildProcessSecurityPolicyTest, FileSystemGrantsTest) { | 509 TEST_F(ChildProcessSecurityPolicyTest, FileSystemGrantsTest) { |
| 576 ChildProcessSecurityPolicyImpl* p = | 510 ChildProcessSecurityPolicyImpl* p = |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 TEST_F(ChildProcessSecurityPolicyTest, CanServiceWebUIBindings) { | 801 TEST_F(ChildProcessSecurityPolicyTest, CanServiceWebUIBindings) { |
| 868 ChildProcessSecurityPolicyImpl* p = | 802 ChildProcessSecurityPolicyImpl* p = |
| 869 ChildProcessSecurityPolicyImpl::GetInstance(); | 803 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 870 | 804 |
| 871 GURL url("chrome://thumb/http://www.google.com/"); | 805 GURL url("chrome://thumb/http://www.google.com/"); |
| 872 | 806 |
| 873 p->Add(kRendererID); | 807 p->Add(kRendererID); |
| 874 | 808 |
| 875 EXPECT_FALSE(p->HasWebUIBindings(kRendererID)); | 809 EXPECT_FALSE(p->HasWebUIBindings(kRendererID)); |
| 876 EXPECT_FALSE(p->CanRequestURL(kRendererID, url)); | 810 EXPECT_FALSE(p->CanRequestURL(kRendererID, url)); |
| 877 EXPECT_TRUE(p->CanRedirectToURL(url)); | |
| 878 p->GrantWebUIBindings(kRendererID); | 811 p->GrantWebUIBindings(kRendererID); |
| 879 EXPECT_TRUE(p->HasWebUIBindings(kRendererID)); | 812 EXPECT_TRUE(p->HasWebUIBindings(kRendererID)); |
| 880 EXPECT_TRUE(p->CanRequestURL(kRendererID, url)); | 813 EXPECT_TRUE(p->CanRequestURL(kRendererID, url)); |
| 881 EXPECT_TRUE(p->CanRedirectToURL(url)); | |
| 882 | 814 |
| 883 p->Remove(kRendererID); | 815 p->Remove(kRendererID); |
| 884 } | 816 } |
| 885 | 817 |
| 886 TEST_F(ChildProcessSecurityPolicyTest, RemoveRace) { | 818 TEST_F(ChildProcessSecurityPolicyTest, RemoveRace) { |
| 887 ChildProcessSecurityPolicyImpl* p = | 819 ChildProcessSecurityPolicyImpl* p = |
| 888 ChildProcessSecurityPolicyImpl::GetInstance(); | 820 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 889 | 821 |
| 890 GURL url("file:///etc/passwd"); | 822 GURL url("file:///etc/passwd"); |
| 891 base::FilePath file(TEST_PATH("/etc/passwd")); | 823 base::FilePath file(TEST_PATH("/etc/passwd")); |
| 892 | 824 |
| 893 p->Add(kRendererID); | 825 p->Add(kRendererID); |
| 894 | 826 |
| 895 p->GrantRequestURL(kRendererID, url); | 827 p->GrantRequestURL(kRendererID, url); |
| 896 p->GrantReadFile(kRendererID, file); | 828 p->GrantReadFile(kRendererID, file); |
| 897 p->GrantWebUIBindings(kRendererID); | 829 p->GrantWebUIBindings(kRendererID); |
| 898 | 830 |
| 899 EXPECT_TRUE(p->CanRequestURL(kRendererID, url)); | 831 EXPECT_TRUE(p->CanRequestURL(kRendererID, url)); |
| 900 EXPECT_TRUE(p->CanRedirectToURL(url)); | |
| 901 EXPECT_TRUE(p->CanReadFile(kRendererID, file)); | 832 EXPECT_TRUE(p->CanReadFile(kRendererID, file)); |
| 902 EXPECT_TRUE(p->HasWebUIBindings(kRendererID)); | 833 EXPECT_TRUE(p->HasWebUIBindings(kRendererID)); |
| 903 | 834 |
| 904 p->Remove(kRendererID); | 835 p->Remove(kRendererID); |
| 905 | 836 |
| 906 // Renderers are added and removed on the UI thread, but the policy can be | 837 // Renderers are added and removed on the UI thread, but the policy can be |
| 907 // queried on the IO thread. The ChildProcessSecurityPolicy needs to be | 838 // queried on the IO thread. The ChildProcessSecurityPolicy needs to be |
| 908 // prepared to answer policy questions about renderers who no longer exist. | 839 // prepared to answer policy questions about renderers who no longer exist. |
| 909 | 840 |
| 910 // In this case, we default to secure behavior. | 841 // In this case, we default to secure behavior. |
| 911 EXPECT_FALSE(p->CanRequestURL(kRendererID, url)); | 842 EXPECT_FALSE(p->CanRequestURL(kRendererID, url)); |
| 912 EXPECT_TRUE(p->CanRedirectToURL(url)); | |
| 913 EXPECT_FALSE(p->CanReadFile(kRendererID, file)); | 843 EXPECT_FALSE(p->CanReadFile(kRendererID, file)); |
| 914 EXPECT_FALSE(p->HasWebUIBindings(kRendererID)); | 844 EXPECT_FALSE(p->HasWebUIBindings(kRendererID)); |
| 915 } | 845 } |
| 916 | 846 |
| 917 // Test the granting of origin permissions, and their interactions with | 847 // Test the granting of origin permissions, and their interactions with |
| 918 // granting scheme permissions. | 848 // granting scheme permissions. |
| 919 TEST_F(ChildProcessSecurityPolicyTest, OriginGranting) { | 849 TEST_F(ChildProcessSecurityPolicyTest, OriginGranting) { |
| 920 ChildProcessSecurityPolicyImpl* p = | 850 ChildProcessSecurityPolicyImpl* p = |
| 921 ChildProcessSecurityPolicyImpl::GetInstance(); | 851 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 922 | 852 |
| 923 p->Add(kRendererID); | 853 p->Add(kRendererID); |
| 924 | 854 |
| 925 GURL url_foo1("chrome://foo/resource1"); | 855 GURL url_foo1("chrome://foo/resource1"); |
| 926 GURL url_foo2("chrome://foo/resource2"); | 856 GURL url_foo2("chrome://foo/resource2"); |
| 927 GURL url_bar("chrome://bar/resource3"); | 857 GURL url_bar("chrome://bar/resource3"); |
| 928 | 858 |
| 929 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo1)); | 859 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo1)); |
| 930 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo2)); | 860 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo2)); |
| 931 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar)); | 861 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar)); |
| 932 EXPECT_TRUE(p->CanRedirectToURL(url_foo1)); | |
| 933 EXPECT_TRUE(p->CanRedirectToURL(url_foo2)); | |
| 934 EXPECT_TRUE(p->CanRedirectToURL(url_bar)); | |
| 935 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo1)); | 862 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo1)); |
| 936 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo2)); | 863 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo2)); |
| 937 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar)); | 864 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar)); |
| 938 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_foo1)); | 865 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_foo1)); |
| 939 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_foo2)); | 866 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_foo2)); |
| 940 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_bar)); | 867 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_bar)); |
| 941 | 868 |
| 942 p->GrantOrigin(kRendererID, url::Origin(url_foo1)); | 869 p->GrantOrigin(kRendererID, url::Origin(url_foo1)); |
| 943 | 870 |
| 944 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1)); | 871 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1)); |
| 945 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2)); | 872 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2)); |
| 946 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar)); | 873 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar)); |
| 947 EXPECT_TRUE(p->CanRedirectToURL(url_foo1)); | |
| 948 EXPECT_TRUE(p->CanRedirectToURL(url_foo2)); | |
| 949 EXPECT_TRUE(p->CanRedirectToURL(url_bar)); | |
| 950 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1)); | 874 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1)); |
| 951 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2)); | 875 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2)); |
| 952 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar)); | 876 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar)); |
| 953 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo1)); | 877 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo1)); |
| 954 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo2)); | 878 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo2)); |
| 955 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_bar)); | 879 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_bar)); |
| 956 | 880 |
| 957 p->GrantScheme(kRendererID, kChromeUIScheme); | 881 p->GrantScheme(kRendererID, kChromeUIScheme); |
| 958 | 882 |
| 959 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1)); | 883 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1)); |
| 960 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2)); | 884 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2)); |
| 961 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_bar)); | 885 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_bar)); |
| 962 EXPECT_TRUE(p->CanRedirectToURL(url_foo1)); | |
| 963 EXPECT_TRUE(p->CanRedirectToURL(url_foo2)); | |
| 964 EXPECT_TRUE(p->CanRedirectToURL(url_bar)); | |
| 965 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1)); | 886 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1)); |
| 966 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2)); | 887 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2)); |
| 967 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_bar)); | 888 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_bar)); |
| 968 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo1)); | 889 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo1)); |
| 969 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo2)); | 890 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo2)); |
| 970 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_bar)); | 891 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_bar)); |
| 971 | 892 |
| 972 p->Remove(kRendererID); | 893 p->Remove(kRendererID); |
| 973 } | 894 } |
| 974 | 895 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 991 EXPECT_EQ(4U, policy->isolated_origins_.size()); | 912 EXPECT_EQ(4U, policy->isolated_origins_.size()); |
| 992 EXPECT_TRUE( | 913 EXPECT_TRUE( |
| 993 policy->IsIsolatedOrigin(url::Origin(GURL("http://isolated.foo.com")))); | 914 policy->IsIsolatedOrigin(url::Origin(GURL("http://isolated.foo.com")))); |
| 994 EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin(GURL("http://a.com")))); | 915 EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin(GURL("http://a.com")))); |
| 995 EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin(GURL("https://b.com")))); | 916 EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin(GURL("https://b.com")))); |
| 996 EXPECT_TRUE( | 917 EXPECT_TRUE( |
| 997 policy->IsIsolatedOrigin(url::Origin(GURL("https://c.com:8000")))); | 918 policy->IsIsolatedOrigin(url::Origin(GURL("https://c.com:8000")))); |
| 998 } | 919 } |
| 999 | 920 |
| 1000 } // namespace content | 921 } // namespace content |
| OLD | NEW |