summaryrefslogtreecommitdiffstats
path: root/chrome/browser/first_run.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/first_run.h')
-rw-r--r--chrome/browser/first_run.h39
1 files changed, 33 insertions, 6 deletions
diff --git a/chrome/browser/first_run.h b/chrome/browser/first_run.h
index a3310ed..0ac3da5 100644
--- a/chrome/browser/first_run.h
+++ b/chrome/browser/first_run.h
@@ -137,12 +137,13 @@ class FirstRun {
DISALLOW_IMPLICIT_CONSTRUCTORS(FirstRun);
};
-#if defined(OS_WIN)
+#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
// This class contains the actions that need to be performed when an upgrade
// is required. This involves mainly swapping the chrome exe and relaunching
// the new browser.
class Upgrade {
public:
+#if defined(OS_WIN)
// Possible results of ShowTryChromeDialog().
enum TryResult {
TD_TRY_CHROME, // Launch chrome right now.
@@ -168,22 +169,48 @@ class Upgrade {
// is no new_chrome.exe or the swap fails the return is false;
static bool SwapNewChromeExeIfPresent();
- // Combines the two methods above to perform the rename and relaunch of
+ // Combines the two methods, RelaunchChromeBrowser and
+ // SwapNewChromeExeIfPresent, to perform the rename and relaunch of
// the browser. Note that relaunch does NOT exit the existing browser process.
// If this is called before message loop is executed, simply exit the main
// function. If browser is already running, you will need to exit it.
static bool DoUpgradeTasks(const CommandLine& command_line);
- // Checks if chrome_new.exe is present in the current instance's install.
- static bool IsUpdatePendingRestart();
-
// Shows a modal dialog asking the user to give chrome another try. See
// above for the possible outcomes of the function. This is an experimental,
// non-localized dialog.
// |version| can be 0, 1 or 2 and selects what strings to present.
static TryResult ShowTryChromeDialog(size_t version);
-};
+#endif // OS_WIN
+
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ static void SaveLastModifiedTimeOfExe();
+#endif
+
+ static void SetNewCommandLine(CommandLine* new_command_line) {
+ // Takes ownership of the pointer.
+ new_command_line_ = new_command_line;
+ }
+
+ // Launches a new instance of the browser if the current instance in
+ // persistent mode an upgrade is detected.
+ static 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.
+ static bool IsUpdatePendingRestart();
+
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ private:
+ static double GetLastModifiedTimeOfExe();
+ static double saved_last_modified_time_of_exe_;
#endif
+ static CommandLine* new_command_line_;
+};
+#endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
// A subclass of BrowserProcessImpl that does not have a GoogleURLTracker or
// IntranetRedirectDetector so we don't do any URL fetches (as we have no IO