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