Home | History | Annotate | Download | only in first_run
      1 // Copyright (c) 2012 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_FIRST_RUN_INTERNAL_H_
      6 #define CHROME_BROWSER_FIRST_RUN_FIRST_RUN_INTERNAL_H_
      7 
      8 class MasterPrefs;
      9 class Profile;
     10 
     11 namespace base {
     12 class FilePath;
     13 }
     14 
     15 namespace installer {
     16 class MasterPreferences;
     17 }
     18 
     19 namespace first_run {
     20 
     21 namespace internal {
     22 
     23 enum FirstRunState {
     24   FIRST_RUN_UNKNOWN,  // The state is not tested or set yet.
     25   FIRST_RUN_TRUE,
     26   FIRST_RUN_FALSE,
     27   FIRST_RUN_CANCEL,  // This shouldn't be considered first run but the sentinel
     28                      // should be created anyways.
     29 };
     30 
     31 // This variable should only be accessed through IsChromeFirstRun().
     32 extern FirstRunState first_run_;
     33 
     34 // Generates an initial user preference file in |user_data_dir| using the data
     35 // in |master_prefs|.
     36 bool GeneratePrefFile(const base::FilePath& user_data_dir,
     37                       const installer::MasterPreferences& master_prefs);
     38 
     39 // Sets up master preferences by preferences passed by installer.
     40 void SetupMasterPrefsFromInstallPrefs(
     41     const installer::MasterPreferences& install_prefs,
     42     MasterPrefs* out_prefs);
     43 
     44 // Creates the sentinel file that signals that chrome has been configured.
     45 bool CreateSentinel();
     46 
     47 // -- Platform-specific functions --
     48 
     49 void DoPostImportPlatformSpecificTasks(Profile* profile);
     50 
     51 // Gives the full path to the sentinel file. The file might not exist.
     52 // This function has a common implementation on OS_POSIX and a windows specific
     53 // implementation.
     54 bool GetFirstRunSentinelFilePath(base::FilePath* path);
     55 
     56 // This function has a common implementationin for all non-linux platforms, and
     57 // a linux specific implementation.
     58 bool IsOrganicFirstRun();
     59 
     60 // Shows the EULA dialog if required. Returns true if the EULA is accepted,
     61 // returns false if the EULA has not been accepted, in which case the browser
     62 // should exit.
     63 bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs);
     64 
     65 // Returns the path for the master preferences file.
     66 base::FilePath MasterPrefsPath();
     67 
     68 }  // namespace internal
     69 }  // namespace first_run
     70 
     71 #endif  // CHROME_BROWSER_FIRST_RUN_FIRST_RUN_INTERNAL_H_
     72