• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_EXTENSIONS_ACTIVE_INSTALL_DATA_H_
6 #define CHROME_BROWSER_EXTENSIONS_ACTIVE_INSTALL_DATA_H_
7 
8 #include <string>
9 
10 #include "base/macros.h"
11 #include "base/scoped_observer.h"
12 #include "chrome/browser/extensions/install_observer.h"
13 
14 namespace extensions {
15 
16 class InstallTracker;
17 
18 // Details of an active extension install.
19 struct ActiveInstallData {
20  public:
21   ActiveInstallData();
22   explicit ActiveInstallData(const std::string& extension_id);
23 
24   std::string extension_id;
25   int percent_downloaded;
26   bool is_ephemeral;
27 };
28 
29 // Registers and deregisters and an active extension install with the
30 // InstallTracker.
31 class ScopedActiveInstall : public InstallObserver {
32  public:
33   // This constructor registers an active install with the InstallTracker.
34   ScopedActiveInstall(InstallTracker* tracker,
35                       const ActiveInstallData& install_data);
36 
37   // This constructor does not register an active install. The extension install
38   // is still deregistered upon destruction.
39   ScopedActiveInstall(InstallTracker* tracker, const std::string& extension_id);
40 
41   virtual ~ScopedActiveInstall();
42 
43   // Ensures that the active install is not deregistered upon destruction. This
44   // may be necessary if the extension install outlives the lifetime of this
45   // instance.
46   void CancelDeregister();
47 
48  private:
49   void Init();
50 
51   // InstallObserver implementation.
52   virtual void OnShutdown() OVERRIDE;
53 
54   InstallTracker* tracker_;
55   ScopedObserver<InstallTracker, InstallObserver> tracker_observer_;
56   std::string extension_id_;
57 
58   DISALLOW_COPY_AND_ASSIGN(ScopedActiveInstall);
59 };
60 
61 }  // namespace extensions
62 
63 #endif  // CHROME_BROWSER_EXTENSIONS_ACTIVE_INSTALL_DATA_H_
64