google_chrome_distribution.h revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This file extends generic BrowserDistribution class to declare Google Chrome
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// specific implementation.
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_INSTALLER_UTIL_GOOGLE_CHROME_DISTRIBUTION_H_
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_INSTALLER_UTIL_GOOGLE_CHROME_DISTRIBUTION_H_
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/string16.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/gtest_prod_util.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/installer/util/browser_distribution.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FilePath;
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class GoogleChromeDistribution : public BrowserDistribution {
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Opens the Google Chrome uninstall survey window.
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // version refers to the version of Chrome being uninstalled.
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // local_data_path is the path of the file containing json metrics that
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  //   will be parsed. If this file indicates that the user has opted in to
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   providing anonymous usage data, then some additional statistics will
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   be added to the survey url.
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // distribution_data contains Google Update related data that will be
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   concatenated to the survey url if the file in local_data_path indicates
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   the user has opted in to providing anonymous usage data.
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DoPostUninstallOperations(
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const Version& version,
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& local_data_path,
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const string16& distribution_data) OVERRIDE;
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetActiveSetupGuid() OVERRIDE;
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetAppGuid() OVERRIDE;
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetBaseAppName() OVERRIDE;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetAppShortCutName() OVERRIDE;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetAlternateApplicationName() OVERRIDE;
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetBaseAppId() OVERRIDE;
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetInstallSubDir() OVERRIDE;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetPublisherName() OVERRIDE;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetAppDescription() OVERRIDE;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual std::string GetSafeBrowsingName() OVERRIDE;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetStateKey() OVERRIDE;
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetStateMediumKey() OVERRIDE;
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual std::string GetNetworkStatsServer() const OVERRIDE;
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual std::string GetHttpPipeliningTestServer() const OVERRIDE;
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // This method reads data from the Google Update ClientState key for
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // potential use in the uninstall survey. It must be called before the
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // key returned by GetVersionKey() is deleted.
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetDistributionData(HKEY root_key) OVERRIDE;
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetUninstallLinkName() OVERRIDE;
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetUninstallRegPath() OVERRIDE;
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetVersionKey() OVERRIDE;
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual string16 GetIconFilename() OVERRIDE;
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool GetCommandExecuteImplClsid(
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      string16* handler_class_uuid) OVERRIDE;
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool AppHostIsSupported() OVERRIDE;
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void UpdateInstallStatus(
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      bool system_install,
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      installer::ArchiveType archive_type,
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      installer::InstallStatus install_status) OVERRIDE;
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ShouldSetExperimentLabels() OVERRIDE;
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool HasUserExperiments() OVERRIDE;
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const string16& product_guid() { return product_guid_; }
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected:
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void set_product_guid(const string16& guid) { product_guid_ = guid; }
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Disallow construction from others.
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  GoogleChromeDistribution();
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  friend class BrowserDistribution;
100
101  // The product ID for Google Update.
102  string16 product_guid_;
103};
104
105#endif  // CHROME_INSTALLER_UTIL_GOOGLE_CHROME_DISTRIBUTION_H_
106