chrome_app_host_operations.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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#include "chrome/installer/util/chrome_app_host_operations.h" 6 7#include "base/command_line.h" 8#include "base/files/file_path.h" 9#include "base/logging.h" 10#include "chrome/common/chrome_switches.h" 11#include "chrome/installer/util/browser_distribution.h" 12#include "chrome/installer/util/channel_info.h" 13#include "chrome/installer/util/helper.h" 14#include "chrome/installer/util/master_preferences.h" 15#include "chrome/installer/util/master_preferences_constants.h" 16#include "chrome/installer/util/shell_util.h" 17#include "chrome/installer/util/util_constants.h" 18 19namespace installer { 20 21void ChromeAppHostOperations::ReadOptions(const MasterPreferences& prefs, 22 std::set<string16>* options) const { 23 DCHECK(options); 24 25 bool pref_value; 26 if (prefs.GetBool(master_preferences::kMultiInstall, &pref_value) && 27 pref_value) { 28 options->insert(kOptionMultiInstall); 29 } 30} 31 32void ChromeAppHostOperations::ReadOptions(const CommandLine& uninstall_command, 33 std::set<string16>* options) const { 34 DCHECK(options); 35 36 if (uninstall_command.HasSwitch(switches::kMultiInstall)) 37 options->insert(kOptionMultiInstall); 38} 39 40void ChromeAppHostOperations::AddKeyFiles( 41 const std::set<string16>& options, 42 std::vector<base::FilePath>* key_files) const { 43} 44 45void ChromeAppHostOperations::AddComDllList( 46 const std::set<string16>& options, 47 std::vector<base::FilePath>* com_dll_list) const { 48} 49 50void ChromeAppHostOperations::AppendProductFlags( 51 const std::set<string16>& options, 52 CommandLine* cmd_line) const { 53 DCHECK(cmd_line); 54 bool is_multi_install = options.find(kOptionMultiInstall) != options.end(); 55 56 // Non-multi-install not supported for the app host. 57 DCHECK(is_multi_install); 58 59 // Add --multi-install if it isn't already there. 60 if (is_multi_install && !cmd_line->HasSwitch(switches::kMultiInstall)) 61 cmd_line->AppendSwitch(switches::kMultiInstall); 62 63 // Add --app-launcher. 64 cmd_line->AppendSwitch(switches::kChromeAppLauncher); 65} 66 67void ChromeAppHostOperations::AppendRenameFlags( 68 const std::set<string16>& options, 69 CommandLine* cmd_line) const { 70 DCHECK(cmd_line); 71 bool is_multi_install = options.find(kOptionMultiInstall) != options.end(); 72 73 // Non-multi-install not supported for the app host. 74 DCHECK(is_multi_install); 75 76 // Add --multi-install if it isn't already there. 77 if (is_multi_install && !cmd_line->HasSwitch(switches::kMultiInstall)) 78 cmd_line->AppendSwitch(switches::kMultiInstall); 79} 80 81bool ChromeAppHostOperations::SetChannelFlags(const std::set<string16>& options, 82 bool set, 83 ChannelInfo* channel_info) const { 84#if defined(GOOGLE_CHROME_BUILD) 85 DCHECK(channel_info); 86 return channel_info->SetAppLauncher(set); 87#else 88 return false; 89#endif 90} 91 92bool ChromeAppHostOperations::ShouldCreateUninstallEntry( 93 const std::set<string16>& options) const { 94 return true; 95} 96 97void ChromeAppHostOperations::AddDefaultShortcutProperties( 98 BrowserDistribution* dist, 99 const base::FilePath& target_exe, 100 ShellUtil::ShortcutProperties* properties) const { 101 if (!properties->has_target()) 102 properties->set_target(target_exe); 103 104 if (!properties->has_arguments()) { 105 CommandLine app_host_args(CommandLine::NO_PROGRAM); 106 app_host_args.AppendSwitch(::switches::kShowAppList); 107 properties->set_arguments(app_host_args.GetCommandLineString()); 108 } 109 110 if (!properties->has_icon()) 111 properties->set_icon(target_exe, dist->GetIconIndex()); 112 113 if (!properties->has_app_id()) { 114 std::vector<string16> components; 115 components.push_back(dist->GetBaseAppId()); 116 properties->set_app_id(ShellUtil::BuildAppModelId(components)); 117 } 118} 119 120void ChromeAppHostOperations::LaunchUserExperiment( 121 const base::FilePath& setup_path, 122 const std::set<string16>& options, 123 InstallStatus status, 124 bool system_level) const { 125 // No experiments yet. If adding some in the future, need to have 126 // ChromeAppHostDistribution::HasUserExperiments() return true. 127 NOTREACHED(); 128} 129 130} // namespace installer 131