Chromium Code Reviews| Index: chrome/install_static/install_util.cc |
| diff --git a/chrome/install_static/install_util.cc b/chrome/install_static/install_util.cc |
| index 99cb7ae48dbd2e813560b11fa250350356dd9f69..42d46b889cd02438e0586e57667ef1a33922aed1 100644 |
| --- a/chrome/install_static/install_util.cc |
| +++ b/chrome/install_static/install_util.cc |
| @@ -29,6 +29,7 @@ enum class ProcessType { |
| OTHER_PROCESS, |
| BROWSER_PROCESS, |
| CLOUD_PRINT_SERVICE_PROCESS, |
| + CRASHPAD_HANDLER_PROCESS, |
| #if !defined(DISABLE_NACL) |
| NACL_BROKER_PROCESS, |
| NACL_LOADER_PROCESS, |
| @@ -77,6 +78,7 @@ constexpr wchar_t kRegValueUsageStats[] = L"usagestats"; |
| constexpr wchar_t kMetricsReportingEnabled[] = L"MetricsReportingEnabled"; |
| constexpr wchar_t kCloudPrintServiceProcess[] = L"cloud-print-service"; |
| +constexpr wchar_t kCrashpadHandlerProcess[] = L"crashpad-handler"; |
| #if !defined(DISABLE_NACL) |
| constexpr wchar_t kNaClBrokerProcess[] = L"nacl-broker"; |
| constexpr wchar_t kNaClLoaderProcess[] = L"nacl-loader"; |
| @@ -306,12 +308,21 @@ std::wstring ChannelFromAdditionalParameters(const InstallConstants& mode, |
| return std::wstring(); |
| } |
| +void EnsureProcessTypeIsInitialized() { |
| + if (!IsProcessTypeInitialized()) { |
| + InitializeProcessType(); |
| + assert(g_process_type != ProcessType::UNINITIALIZED); |
| + } |
| +} |
| + |
| // Converts a process type specified as a string to the ProcessType enum. |
| ProcessType GetProcessType(const std::wstring& process_type) { |
| if (process_type.empty()) |
| return ProcessType::BROWSER_PROCESS; |
| if (process_type == kCloudPrintServiceProcess) |
| return ProcessType::CLOUD_PRINT_SERVICE_PROCESS; |
| + if (process_type == kCrashpadHandlerProcess) |
| + return ProcessType::CRASHPAD_HANDLER_PROCESS; |
| #if !defined(DISABLE_NACL) |
| if (process_type == kNaClBrokerProcess) |
| return ProcessType::NACL_BROKER_PROCESS; |
| @@ -329,6 +340,7 @@ bool ProcessNeedsProfileDir(ProcessType process_type) { |
| switch (process_type) { |
| case ProcessType::BROWSER_PROCESS: |
| case ProcessType::CLOUD_PRINT_SERVICE_PROCESS: |
| + case ProcessType::CRASHPAD_HANDLER_PROCESS: |
| #if !defined(DISABLE_NACL) |
| case ProcessType::NACL_BROKER_PROCESS: |
| case ProcessType::NACL_LOADER_PROCESS: |
| @@ -520,7 +532,7 @@ bool IsProcessTypeInitialized() { |
| } |
| bool IsNonBrowserProcess() { |
| - assert(g_process_type != ProcessType::UNINITIALIZED); |
| + EnsureProcessTypeIsInitialized(); |
| return g_process_type != ProcessType::BROWSER_PROCESS; |
| } |
| @@ -528,14 +540,24 @@ bool ProcessNeedsProfileDir(const std::string& process_type) { |
| return ProcessNeedsProfileDir(GetProcessType(UTF8ToUTF16(process_type))); |
| } |
| +bool CurrentProcessNeedsProfileDir() { |
| + EnsureProcessTypeIsInitialized(); |
| + return ProcessNeedsProfileDir(g_process_type); |
| +} |
| + |
| +std::wstring GetUserDataDirectory() { |
| + return install_static::InstallDetails::Get().user_data_dir(); |
| +} |
| + |
| +std::wstring GetInvalidUserDataDirectory() { |
| + return install_static::InstallDetails::Get().invalid_user_data_dir(); |
| +} |
| + |
| std::wstring GetCrashDumpLocation() { |
| // In order to be able to start crash handling very early and in chrome_elf, |
| // we cannot rely on chrome's PathService entries (for DIR_CRASH_DUMPS) being |
| // available on Windows. See https://crbug.com/564398. |
| - std::wstring user_data_dir; |
| - bool ret = GetUserDataDirectory(&user_data_dir, nullptr); |
| - assert(ret); |
| - IgnoreUnused(ret); |
| + std::wstring user_data_dir = GetUserDataDirectory(); |
| return user_data_dir.append(L"\\Crashpad"); |
|
grt (UTC plus 2)
2017/05/22 10:16:12
this would be bad if |user_data_dir| happened to b
manzagop (departed)
2017/05/23 14:59:14
Done.
|
| } |