| 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/browser/extensions/api/messaging/native_process_launcher.h" | 5 #include "chrome/browser/extensions/api/messaging/native_process_launcher.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/callback.h" | 10 #include "base/callback.h" |
| 9 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 10 #include "base/files/file_util.h" | 12 #include "base/files/file_util.h" |
| 11 #include "base/logging.h" | 13 #include "base/logging.h" |
| 12 #include "base/macros.h" | 14 #include "base/macros.h" |
| 13 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
| 14 #include "base/strings/string_number_conversions.h" | 16 #include "base/strings/string_number_conversions.h" |
| 15 #include "base/strings/string_split.h" | 17 #include "base/strings/string_split.h" |
| 16 #include "base/threading/sequenced_worker_pool.h" | 18 #include "base/threading/sequenced_worker_pool.h" |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 #if defined(OS_WIN) | 193 #if defined(OS_WIN) |
| 192 command_line.AppendSwitchASCII(kParentWindowSwitchName, | 194 command_line.AppendSwitchASCII(kParentWindowSwitchName, |
| 193 base::Int64ToString(window_handle_)); | 195 base::Int64ToString(window_handle_)); |
| 194 #endif // !defined(OS_WIN) | 196 #endif // !defined(OS_WIN) |
| 195 | 197 |
| 196 base::Process process; | 198 base::Process process; |
| 197 base::File read_file; | 199 base::File read_file; |
| 198 base::File write_file; | 200 base::File write_file; |
| 199 if (NativeProcessLauncher::LaunchNativeProcess( | 201 if (NativeProcessLauncher::LaunchNativeProcess( |
| 200 command_line, &process, &read_file, &write_file)) { | 202 command_line, &process, &read_file, &write_file)) { |
| 201 PostResult(callback, process.Pass(), read_file.Pass(), write_file.Pass()); | 203 PostResult(callback, std::move(process), std::move(read_file), |
| 204 std::move(write_file)); |
| 202 } else { | 205 } else { |
| 203 PostErrorResult(callback, RESULT_FAILED_TO_START); | 206 PostErrorResult(callback, RESULT_FAILED_TO_START); |
| 204 } | 207 } |
| 205 } | 208 } |
| 206 | 209 |
| 207 void NativeProcessLauncherImpl::Core::CallCallbackOnIOThread( | 210 void NativeProcessLauncherImpl::Core::CallCallbackOnIOThread( |
| 208 const LaunchedCallback& callback, | 211 const LaunchedCallback& callback, |
| 209 LaunchResult result, | 212 LaunchResult result, |
| 210 base::Process process, | 213 base::Process process, |
| 211 base::File read_file, | 214 base::File read_file, |
| 212 base::File write_file) { | 215 base::File write_file) { |
| 213 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 216 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| 214 if (detached_) | 217 if (detached_) |
| 215 return; | 218 return; |
| 216 | 219 |
| 217 callback.Run(result, process.Pass(), read_file.Pass(), write_file.Pass()); | 220 callback.Run(result, std::move(process), std::move(read_file), |
| 221 std::move(write_file)); |
| 218 } | 222 } |
| 219 | 223 |
| 220 void NativeProcessLauncherImpl::Core::PostErrorResult( | 224 void NativeProcessLauncherImpl::Core::PostErrorResult( |
| 221 const LaunchedCallback& callback, | 225 const LaunchedCallback& callback, |
| 222 LaunchResult error) { | 226 LaunchResult error) { |
| 223 content::BrowserThread::PostTask( | 227 content::BrowserThread::PostTask( |
| 224 content::BrowserThread::IO, FROM_HERE, | 228 content::BrowserThread::IO, FROM_HERE, |
| 225 base::Bind(&NativeProcessLauncherImpl::Core::CallCallbackOnIOThread, this, | 229 base::Bind(&NativeProcessLauncherImpl::Core::CallCallbackOnIOThread, this, |
| 226 callback, error, Passed(base::Process()), | 230 callback, error, Passed(base::Process()), |
| 227 Passed(base::File()), Passed(base::File()))); | 231 Passed(base::File()), Passed(base::File()))); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 intptr_t window_handle = 0; | 268 intptr_t window_handle = 0; |
| 265 #if defined(OS_WIN) | 269 #if defined(OS_WIN) |
| 266 window_handle = reinterpret_cast<intptr_t>( | 270 window_handle = reinterpret_cast<intptr_t>( |
| 267 views::HWNDForNativeView(native_view)); | 271 views::HWNDForNativeView(native_view)); |
| 268 #endif | 272 #endif |
| 269 return scoped_ptr<NativeProcessLauncher>( | 273 return scoped_ptr<NativeProcessLauncher>( |
| 270 new NativeProcessLauncherImpl(allow_user_level_hosts, window_handle)); | 274 new NativeProcessLauncherImpl(allow_user_level_hosts, window_handle)); |
| 271 } | 275 } |
| 272 | 276 |
| 273 } // namespace extensions | 277 } // namespace extensions |
| OLD | NEW |