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