| OLD | NEW | 
|   1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |   1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 
|   2 // Use of this source code is governed by a BSD-style license that can be |   2 // Use of this source code is governed by a BSD-style license that can be | 
|   3 // found in the LICENSE file. |   3 // found in the LICENSE file. | 
|   4  |   4  | 
|   5 #include "chrome/browser/first_run.h" |   5 #include "chrome/browser/first_run.h" | 
|   6  |   6  | 
|   7 #include "build/build_config.h" |   7 #include "build/build_config.h" | 
|   8  |   8  | 
|   9 // TODO(port): move more code in back from the first_run_win.cc module. |   9 // TODO(port): move more code in back from the first_run_win.cc module. | 
|  10  |  10  | 
|  11 #if defined(OS_WIN) |  11 #if defined(OS_WIN) | 
|  12 #include "chrome/installer/util/install_util.h" |  12 #include "chrome/installer/util/install_util.h" | 
|  13 #endif |  13 #endif | 
|  14  |  14  | 
|  15 #include "base/file_util.h" |  15 #include "base/file_util.h" | 
|  16 #include "base/path_service.h" |  16 #include "base/path_service.h" | 
|  17 #include "chrome/common/chrome_paths.h" |  17 #include "chrome/common/chrome_paths.h" | 
|  18  |  18  | 
|  19 namespace { |  19 namespace { | 
|  20  |  20  | 
|  21 // The kSentinelFile file absence will tell us it is a first run. |  21 // The kSentinelFile file absence will tell us it is a first run. | 
|  22 #if defined(OS_WIN) |  22 #if defined(OS_WIN) | 
|  23 const char kSentinelFile[] = "First Run"; |  23 const char kSentinelFile[] = "First Run"; | 
|  24 #else |  24 #else | 
|  25 // On other platforms de intentionally use a different file name, so |  25 // On other platforms de intentionally use a different file name, so | 
|  26 // when the remainder of this file is implemented, we can switch to |  26 // when the remainder of this file is implemented, we can switch to | 
|  27 // the proper file name and users will get the first run interface again. |  27 // the proper file name and users will get the first run interface again. | 
|  28 const char kSentinelFile[] = "First Run Alpha"; |  28 const char kSentinelFile[] = "First Run Dev"; | 
|  29 #endif |  29 #endif | 
|  30  |  30  | 
|  31 // Gives the full path to the sentinel file. The file might not exist. |  31 // Gives the full path to the sentinel file. The file might not exist. | 
|  32 bool GetFirstRunSentinelFilePath(FilePath* path) { |  32 bool GetFirstRunSentinelFilePath(FilePath* path) { | 
|  33   FilePath first_run_sentinel; |  33   FilePath first_run_sentinel; | 
|  34  |  34  | 
|  35 #if defined(OS_WIN) |  35 #if defined(OS_WIN) | 
|  36   FilePath exe_path; |  36   FilePath exe_path; | 
|  37   if (!PathService::Get(base::DIR_EXE, &exe_path)) |  37   if (!PathService::Get(base::DIR_EXE, &exe_path)) | 
|  38     return false; |  38     return false; | 
|  39   if (InstallUtil::IsPerUserInstall(exe_path.value().c_str())) { |  39   if (InstallUtil::IsPerUserInstall(exe_path.value().c_str())) { | 
|  40     first_run_sentinel = exe_path; |  40     first_run_sentinel = exe_path; | 
|  41   } else { |  41   } else { | 
|  42     if (!PathService::Get(chrome::DIR_USER_DATA, &first_run_sentinel)) |  42     if (!PathService::Get(chrome::DIR_USER_DATA, &first_run_sentinel)) | 
|  43       return false; |  43       return false; | 
|  44   } |  44   } | 
|  45 #else |  45 #else | 
|  46   // TODO(port): logic as above.  Not important for our "First Run Alpha" file. |  46   // TODO(port): logic as above.  Not important for our "First Run Dev" file. | 
|  47   if (!PathService::Get(chrome::DIR_USER_DATA, &first_run_sentinel)) |  47   if (!PathService::Get(chrome::DIR_USER_DATA, &first_run_sentinel)) | 
|  48     return false; |  48     return false; | 
|  49 #endif |  49 #endif | 
|  50  |  50  | 
|  51   first_run_sentinel = first_run_sentinel.AppendASCII(kSentinelFile); |  51   first_run_sentinel = first_run_sentinel.AppendASCII(kSentinelFile); | 
|  52   *path = first_run_sentinel; |  52   *path = first_run_sentinel; | 
|  53   return true; |  53   return true; | 
|  54 } |  54 } | 
|  55  |  55  | 
|  56 }  // namespace |  56 }  // namespace | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
|  80     return false; |  80     return false; | 
|  81   return file_util::Delete(first_run_sentinel, false); |  81   return file_util::Delete(first_run_sentinel, false); | 
|  82 } |  82 } | 
|  83  |  83  | 
|  84 bool FirstRun::CreateSentinel() { |  84 bool FirstRun::CreateSentinel() { | 
|  85   FilePath first_run_sentinel; |  85   FilePath first_run_sentinel; | 
|  86   if (!GetFirstRunSentinelFilePath(&first_run_sentinel)) |  86   if (!GetFirstRunSentinelFilePath(&first_run_sentinel)) | 
|  87     return false; |  87     return false; | 
|  88   return file_util::WriteFile(first_run_sentinel, "", 0) != -1; |  88   return file_util::WriteFile(first_run_sentinel, "", 0) != -1; | 
|  89 } |  89 } | 
| OLD | NEW |