OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/render_thread.h" | 5 #include "chrome/renderer/render_thread.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <map> | 9 #include <map> |
10 #include <vector> | 10 #include <vector> |
(...skipping 852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
863 | 863 |
864 v8::V8::SetCounterFunction(base::StatsTable::FindLocation); | 864 v8::V8::SetCounterFunction(base::StatsTable::FindLocation); |
865 v8::V8::SetCreateHistogramFunction(CreateHistogram); | 865 v8::V8::SetCreateHistogramFunction(CreateHistogram); |
866 v8::V8::SetAddHistogramSampleFunction(AddHistogramSample); | 866 v8::V8::SetAddHistogramSampleFunction(AddHistogramSample); |
867 | 867 |
868 webkit_client_.reset(new RendererWebKitClientImpl); | 868 webkit_client_.reset(new RendererWebKitClientImpl); |
869 WebKit::initialize(webkit_client_.get()); | 869 WebKit::initialize(webkit_client_.get()); |
870 | 870 |
871 WebScriptController::enableV8SingleThreadMode(); | 871 WebScriptController::enableV8SingleThreadMode(); |
872 | 872 |
| 873 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| 874 |
873 // chrome: pages should not be accessible by normal content, and should | 875 // chrome: pages should not be accessible by normal content, and should |
874 // also be unable to script anything but themselves (to help limit the damage | 876 // also be unable to script anything but themselves (to help limit the damage |
875 // that a corrupt chrome: page could cause). | 877 // that a corrupt chrome: page could cause). |
876 WebString chrome_ui_scheme(ASCIIToUTF16(chrome::kChromeUIScheme)); | 878 WebString chrome_ui_scheme(ASCIIToUTF16(chrome::kChromeUIScheme)); |
877 WebSecurityPolicy::registerURLSchemeAsLocal(chrome_ui_scheme); | 879 if (command_line.HasSwitch(switches::kNewChromeUISecurityModel)) { |
878 WebSecurityPolicy::registerURLSchemeAsNoAccess(chrome_ui_scheme); | 880 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(chrome_ui_scheme); |
| 881 } else { |
| 882 WebSecurityPolicy::registerURLSchemeAsLocal(chrome_ui_scheme); |
| 883 WebSecurityPolicy::registerURLSchemeAsNoAccess(chrome_ui_scheme); |
| 884 } |
879 | 885 |
880 // chrome-extension: resources shouldn't trigger insecure content warnings. | 886 // chrome-extension: resources shouldn't trigger insecure content warnings. |
881 WebString extension_scheme(ASCIIToUTF16(chrome::kExtensionScheme)); | 887 WebString extension_scheme(ASCIIToUTF16(chrome::kExtensionScheme)); |
882 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme); | 888 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme); |
883 | 889 |
884 #if defined(OS_WIN) | 890 #if defined(OS_WIN) |
885 // We don't yet support Gears on non-Windows, so don't tell pages that we do. | 891 // We don't yet support Gears on non-Windows, so don't tell pages that we do. |
886 RegisterExtension(extensions_v8::GearsExtension::Get(), false); | 892 RegisterExtension(extensions_v8::GearsExtension::Get(), false); |
887 #endif | 893 #endif |
888 RegisterExtension(extensions_v8::LoadTimesExtension::Get(), false); | 894 RegisterExtension(extensions_v8::LoadTimesExtension::Get(), false); |
889 RegisterExtension(extensions_v8::ChromeAppExtension::Get(), false); | 895 RegisterExtension(extensions_v8::ChromeAppExtension::Get(), false); |
890 RegisterExtension(extensions_v8::ExternalExtension::Get(), false); | 896 RegisterExtension(extensions_v8::ExternalExtension::Get(), false); |
891 RegisterExtension(extensions_v8::SearchBoxExtension::Get(), false); | 897 RegisterExtension(extensions_v8::SearchBoxExtension::Get(), false); |
892 v8::Extension* search_extension = extensions_v8::SearchExtension::Get(); | 898 v8::Extension* search_extension = extensions_v8::SearchExtension::Get(); |
893 // search_extension is null if not enabled. | 899 // search_extension is null if not enabled. |
894 if (search_extension) | 900 if (search_extension) |
895 RegisterExtension(search_extension, false); | 901 RegisterExtension(search_extension, false); |
896 | 902 |
897 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | |
898 | |
899 if (command_line.HasSwitch(switches::kEnableBenchmarking)) | 903 if (command_line.HasSwitch(switches::kEnableBenchmarking)) |
900 RegisterExtension(extensions_v8::BenchmarkingExtension::Get(), false); | 904 RegisterExtension(extensions_v8::BenchmarkingExtension::Get(), false); |
901 | 905 |
902 if (command_line.HasSwitch(switches::kPlaybackMode) || | 906 if (command_line.HasSwitch(switches::kPlaybackMode) || |
903 command_line.HasSwitch(switches::kRecordMode) || | 907 command_line.HasSwitch(switches::kRecordMode) || |
904 command_line.HasSwitch(switches::kNoJsRandomness)) { | 908 command_line.HasSwitch(switches::kNoJsRandomness)) { |
905 RegisterExtension(extensions_v8::PlaybackExtension::Get(), false); | 909 RegisterExtension(extensions_v8::PlaybackExtension::Get(), false); |
906 } | 910 } |
907 | 911 |
908 if (command_line.HasSwitch(switches::kDomAutomationController)) | 912 if (command_line.HasSwitch(switches::kDomAutomationController)) |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1143 } | 1147 } |
1144 | 1148 |
1145 return false; | 1149 return false; |
1146 } | 1150 } |
1147 | 1151 |
1148 void RenderThread::RegisterExtension(v8::Extension* extension, | 1152 void RenderThread::RegisterExtension(v8::Extension* extension, |
1149 bool restrict_to_extensions) { | 1153 bool restrict_to_extensions) { |
1150 WebScriptController::registerExtension(extension); | 1154 WebScriptController::registerExtension(extension); |
1151 v8_extensions_[extension->name()] = restrict_to_extensions; | 1155 v8_extensions_[extension->name()] = restrict_to_extensions; |
1152 } | 1156 } |
OLD | NEW |