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)#include "chrome/installer/util/chrome_binaries_operations.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/channel_info.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/helper.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/master_preferences.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/master_preferences_constants.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/util_constants.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace installer { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ChromeBinariesOperations::ReadOptions(const MasterPreferences& prefs, 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::set<base::string16>* options) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(options); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options->insert(kOptionMultiInstall); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ChromeBinariesOperations::ReadOptions(const CommandLine& uninstall_command, 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::set<base::string16>* options) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(options); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options->insert(kOptionMultiInstall); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeBinariesOperations::AddKeyFiles( 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::set<base::string16>& options, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<base::FilePath>* key_files) const { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(key_files); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) key_files->push_back(base::FilePath(installer::kChromeDll)); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeBinariesOperations::AddComDllList( 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::set<base::string16>& options, 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<base::FilePath>* com_dll_list) const { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeBinariesOperations::AppendProductFlags( 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::set<base::string16>& options, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine* cmd_line) const { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(cmd_line); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(options.find(kOptionMultiInstall) != options.end()); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add --multi-install if it isn't already there. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!cmd_line->HasSwitch(switches::kMultiInstall)) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd_line->AppendSwitch(switches::kMultiInstall); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeBinariesOperations::AppendRenameFlags( 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::set<base::string16>& options, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine* cmd_line) const { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(cmd_line); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(options.find(kOptionMultiInstall) != options.end()); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add --multi-install if it isn't already there. 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!cmd_line->HasSwitch(switches::kMultiInstall)) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd_line->AppendSwitch(switches::kMultiInstall); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ChromeBinariesOperations::SetChannelFlags( 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::set<base::string16>& options, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool set, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChannelInfo* channel_info) const { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ChromeBinariesOperations::ShouldCreateUninstallEntry( 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::set<base::string16>& options) const { 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeBinariesOperations::AddDefaultShortcutProperties( 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserDistribution* dist, 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& target_exe, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShellUtil::ShortcutProperties* properties) const { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED() << "Chrome Binaries do not create shortcuts."; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ChromeBinariesOperations::LaunchUserExperiment( 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& setup_path, 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::set<base::string16>& options, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) InstallStatus status, 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool system_level) const { 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Not meaningful to have binaries run experiments. 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTREACHED(); 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace installer 97