Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(502)

Side by Side Diff: chrome/browser/first_run/first_run.cc

Issue 2164033002: Refactoring startup logic for upcoming FRE changes (non-Win 10). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Misc changes to argument passing Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/first_run.h" 5 #include "chrome/browser/first_run/first_run.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 // A bitfield formed from values in AutoImportState to record the state of 83 // A bitfield formed from values in AutoImportState to record the state of
84 // AutoImport. This is used in testing to verify import startup actions that 84 // AutoImport. This is used in testing to verify import startup actions that
85 // occur before an observer can be registered in the test. 85 // occur before an observer can be registered in the test.
86 uint16_t g_auto_import_state = first_run::AUTO_IMPORT_NONE; 86 uint16_t g_auto_import_state = first_run::AUTO_IMPORT_NONE;
87 87
88 // Flags for functions of similar name. 88 // Flags for functions of similar name.
89 bool g_should_show_welcome_page = false; 89 bool g_should_show_welcome_page = false;
90 bool g_should_do_autofill_personal_data_manager_first_run = false; 90 bool g_should_do_autofill_personal_data_manager_first_run = false;
91 91
92 // Indicates whether this is first run. Populated when IsChromeFirstRun
93 // is invoked, then used as a cache on subsequent calls.
94 first_run::internal::FirstRunState g_first_run =
95 first_run::internal::FIRST_RUN_UNKNOWN;
96
92 // This class acts as an observer for the ImporterProgressObserver::ImportEnded 97 // This class acts as an observer for the ImporterProgressObserver::ImportEnded
93 // callback. When the import process is started, certain errors may cause 98 // callback. When the import process is started, certain errors may cause
94 // ImportEnded() to be called synchronously, but the typical case is that 99 // ImportEnded() to be called synchronously, but the typical case is that
95 // ImportEnded() is called asynchronously. Thus we have to handle both cases. 100 // ImportEnded() is called asynchronously. Thus we have to handle both cases.
96 class ImportEndedObserver : public importer::ImporterProgressObserver { 101 class ImportEndedObserver : public importer::ImporterProgressObserver {
97 public: 102 public:
98 ImportEndedObserver() : ended_(false) {} 103 ImportEndedObserver() : ended_(false) {}
99 ~ImportEndedObserver() override {} 104 ~ImportEndedObserver() override {}
100 105
101 // importer::ImporterProgressObserver: 106 // importer::ImporterProgressObserver:
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 shell_integration::SetAsDefaultBrowser(); 493 shell_integration::SetAsDefaultBrowser();
489 } 494 }
490 } 495 }
491 } 496 }
492 497
493 } // namespace 498 } // namespace
494 499
495 namespace first_run { 500 namespace first_run {
496 namespace internal { 501 namespace internal {
497 502
498 FirstRunState g_first_run = FIRST_RUN_UNKNOWN;
499
500 void SetupMasterPrefsFromInstallPrefs( 503 void SetupMasterPrefsFromInstallPrefs(
501 const installer::MasterPreferences& install_prefs, 504 const installer::MasterPreferences& install_prefs,
502 MasterPrefs* out_prefs) { 505 MasterPrefs* out_prefs) {
503 ConvertStringVectorToGURLVector( 506 ConvertStringVectorToGURLVector(
504 install_prefs.GetFirstRunTabs(), &out_prefs->new_tabs); 507 install_prefs.GetFirstRunTabs(), &out_prefs->new_tabs);
505 508
506 install_prefs.GetInt(installer::master_preferences::kDistroPingDelay, 509 install_prefs.GetInt(installer::master_preferences::kDistroPingDelay,
507 &out_prefs->ping_delay); 510 &out_prefs->ping_delay);
508 511
509 bool value = false; 512 bool value = false;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 // -- Platform-specific functions -- 613 // -- Platform-specific functions --
611 614
612 #if !defined(OS_LINUX) && !defined(OS_BSD) 615 #if !defined(OS_LINUX) && !defined(OS_BSD)
613 bool IsOrganicFirstRun() { 616 bool IsOrganicFirstRun() {
614 std::string brand; 617 std::string brand;
615 google_brand::GetBrand(&brand); 618 google_brand::GetBrand(&brand);
616 return google_brand::IsOrganicFirstRun(brand); 619 return google_brand::IsOrganicFirstRun(brand);
617 } 620 }
618 #endif 621 #endif
619 622
623 FirstRunState DetermineFirstRunState(bool has_sentinel,
624 bool force_first_run,
625 bool no_first_run) {
626 return (force_first_run || (!has_sentinel && !no_first_run))
627 ? FIRST_RUN_TRUE
628 : FIRST_RUN_FALSE;
629 }
630
620 } // namespace internal 631 } // namespace internal
621 632
622 MasterPrefs::MasterPrefs() 633 MasterPrefs::MasterPrefs()
623 : ping_delay(0), 634 : ping_delay(0),
624 homepage_defined(false), 635 homepage_defined(false),
625 do_import_items(0), 636 do_import_items(0),
626 dont_import_items(0), 637 dont_import_items(0),
627 make_chrome_default_for_user(false), 638 make_chrome_default_for_user(false),
628 suppress_first_run_default_browser_prompt(false), 639 suppress_first_run_default_browser_prompt(false),
629 welcome_page_on_os_upgrade_enabled(true) { 640 welcome_page_on_os_upgrade_enabled(true) {
630 } 641 }
631 642
632 MasterPrefs::~MasterPrefs() {} 643 MasterPrefs::~MasterPrefs() {}
633 644
634 bool IsChromeFirstRun() { 645 bool IsChromeFirstRun() {
635 if (internal::g_first_run == internal::FIRST_RUN_UNKNOWN) { 646 if (g_first_run == internal::FIRST_RUN_UNKNOWN) {
636 internal::g_first_run = internal::FIRST_RUN_FALSE;
637 const base::CommandLine* command_line = 647 const base::CommandLine* command_line =
638 base::CommandLine::ForCurrentProcess(); 648 base::CommandLine::ForCurrentProcess();
639 if (command_line->HasSwitch(switches::kForceFirstRun) || 649 g_first_run = internal::DetermineFirstRunState(
640 (!command_line->HasSwitch(switches::kNoFirstRun) && 650 internal::IsFirstRunSentinelPresent(),
641 !internal::IsFirstRunSentinelPresent())) { 651 command_line->HasSwitch(switches::kForceFirstRun),
642 internal::g_first_run = internal::FIRST_RUN_TRUE; 652 command_line->HasSwitch(switches::kNoFirstRun));
643 }
644 } 653 }
645 return internal::g_first_run == internal::FIRST_RUN_TRUE; 654 return g_first_run == internal::FIRST_RUN_TRUE;
646 } 655 }
647 656
648 #if defined(OS_MACOSX) 657 #if defined(OS_MACOSX)
649 bool IsFirstRunSuppressed(const base::CommandLine& command_line) { 658 bool IsFirstRunSuppressed(const base::CommandLine& command_line) {
650 return command_line.HasSwitch(switches::kNoFirstRun); 659 return command_line.HasSwitch(switches::kNoFirstRun);
651 } 660 }
652 #endif 661 #endif
653 662
654 bool IsMetricsReportingOptIn() { 663 bool IsMetricsReportingOptIn() {
655 // Metrics reporting is opt-out by default for all platforms and channels. 664 // Metrics reporting is opt-out by default for all platforms and channels.
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 SetShouldDoPersonalDataManagerFirstRun(); 850 SetShouldDoPersonalDataManagerFirstRun();
842 851
843 internal::DoPostImportPlatformSpecificTasks(profile); 852 internal::DoPostImportPlatformSpecificTasks(profile);
844 } 853 }
845 854
846 uint16_t auto_import_state() { 855 uint16_t auto_import_state() {
847 return g_auto_import_state; 856 return g_auto_import_state;
848 } 857 }
849 858
850 } // namespace first_run 859 } // namespace first_run
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698