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.
5 #include "chrome/browser/first_run/upgrade_util.h"
7 #include "base/base_paths.h"
8 #include "base/command_line.h"
9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h"
11 #include "base/logging.h"
12 #include "base/path_service.h"
13 #include "base/process/launch.h"
14 #include "chrome/browser/first_run/upgrade_util_linux.h"
18 double saved_last_modified_time_of_exe
= 0;
22 namespace upgrade_util
{
24 bool RelaunchChromeBrowser(const base::CommandLine
& command_line
) {
25 base::LaunchOptions options
;
26 // Don't set NO_NEW_PRIVS on the relaunched browser process.
27 options
.allow_new_privs
= true;
28 return base::LaunchProcess(command_line
, options
).IsValid();
31 bool IsUpdatePendingRestart() {
32 return saved_last_modified_time_of_exe
!= GetLastModifiedTimeOfExe();
35 void SaveLastModifiedTimeOfExe() {
36 saved_last_modified_time_of_exe
= GetLastModifiedTimeOfExe();
39 double GetLastModifiedTimeOfExe() {
40 base::FilePath exe_file_path
;
41 if (!PathService::Get(base::FILE_EXE
, &exe_file_path
)) {
42 LOG(WARNING
) << "Failed to get base::FilePath object for FILE_EXE.";
43 return saved_last_modified_time_of_exe
;
45 base::File::Info exe_file_info
;
46 if (!base::GetFileInfo(exe_file_path
, &exe_file_info
)) {
47 LOG(WARNING
) << "Failed to get FileInfo object for FILE_EXE - "
48 << exe_file_path
.value();
49 return saved_last_modified_time_of_exe
;
51 return exe_file_info
.last_modified
.ToDoubleT();
54 } // namespace upgrade_util