|  | // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef CHROME_BROWSER_FIRST_RUN_UPGRADE_UTIL_H_ | 
|  | #define CHROME_BROWSER_FIRST_RUN_UPGRADE_UTIL_H_ | 
|  |  | 
|  | #include "build/build_config.h" | 
|  |  | 
|  | #if defined(OS_ANDROID) || defined(OS_CHROMEOS) | 
|  | #error Not used on Android or ChromeOS | 
|  | #endif | 
|  |  | 
|  | #if defined(OS_WIN) | 
|  | #include <string> | 
|  | #endif | 
|  |  | 
|  | namespace base { | 
|  | class CommandLine; | 
|  | } | 
|  |  | 
|  | namespace upgrade_util { | 
|  |  | 
|  | // Launches Chrome again simulating a "user" launch. If Chrome could not be | 
|  | // launched, returns false. | 
|  | bool RelaunchChromeBrowser(const base::CommandLine& command_line); | 
|  |  | 
|  | #if defined(OS_WIN) | 
|  |  | 
|  | extern const char kRelaunchModeMetro[]; | 
|  | extern const char kRelaunchModeDesktop[]; | 
|  | extern const char kRelaunchModeDefault[]; | 
|  |  | 
|  | enum RelaunchMode { | 
|  | RELAUNCH_MODE_METRO = 0, | 
|  | RELAUNCH_MODE_DESKTOP = 1, | 
|  | // Default mode indicates caller is not sure which mode to launch. | 
|  | RELAUNCH_MODE_DEFAULT = 2, | 
|  | }; | 
|  |  | 
|  | std::string RelaunchModeEnumToString(const RelaunchMode& relaunch_mode); | 
|  |  | 
|  | RelaunchMode RelaunchModeStringToEnum(const std::string& relaunch_mode); | 
|  |  | 
|  | // Like RelaunchChromeBrowser() but for Windows 8 it will read pref and restart | 
|  | // chrome accordingly in desktop or metro mode. | 
|  | bool RelaunchChromeWithMode(const base::CommandLine& command_line, | 
|  | const RelaunchMode& relaunch_mode); | 
|  |  | 
|  | #endif  // defined(OS_WIN) | 
|  |  | 
|  | #if !defined(OS_MACOSX) | 
|  |  | 
|  | void SetNewCommandLine(base::CommandLine* new_command_line); | 
|  |  | 
|  | // Launches a new instance of the browser if the current instance in persistent | 
|  | // mode an upgrade is detected. | 
|  | void RelaunchChromeBrowserWithNewCommandLineIfNeeded(); | 
|  |  | 
|  | // Windows: | 
|  | //  Checks if chrome_new.exe is present in the current instance's install. | 
|  | // Linux: | 
|  | //  Checks if the last modified time of chrome is newer than that of the current | 
|  | //  running instance. | 
|  | bool IsUpdatePendingRestart(); | 
|  |  | 
|  | #endif  // !defined(OS_MACOSX) | 
|  |  | 
|  | }  // namespace upgrade_util | 
|  |  | 
|  | #endif  // CHROME_BROWSER_FIRST_RUN_UPGRADE_UTIL_H_ |