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

Side by Side Diff: components/update_client/update_client.h

Issue 2479633003: Makes the component installers return a Result instead of a bool. (Closed)
Patch Set: rebase Created 4 years, 1 month 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 COMPONENTS_UPDATE_CLIENT_UPDATE_CLIENT_H_ 5 #ifndef COMPONENTS_UPDATE_CLIENT_UPDATE_CLIENT_H_
6 #define COMPONENTS_UPDATE_CLIENT_UPDATE_CLIENT_H_ 6 #define COMPONENTS_UPDATE_CLIENT_UPDATE_CLIENT_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
11 #include <memory> 11 #include <memory>
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/callback_forward.h" 15 #include "base/callback_forward.h"
16 #include "base/memory/ref_counted.h" 16 #include "base/memory/ref_counted.h"
17 #include "base/version.h" 17 #include "base/version.h"
18 #include "components/update_client/update_client_errors.h"
18 19
19 // The UpdateClient class is a facade with a simple interface. The interface 20 // The UpdateClient class is a facade with a simple interface. The interface
20 // exposes a few APIs to install a CRX or update a group of CRXs. 21 // exposes a few APIs to install a CRX or update a group of CRXs.
21 // 22 //
22 // The difference between a CRX install and a CRX update is relatively minor. 23 // The difference between a CRX install and a CRX update is relatively minor.
23 // The terminology going forward will use the word "update" to cover both 24 // The terminology going forward will use the word "update" to cover both
24 // install and update scenarios, except where details regarding the install 25 // install and update scenarios, except where details regarding the install
25 // case are relevant. 26 // case are relevant.
26 // 27 //
27 // Handling an update consists of a series of actions such as sending an update 28 // Handling an update consists of a series of actions such as sending an update
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 class Configurator; 143 class Configurator;
143 enum class Error; 144 enum class Error;
144 struct CrxUpdateItem; 145 struct CrxUpdateItem;
145 146
146 // Called when a non-blocking call in this module completes. 147 // Called when a non-blocking call in this module completes.
147 using Callback = base::Callback<void(Error error)>; 148 using Callback = base::Callback<void(Error error)>;
148 149
149 // Defines an interface for a generic CRX installer. 150 // Defines an interface for a generic CRX installer.
150 class CrxInstaller : public base::RefCountedThreadSafe<CrxInstaller> { 151 class CrxInstaller : public base::RefCountedThreadSafe<CrxInstaller> {
151 public: 152 public:
153 // Contains the result of the Install operation.
154 struct Result {
155 explicit Result(int error, int extended_error = 0)
156 : error(error), extended_error(extended_error) {}
157 explicit Result(InstallError error, int extended_error = 0)
158 : error(static_cast<int>(error)), extended_error(extended_error) {}
159 int error = 0; // 0 indicates that install has been successful.
160 int extended_error = 0;
161 };
162
152 // Called on the main thread when there was a problem unpacking or 163 // Called on the main thread when there was a problem unpacking or
153 // verifying the CRX. |error| is a non-zero value which is only meaningful 164 // verifying the CRX. |error| is a non-zero value which is only meaningful
154 // to the caller. 165 // to the caller.
155 virtual void OnUpdateError(int error) = 0; 166 virtual void OnUpdateError(int error) = 0;
156 167
157 // Called by the update service when a CRX has been unpacked 168 // Called by the update service when a CRX has been unpacked
158 // and it is ready to be installed. |manifest| contains the CRX manifest 169 // and it is ready to be installed. |manifest| contains the CRX manifest
159 // as a json dictionary.|unpack_path| contains the temporary directory 170 // as a json dictionary.|unpack_path| contains the temporary directory
160 // with all the unpacked CRX files. 171 // with all the unpacked CRX files.
161 // This method may be called from a thread other than the main thread. 172 // This method may be called from a thread other than the main thread.
162 virtual bool Install(const base::DictionaryValue& manifest, 173 virtual Result Install(const base::DictionaryValue& manifest,
163 const base::FilePath& unpack_path) = 0; 174 const base::FilePath& unpack_path) = 0;
164 175
165 // Sets |installed_file| to the full path to the installed |file|. |file| is 176 // Sets |installed_file| to the full path to the installed |file|. |file| is
166 // the filename of the file in this CRX. Returns false if this is 177 // the filename of the file in this CRX. Returns false if this is
167 // not possible (the file has been removed or modified, or its current 178 // not possible (the file has been removed or modified, or its current
168 // location is unknown). Otherwise, it returns true. 179 // location is unknown). Otherwise, it returns true.
169 virtual bool GetInstalledFile(const std::string& file, 180 virtual bool GetInstalledFile(const std::string& file,
170 base::FilePath* installed_file) = 0; 181 base::FilePath* installed_file) = 0;
171 182
172 // Called when a CRX has been unregistered and all versions should 183 // Called when a CRX has been unregistered and all versions should
173 // be uninstalled from disk. Returns true if uninstallation is supported, 184 // be uninstalled from disk. Returns true if uninstallation is supported,
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 scoped_refptr<UpdateClient> UpdateClientFactory( 356 scoped_refptr<UpdateClient> UpdateClientFactory(
346 const scoped_refptr<Configurator>& config); 357 const scoped_refptr<Configurator>& config);
347 358
348 // This must be called prior to the construction of any Configurator that 359 // This must be called prior to the construction of any Configurator that
349 // contains a PrefService. 360 // contains a PrefService.
350 void RegisterPrefs(PrefRegistrySimple* registry); 361 void RegisterPrefs(PrefRegistrySimple* registry);
351 362
352 } // namespace update_client 363 } // namespace update_client
353 364
354 #endif // COMPONENTS_UPDATE_CLIENT_UPDATE_CLIENT_H_ 365 #endif // COMPONENTS_UPDATE_CLIENT_UPDATE_CLIENT_H_
OLDNEW
« no previous file with comments | « components/update_client/test_installer.cc ('k') | components/update_client/update_client_errors.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698