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