• 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_COMPONENT_UPDATER_CLD_COMPONENT_INSTALLER_H_
6 #define CHROME_BROWSER_COMPONENT_UPDATER_CLD_COMPONENT_INSTALLER_H_
7 
8 #include <stdint.h>
9 #include <string>
10 #include <vector>
11 
12 #include "base/files/file_path.h"
13 #include "base/gtest_prod_util.h"
14 #include "base/macros.h"
15 #include "components/component_updater/default_component_installer.h"
16 
17 namespace test {
18 class ComponentCldDataHarness;
19 }  // namespace test
20 
21 namespace component_updater {
22 
23 class ComponentUpdateService;
24 
25 // Visible for testing. No need to instantiate this class directly.
26 class CldComponentInstallerTraits : public ComponentInstallerTraits {
27  public:
28   CldComponentInstallerTraits();
~CldComponentInstallerTraits()29   virtual ~CldComponentInstallerTraits() {}
30 
31  private:
32   friend class CldComponentInstallerTest;  // For access within SetUp()
33   friend class test::ComponentCldDataHarness;  // For browser tests only
34   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, ComponentReady);
35   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, GetBaseDirectory);
36   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, GetHash);
37   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, GetInstalledPath);
38   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, GetName);
39   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, OnCustomInstall);
40   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, SetLatestCldDataFile);
41   FRIEND_TEST_ALL_PREFIXES(CldComponentInstallerTest, VerifyInstallation);
42 
43   // The following methods override ComponentInstallerTraits.
44   virtual bool CanAutoUpdate() const OVERRIDE;
45   virtual bool OnCustomInstall(const base::DictionaryValue& manifest,
46                                const base::FilePath& install_dir) OVERRIDE;
47   virtual bool VerifyInstallation(
48       const base::FilePath& install_dir) const OVERRIDE;
49   virtual void ComponentReady(
50       const base::Version& version,
51       const base::FilePath& path,
52       scoped_ptr<base::DictionaryValue> manifest) OVERRIDE;
53   virtual base::FilePath GetBaseDirectory() const OVERRIDE;
54   virtual void GetHash(std::vector<uint8_t>* hash) const OVERRIDE;
55   virtual std::string GetName() const OVERRIDE;
56 
57   static base::FilePath GetInstalledPath(const base::FilePath& base);
58 
59   // Sets the path to the CLD data file. Called internally once a valid CLD
60   // data file has been observed. The implementation of this method is
61   // responsible for configuring the CLD data source.
62   // This method is threadsafe.
63   static void SetLatestCldDataFile(const base::FilePath& path);
64 
65   // Returns the file path that was most recently set in SetLatestCldDataFile.
66   static base::FilePath GetLatestCldDataFile();
67 
68   DISALLOW_COPY_AND_ASSIGN(CldComponentInstallerTraits);
69 };
70 
71 // Call once during startup to make the component update service aware of
72 // the CLD component.
73 void RegisterCldComponent(ComponentUpdateService* cus);
74 
75 }  // namespace component_updater
76 
77 #endif  // CHROME_BROWSER_COMPONENT_UPDATER_CLD_COMPONENT_INSTALLER_H_
78