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

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

Issue 20483002: Merge 3 different ways of obtaining first run state into a single one. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
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/chrome_browser_main.h" 5 #include "chrome/browser/chrome_browser_main.h"
6 6
7 #if defined(TOOLKIT_GTK) 7 #if defined(TOOLKIT_GTK)
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 #endif 9 #endif
10 10
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 result_code_(content::RESULT_CODE_NORMAL_EXIT), 546 result_code_(content::RESULT_CODE_NORMAL_EXIT),
547 startup_watcher_(new StartupTimeBomb()), 547 startup_watcher_(new StartupTimeBomb()),
548 shutdown_watcher_(new ShutdownWatcherHelper()), 548 shutdown_watcher_(new ShutdownWatcherHelper()),
549 startup_timer_(new performance_monitor::StartupTimer()), 549 startup_timer_(new performance_monitor::StartupTimer()),
550 browser_field_trials_(parameters.command_line), 550 browser_field_trials_(parameters.command_line),
551 rvh_callback_(base::Bind(&RenderViewHostCreated)), 551 rvh_callback_(base::Bind(&RenderViewHostCreated)),
552 translate_manager_(NULL), 552 translate_manager_(NULL),
553 profile_(NULL), 553 profile_(NULL),
554 run_message_loop_(true), 554 run_message_loop_(true),
555 notify_result_(ProcessSingleton::PROCESS_NONE), 555 notify_result_(ProcessSingleton::PROCESS_NONE),
556 do_first_run_tasks_(false), 556 is_first_run_(false),
557 local_state_(NULL), 557 local_state_(NULL),
558 restart_last_session_(false) { 558 restart_last_session_(false) {
559 // If we're running tests (ui_task is non-null). 559 // If we're running tests (ui_task is non-null).
560 if (parameters.ui_task) 560 if (parameters.ui_task)
561 browser_defaults::enable_help_app = false; 561 browser_defaults::enable_help_app = false;
562 562
563 // Chrome disallows cookies by default. All code paths that want to use 563 // Chrome disallows cookies by default. All code paths that want to use
564 // cookies need to go through one of Chrome's URLRequestContexts which have 564 // cookies need to go through one of Chrome's URLRequestContexts which have
565 // a ChromeNetworkDelegate attached that selectively allows cookies again. 565 // a ChromeNetworkDelegate attached that selectively allows cookies again.
566 if (!disable_enforcing_cookie_policies_for_tests_) 566 if (!disable_enforcing_cookie_policies_for_tests_)
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 814
815 int ChromeBrowserMainParts::PreCreateThreadsImpl() { 815 int ChromeBrowserMainParts::PreCreateThreadsImpl() {
816 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl") 816 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl")
817 run_message_loop_ = false; 817 run_message_loop_ = false;
818 { 818 {
819 TRACE_EVENT0("startup", 819 TRACE_EVENT0("startup",
820 "ChromeBrowserMainParts::PreCreateThreadsImpl:GetUserDataDir"); 820 "ChromeBrowserMainParts::PreCreateThreadsImpl:GetUserDataDir");
821 user_data_dir_ = chrome::GetUserDataDir(parameters()); 821 user_data_dir_ = chrome::GetUserDataDir(parameters());
822 } 822 }
823 823
824 // Whether this is First Run. |do_first_run_tasks_| should be prefered to this
825 // unless the desire is actually to know whether this is really First Run
826 // (i.e., even if --no-first-run is passed).
827 bool is_first_run = false;
828 // Android's first run is done in Java instead of native. 824 // Android's first run is done in Java instead of native.
829 #if defined(OS_ANDROID) 825 #if defined(OS_ANDROID)
830 // Force MediaCaptureDevicesDispatcher created on UI thread. 826 // Force MediaCaptureDevicesDispatcher created on UI thread.
831 MediaCaptureDevicesDispatcher::GetInstance(); 827 MediaCaptureDevicesDispatcher::GetInstance();
832 #else 828 #else
833 process_singleton_.reset(new ChromeProcessSingleton( 829 process_singleton_.reset(new ChromeProcessSingleton(
834 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback))); 830 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback)));
835 831
836 bool force_first_run = 832 is_first_run_ = first_run::IsChromeFirstRun();
gab 2013/07/26 15:41:13 We could in fact completely get rid of is_first_ru
cpu_(ooo_6.6-7.5) 2013/07/27 21:16:31 Yes please. You can have a function local is_first
gab 2013/07/29 17:39:50 Done, indeed IsChromeFirstRun() caches the value.
837 parsed_command_line().HasSwitch(switches::kForceFirstRun);
838 bool force_skip_first_run_tasks =
839 (!force_first_run &&
840 parsed_command_line().HasSwitch(switches::kNoFirstRun));
841
842 is_first_run = force_first_run || first_run::IsChromeFirstRun();
843 #endif 833 #endif
844 834
845 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner = 835 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner =
846 JsonPrefStore::GetTaskRunnerForFile( 836 JsonPrefStore::GetTaskRunnerForFile(
847 base::FilePath(chrome::kLocalStorePoolName), 837 base::FilePath(chrome::kLocalStorePoolName),
848 BrowserThread::GetBlockingPool()); 838 BrowserThread::GetBlockingPool());
849 839
850 { 840 {
851 TRACE_EVENT0("startup", 841 TRACE_EVENT0("startup",
852 "ChromeBrowserMainParts::PreCreateThreadsImpl:InitBrowswerProcessImpl"); 842 "ChromeBrowserMainParts::PreCreateThreadsImpl:InitBrowswerProcessImpl");
(...skipping 17 matching lines...) Expand all
870 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); 860 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status);
871 } 861 }
872 862
873 if (parsed_command_line().HasSwitch(switches::kProfilingOutputFile)) { 863 if (parsed_command_line().HasSwitch(switches::kProfilingOutputFile)) {
874 tracking_objects_.set_output_file_path( 864 tracking_objects_.set_output_file_path(
875 parsed_command_line().GetSwitchValuePath( 865 parsed_command_line().GetSwitchValuePath(
876 switches::kProfilingOutputFile)); 866 switches::kProfilingOutputFile));
877 } 867 }
878 868
879 local_state_ = InitializeLocalState( 869 local_state_ = InitializeLocalState(
880 local_state_task_runner.get(), parsed_command_line(), is_first_run); 870 local_state_task_runner.get(), parsed_command_line(), is_first_run_);
881 871
882 // These members must be initialized before returning from this function. 872 // These members must be initialized before returning from this function.
883 master_prefs_.reset(new first_run::MasterPrefs); 873 master_prefs_.reset(new first_run::MasterPrefs);
884 874
885 #if !defined(OS_ANDROID) 875 #if !defined(OS_ANDROID)
886 // Android doesn't use StartupBrowserCreator. 876 // Android doesn't use StartupBrowserCreator.
887 browser_creator_.reset(new StartupBrowserCreator); 877 browser_creator_.reset(new StartupBrowserCreator);
888 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver 878 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver
889 chrome::UMABrowsingActivityObserver::Init(); 879 chrome::UMABrowsingActivityObserver::Init();
890 #endif 880 #endif
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 resources_pack_path, ui::SCALE_FACTOR_NONE); 949 resources_pack_path, ui::SCALE_FACTOR_NONE);
960 } 950 }
961 #endif // defined(OS_MACOSX) 951 #endif // defined(OS_MACOSX)
962 } 952 }
963 953
964 #if defined(TOOLKIT_GTK) 954 #if defined(TOOLKIT_GTK)
965 g_set_application_name(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME).c_str()); 955 g_set_application_name(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME).c_str());
966 #endif 956 #endif
967 957
968 // Android does first run in Java instead of native. 958 // Android does first run in Java instead of native.
969 #if !defined(OS_ANDROID) 959 // Chrome OS has its own out-of-box-experience code.
960 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
gab 2013/07/26 15:41:13 This comes from the old (removed in this CL) hidde
cpu_(ooo_6.6-7.5) 2013/07/27 21:16:31 Sure, It more along the lines of other things in t
970 // On first run, we need to process the predictor preferences before the 961 // On first run, we need to process the predictor preferences before the
971 // browser's profile_manager object is created, but after ResourceBundle 962 // browser's profile_manager object is created, but after ResourceBundle
972 // is initialized. 963 // is initialized.
973 if (is_first_run) { 964 if (is_first_run_) {
974 first_run::ProcessMasterPreferencesResult pmp_result = 965 first_run::ProcessMasterPreferencesResult pmp_result =
975 first_run::ProcessMasterPreferences(user_data_dir_, 966 first_run::ProcessMasterPreferences(user_data_dir_,
976 master_prefs_.get()); 967 master_prefs_.get());
977 if (pmp_result == first_run::EULA_EXIT_NOW) 968 if (pmp_result == first_run::EULA_EXIT_NOW)
978 return chrome::RESULT_CODE_EULA_REFUSED; 969 return chrome::RESULT_CODE_EULA_REFUSED;
979 970
980 // Do first run tasks unless: 971 if (!parsed_command_line().HasSwitch(switches::kApp) &&
981 // - Explicitly forced not to by |force_skip_first_run_tasks| or
982 // |pmp_result|.
983 // - Running in App (or App Launcher) mode, where showing the importer
984 // (first run) UI is undesired.
985 do_first_run_tasks_ = (
986 !force_skip_first_run_tasks &&
987 pmp_result != first_run::SKIP_FIRST_RUN_TASKS &&
988 !parsed_command_line().HasSwitch(switches::kApp) &&
gab 2013/07/26 15:41:13 We would previously set do_first_run_tasks_ to fal
cpu_(ooo_6.6-7.5) 2013/07/27 21:16:31 In general I agree, but you should fire an email t
gab 2013/07/29 17:39:50 [cc'ing benwells here] Right, so AFAIK this has b
gab 2013/07/29 22:22:29 Here https://codereview.chromium.org/21150006/ :)!
989 !parsed_command_line().HasSwitch(switches::kAppId) && 972 !parsed_command_line().HasSwitch(switches::kAppId) &&
990 !parsed_command_line().HasSwitch(switches::kShowAppList)); 973 !parsed_command_line().HasSwitch(switches::kShowAppList)) {
991
992 if (do_first_run_tasks_) {
993 AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs); 974 AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs);
994
995 // TODO(macourteau): refactor preferences that are copied from
996 // master_preferences into local_state, as a "local_state" section in
997 // master preferences. If possible, a generic solution would be prefered
998 // over a copy one-by-one of specific preferences. Also see related TODO
999 // in first_run.h.
1000
1001 // Store the initial VariationsService seed in local state, if it exists
1002 // in master prefs.
1003 if (!master_prefs_->variations_seed.empty()) {
1004 local_state_->SetString(prefs::kVariationsSeed,
1005 master_prefs_->variations_seed);
1006 // Set the variation seed date to the current system time. If the user's
1007 // clock is incorrect, this may cause some field trial expiry checks to
1008 // not do the right thing until the next seed update from the server,
1009 // when this value will be updated.
1010 local_state_->SetInt64(prefs::kVariationsSeedDate,
1011 base::Time::Now().ToInternalValue());
1012 }
1013
1014 if (!master_prefs_->suppress_default_browser_prompt_for_version.empty()) {
1015 local_state_->SetString(
1016 prefs::kBrowserSuppressDefaultBrowserPrompt,
1017 master_prefs_->suppress_default_browser_prompt_for_version);
1018 }
1019
1020 AppListService::Get()->HandleFirstRun();
1021 } 975 }
1022 976
1023 if (do_first_run_tasks_ || 977 // TODO(macourteau): refactor preferences that are copied from
1024 parsed_command_line().HasSwitch(switches::kNoFirstRun)) { 978 // master_preferences into local_state, as a "local_state" section in
cpu_(ooo_6.6-7.5) 2013/07/27 21:16:31 btw, I pinged him on his 3 bugs (130598, 180304, 2
1025 // Create the First Run sentinel whether first run tasks are executed 979 // master preferences. If possible, a generic solution would be prefered
1026 // or not. 980 // over a copy one-by-one of specific preferences. Also see related TODO
1027 first_run::CreateSentinel(); 981 // in first_run.h.
gab 2013/07/26 15:41:13 Now handled inside first_run::IsChromeFirstRun();
982
983 // Store the initial VariationsService seed in local state, if it exists
984 // in master prefs.
985 if (!master_prefs_->variations_seed.empty()) {
986 local_state_->SetString(prefs::kVariationsSeed,
987 master_prefs_->variations_seed);
988 // Set the variation seed date to the current system time. If the user's
989 // clock is incorrect, this may cause some field trial expiry checks to
990 // not do the right thing until the next seed update from the server,
991 // when this value will be updated.
992 local_state_->SetInt64(prefs::kVariationsSeedDate,
993 base::Time::Now().ToInternalValue());
1028 } 994 }
995
996 if (!master_prefs_->suppress_default_browser_prompt_for_version.empty()) {
997 local_state_->SetString(
998 prefs::kBrowserSuppressDefaultBrowserPrompt,
999 master_prefs_->suppress_default_browser_prompt_for_version);
1000 }
1001
1002 AppListService::Get()->HandleFirstRun();
1029 } 1003 }
1030 #endif 1004 #endif
1031 1005
1032 #if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_MACOSX) 1006 #if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_MACOSX)
1033 // Set the product channel for crash reports. 1007 // Set the product channel for crash reports.
1034 child_process_logging::SetChannel( 1008 child_process_logging::SetChannel(
1035 chrome::VersionInfo::GetVersionStringModifier()); 1009 chrome::VersionInfo::GetVersionStringModifier());
1036 #endif 1010 #endif
1037 1011
1038 // Initialize tracking synchronizer system. 1012 // Initialize tracking synchronizer system.
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 PostProfileInit(); 1324 PostProfileInit();
1351 1325
1352 // Retrieve cached GL strings from local state and use them for GPU 1326 // Retrieve cached GL strings from local state and use them for GPU
1353 // blacklist decisions. 1327 // blacklist decisions.
1354 if (g_browser_process->gl_string_manager()) 1328 if (g_browser_process->gl_string_manager())
1355 g_browser_process->gl_string_manager()->Initialize(); 1329 g_browser_process->gl_string_manager()->Initialize();
1356 1330
1357 // Create an instance of GpuModeManager to watch gpu mode pref change. 1331 // Create an instance of GpuModeManager to watch gpu mode pref change.
1358 g_browser_process->gpu_mode_manager(); 1332 g_browser_process->gpu_mode_manager();
1359 1333
1360 #if !defined(OS_ANDROID) 1334 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
1361 // Show the First Run UI if this is the first time Chrome has been run on 1335 // Show the First Run UI if this is the first time Chrome has been run on
1362 // this computer, or we're being compelled to do so by a command line flag. 1336 // this computer, or we're being compelled to do so by a command line flag.
1363 // Note that this be done _after_ the PrefService is initialized and all 1337 // Note that this be done _after_ the PrefService is initialized and all
1364 // preferences are registered, since some of the code that the importer 1338 // preferences are registered, since some of the code that the importer
1365 // touches reads preferences. 1339 // touches reads preferences.
1366 if (do_first_run_tasks_) { 1340 if (is_first_run_) {
1367 first_run::AutoImport(profile_, 1341 first_run::AutoImport(profile_,
1368 master_prefs_->homepage_defined, 1342 master_prefs_->homepage_defined,
1369 master_prefs_->do_import_items, 1343 master_prefs_->do_import_items,
1370 master_prefs_->dont_import_items, 1344 master_prefs_->dont_import_items,
1371 master_prefs_->import_bookmarks_path); 1345 master_prefs_->import_bookmarks_path);
1372 1346
1373 // Note: this can pop the first run consent dialog on linux. 1347 // Note: this can pop the first run consent dialog on linux.
1374 first_run::DoPostImportTasks(profile_, master_prefs_->make_chrome_default); 1348 first_run::DoPostImportTasks(profile_, master_prefs_->make_chrome_default);
1375 1349
1376 if (!master_prefs_->suppress_first_run_default_browser_prompt) { 1350 if (!master_prefs_->suppress_first_run_default_browser_prompt) {
1377 browser_creator_->set_show_main_browser_window( 1351 browser_creator_->set_show_main_browser_window(
1378 !chrome::ShowFirstRunDefaultBrowserPrompt(profile_)); 1352 !chrome::ShowFirstRunDefaultBrowserPrompt(profile_));
1379 } else { 1353 } else {
1380 browser_creator_->set_is_default_browser_dialog_suppressed(true); 1354 browser_creator_->set_is_default_browser_dialog_suppressed(true);
1381 } 1355 }
1382 } // if (do_first_run_tasks_) 1356 } // if (is_first_run_)
1383 #endif // !defined(OS_ANDROID) 1357 #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
1384 1358
1385 #if defined(OS_WIN) 1359 #if defined(OS_WIN)
1386 // Sets things up so that if we crash from this point on, a dialog will 1360 // Sets things up so that if we crash from this point on, a dialog will
1387 // popup asking the user to restart chrome. It is done this late to avoid 1361 // popup asking the user to restart chrome. It is done this late to avoid
1388 // testing against a bunch of special cases that are taken care early on. 1362 // testing against a bunch of special cases that are taken care early on.
1389 ChromeBrowserMainPartsWin::PrepareRestartOnCrashEnviroment( 1363 ChromeBrowserMainPartsWin::PrepareRestartOnCrashEnviroment(
1390 parsed_command_line()); 1364 parsed_command_line());
1391 1365
1392 // Registers Chrome with the Windows Restart Manager, which will restore the 1366 // Registers Chrome with the Windows Restart Manager, which will restore the
1393 // Chrome session when the computer is restarted after a system update. 1367 // Chrome session when the computer is restarted after a system update.
(...skipping 12 matching lines...) Expand all
1406 base::Bind(&NetworkProfileBubble::CheckNetworkProfile, 1380 base::Bind(&NetworkProfileBubble::CheckNetworkProfile,
1407 profile_->GetPath())); 1381 profile_->GetPath()));
1408 } 1382 }
1409 #endif // OS_WIN 1383 #endif // OS_WIN
1410 1384
1411 #if defined(ENABLE_RLZ) && !defined(OS_CHROMEOS) 1385 #if defined(ENABLE_RLZ) && !defined(OS_CHROMEOS)
1412 // Init the RLZ library. This just binds the dll and schedules a task on the 1386 // Init the RLZ library. This just binds the dll and schedules a task on the
1413 // file thread to be run sometime later. If this is the first run we record 1387 // file thread to be run sometime later. If this is the first run we record
1414 // the installation event. 1388 // the installation event.
1415 PrefService* pref_service = profile_->GetPrefs(); 1389 PrefService* pref_service = profile_->GetPrefs();
1416 int ping_delay = do_first_run_tasks_ ? master_prefs_->ping_delay : 1390 int ping_delay = is_first_run_ ? master_prefs_->ping_delay :
1417 pref_service->GetInteger(first_run::GetPingDelayPrefName().c_str()); 1391 pref_service->GetInteger(first_run::GetPingDelayPrefName().c_str());
1418 // Negative ping delay means to send ping immediately after a first search is 1392 // Negative ping delay means to send ping immediately after a first search is
1419 // recorded. 1393 // recorded.
1420 RLZTracker::InitRlzFromProfileDelayed( 1394 RLZTracker::InitRlzFromProfileDelayed(
1421 profile_, do_first_run_tasks_, ping_delay < 0, 1395 profile_, is_first_run_, ping_delay < 0,
1422 base::TimeDelta::FromMilliseconds(abs(ping_delay))); 1396 base::TimeDelta::FromMilliseconds(abs(ping_delay)));
1423 #endif // defined(ENABLE_RLZ) && !defined(OS_CHROMEOS) 1397 #endif // defined(ENABLE_RLZ) && !defined(OS_CHROMEOS)
1424 1398
1425 // Configure modules that need access to resources. 1399 // Configure modules that need access to resources.
1426 net::NetModule::SetResourceProvider(chrome_common_net::NetResourceProvider); 1400 net::NetModule::SetResourceProvider(chrome_common_net::NetResourceProvider);
1427 1401
1428 // In unittest mode, this will do nothing. In normal mode, this will create 1402 // In unittest mode, this will do nothing. In normal mode, this will create
1429 // the global IntranetRedirectDetector instance, which will promptly go to 1403 // the global IntranetRedirectDetector instance, which will promptly go to
1430 // sleep for seven seconds (to avoid slowing startup), and wake up afterwards 1404 // sleep for seven seconds (to avoid slowing startup), and wake up afterwards
1431 // to see if it should do anything else. 1405 // to see if it should do anything else.
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1634 return true; 1608 return true;
1635 #else 1609 #else
1636 // Set the result code set in PreMainMessageLoopRun or set above. 1610 // Set the result code set in PreMainMessageLoopRun or set above.
1637 *result_code = result_code_; 1611 *result_code = result_code_;
1638 if (!run_message_loop_) 1612 if (!run_message_loop_)
1639 return true; // Don't run the default message loop. 1613 return true; // Don't run the default message loop.
1640 1614
1641 // These should be invoked as close to the start of the browser's 1615 // These should be invoked as close to the start of the browser's
1642 // UI thread message loop as possible to get a stable measurement 1616 // UI thread message loop as possible to get a stable measurement
1643 // across versions. 1617 // across versions.
1644 RecordBrowserStartupTime(do_first_run_tasks_); 1618 RecordBrowserStartupTime(is_first_run_);
1645 startup_timer_->SignalStartupComplete( 1619 startup_timer_->SignalStartupComplete(
1646 performance_monitor::StartupTimer::STARTUP_NORMAL); 1620 performance_monitor::StartupTimer::STARTUP_NORMAL);
1647 1621
1648 DCHECK_EQ(base::MessageLoop::TYPE_UI, base::MessageLoop::current()->type()); 1622 DCHECK_EQ(base::MessageLoop::TYPE_UI, base::MessageLoop::current()->type());
1649 #if !defined(USE_AURA) && defined(TOOLKIT_VIEWS) 1623 #if !defined(USE_AURA) && defined(TOOLKIT_VIEWS)
1650 views::AcceleratorHandler accelerator_handler; 1624 views::AcceleratorHandler accelerator_handler;
1651 base::RunLoop run_loop(&accelerator_handler); 1625 base::RunLoop run_loop(&accelerator_handler);
1652 #else 1626 #else
1653 base::RunLoop run_loop; 1627 base::RunLoop run_loop;
1654 #endif 1628 #endif
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 chromeos::CrosSettings::Shutdown(); 1700 chromeos::CrosSettings::Shutdown();
1727 #endif 1701 #endif
1728 #endif 1702 #endif
1729 } 1703 }
1730 1704
1731 // Public members: 1705 // Public members:
1732 1706
1733 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { 1707 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) {
1734 chrome_extra_parts_.push_back(parts); 1708 chrome_extra_parts_.push_back(parts);
1735 } 1709 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698