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