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 "chrome/renderer/chrome_content_renderer_client.h" | 5 #include "chrome/renderer/chrome_content_renderer_client.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/debug/crash_logging.h" | 8 #include "base/debug/crash_logging.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 thread->RegisterExtension(extensions_v8::LoadTimesExtension::Get()); | 432 thread->RegisterExtension(extensions_v8::LoadTimesExtension::Get()); |
433 | 433 |
434 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 434 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
435 if (command_line->HasSwitch(switches::kEnableBenchmarking)) | 435 if (command_line->HasSwitch(switches::kEnableBenchmarking)) |
436 thread->RegisterExtension(extensions_v8::BenchmarkingExtension::Get()); | 436 thread->RegisterExtension(extensions_v8::BenchmarkingExtension::Get()); |
437 if (command_line->HasSwitch(switches::kEnableNetBenchmarking)) | 437 if (command_line->HasSwitch(switches::kEnableNetBenchmarking)) |
438 thread->RegisterExtension(extensions_v8::NetBenchmarkingExtension::Get()); | 438 thread->RegisterExtension(extensions_v8::NetBenchmarkingExtension::Get()); |
439 if (command_line->HasSwitch(switches::kInstantProcess)) | 439 if (command_line->HasSwitch(switches::kInstantProcess)) |
440 thread->RegisterExtension(extensions_v8::SearchBoxExtension::Get()); | 440 thread->RegisterExtension(extensions_v8::SearchBoxExtension::Get()); |
441 | 441 |
442 // chrome-search: and chrome-distiller: pages should not be accessible by | 442 // chrome:, chrome-search:, chrome-devtools:, and chrome-distiller: pages |
443 // normal content, and should also be unable to script anything but themselves | 443 // should not be accessible by normal content, and should also be unable to |
444 // (to help limit the damage that a corrupt page could cause). | 444 // script anything but themselves (to help limit the damage that a corrupt |
| 445 // page could cause). |
| 446 WebString chrome_ui_scheme(ASCIIToUTF16(content::kChromeUIScheme)); |
| 447 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(chrome_ui_scheme); |
| 448 |
445 WebString chrome_search_scheme(ASCIIToUTF16(chrome::kChromeSearchScheme)); | 449 WebString chrome_search_scheme(ASCIIToUTF16(chrome::kChromeSearchScheme)); |
446 | |
447 // The Instant process can only display the content but not read it. Other | 450 // The Instant process can only display the content but not read it. Other |
448 // processes can't display it or read it. | 451 // processes can't display it or read it. |
449 if (!command_line->HasSwitch(switches::kInstantProcess)) | 452 if (!command_line->HasSwitch(switches::kInstantProcess)) |
450 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(chrome_search_scheme); | 453 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(chrome_search_scheme); |
451 | 454 |
| 455 WebString dev_tools_scheme(ASCIIToUTF16(content::kChromeDevToolsScheme)); |
| 456 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(dev_tools_scheme); |
| 457 |
452 WebString dom_distiller_scheme( | 458 WebString dom_distiller_scheme( |
453 ASCIIToUTF16(dom_distiller::kDomDistillerScheme)); | 459 ASCIIToUTF16(dom_distiller::kDomDistillerScheme)); |
454 // TODO(nyquist): Add test to ensure this happens when the flag is set. | 460 // TODO(nyquist): Add test to ensure this happens when the flag is set. |
455 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(dom_distiller_scheme); | 461 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(dom_distiller_scheme); |
456 | 462 |
457 #if defined(OS_CHROMEOS) | 463 #if defined(OS_CHROMEOS) |
458 WebString external_file_scheme(ASCIIToUTF16(content::kExternalFileScheme)); | 464 WebString external_file_scheme(ASCIIToUTF16(content::kExternalFileScheme)); |
459 WebSecurityPolicy::registerURLSchemeAsLocal(external_file_scheme); | 465 WebSecurityPolicy::registerURLSchemeAsLocal(external_file_scheme); |
460 #endif | 466 #endif |
461 | 467 |
462 #if defined(ENABLE_IPC_FUZZER) | 468 #if defined(ENABLE_IPC_FUZZER) |
463 if (command_line->HasSwitch(switches::kIpcDumpDirectory)) { | 469 if (command_line->HasSwitch(switches::kIpcDumpDirectory)) { |
464 base::FilePath dump_directory = | 470 base::FilePath dump_directory = |
465 command_line->GetSwitchValuePath(switches::kIpcDumpDirectory); | 471 command_line->GetSwitchValuePath(switches::kIpcDumpDirectory); |
466 IPC::ChannelProxy::OutgoingMessageFilter* filter = | 472 IPC::ChannelProxy::OutgoingMessageFilter* filter = |
467 LoadExternalIPCDumper(dump_directory); | 473 LoadExternalIPCDumper(dump_directory); |
468 thread->GetChannel()->set_outgoing_message_filter(filter); | 474 thread->GetChannel()->set_outgoing_message_filter(filter); |
469 } | 475 } |
470 #endif | 476 #endif |
471 | 477 |
472 // chrome-search: pages should not be accessible by bookmarklets | 478 // chrome: and chrome-search: pages should not be accessible by bookmarklets |
473 // or javascript: URLs typed in the omnibox. | 479 // or javascript: URLs typed in the omnibox. |
474 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs( | 480 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs( |
| 481 chrome_ui_scheme); |
| 482 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs( |
475 chrome_search_scheme); | 483 chrome_search_scheme); |
476 | 484 |
477 // chrome-search:, chrome-extension:, and chrome-extension-resource: | 485 // chrome:, chrome-search:, chrome-extension:, and chrome-extension-resource: |
478 // resources shouldn't trigger insecure content warnings. | 486 // resources shouldn't trigger insecure content warnings. |
| 487 WebSecurityPolicy::registerURLSchemeAsSecure(chrome_ui_scheme); |
479 WebSecurityPolicy::registerURLSchemeAsSecure(chrome_search_scheme); | 488 WebSecurityPolicy::registerURLSchemeAsSecure(chrome_search_scheme); |
480 | 489 |
481 WebString extension_scheme(ASCIIToUTF16(extensions::kExtensionScheme)); | 490 WebString extension_scheme(ASCIIToUTF16(extensions::kExtensionScheme)); |
482 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme); | 491 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme); |
483 | 492 |
484 WebString extension_resource_scheme( | 493 WebString extension_resource_scheme( |
485 ASCIIToUTF16(extensions::kExtensionResourceScheme)); | 494 ASCIIToUTF16(extensions::kExtensionResourceScheme)); |
486 WebSecurityPolicy::registerURLSchemeAsSecure(extension_resource_scheme); | 495 WebSecurityPolicy::registerURLSchemeAsSecure(extension_resource_scheme); |
487 | 496 |
488 // chrome:, chrome-extension:, chrome-extension-resource: resources should be | 497 // chrome:, chrome-extension:, chrome-extension-resource: resources should be |
489 // allowed to receive CORS requests. | 498 // allowed to receive CORS requests. |
| 499 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(chrome_ui_scheme); |
490 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme); | 500 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme); |
491 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_resource_scheme); | 501 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_resource_scheme); |
492 | 502 |
493 // chrome-extension: resources should bypass Content Security Policy checks | 503 // chrome-extension: resources should bypass Content Security Policy checks |
494 // when included in protected resources. | 504 // when included in protected resources. |
495 WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy( | 505 WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy( |
496 extension_scheme); | 506 extension_scheme); |
497 WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy( | 507 WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy( |
498 extension_resource_scheme); | 508 extension_resource_scheme); |
499 | 509 |
(...skipping 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1653 WebString header_key(ASCIIToUTF16( | 1663 WebString header_key(ASCIIToUTF16( |
1654 data_reduction_proxy::chrome_proxy_header())); | 1664 data_reduction_proxy::chrome_proxy_header())); |
1655 if (!response.httpHeaderField(header_key).isNull() && | 1665 if (!response.httpHeaderField(header_key).isNull() && |
1656 response.httpHeaderField(header_key).utf8().find( | 1666 response.httpHeaderField(header_key).utf8().find( |
1657 data_reduction_proxy::chrome_proxy_lo_fi_directive()) != | 1667 data_reduction_proxy::chrome_proxy_lo_fi_directive()) != |
1658 std::string::npos) { | 1668 std::string::npos) { |
1659 (*properties)[data_reduction_proxy::chrome_proxy_header()] = | 1669 (*properties)[data_reduction_proxy::chrome_proxy_header()] = |
1660 data_reduction_proxy::chrome_proxy_lo_fi_directive(); | 1670 data_reduction_proxy::chrome_proxy_lo_fi_directive(); |
1661 } | 1671 } |
1662 } | 1672 } |
OLD | NEW |