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