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 |