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 defines a specific implementation of BrowserDistribution class for 6 // Chrome Frame. It overrides the bare minimum of methods necessary to get a 7 // Chrome Frame installer that does not interact with Google Chrome or 8 // Chromium installations. 9 10 #include "chrome/installer/util/chrome_frame_distribution.h" 11 12 #include "base/strings/string_util.h" 13 #include "chrome/common/net/test_server_locations.h" 14 #include "chrome/installer/util/channel_info.h" 15 #include "chrome/installer/util/google_update_constants.h" 16 #include "chrome/installer/util/google_update_settings.h" 17 #include "chrome/installer/util/helper.h" 18 #include "chrome/installer/util/install_util.h" 19 #include "chrome/installer/util/l10n_string_util.h" 20 21 #include "installer_util_strings.h" // NOLINT 22 23 namespace { 24 const wchar_t kChromeFrameGuid[] = L"{8BA986DA-5100-405E-AA35-86F34A02ACBF}"; 25 } 26 27 ChromeFrameDistribution::ChromeFrameDistribution() 28 : BrowserDistribution(CHROME_FRAME) { 29 } 30 31 string16 ChromeFrameDistribution::GetAppGuid() { 32 return kChromeFrameGuid; 33 } 34 35 string16 ChromeFrameDistribution::GetBaseAppName() { 36 return L"Google Chrome Frame"; 37 } 38 39 string16 ChromeFrameDistribution::GetBrowserProgIdPrefix() { 40 NOTREACHED(); 41 return string16(); 42 } 43 44 string16 ChromeFrameDistribution::GetBrowserProgIdDesc() { 45 NOTREACHED(); 46 return string16(); 47 } 48 49 string16 ChromeFrameDistribution::GetShortcutName(ShortcutType shortcut_type) { 50 switch (shortcut_type) { 51 case SHORTCUT_CHROME: 52 case SHORTCUT_CHROME_ALTERNATE: 53 return installer::GetLocalizedString(IDS_PRODUCT_FRAME_NAME_BASE); 54 default: 55 NOTREACHED(); 56 return string16(); 57 } 58 } 59 60 string16 ChromeFrameDistribution::GetInstallSubDir() { 61 return L"Google\\Chrome Frame"; 62 } 63 64 string16 ChromeFrameDistribution::GetPublisherName() { 65 const string16& publisher_name = 66 installer::GetLocalizedString(IDS_ABOUT_VERSION_COMPANY_NAME_BASE); 67 return publisher_name; 68 } 69 70 string16 ChromeFrameDistribution::GetAppDescription() { 71 return L"Chrome in a Frame."; 72 } 73 74 string16 ChromeFrameDistribution::GetLongAppDescription() { 75 return L"Chrome in a Frame."; 76 } 77 78 std::string ChromeFrameDistribution::GetSafeBrowsingName() { 79 return "googlechromeframe"; 80 } 81 82 string16 ChromeFrameDistribution::GetStateKey() { 83 string16 key(google_update::kRegPathClientState); 84 key.append(L"\\"); 85 key.append(kChromeFrameGuid); 86 return key; 87 } 88 89 string16 ChromeFrameDistribution::GetStateMediumKey() { 90 string16 key(google_update::kRegPathClientStateMedium); 91 key.append(L"\\"); 92 key.append(kChromeFrameGuid); 93 return key; 94 } 95 96 std::string ChromeFrameDistribution::GetNetworkStatsServer() const { 97 return chrome_common_net::kEchoTestServerLocation; 98 } 99 100 std::string ChromeFrameDistribution::GetHttpPipeliningTestServer() const { 101 return chrome_common_net::kPipelineTestServerBaseUrl; 102 } 103 104 string16 ChromeFrameDistribution::GetUninstallLinkName() { 105 return L"Uninstall Chrome Frame"; 106 } 107 108 string16 ChromeFrameDistribution::GetUninstallRegPath() { 109 return L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" 110 L"Google Chrome Frame"; 111 } 112 113 string16 ChromeFrameDistribution::GetVersionKey() { 114 string16 key(google_update::kRegPathClients); 115 key.append(L"\\"); 116 key.append(kChromeFrameGuid); 117 return key; 118 } 119 120 string16 ChromeFrameDistribution::GetIconFilename() { 121 return installer::kChromeExe; 122 } 123 124 int ChromeFrameDistribution::GetIconIndex(ShortcutType shortcut_type) { 125 switch (shortcut_type) { 126 case SHORTCUT_CHROME: 127 return 0; 128 default: 129 NOTREACHED(); 130 return 0; 131 } 132 } 133 134 BrowserDistribution::DefaultBrowserControlPolicy 135 ChromeFrameDistribution::GetDefaultBrowserControlPolicy() { 136 return DEFAULT_BROWSER_UNSUPPORTED; 137 } 138 139 bool ChromeFrameDistribution::CanCreateDesktopShortcuts() { 140 return false; 141 } 142 143 bool ChromeFrameDistribution::GetCommandExecuteImplClsid( 144 string16* handler_class_uuid) { 145 return false; 146 } 147 148 void ChromeFrameDistribution::UpdateInstallStatus(bool system_install, 149 installer::ArchiveType archive_type, 150 installer::InstallStatus install_status) { 151 #if defined(GOOGLE_CHROME_BUILD) 152 GoogleUpdateSettings::UpdateInstallStatus(system_install, 153 archive_type, InstallUtil::GetInstallReturnCode(install_status), 154 kChromeFrameGuid); 155 #endif 156 } 157