browser_distribution.h revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
1bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org// Use of this source code is governed by a BSD-style license that can be 3bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org// found in the LICENSE file. 4bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org// 5bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org// This file declares a class that contains various method related to branding. 6bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 7bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#ifndef CHROME_INSTALLER_UTIL_BROWSER_DISTRIBUTION_H_ 8bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#define CHROME_INSTALLER_UTIL_BROWSER_DISTRIBUTION_H_ 9bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 10bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#include <string> 11bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 12bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#include "base/basictypes.h" 13bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#include "base/files/file_path.h" 14bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#include "base/string16.h" 15bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#include "base/version.h" 16bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#include "chrome/installer/util/util_constants.h" 17bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 18bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#if defined(OS_WIN) 19bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#include <windows.h> // NOLINT 20bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org#endif 21bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 22bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.orgclass BrowserDistribution { 23bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org public: 24bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org enum Type { 25bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org CHROME_BROWSER, 26bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org CHROME_FRAME, 27bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org CHROME_BINARIES, 28bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org CHROME_APP_HOST, 29bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org NUM_TYPES 30bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org }; 31bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 32bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org virtual ~BrowserDistribution() {} 33bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 34bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org static BrowserDistribution* GetDistribution(); 35bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 36bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org static BrowserDistribution* GetSpecificDistribution(Type type); 37bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 38bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org Type GetType() const { return type_; } 39bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 40bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org virtual void DoPostUninstallOperations(const Version& version, 41594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org const base::FilePath& local_data_path, 42bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org const string16& distribution_data); 43bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org 44bee51999422c0eeaae85ed99b5c0bd4126510ff1danno@chromium.org // Returns the GUID to be used when registering for Active Setup. 45 virtual string16 GetActiveSetupGuid(); 46 47 virtual string16 GetAppGuid(); 48 49 // Returns the unsuffixed application name of this program. 50 // This is the base of the name registered with Default Programs on Windows. 51 // IMPORTANT: This should only be called by the installer which needs to make 52 // decisions on the suffixing of the upcoming install, not by external callers 53 // at run-time. 54 virtual string16 GetBaseAppName(); 55 56 // Returns the localized name of the program. 57 virtual string16 GetAppShortCutName(); 58 59 virtual string16 GetAlternateApplicationName(); 60 61 // Returns the unsuffixed appid of this program. 62 // The AppUserModelId is a property of Windows programs. 63 // IMPORTANT: This should only be called by ShellUtil::GetAppId as the appid 64 // should be suffixed in all scenarios. 65 virtual string16 GetBaseAppId(); 66 67 virtual string16 GetInstallSubDir(); 68 69 virtual string16 GetPublisherName(); 70 71 virtual string16 GetAppDescription(); 72 73 virtual string16 GetLongAppDescription(); 74 75 virtual std::string GetSafeBrowsingName(); 76 77 virtual string16 GetStateKey(); 78 79 virtual string16 GetStateMediumKey(); 80 81 virtual std::string GetNetworkStatsServer() const; 82 83 virtual std::string GetHttpPipeliningTestServer() const; 84 85#if defined(OS_WIN) 86 virtual string16 GetDistributionData(HKEY root_key); 87#endif 88 89 virtual string16 GetUninstallLinkName(); 90 91 virtual string16 GetUninstallRegPath(); 92 93 virtual string16 GetVersionKey(); 94 95 virtual bool CanSetAsDefault(); 96 97 virtual bool CanCreateDesktopShortcuts(); 98 99 // Returns the executable filename (not path) that contains the product icon. 100 virtual string16 GetIconFilename(); 101 102 // Returns the index of the icon for the product, inside the file specified by 103 // GetIconFilename(). 104 virtual int GetIconIndex(); 105 106 virtual bool GetChromeChannel(string16* channel); 107 108 // Returns true if this distribution includes a DelegateExecute verb handler, 109 // and provides the CommandExecuteImpl class UUID if |handler_class_uuid| is 110 // non-NULL. 111 virtual bool GetCommandExecuteImplClsid(string16* handler_class_uuid); 112 113 // Returns true if this distribution uses app_host.exe to run platform apps. 114 virtual bool AppHostIsSupported(); 115 116 virtual void UpdateInstallStatus(bool system_install, 117 installer::ArchiveType archive_type, 118 installer::InstallStatus install_status); 119 120 // Returns true if this distribution should set the Omaha experiment_labels 121 // registry value. 122 virtual bool ShouldSetExperimentLabels(); 123 124 virtual bool HasUserExperiments(); 125 126 protected: 127 explicit BrowserDistribution(Type type); 128 129 template<class DistributionClass> 130 static BrowserDistribution* GetOrCreateBrowserDistribution( 131 BrowserDistribution** dist); 132 133 const Type type_; 134 135 private: 136 BrowserDistribution(); 137 138 DISALLOW_COPY_AND_ASSIGN(BrowserDistribution); 139}; 140 141#endif // CHROME_INSTALLER_UTIL_BROWSER_DISTRIBUTION_H_ 142