1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_FIRST_RUN_UPGRADE_UTIL_H_ 6 #define CHROME_BROWSER_FIRST_RUN_UPGRADE_UTIL_H_ 7 8 #include "build/build_config.h" 9 10 #if defined(OS_WIN) 11 #include <string> 12 #endif 13 14 #if !defined(OS_CHROMEOS) 15 16 class CommandLine; 17 18 namespace upgrade_util { 19 20 // Launches Chrome again simulating a "user" launch. If Chrome could not be 21 // launched, returns false. 22 bool RelaunchChromeBrowser(const CommandLine& command_line); 23 24 #if defined(OS_WIN) 25 26 extern const char kRelaunchModeMetro[]; 27 extern const char kRelaunchModeDesktop[]; 28 extern const char kRelaunchModeDefault[]; 29 30 enum RelaunchMode { 31 RELAUNCH_MODE_METRO = 0, 32 RELAUNCH_MODE_DESKTOP = 1, 33 // Default mode indicates caller is not sure which mode to launch. 34 RELAUNCH_MODE_DEFAULT = 2, 35 }; 36 37 std::string RelaunchModeEnumToString(const RelaunchMode& relaunch_mode); 38 39 RelaunchMode RelaunchModeStringToEnum(const std::string& relaunch_mode); 40 41 // Like RelaunchChromeBrowser() but for Windows 8 it will read pref and restart 42 // chrome accordingly in desktop or metro mode. 43 bool RelaunchChromeWithMode(const CommandLine& command_line, 44 const RelaunchMode& relaunch_mode); 45 46 #endif 47 48 #if !defined(OS_MACOSX) 49 50 void SetNewCommandLine(CommandLine* new_command_line); 51 52 // Launches a new instance of the browser if the current instance in persistent 53 // mode an upgrade is detected. 54 void RelaunchChromeBrowserWithNewCommandLineIfNeeded(); 55 56 // Windows: 57 // Checks if chrome_new.exe is present in the current instance's install. 58 // Linux: 59 // Checks if the last modified time of chrome is newer than that of the current 60 // running instance. 61 bool IsUpdatePendingRestart(); 62 63 #endif // !defined(OS_MACOSX) 64 65 } // namespace upgrade_util 66 67 #endif // !defined(OS_CHROMEOS) 68 69 #endif // CHROME_BROWSER_FIRST_RUN_UPGRADE_UTIL_H_ 70