diff options
Diffstat (limited to 'chromium/extensions/browser/updater/update_data_provider.h')
-rw-r--r-- | chromium/extensions/browser/updater/update_data_provider.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/chromium/extensions/browser/updater/update_data_provider.h b/chromium/extensions/browser/updater/update_data_provider.h new file mode 100644 index 00000000000..95cea59c645 --- /dev/null +++ b/chromium/extensions/browser/updater/update_data_provider.h @@ -0,0 +1,69 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef EXTENSIONS_BROWSER_UPDATER_UPDATE_DATA_PROVIDER_H_ +#define EXTENSIONS_BROWSER_UPDATER_UPDATE_DATA_PROVIDER_H_ + +#include <string> +#include <vector> + +#include "base/callback.h" +#include "base/macros.h" +#include "base/memory/ref_counted.h" + +namespace base { +class FilePath; +} + +namespace content { +class BrowserContext; +} + +namespace update_client { +struct CrxComponent; +} + +namespace extensions { + +// This class exists to let an UpdateClient retrieve information about a set of +// extensions it is doing an update check for. +class UpdateDataProvider : public base::RefCounted<UpdateDataProvider> { + public: + typedef base::Callback<void(content::BrowserContext* context, + const std::string& /* extension_id */, + const base::FilePath& /* temp_dir */)> + InstallCallback; + + // We need a browser context to use when retrieving data for a set of + // extension ids, as well as a callback for proceeding with installation + // steps once the UpdateClient has downloaded and unpacked an update for an + // extension. + UpdateDataProvider(content::BrowserContext* context, + const InstallCallback& callback); + + // Notify this object that the associated browser context is being shut down + // the pointer to the context should be dropped and no more work should be + // done. + void Shutdown(); + + // Matches update_client::UpdateClient::CrxDataCallback + void GetData(const std::vector<std::string>& ids, + std::vector<update_client::CrxComponent>* data); + + private: + friend class base::RefCounted<UpdateDataProvider>; + ~UpdateDataProvider(); + + void RunInstallCallback(const std::string& extension_id, + const base::FilePath& temp_dir); + + content::BrowserContext* context_; + InstallCallback callback_; + + DISALLOW_COPY_AND_ASSIGN(UpdateDataProvider); +}; + +} // namespace extensions + +#endif // EXTENSIONS_BROWSER_UPDATER_UPDATE_DATA_PROVIDER_H_ |