OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_OPERATION_OUT_OF_PROC
ESS_H_ | 5 #ifndef CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_OPERATION_OUT_OF_PROC
ESS_H_ |
6 #define CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_OPERATION_OUT_OF_PROC
ESS_H_ | 6 #define CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_OPERATION_OUT_OF_PROC
ESS_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/callback_forward.h" | 10 #include "base/callback_forward.h" |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "chrome/common/file_patcher.mojom.h" |
13 #include "components/update_client/component_patcher_operation.h" | 14 #include "components/update_client/component_patcher_operation.h" |
| 15 #include "content/public/browser/utility_process_mojo_client.h" |
14 | 16 |
15 namespace base { | 17 namespace base { |
16 class FilePath; | 18 class FilePath; |
17 class SequencedTaskRunner; | 19 class SequencedTaskRunner; |
18 } // namespace base | 20 } // namespace base |
19 | 21 |
20 namespace component_updater { | 22 namespace component_updater { |
21 | 23 |
22 class PatchHost; | |
23 | |
24 // Implements the DeltaUpdateOpPatch out-of-process patching. | |
25 class ChromeOutOfProcessPatcher : public update_client::OutOfProcessPatcher { | 24 class ChromeOutOfProcessPatcher : public update_client::OutOfProcessPatcher { |
26 public: | 25 public: |
27 ChromeOutOfProcessPatcher(); | 26 ChromeOutOfProcessPatcher(); |
28 | 27 |
29 // DeltaUpdateOpPatch::OutOfProcessPatcher implementation. | 28 // update_client::OutOfProcessPatcher: |
30 void Patch(const std::string& operation, | 29 void Patch(const std::string& operation, |
31 scoped_refptr<base::SequencedTaskRunner> task_runner, | 30 scoped_refptr<base::SequencedTaskRunner> task_runner, |
32 const base::FilePath& input_abs_path, | 31 const base::FilePath& input_path, |
33 const base::FilePath& patch_abs_path, | 32 const base::FilePath& patch_path, |
34 const base::FilePath& output_abs_path, | 33 const base::FilePath& output_path, |
35 base::Callback<void(int result)> callback) override; | 34 base::Callback<void(int result)> callback) override; |
36 | 35 |
37 private: | 36 private: |
38 ~ChromeOutOfProcessPatcher() override; | 37 ~ChromeOutOfProcessPatcher() override; |
39 | 38 |
40 scoped_refptr<PatchHost> host_; | 39 // Perform a patch operation using chrome::mojom::FilePatcher. |
| 40 void PatchOnIOThread(const std::string& operation, |
| 41 base::File input_file, |
| 42 base::File patch_file, |
| 43 base::File output_file); |
| 44 |
| 45 // Patch operation result handler. |
| 46 void PatchDone(int result); |
| 47 |
| 48 // Used to signal the operation result back to the Patch() requester. |
| 49 scoped_refptr<base::SequencedTaskRunner> task_runner_; |
| 50 base::Callback<void(int result)> callback_; |
| 51 |
| 52 // Utility process used to perform out-of-process file patching. |
| 53 std::unique_ptr<content::UtilityProcessMojoClient<chrome::mojom::FilePatcher>> |
| 54 utility_process_mojo_client_; |
41 | 55 |
42 DISALLOW_COPY_AND_ASSIGN(ChromeOutOfProcessPatcher); | 56 DISALLOW_COPY_AND_ASSIGN(ChromeOutOfProcessPatcher); |
43 }; | 57 }; |
44 | 58 |
45 } // namespace component_updater | 59 } // namespace component_updater |
46 | 60 |
47 #endif // CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_OPERATION_OUT_OF_P
ROCESS_H_ | 61 #endif // CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_OPERATION_OUT_OF_P
ROCESS_H_ |
OLD | NEW |