15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file defines a specific implementation of BrowserDistribution class for 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Chrome Frame. It overrides the bare minimum of methods necessary to get a 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Chrome Frame installer that does not interact with Google Chrome or 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Chromium installations. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/chrome_frame_distribution.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string_util.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/net/test_server_locations.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/channel_info.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/google_update_constants.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/google_update_settings.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/helper.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/install_util.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/l10n_string_util.h" 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/installer/util/updating_app_registration_data.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "installer_util_strings.h" // NOLINT 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const wchar_t kChromeFrameGuid[] = L"{8BA986DA-5100-405E-AA35-86F34A02ACBF}"; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChromeFrameDistribution::ChromeFrameDistribution() 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : BrowserDistribution( 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CHROME_FRAME, 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<AppRegistrationData>( 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new UpdatingAppRegistrationData(kChromeFrameGuid))) { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetBaseAppName() { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return L"Google Chrome Frame"; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetBrowserProgIdPrefix() { 40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) NOTREACHED(); 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::string16(); 42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetBrowserProgIdDesc() { 45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) NOTREACHED(); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::string16(); 47d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 48d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetDisplayName() { 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return L"Google Chrome Frame"; 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return L"Chromium Frame"; 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetShortcutName( 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ShortcutType shortcut_type) { 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NOTREACHED(); 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::string16(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetInstallSubDir() { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return L"Google\\Chrome Frame"; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetPublisherName() { 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& publisher_name = 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::GetLocalizedString(IDS_ABOUT_VERSION_COMPANY_NAME_BASE); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return publisher_name; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetAppDescription() { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return L"Chrome in a Frame."; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetLongAppDescription() { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return L"Chrome in a Frame."; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ChromeFrameDistribution::GetSafeBrowsingName() { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return "googlechromeframe"; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ChromeFrameDistribution::GetNetworkStatsServer() const { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return chrome_common_net::kEchoTestServerLocation; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetUninstallLinkName() { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return L"Uninstall Chrome Frame"; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetUninstallRegPath() { 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"Google Chrome Frame"; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ChromeFrameDistribution::GetIconFilename() { 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return installer::kChromeExe; 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)int ChromeFrameDistribution::GetIconIndex(ShortcutType shortcut_type) { 1033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) switch (shortcut_type) { 1043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) case SHORTCUT_CHROME: 1053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return 0; 1063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) default: 1073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NOTREACHED(); 1083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return 0; 1093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)BrowserDistribution::DefaultBrowserControlPolicy 1131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ChromeFrameDistribution::GetDefaultBrowserControlPolicy() { 1141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return DEFAULT_BROWSER_UNSUPPORTED; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ChromeFrameDistribution::CanCreateDesktopShortcuts() { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ChromeFrameDistribution::GetCommandExecuteImplClsid( 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16* handler_class_uuid) { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeFrameDistribution::UpdateInstallStatus(bool system_install, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::ArchiveType archive_type, 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::InstallStatus install_status) { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GoogleUpdateSettings::UpdateInstallStatus(system_install, 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) archive_type, InstallUtil::GetInstallReturnCode(install_status), 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kChromeFrameGuid); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 135