summaryrefslogtreecommitdiffstats
path: root/extensions/browser/updater/update_service.h
blob: 992f55ec4ca1cd1d4ca33e8a90660b5e11ec028c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Copyright 2014 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_SERVICE_H_
#define EXTENSIONS_BROWSER_UPDATER_UPDATE_SERVICE_H_

#include <string>
#include <vector>

#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "components/keyed_service/core/keyed_service.h"

namespace base {
class Version;
}

namespace content {
class BrowserContext;
}

namespace update_client {
class UpdateClient;
}

namespace extensions {

class UpdateDataProvider;
class UpdateService;
class UpdateServiceFactory;

// This service manages the autoupdate of extensions.  It should eventually
// replace ExtensionUpdater in Chrome.
// TODO(rockot): Replace ExtensionUpdater with this service.
class UpdateService : public KeyedService {
 public:
  static UpdateService* Get(content::BrowserContext* context);

  void Shutdown() override;

  void SendUninstallPing(const std::string& id,
                         const base::Version& version,
                         int reason);

  // Starts an update check for each of |extension_ids|. If there are any
  // updates available, they will be downloaded, checked for integrity,
  // unpacked, and then passed off to the ExtensionSystem::InstallUpdate method
  // for install completion.
  void StartUpdateCheck(std::vector<std::string> extension_ids);

 private:
  friend class UpdateServiceFactory;

  UpdateService(content::BrowserContext* context,
                scoped_refptr<update_client::UpdateClient> update_client);
  ~UpdateService() override;

  content::BrowserContext* context_;

  scoped_refptr<update_client::UpdateClient> update_client_;
  scoped_refptr<UpdateDataProvider> update_data_provider_;

  DISALLOW_COPY_AND_ASSIGN(UpdateService);
};

}  // namespace extensions

#endif  // EXTENSIONS_BROWSER_UPDATER_UPDATE_SERVICE_H_