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 implementation of GoogleChromeSxSDistribution. 6 7 #include "chrome/installer/util/google_chrome_sxs_distribution.h" 8 9 #include "base/command_line.h" 10 #include "base/logging.h" 11 #include "chrome/common/chrome_icon_resources_win.h" 12 #include "chrome/installer/util/updating_app_registration_data.h" 13 14 #include "installer_util_strings.h" // NOLINT 15 16 namespace { 17 18 const wchar_t kChromeSxSGuid[] = L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}"; 19 const wchar_t kChannelName[] = L"canary"; 20 const wchar_t kBrowserAppId[] = L"ChromeCanary"; 21 const wchar_t kBrowserProgIdPrefix[] = L"ChromeSSHTM"; 22 const wchar_t kBrowserProgIdDesc[] = L"Chrome Canary HTML Document"; 23 const wchar_t kCommandExecuteImplUuid[] = 24 L"{1BEAC3E3-B852-44F4-B468-8906C062422E}"; 25 26 } // namespace 27 28 GoogleChromeSxSDistribution::GoogleChromeSxSDistribution() 29 : GoogleChromeDistribution(scoped_ptr<AppRegistrationData>( 30 new UpdatingAppRegistrationData(kChromeSxSGuid))) { 31 } 32 33 base::string16 GoogleChromeSxSDistribution::GetBaseAppName() { 34 return L"Google Chrome Canary"; 35 } 36 37 base::string16 GoogleChromeSxSDistribution::GetShortcutName( 38 ShortcutType shortcut_type) { 39 switch (shortcut_type) { 40 case SHORTCUT_CHROME_ALTERNATE: 41 // This should never be called. Returning the same string as Google Chrome 42 // preserves behavior, but it will result in a naming collision. 43 NOTREACHED(); 44 return GoogleChromeDistribution::GetShortcutName(shortcut_type); 45 case SHORTCUT_APP_LAUNCHER: 46 return installer::GetLocalizedString( 47 IDS_APP_LIST_SHORTCUT_NAME_CANARY_BASE); 48 default: 49 DCHECK_EQ(shortcut_type, SHORTCUT_CHROME); 50 return installer::GetLocalizedString(IDS_SXS_SHORTCUT_NAME_BASE); 51 } 52 } 53 54 base::string16 GoogleChromeSxSDistribution::GetStartMenuShortcutSubfolder( 55 Subfolder subfolder_type) { 56 switch (subfolder_type) { 57 case SUBFOLDER_APPS: 58 return installer::GetLocalizedString( 59 IDS_APP_SHORTCUTS_SUBDIR_NAME_CANARY_BASE); 60 default: 61 DCHECK_EQ(subfolder_type, SUBFOLDER_CHROME); 62 return GetShortcutName(SHORTCUT_CHROME); 63 } 64 } 65 66 base::string16 GoogleChromeSxSDistribution::GetBaseAppId() { 67 return kBrowserAppId; 68 } 69 70 base::string16 GoogleChromeSxSDistribution::GetBrowserProgIdPrefix() { 71 return kBrowserProgIdPrefix; 72 } 73 74 base::string16 GoogleChromeSxSDistribution::GetBrowserProgIdDesc() { 75 return kBrowserProgIdDesc; 76 } 77 78 base::string16 GoogleChromeSxSDistribution::GetInstallSubDir() { 79 return GoogleChromeDistribution::GetInstallSubDir().append( 80 installer::kSxSSuffix); 81 } 82 83 base::string16 GoogleChromeSxSDistribution::GetUninstallRegPath() { 84 return GoogleChromeDistribution::GetUninstallRegPath().append( 85 installer::kSxSSuffix); 86 } 87 88 BrowserDistribution::DefaultBrowserControlPolicy 89 GoogleChromeSxSDistribution::GetDefaultBrowserControlPolicy() { 90 return DEFAULT_BROWSER_OS_CONTROL_ONLY; 91 } 92 93 int GoogleChromeSxSDistribution::GetIconIndex(ShortcutType shortcut_type) { 94 if (shortcut_type == SHORTCUT_APP_LAUNCHER) 95 return icon_resources::kSxSAppLauncherIndex; 96 DCHECK(shortcut_type == SHORTCUT_CHROME || 97 shortcut_type == SHORTCUT_CHROME_ALTERNATE) << shortcut_type; 98 return icon_resources::kSxSApplicationIndex; 99 } 100 101 bool GoogleChromeSxSDistribution::GetChromeChannel(base::string16* channel) { 102 *channel = kChannelName; 103 return true; 104 } 105 106 bool GoogleChromeSxSDistribution::GetCommandExecuteImplClsid( 107 base::string16* handler_class_uuid) { 108 if (handler_class_uuid) 109 *handler_class_uuid = kCommandExecuteImplUuid; 110 return true; 111 } 112 113 bool GoogleChromeSxSDistribution::AppHostIsSupported() { 114 return false; 115 } 116 117 bool GoogleChromeSxSDistribution::ShouldSetExperimentLabels() { 118 return true; 119 } 120 121 bool GoogleChromeSxSDistribution::HasUserExperiments() { 122 return true; 123 } 124 125 base::string16 GoogleChromeSxSDistribution::ChannelName() { 126 return kChannelName; 127 } 128