15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_FIRST_RUN_FIRST_RUN_INTERNAL_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_FIRST_RUN_FIRST_RUN_INTERNAL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass MasterPrefs; 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FilePath; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace installer { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MasterPreferences; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace first_run { 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace internal { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum FirstRunState { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FIRST_RUN_UNKNOWN, // The state is not tested or set yet. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FIRST_RUN_TRUE, 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FIRST_RUN_FALSE, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This variable should only be accessed through IsChromeFirstRun(). 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern FirstRunState first_run_; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sets up master preferences by preferences passed by installer. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetupMasterPrefsFromInstallPrefs( 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const installer::MasterPreferences& install_prefs, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MasterPrefs* out_prefs); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Get the file path of the first run sentinel; returns false on failure. 38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool GetFirstRunSentinelFilePath(base::FilePath* path); 39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Create the first run sentinel file; returns false on failure. 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)bool CreateSentinel(); 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// -- Platform-specific functions -- 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)void DoPostImportPlatformSpecificTasks(Profile* profile); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Returns true if the sentinel file exists (or the path cannot be obtained). 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Migrates Windows legacy sentinel files to the corrent location, if needed. 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool IsFirstRunSentinelPresent(); 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This function has a common implementationin for all non-linux platforms, and 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a linux specific implementation. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsOrganicFirstRun(); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Shows the EULA dialog if required. Returns true if the EULA is accepted, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// returns false if the EULA has not been accepted, in which case the browser 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// should exit. 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Returns the path for the master preferences file. 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)base::FilePath MasterPrefsPath(); 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace internal 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace first_run 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_FIRST_RUN_FIRST_RUN_INTERNAL_H_ 67