chrome_frame_distribution.cc revision 3551c9c881056c480085172ff9840cab31610854
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
23namespace {
24const wchar_t kChromeFrameGuid[] = L"{8BA986DA-5100-405E-AA35-86F34A02ACBF}";
25}
26
27ChromeFrameDistribution::ChromeFrameDistribution()
28    : BrowserDistribution(CHROME_FRAME) {
29}
30
31string16 ChromeFrameDistribution::GetAppGuid() {
32  return kChromeFrameGuid;
33}
34
35string16 ChromeFrameDistribution::GetBaseAppName() {
36  return L"Google Chrome Frame";
37}
38
39string16 ChromeFrameDistribution::GetShortcutName(ShortcutType shortcut_type) {
40  switch (shortcut_type) {
41    case SHORTCUT_CHROME:
42    case SHORTCUT_CHROME_ALTERNATE:
43      return installer::GetLocalizedString(IDS_PRODUCT_FRAME_NAME_BASE);
44    default:
45      NOTREACHED();
46      return string16();
47  }
48}
49
50string16 ChromeFrameDistribution::GetInstallSubDir() {
51  return L"Google\\Chrome Frame";
52}
53
54string16 ChromeFrameDistribution::GetPublisherName() {
55  const string16& publisher_name =
56      installer::GetLocalizedString(IDS_ABOUT_VERSION_COMPANY_NAME_BASE);
57  return publisher_name;
58}
59
60string16 ChromeFrameDistribution::GetAppDescription() {
61  return L"Chrome in a Frame.";
62}
63
64string16 ChromeFrameDistribution::GetLongAppDescription() {
65  return L"Chrome in a Frame.";
66}
67
68std::string ChromeFrameDistribution::GetSafeBrowsingName() {
69  return "googlechromeframe";
70}
71
72string16 ChromeFrameDistribution::GetStateKey() {
73  string16 key(google_update::kRegPathClientState);
74  key.append(L"\\");
75  key.append(kChromeFrameGuid);
76  return key;
77}
78
79string16 ChromeFrameDistribution::GetStateMediumKey() {
80  string16 key(google_update::kRegPathClientStateMedium);
81  key.append(L"\\");
82  key.append(kChromeFrameGuid);
83  return key;
84}
85
86std::string ChromeFrameDistribution::GetNetworkStatsServer() const {
87  return chrome_common_net::kEchoTestServerLocation;
88}
89
90std::string ChromeFrameDistribution::GetHttpPipeliningTestServer() const {
91  return chrome_common_net::kPipelineTestServerBaseUrl;
92}
93
94string16 ChromeFrameDistribution::GetUninstallLinkName() {
95  return L"Uninstall Chrome Frame";
96}
97
98string16 ChromeFrameDistribution::GetUninstallRegPath() {
99  return L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"
100         L"Google Chrome Frame";
101}
102
103string16 ChromeFrameDistribution::GetVersionKey() {
104  string16 key(google_update::kRegPathClients);
105  key.append(L"\\");
106  key.append(kChromeFrameGuid);
107  return key;
108}
109
110string16 ChromeFrameDistribution::GetIconFilename() {
111  return installer::kChromeExe;
112}
113
114int ChromeFrameDistribution::GetIconIndex(ShortcutType shortcut_type) {
115  switch (shortcut_type) {
116    case SHORTCUT_CHROME:
117      return 0;
118    default:
119      NOTREACHED();
120      return 0;
121  }
122}
123
124bool ChromeFrameDistribution::CanSetAsDefault() {
125  return false;
126}
127
128bool ChromeFrameDistribution::CanCreateDesktopShortcuts() {
129  return false;
130}
131
132bool ChromeFrameDistribution::GetCommandExecuteImplClsid(
133    string16* handler_class_uuid) {
134  return false;
135}
136
137void ChromeFrameDistribution::UpdateInstallStatus(bool system_install,
138    installer::ArchiveType archive_type,
139    installer::InstallStatus install_status) {
140#if defined(GOOGLE_CHROME_BUILD)
141  GoogleUpdateSettings::UpdateInstallStatus(system_install,
142      archive_type, InstallUtil::GetInstallReturnCode(install_status),
143      kChromeFrameGuid);
144#endif
145}
146