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

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

Issue 944913002: Transfer v8 snapshot files as file descriptors to child processes on Posix (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tidy up Created 5 years, 10 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 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 return CONTENT_SETTINGS_TYPE_DEFAULT; 677 return CONTENT_SETTINGS_TYPE_DEFAULT;
678 } 678 }
679 } 679 }
680 680
681 } // namespace 681 } // namespace
682 682
683 namespace chrome { 683 namespace chrome {
684 684
685 ChromeContentBrowserClient::ChromeContentBrowserClient() 685 ChromeContentBrowserClient::ChromeContentBrowserClient()
686 : prerender_tracker_(NULL), 686 : prerender_tracker_(NULL),
687 #if defined(OS_POSIX) && !defined(OS_MACOSX)
688 v8_natives_fd_(-1),
689 v8_snapshot_fd_(-1),
690 #endif // OS_POSIX && !OS_MACOSX
687 weak_factory_(this) { 691 weak_factory_(this) {
688 #if defined(ENABLE_PLUGINS) 692 #if defined(ENABLE_PLUGINS)
689 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) 693 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i)
690 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); 694 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]);
691 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) 695 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i)
692 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); 696 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]);
693 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) 697 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i)
694 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); 698 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]);
695 699
696 extra_parts_.push_back(new ChromeContentBrowserClientPluginsPart); 700 extra_parts_.push_back(new ChromeContentBrowserClientPluginsPart);
(...skipping 1697 matching lines...) Expand 10 before | Expand all | Expand 10 after
2394 extra_parts_[i]->GetAdditionalFileSystemBackends( 2398 extra_parts_[i]->GetAdditionalFileSystemBackends(
2395 browser_context, storage_partition_path, additional_backends); 2399 browser_context, storage_partition_path, additional_backends);
2396 } 2400 }
2397 } 2401 }
2398 2402
2399 #if defined(OS_POSIX) && !defined(OS_MACOSX) 2403 #if defined(OS_POSIX) && !defined(OS_MACOSX)
2400 void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess( 2404 void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
2401 const base::CommandLine& command_line, 2405 const base::CommandLine& command_line,
2402 int child_process_id, 2406 int child_process_id,
2403 FileDescriptorInfo* mappings) { 2407 FileDescriptorInfo* mappings) {
2408 #if defined(V8_USE_EXTERNAL_STARTUP_DATA)
2409 if (v8_snapshot_fd_.get() == -1 && v8_natives_fd_.get() == -1) {
2410 base::FilePath v8_data_path;
2411 PathService::Get(gin::IsolateHolder::kV8SnapshotBasePathKey, &v8_data_path);
2412 DCHECK(!v8_data_path.empty());
2413
2414 int file_flags = base::File::FLAG_OPEN | base::File::FLAG_READ;
2415 base::FilePath v8_natives_data_path =
2416 v8_data_path.AppendASCII(gin::IsolateHolder::kNativesFileName);
2417 base::FilePath v8_snapshot_data_path =
2418 v8_data_path.AppendASCII(gin::IsolateHolder::kSnapshotFileName);
2419 base::File v8_natives_data_file(v8_natives_data_path, file_flags);
2420 base::File v8_snapshot_data_file(v8_snapshot_data_path, file_flags);
2421 DCHECK(v8_natives_data_file.IsValid());
2422 DCHECK(v8_snapshot_data_file.IsValid());
2423 v8_natives_fd_.reset(v8_natives_data_file.TakePlatformFile());
2424 v8_snapshot_fd_.reset(v8_snapshot_data_file.TakePlatformFile());
2425 }
2426 mappings->Share(kV8NativesDataDescriptor, v8_natives_fd_.get());
2427 mappings->Share(kV8SnapshotDataDescriptor, v8_snapshot_fd_.get());
2428 #endif // V8_USE_EXTERNAL_STARTUP_DATA
2429
2404 #if defined(OS_ANDROID) 2430 #if defined(OS_ANDROID)
2405 base::FilePath data_path; 2431 base::FilePath data_path;
2406 PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &data_path); 2432 PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &data_path);
2407 DCHECK(!data_path.empty()); 2433 DCHECK(!data_path.empty());
2408 2434
2409 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ; 2435 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ;
2410 base::FilePath chrome_resources_pak = 2436 base::FilePath chrome_resources_pak =
2411 data_path.AppendASCII("chrome_100_percent.pak"); 2437 data_path.AppendASCII("chrome_100_percent.pak");
2412 base::File file(chrome_resources_pak, flags); 2438 base::File file(chrome_resources_pak, flags);
2413 DCHECK(file.IsValid()); 2439 DCHECK(file.IsValid());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2445 PathService::Get(base::DIR_ANDROID_APP_DATA, &app_data_path); 2471 PathService::Get(base::DIR_ANDROID_APP_DATA, &app_data_path);
2446 DCHECK(!app_data_path.empty()); 2472 DCHECK(!app_data_path.empty());
2447 2473
2448 flags = base::File::FLAG_OPEN | base::File::FLAG_READ; 2474 flags = base::File::FLAG_OPEN | base::File::FLAG_READ;
2449 base::FilePath icudata_path = 2475 base::FilePath icudata_path =
2450 app_data_path.AppendASCII(base::i18n::kIcuDataFileName); 2476 app_data_path.AppendASCII(base::i18n::kIcuDataFileName);
2451 base::File icudata_file(icudata_path, flags); 2477 base::File icudata_file(icudata_path, flags);
2452 DCHECK(icudata_file.IsValid()); 2478 DCHECK(icudata_file.IsValid());
2453 mappings->Transfer(kAndroidICUDataDescriptor, 2479 mappings->Transfer(kAndroidICUDataDescriptor,
2454 base::ScopedFD(icudata_file.TakePlatformFile())); 2480 base::ScopedFD(icudata_file.TakePlatformFile()));
2455
2456 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
2457 base::FilePath v8_data_path;
2458 PathService::Get(base::DIR_ANDROID_APP_DATA, &v8_data_path);
2459 DCHECK(!v8_data_path.empty());
2460
2461 int file_flags = base::File::FLAG_OPEN | base::File::FLAG_READ;
2462 base::FilePath v8_natives_data_path =
2463 v8_data_path.AppendASCII(gin::IsolateHolder::kNativesFileName);
2464 base::FilePath v8_snapshot_data_path =
2465 v8_data_path.AppendASCII(gin::IsolateHolder::kSnapshotFileName);
2466 base::File v8_natives_data_file(v8_natives_data_path, file_flags);
2467 base::File v8_snapshot_data_file(v8_snapshot_data_path, file_flags);
2468 DCHECK(v8_natives_data_file.IsValid());
2469 DCHECK(v8_snapshot_data_file.IsValid());
2470 mappings->Transfer(kV8NativesDataDescriptor,
2471 base::ScopedFD(v8_natives_data_file.TakePlatformFile()));
2472 mappings->Transfer(kV8SnapshotDataDescriptor,
2473 base::ScopedFD(v8_snapshot_data_file.TakePlatformFile()));
2474 #endif // V8_USE_EXTERNAL_STARTUP_DATA
2475
2476 #else 2481 #else
2477 int crash_signal_fd = GetCrashSignalFD(command_line); 2482 int crash_signal_fd = GetCrashSignalFD(command_line);
2478 if (crash_signal_fd >= 0) { 2483 if (crash_signal_fd >= 0) {
2479 mappings->Share(kCrashDumpSignal, crash_signal_fd); 2484 mappings->Share(kCrashDumpSignal, crash_signal_fd);
2480 } 2485 }
2481 #endif // defined(OS_ANDROID) 2486 #endif // defined(OS_ANDROID)
2482 } 2487 }
2483 #endif // defined(OS_POSIX) && !defined(OS_MACOSX) 2488 #endif // defined(OS_POSIX) && !defined(OS_MACOSX)
2484 2489
2485 #if defined(OS_WIN) 2490 #if defined(OS_WIN)
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
2634 switches::kDisableWebRtcEncryption, 2639 switches::kDisableWebRtcEncryption,
2635 }; 2640 };
2636 to_command_line->CopySwitchesFrom(from_command_line, 2641 to_command_line->CopySwitchesFrom(from_command_line,
2637 kWebRtcDevSwitchNames, 2642 kWebRtcDevSwitchNames,
2638 arraysize(kWebRtcDevSwitchNames)); 2643 arraysize(kWebRtcDevSwitchNames));
2639 } 2644 }
2640 } 2645 }
2641 #endif // defined(ENABLE_WEBRTC) 2646 #endif // defined(ENABLE_WEBRTC)
2642 2647
2643 } // namespace chrome 2648 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698