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