Home | History | Annotate | Download | only in util
      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