Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: chrome/browser/chrome_content_browser_client.cc

Issue 1156873002: Load v8 snapshots directly from APK (and store them uncompressed) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@v8initializer
Patch Set: Keep extracting for components/ Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/browser/chrome_content_browser_client.h" 5 #include "chrome/browser/chrome_content_browser_client.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 #include "content/public/browser/render_process_host.h" 116 #include "content/public/browser/render_process_host.h"
117 #include "content/public/browser/render_view_host.h" 117 #include "content/public/browser/render_view_host.h"
118 #include "content/public/browser/resource_context.h" 118 #include "content/public/browser/resource_context.h"
119 #include "content/public/browser/site_instance.h" 119 #include "content/public/browser/site_instance.h"
120 #include "content/public/browser/web_contents.h" 120 #include "content/public/browser/web_contents.h"
121 #include "content/public/common/child_process_host.h" 121 #include "content/public/common/child_process_host.h"
122 #include "content/public/common/content_descriptors.h" 122 #include "content/public/common/content_descriptors.h"
123 #include "content/public/common/service_registry.h" 123 #include "content/public/common/service_registry.h"
124 #include "content/public/common/url_utils.h" 124 #include "content/public/common/url_utils.h"
125 #include "content/public/common/web_preferences.h" 125 #include "content/public/common/web_preferences.h"
126 #include "gin/v8_initializer.h"
127 #include "net/base/mime_util.h" 126 #include "net/base/mime_util.h"
128 #include "net/cookies/canonical_cookie.h" 127 #include "net/cookies/canonical_cookie.h"
129 #include "net/cookies/cookie_options.h" 128 #include "net/cookies/cookie_options.h"
130 #include "net/ssl/ssl_cert_request_info.h" 129 #include "net/ssl/ssl_cert_request_info.h"
131 #include "ppapi/host/ppapi_host.h" 130 #include "ppapi/host/ppapi_host.h"
132 #include "storage/browser/fileapi/external_mount_points.h" 131 #include "storage/browser/fileapi/external_mount_points.h"
133 #include "ui/base/l10n/l10n_util.h" 132 #include "ui/base/l10n/l10n_util.h"
134 #include "ui/base/resource/resource_bundle.h" 133 #include "ui/base/resource/resource_bundle.h"
135 #include "ui/resources/grit/ui_resources.h" 134 #include "ui/resources/grit/ui_resources.h"
136 135
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 incognito)); 600 incognito));
602 } 601 }
603 #endif // defined(ENABLE_EXTENSIONS) 602 #endif // defined(ENABLE_EXTENSIONS)
604 603
605 } // namespace 604 } // namespace
606 605
607 namespace chrome { 606 namespace chrome {
608 607
609 ChromeContentBrowserClient::ChromeContentBrowserClient() 608 ChromeContentBrowserClient::ChromeContentBrowserClient()
610 : 609 :
611 #if defined(OS_POSIX) && !defined(OS_MACOSX)
612 v8_natives_fd_(-1),
613 v8_snapshot_fd_(-1),
614 #endif // OS_POSIX && !OS_MACOSX
615 weak_factory_(this) { 610 weak_factory_(this) {
616 #if defined(ENABLE_PLUGINS) 611 #if defined(ENABLE_PLUGINS)
617 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) 612 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i)
618 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); 613 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]);
619 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) 614 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i)
620 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); 615 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]);
621 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) 616 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i)
622 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); 617 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]);
623 618
624 extra_parts_.push_back(new ChromeContentBrowserClientPluginsPart); 619 extra_parts_.push_back(new ChromeContentBrowserClientPluginsPart);
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 // of the old files using an open fd. This fd is passed to subprocesses 1175 // of the old files using an open fd. This fd is passed to subprocesses
1181 // like renderers. Here we add the flag to tell the subprocesses where 1176 // like renderers. Here we add the flag to tell the subprocesses where
1182 // to find these file descriptors. 1177 // to find these file descriptors.
1183 void ChromeContentBrowserClient::AppendMappedFileCommandLineSwitches( 1178 void ChromeContentBrowserClient::AppendMappedFileCommandLineSwitches(
1184 base::CommandLine* command_line) { 1179 base::CommandLine* command_line) {
1185 #if defined(OS_POSIX) && !defined(OS_MACOSX) 1180 #if defined(OS_POSIX) && !defined(OS_MACOSX)
1186 #if defined(V8_USE_EXTERNAL_STARTUP_DATA) 1181 #if defined(V8_USE_EXTERNAL_STARTUP_DATA)
1187 std::string process_type = 1182 std::string process_type =
1188 command_line->GetSwitchValueASCII(switches::kProcessType); 1183 command_line->GetSwitchValueASCII(switches::kProcessType);
1189 if (process_type != switches::kZygoteProcess) { 1184 if (process_type != switches::kZygoteProcess) {
1190 // We want to pass the natives by fd because after an update the file may 1185 DCHECK(v8_files_.natives_fd.is_valid());
1191 // be updated, but we want the newly launched renderers to get the old one,
1192 // opened by the browser when it started.
1193 DCHECK(natives_fd_exists());
1194 command_line->AppendSwitch(::switches::kV8NativesPassedByFD); 1186 command_line->AppendSwitch(::switches::kV8NativesPassedByFD);
1195 if (snapshot_fd_exists()) 1187 if (v8_files_.snapshot_fd.is_valid()) {
1196 command_line->AppendSwitch(::switches::kV8SnapshotPassedByFD); 1188 command_line->AppendSwitch(::switches::kV8SnapshotPassedByFD);
1189 }
1197 } 1190 }
1198 #endif // V8_USE_EXTERNAL_STARTUP_DATA 1191 #endif // V8_USE_EXTERNAL_STARTUP_DATA
1199 #endif // OS_POSIX && !OS_MACOSX 1192 #endif // OS_POSIX && !OS_MACOSX
1200 } 1193 }
1201 1194
1202 void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( 1195 void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
1203 base::CommandLine* command_line, 1196 base::CommandLine* command_line,
1204 int child_process_id) { 1197 int child_process_id) {
1205 #if defined(OS_MACOSX) 1198 #if defined(OS_MACOSX)
1206 scoped_ptr<metrics::ClientInfo> client_info = 1199 scoped_ptr<metrics::ClientInfo> client_info =
(...skipping 1033 matching lines...) Expand 10 before | Expand all | Expand 10 after
2240 #if defined(OS_POSIX) && !defined(OS_MACOSX) 2233 #if defined(OS_POSIX) && !defined(OS_MACOSX)
2241 void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess( 2234 void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
2242 const base::CommandLine& command_line, 2235 const base::CommandLine& command_line,
2243 int child_process_id, 2236 int child_process_id,
2244 FileDescriptorInfo* mappings 2237 FileDescriptorInfo* mappings
2245 #if defined(OS_ANDROID) 2238 #if defined(OS_ANDROID)
2246 , std::map<int, base::MemoryMappedFile::Region>* regions 2239 , std::map<int, base::MemoryMappedFile::Region>* regions
2247 #endif 2240 #endif
2248 ) { 2241 ) {
2249 #if defined(V8_USE_EXTERNAL_STARTUP_DATA) 2242 #if defined(V8_USE_EXTERNAL_STARTUP_DATA)
2250 if (!natives_fd_exists()) { 2243 if (!v8_files_.natives_fd.is_valid()) {
2251 int v8_natives_fd = -1; 2244 gin::V8Initializer::OpenV8FilesForChildProcesses(&v8_files_);
2252 int v8_snapshot_fd = -1;
2253 if (gin::V8Initializer::OpenV8FilesForChildProcesses(&v8_natives_fd,
2254 &v8_snapshot_fd)) {
2255 v8_natives_fd_.reset(v8_natives_fd);
2256 v8_snapshot_fd_.reset(v8_snapshot_fd);
2257 }
2258 } 2245 }
2259 // V8 can't start up without the source of the natives, but it can 2246 DCHECK(v8_files_.natives_fd.is_valid());
2260 // start up (slower) without the snapshot. 2247 mappings->Share(kV8NativesDataDescriptor, v8_files_.natives_fd.get());
2261 DCHECK(natives_fd_exists()); 2248 #if defined(OS_ANDROID)
2262 mappings->Share(kV8NativesDataDescriptor, v8_natives_fd_.get()); 2249 regions->insert(
2263 if (snapshot_fd_exists()) 2250 std::make_pair(kV8NativesDataDescriptor, v8_files_.natives_region));
2264 mappings->Share(kV8SnapshotDataDescriptor, v8_snapshot_fd_.get()); 2251 #endif
2252 if (v8_files_.snapshot_fd.is_valid()) {
2253 mappings->Share(kV8SnapshotDataDescriptor, v8_files_.snapshot_fd.get());
2254 #if defined(OS_ANDROID)
2255 regions->insert(
2256 std::make_pair(kV8SnapshotDataDescriptor, v8_files_.snapshot_region));
2257 #endif
2258 }
2265 #endif // V8_USE_EXTERNAL_STARTUP_DATA 2259 #endif // V8_USE_EXTERNAL_STARTUP_DATA
2266 2260
2267 #if defined(OS_ANDROID) 2261 #if defined(OS_ANDROID)
2268 base::FilePath data_path; 2262 base::FilePath data_path;
2269 PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &data_path); 2263 PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &data_path);
2270 DCHECK(!data_path.empty()); 2264 DCHECK(!data_path.empty());
2271 2265
2272 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ; 2266 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ;
2273 base::FilePath chrome_resources_pak = 2267 base::FilePath chrome_resources_pak =
2274 data_path.AppendASCII("chrome_100_percent.pak"); 2268 data_path.AppendASCII("chrome_100_percent.pak");
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
2480 switches::kDisableWebRtcEncryption, 2474 switches::kDisableWebRtcEncryption,
2481 }; 2475 };
2482 to_command_line->CopySwitchesFrom(from_command_line, 2476 to_command_line->CopySwitchesFrom(from_command_line,
2483 kWebRtcDevSwitchNames, 2477 kWebRtcDevSwitchNames,
2484 arraysize(kWebRtcDevSwitchNames)); 2478 arraysize(kWebRtcDevSwitchNames));
2485 } 2479 }
2486 } 2480 }
2487 #endif // defined(ENABLE_WEBRTC) 2481 #endif // defined(ENABLE_WEBRTC)
2488 2482
2489 } // namespace chrome 2483 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698