1// Copyright (c) 2012 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// This file extends generic BrowserDistribution class to declare Google Chrome
6// specific implementation.
7
8#ifndef CHROME_INSTALLER_UTIL_GOOGLE_CHROME_DISTRIBUTION_H_
9#define CHROME_INSTALLER_UTIL_GOOGLE_CHROME_DISTRIBUTION_H_
10
11#include "base/gtest_prod_util.h"
12#include "base/strings/string16.h"
13#include "chrome/installer/util/browser_distribution.h"
14
15namespace base {
16class FilePath;
17}
18
19class AppRegistrationData;
20
21class GoogleChromeDistribution : public BrowserDistribution {
22 public:
23  // Opens the Google Chrome uninstall survey window.
24  // version refers to the version of Chrome being uninstalled.
25  // local_data_path is the path of the file containing json metrics that
26  //   will be parsed. If this file indicates that the user has opted in to
27  //   providing anonymous usage data, then some additional statistics will
28  //   be added to the survey url.
29  // distribution_data contains Google Update related data that will be
30  //   concatenated to the survey url if the file in local_data_path indicates
31  //   the user has opted in to providing anonymous usage data.
32  virtual void DoPostUninstallOperations(
33      const Version& version,
34      const base::FilePath& local_data_path,
35      const base::string16& distribution_data) OVERRIDE;
36
37  virtual base::string16 GetActiveSetupGuid() OVERRIDE;
38
39  virtual base::string16 GetShortcutName(ShortcutType shortcut_type) OVERRIDE;
40
41  virtual base::string16 GetIconFilename() OVERRIDE;
42
43  virtual int GetIconIndex(ShortcutType shortcut_type) OVERRIDE;
44
45  virtual base::string16 GetBaseAppName() OVERRIDE;
46
47  virtual base::string16 GetBaseAppId() OVERRIDE;
48
49  virtual base::string16 GetBrowserProgIdPrefix() OVERRIDE;
50
51  virtual base::string16 GetBrowserProgIdDesc() OVERRIDE;
52
53  virtual base::string16 GetInstallSubDir() OVERRIDE;
54
55  virtual base::string16 GetPublisherName() OVERRIDE;
56
57  virtual base::string16 GetAppDescription() OVERRIDE;
58
59  virtual std::string GetSafeBrowsingName() OVERRIDE;
60
61  virtual std::string GetNetworkStatsServer() const OVERRIDE;
62
63  // This method reads data from the Google Update ClientState key for
64  // potential use in the uninstall survey. It must be called before the
65  // key returned by GetVersionKey() is deleted.
66  virtual base::string16 GetDistributionData(HKEY root_key) OVERRIDE;
67
68  virtual base::string16 GetUninstallLinkName() OVERRIDE;
69
70  virtual base::string16 GetUninstallRegPath() OVERRIDE;
71
72  virtual bool GetCommandExecuteImplClsid(
73      base::string16* handler_class_uuid) OVERRIDE;
74
75  virtual bool AppHostIsSupported() OVERRIDE;
76
77  virtual void UpdateInstallStatus(
78      bool system_install,
79      installer::ArchiveType archive_type,
80      installer::InstallStatus install_status) OVERRIDE;
81
82  virtual bool ShouldSetExperimentLabels() OVERRIDE;
83
84  virtual bool HasUserExperiments() OVERRIDE;
85
86 protected:
87  // Disallow construction from others.
88  GoogleChromeDistribution();
89
90  explicit GoogleChromeDistribution(
91      scoped_ptr<AppRegistrationData> app_reg_data);
92
93 private:
94  friend class BrowserDistribution;
95};
96
97#endif  // CHROME_INSTALLER_UTIL_GOOGLE_CHROME_DISTRIBUTION_H_
98