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 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