1// Copyright 2013 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_TEST_TEST_INSTALLER_H_
6#define CHROME_BROWSER_COMPONENT_UPDATER_TEST_TEST_INSTALLER_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "base/files/file_path.h"
12#include "components/component_updater/component_updater_service.h"
13
14namespace base {
15class DictionaryValue;
16}
17
18namespace component_updater {
19
20// A TestInstaller is an installer that does nothing for installation except
21// increment a counter.
22class TestInstaller : public ComponentInstaller {
23 public:
24  TestInstaller();
25
26  virtual void OnUpdateError(int error) OVERRIDE;
27
28  virtual bool Install(const base::DictionaryValue& manifest,
29                       const base::FilePath& unpack_path) OVERRIDE;
30
31  virtual bool GetInstalledFile(const std::string& file,
32                                base::FilePath* installed_file) OVERRIDE;
33
34  int error() const;
35
36  int install_count() const;
37
38 protected:
39  int error_;
40  int install_count_;
41};
42
43// A ReadOnlyTestInstaller is an installer that knows about files in an existing
44// directory. It will not write to the directory.
45class ReadOnlyTestInstaller : public TestInstaller {
46 public:
47  explicit ReadOnlyTestInstaller(const base::FilePath& installed_path);
48
49  virtual ~ReadOnlyTestInstaller();
50
51  virtual bool GetInstalledFile(const std::string& file,
52                                base::FilePath* installed_file) OVERRIDE;
53
54 private:
55  base::FilePath install_directory_;
56};
57
58// A VersionedTestInstaller is an installer that installs files into versioned
59// directories (e.g. somedir/25.23.89.141/<files>).
60class VersionedTestInstaller : public TestInstaller {
61 public:
62  VersionedTestInstaller();
63
64  virtual ~VersionedTestInstaller();
65
66  virtual bool Install(const base::DictionaryValue& manifest,
67                       const base::FilePath& unpack_path) OVERRIDE;
68
69  virtual bool GetInstalledFile(const std::string& file,
70                                base::FilePath* installed_file) OVERRIDE;
71
72 private:
73  base::FilePath install_directory_;
74  Version current_version_;
75};
76
77}  // namespace component_updater
78
79#endif  // CHROME_BROWSER_COMPONENT_UPDATER_TEST_TEST_INSTALLER_H_
80