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

Side by Side Diff: content/browser/browser_main_loop.cc

Issue 1815563004: Remove iOS ifdefs in src/content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 9 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
« no previous file with comments | « content/browser/browser_context.cc ('k') | content/browser/browser_main_runner.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "content/browser/browser_main_loop.h" 5 #include "content/browser/browser_main_loop.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 #include "mojo/edk/embedder/embedder.h" 80 #include "mojo/edk/embedder/embedder.h"
81 #include "mojo/shell/public/cpp/shell.h" 81 #include "mojo/shell/public/cpp/shell.h"
82 #include "net/base/network_change_notifier.h" 82 #include "net/base/network_change_notifier.h"
83 #include "net/socket/client_socket_factory.h" 83 #include "net/socket/client_socket_factory.h"
84 #include "net/ssl/ssl_config_service.h" 84 #include "net/ssl/ssl_config_service.h"
85 #include "skia/ext/event_tracer_impl.h" 85 #include "skia/ext/event_tracer_impl.h"
86 #include "skia/ext/skia_memory_dump_provider.h" 86 #include "skia/ext/skia_memory_dump_provider.h"
87 #include "sql/sql_memory_dump_provider.h" 87 #include "sql/sql_memory_dump_provider.h"
88 #include "ui/base/clipboard/clipboard.h" 88 #include "ui/base/clipboard/clipboard.h"
89 89
90 #if defined(USE_AURA) || (defined(OS_MACOSX) && !defined(OS_IOS)) 90 #if defined(USE_AURA) || defined(OS_MACOSX)
91 #include "content/browser/compositor/image_transport_factory.h" 91 #include "content/browser/compositor/image_transport_factory.h"
92 #endif 92 #endif
93 93
94 #if defined(USE_AURA) 94 #if defined(USE_AURA)
95 #include "content/public/browser/context_factory.h" 95 #include "content/public/browser/context_factory.h"
96 #include "ui/aura/env.h" 96 #include "ui/aura/env.h"
97 #endif 97 #endif
98 98
99 #if !defined(OS_IOS)
100 #include "content/browser/renderer_host/render_process_host_impl.h"
101 #endif
102
103 #if defined(OS_ANDROID) 99 #if defined(OS_ANDROID)
104 #include "base/android/jni_android.h" 100 #include "base/android/jni_android.h"
105 #include "components/tracing/graphics_memory_dump_provider_android.h" 101 #include "components/tracing/graphics_memory_dump_provider_android.h"
106 #include "content/browser/android/browser_startup_controller.h" 102 #include "content/browser/android/browser_startup_controller.h"
107 #include "content/browser/android/browser_surface_texture_manager.h" 103 #include "content/browser/android/browser_surface_texture_manager.h"
108 #include "content/browser/android/in_process_surface_texture_manager.h" 104 #include "content/browser/android/in_process_surface_texture_manager.h"
109 #include "content/browser/android/tracing_controller_android.h" 105 #include "content/browser/android/tracing_controller_android.h"
110 #include "content/browser/screen_orientation/screen_orientation_delegate_android .h" 106 #include "content/browser/screen_orientation/screen_orientation_delegate_android .h"
111 #include "content/public/browser/screen_orientation_provider.h" 107 #include "content/public/browser/screen_orientation_provider.h"
112 #include "ui/gl/gl_surface.h" 108 #include "ui/gl/gl_surface.h"
113 #endif 109 #endif
114 110
115 #if defined(OS_MACOSX) && !defined(OS_IOS) 111 #if defined(OS_MACOSX)
116 #include "base/memory/memory_pressure_monitor_mac.h" 112 #include "base/memory/memory_pressure_monitor_mac.h"
117 #include "content/browser/bootstrap_sandbox_manager_mac.h" 113 #include "content/browser/bootstrap_sandbox_manager_mac.h"
118 #include "content/browser/cocoa/system_hotkey_helper_mac.h" 114 #include "content/browser/cocoa/system_hotkey_helper_mac.h"
119 #include "content/browser/compositor/browser_compositor_view_mac.h" 115 #include "content/browser/compositor/browser_compositor_view_mac.h"
120 #include "content/browser/mach_broker_mac.h" 116 #include "content/browser/mach_broker_mac.h"
121 #include "content/browser/theme_helper_mac.h" 117 #include "content/browser/theme_helper_mac.h"
122 #include "ui/accelerated_widget_mac/window_resize_helper_mac.h" 118 #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
123 #endif 119 #endif
124 120
125 #if defined(USE_OZONE) 121 #if defined(USE_OZONE)
(...skipping 20 matching lines...) Expand all
146 #endif 142 #endif
147 143
148 #if defined(USE_GLIB) 144 #if defined(USE_GLIB)
149 #include <glib-object.h> 145 #include <glib-object.h>
150 #endif 146 #endif
151 147
152 #if defined(OS_WIN) 148 #if defined(OS_WIN)
153 #include "media/capture/system_message_window_win.h" 149 #include "media/capture/system_message_window_win.h"
154 #elif defined(OS_LINUX) && defined(USE_UDEV) 150 #elif defined(OS_LINUX) && defined(USE_UDEV)
155 #include "media/capture/device_monitor_udev.h" 151 #include "media/capture/device_monitor_udev.h"
156 #elif defined(OS_MACOSX) && !defined(OS_IOS) 152 #elif defined(OS_MACOSX)
157 #include "media/capture/device_monitor_mac.h" 153 #include "media/capture/device_monitor_mac.h"
158 #endif 154 #endif
159 155
160 #if defined(OS_POSIX) && !defined(OS_MACOSX) 156 #if defined(OS_POSIX) && !defined(OS_MACOSX)
161 #include "content/browser/renderer_host/render_sandbox_host_linux.h" 157 #include "content/browser/renderer_host/render_sandbox_host_linux.h"
162 #include "content/browser/zygote_host/zygote_host_impl_linux.h" 158 #include "content/browser/zygote_host/zygote_host_impl_linux.h"
163 #include "sandbox/linux/suid/client/setuid_sandbox_host.h" 159 #include "sandbox/linux/suid/client/setuid_sandbox_host.h"
164 160
165 #if !defined(OS_ANDROID) 161 #if !defined(OS_ANDROID)
166 #include "content/public/browser/zygote_handle_linux.h" 162 #include "content/public/browser/zygote_handle_linux.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 ALLOW_UNUSED_LOCAL(inhibit_comdat); 330 ALLOW_UNUSED_LOCAL(inhibit_comdat);
335 thread.reset(); 331 thread.reset();
336 } 332 }
337 333
338 NOINLINE void ResetThread_IO(scoped_ptr<BrowserProcessSubThread> thread) { 334 NOINLINE void ResetThread_IO(scoped_ptr<BrowserProcessSubThread> thread) {
339 volatile int inhibit_comdat = __LINE__; 335 volatile int inhibit_comdat = __LINE__;
340 ALLOW_UNUSED_LOCAL(inhibit_comdat); 336 ALLOW_UNUSED_LOCAL(inhibit_comdat);
341 thread.reset(); 337 thread.reset();
342 } 338 }
343 339
344 #if !defined(OS_IOS)
345 NOINLINE void ResetThread_IndexedDb(scoped_ptr<base::Thread> thread) { 340 NOINLINE void ResetThread_IndexedDb(scoped_ptr<base::Thread> thread) {
346 volatile int inhibit_comdat = __LINE__; 341 volatile int inhibit_comdat = __LINE__;
347 ALLOW_UNUSED_LOCAL(inhibit_comdat); 342 ALLOW_UNUSED_LOCAL(inhibit_comdat);
348 thread.reset(); 343 thread.reset();
349 } 344 }
350 #endif
351 345
352 MSVC_POP_WARNING() 346 MSVC_POP_WARNING()
353 MSVC_ENABLE_OPTIMIZE(); 347 MSVC_ENABLE_OPTIMIZE();
354 348
355 #if defined(OS_WIN) 349 #if defined(OS_WIN)
356 // Creates a memory pressure monitor using automatic thresholds, or those 350 // Creates a memory pressure monitor using automatic thresholds, or those
357 // specified on the command-line. Ownership is passed to the caller. 351 // specified on the command-line. Ownership is passed to the caller.
358 base::win::MemoryPressureMonitor* CreateWinMemoryPressureMonitor( 352 base::win::MemoryPressureMonitor* CreateWinMemoryPressureMonitor(
359 const base::CommandLine& parsed_command_line) { 353 const base::CommandLine& parsed_command_line) {
360 std::vector<std::string> thresholds = base::SplitString( 354 std::vector<std::string> thresholds = base::SplitString(
(...skipping 24 matching lines...) Expand all
385 379
386 // For measuring memory usage after each task. Behind a command line flag. 380 // For measuring memory usage after each task. Behind a command line flag.
387 class BrowserMainLoop::MemoryObserver : public base::MessageLoop::TaskObserver { 381 class BrowserMainLoop::MemoryObserver : public base::MessageLoop::TaskObserver {
388 public: 382 public:
389 MemoryObserver() {} 383 MemoryObserver() {}
390 ~MemoryObserver() override {} 384 ~MemoryObserver() override {}
391 385
392 void WillProcessTask(const base::PendingTask& pending_task) override {} 386 void WillProcessTask(const base::PendingTask& pending_task) override {}
393 387
394 void DidProcessTask(const base::PendingTask& pending_task) override { 388 void DidProcessTask(const base::PendingTask& pending_task) override {
395 #if !defined(OS_IOS) // No ProcessMetrics on IOS.
396 scoped_ptr<base::ProcessMetrics> process_metrics( 389 scoped_ptr<base::ProcessMetrics> process_metrics(
397 base::ProcessMetrics::CreateCurrentProcessMetrics()); 390 base::ProcessMetrics::CreateCurrentProcessMetrics());
398 size_t private_bytes; 391 size_t private_bytes;
399 process_metrics->GetMemoryBytes(&private_bytes, NULL); 392 process_metrics->GetMemoryBytes(&private_bytes, NULL);
400 LOCAL_HISTOGRAM_MEMORY_KB("Memory.BrowserUsed", private_bytes >> 10); 393 LOCAL_HISTOGRAM_MEMORY_KB("Memory.BrowserUsed", private_bytes >> 10);
401 #endif
402 } 394 }
403 private: 395 private:
404 DISALLOW_COPY_AND_ASSIGN(MemoryObserver); 396 DISALLOW_COPY_AND_ASSIGN(MemoryObserver);
405 }; 397 };
406 398
407 399
408 // BrowserMainLoop construction / destruction ============================= 400 // BrowserMainLoop construction / destruction =============================
409 401
410 BrowserMainLoop* BrowserMainLoop::GetInstance() { 402 BrowserMainLoop* BrowserMainLoop::GetInstance() {
411 DCHECK_CURRENTLY_ON(BrowserThread::UI); 403 DCHECK_CURRENTLY_ON(BrowserThread::UI);
(...skipping 10 matching lines...) Expand all
422 is_tracing_startup_for_duration_( 414 is_tracing_startup_for_duration_(
423 parameters.command_line.HasSwitch(switches::kTraceStartup) || 415 parameters.command_line.HasSwitch(switches::kTraceStartup) ||
424 (tracing::TraceConfigFile::GetInstance()->IsEnabled() && 416 (tracing::TraceConfigFile::GetInstance()->IsEnabled() &&
425 tracing::TraceConfigFile::GetInstance()->GetStartupDuration() > 0)) { 417 tracing::TraceConfigFile::GetInstance()->GetStartupDuration() > 0)) {
426 DCHECK(!g_current_browser_main_loop); 418 DCHECK(!g_current_browser_main_loop);
427 g_current_browser_main_loop = this; 419 g_current_browser_main_loop = this;
428 } 420 }
429 421
430 BrowserMainLoop::~BrowserMainLoop() { 422 BrowserMainLoop::~BrowserMainLoop() {
431 DCHECK_EQ(this, g_current_browser_main_loop); 423 DCHECK_EQ(this, g_current_browser_main_loop);
432 #if !defined(OS_IOS)
433 ui::Clipboard::DestroyClipboardForCurrentThread(); 424 ui::Clipboard::DestroyClipboardForCurrentThread();
434 #endif // !defined(OS_IOS)
435 g_current_browser_main_loop = NULL; 425 g_current_browser_main_loop = NULL;
436 } 426 }
437 427
438 void BrowserMainLoop::Init() { 428 void BrowserMainLoop::Init() {
439 TRACE_EVENT0("startup", "BrowserMainLoop::Init"); 429 TRACE_EVENT0("startup", "BrowserMainLoop::Init");
440 TRACK_SCOPED_REGION("Startup", "BrowserMainLoop::Init"); 430 TRACK_SCOPED_REGION("Startup", "BrowserMainLoop::Init");
441 431
442 parts_.reset( 432 parts_.reset(
443 GetContentClient()->browser()->CreateBrowserMainParts(parameters_)); 433 GetContentClient()->browser()->CreateBrowserMainParts(parameters_));
444 } 434 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 489
500 #if defined(OS_WIN) 490 #if defined(OS_WIN)
501 net::EnsureWinsockInit(); 491 net::EnsureWinsockInit();
502 #endif 492 #endif
503 493
504 #if defined(USE_NSS_CERTS) || !defined(USE_OPENSSL) 494 #if defined(USE_NSS_CERTS) || !defined(USE_OPENSSL)
505 // We want to be sure to init NSPR on the main thread. 495 // We want to be sure to init NSPR on the main thread.
506 crypto::EnsureNSPRInit(); 496 crypto::EnsureNSPRInit();
507 #endif 497 #endif
508 498
509 #if !defined(OS_IOS)
510 if (parsed_command_line_.HasSwitch(switches::kRendererProcessLimit)) { 499 if (parsed_command_line_.HasSwitch(switches::kRendererProcessLimit)) {
511 std::string limit_string = parsed_command_line_.GetSwitchValueASCII( 500 std::string limit_string = parsed_command_line_.GetSwitchValueASCII(
512 switches::kRendererProcessLimit); 501 switches::kRendererProcessLimit);
513 size_t process_limit; 502 size_t process_limit;
514 if (base::StringToSizeT(limit_string, &process_limit)) { 503 if (base::StringToSizeT(limit_string, &process_limit)) {
515 RenderProcessHost::SetMaxRendererProcessCount(process_limit); 504 RenderProcessHost::SetMaxRendererProcessCount(process_limit);
516 } 505 }
517 } 506 }
518 #endif // !defined(OS_IOS)
519 507
520 if (parts_) 508 if (parts_)
521 parts_->PostEarlyInitialization(); 509 parts_->PostEarlyInitialization();
522 } 510 }
523 511
524 void BrowserMainLoop::PreMainMessageLoopStart() { 512 void BrowserMainLoop::PreMainMessageLoopStart() {
525 if (parts_) { 513 if (parts_) {
526 TRACE_EVENT0("startup", 514 TRACE_EVENT0("startup",
527 "BrowserMainLoop::MainMessageLoopStart:PreMainMessageLoopStart"); 515 "BrowserMainLoop::MainMessageLoopStart:PreMainMessageLoopStart");
528 parts_->PreMainMessageLoopStart(); 516 parts_->PreMainMessageLoopStart();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 new base::PowerMonitor(std::move(power_monitor_source))); 553 new base::PowerMonitor(std::move(power_monitor_source)));
566 } 554 }
567 { 555 {
568 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:HighResTimerManager"); 556 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:HighResTimerManager");
569 hi_res_timer_manager_.reset(new base::HighResolutionTimerManager); 557 hi_res_timer_manager_.reset(new base::HighResolutionTimerManager);
570 } 558 }
571 { 559 {
572 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:NetworkChangeNotifier"); 560 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:NetworkChangeNotifier");
573 network_change_notifier_.reset(net::NetworkChangeNotifier::Create()); 561 network_change_notifier_.reset(net::NetworkChangeNotifier::Create());
574 } 562 }
575
576 #if !defined(OS_IOS)
577 { 563 {
578 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MediaFeatures"); 564 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MediaFeatures");
579 media::InitializeMediaLibrary(); 565 media::InitializeMediaLibrary();
580 } 566 }
581 { 567 {
582 TRACE_EVENT0("startup", 568 TRACE_EVENT0("startup",
583 "BrowserMainLoop::Subsystem:ContentWebUIController"); 569 "BrowserMainLoop::Subsystem:ContentWebUIController");
584 WebUIControllerFactory::RegisterFactory( 570 WebUIControllerFactory::RegisterFactory(
585 ContentWebUIControllerFactory::GetInstance()); 571 ContentWebUIControllerFactory::GetInstance());
586 } 572 }
587 573
588 { 574 {
589 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:OnlineStateObserver"); 575 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:OnlineStateObserver");
590 online_state_observer_.reset(new BrowserOnlineStateObserver); 576 online_state_observer_.reset(new BrowserOnlineStateObserver);
591 } 577 }
592 578
593 { 579 {
594 system_stats_monitor_.reset( 580 system_stats_monitor_.reset(
595 new base::trace_event::TraceEventSystemStatsMonitor( 581 new base::trace_event::TraceEventSystemStatsMonitor(
596 base::ThreadTaskRunnerHandle::Get())); 582 base::ThreadTaskRunnerHandle::Get()));
597 } 583 }
598 #endif // !defined(OS_IOS)
599 584
600 #if defined(OS_WIN) 585 #if defined(OS_WIN)
601 if (base::win::GetVersion() >= base::win::VERSION_WIN8) 586 if (base::win::GetVersion() >= base::win::VERSION_WIN8)
602 screen_orientation_delegate_.reset(new ScreenOrientationDelegateWin()); 587 screen_orientation_delegate_.reset(new ScreenOrientationDelegateWin());
603 #endif 588 #endif
604 589
605 // TODO(boliu): kSingleProcess check is a temporary workaround for 590 // TODO(boliu): kSingleProcess check is a temporary workaround for
606 // in-process Android WebView. crbug.com/503724 tracks proper fix. 591 // in-process Android WebView. crbug.com/503724 tracks proper fix.
607 if (!parsed_command_line_.HasSwitch(switches::kSingleProcess)) { 592 if (!parsed_command_line_.HasSwitch(switches::kSingleProcess)) {
608 base::DiscardableMemoryAllocator::SetInstance( 593 base::DiscardableMemoryAllocator::SetInstance(
(...skipping 16 matching lines...) Expand all
625 } else if (parsed_command_line_.HasSwitch(switches::kTraceToConsole)) { 610 } else if (parsed_command_line_.HasSwitch(switches::kTraceToConsole)) {
626 TracingController::GetInstance()->StartTracing( 611 TracingController::GetInstance()->StartTracing(
627 tracing::GetConfigForTraceToConsole(), 612 tracing::GetConfigForTraceToConsole(),
628 TracingController::StartTracingDoneCallback()); 613 TracingController::StartTracingDoneCallback());
629 } else if (tracing::TraceConfigFile::GetInstance()->IsEnabled()) { 614 } else if (tracing::TraceConfigFile::GetInstance()->IsEnabled()) {
630 // This checks kTraceConfigFile switch. 615 // This checks kTraceConfigFile switch.
631 TracingController::GetInstance()->StartTracing( 616 TracingController::GetInstance()->StartTracing(
632 tracing::TraceConfigFile::GetInstance()->GetTraceConfig(), 617 tracing::TraceConfigFile::GetInstance()->GetTraceConfig(),
633 TracingController::StartTracingDoneCallback()); 618 TracingController::StartTracingDoneCallback());
634 } 619 }
635 #if !defined(OS_IOS)
636 // Start tracing to a file for certain duration if needed. Only do this after 620 // Start tracing to a file for certain duration if needed. Only do this after
637 // starting the main message loop to avoid calling 621 // starting the main message loop to avoid calling
638 // MessagePumpForUI::ScheduleWork() before MessagePumpForUI::Start() as it 622 // MessagePumpForUI::ScheduleWork() before MessagePumpForUI::Start() as it
639 // will crash the browser. 623 // will crash the browser.
640 if (is_tracing_startup_for_duration_) { 624 if (is_tracing_startup_for_duration_) {
641 TRACE_EVENT0("startup", "BrowserMainLoop::InitStartupTracingForDuration"); 625 TRACE_EVENT0("startup", "BrowserMainLoop::InitStartupTracingForDuration");
642 InitStartupTracingForDuration(parsed_command_line_); 626 InitStartupTracingForDuration(parsed_command_line_);
643 } 627 }
644 #endif // !defined(OS_IOS)
645 628
646 #if defined(OS_ANDROID) 629 #if defined(OS_ANDROID)
647 { 630 {
648 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:SurfaceTextureManager"); 631 TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:SurfaceTextureManager");
649 if (parsed_command_line_.HasSwitch(switches::kSingleProcess)) { 632 if (parsed_command_line_.HasSwitch(switches::kSingleProcess)) {
650 gpu::SurfaceTextureManager::SetInstance( 633 gpu::SurfaceTextureManager::SetInstance(
651 InProcessSurfaceTextureManager::GetInstance()); 634 InProcessSurfaceTextureManager::GetInstance());
652 } else { 635 } else {
653 gpu::SurfaceTextureManager::SetInstance( 636 gpu::SurfaceTextureManager::SetInstance(
654 BrowserSurfaceTextureManager::GetInstance()); 637 BrowserSurfaceTextureManager::GetInstance());
655 } 638 }
656 } 639 }
657 640
658 if (!parsed_command_line_.HasSwitch( 641 if (!parsed_command_line_.HasSwitch(
659 switches::kDisableScreenOrientationLock)) { 642 switches::kDisableScreenOrientationLock)) {
660 TRACE_EVENT0("startup", 643 TRACE_EVENT0("startup",
661 "BrowserMainLoop::Subsystem:ScreenOrientationProvider"); 644 "BrowserMainLoop::Subsystem:ScreenOrientationProvider");
662 screen_orientation_delegate_.reset( 645 screen_orientation_delegate_.reset(
663 new ScreenOrientationDelegateAndroid()); 646 new ScreenOrientationDelegateAndroid());
664 ScreenOrientationProvider::SetDelegate(screen_orientation_delegate_.get()); 647 ScreenOrientationProvider::SetDelegate(screen_orientation_delegate_.get());
665 } 648 }
666 #endif 649 #endif
667 650
668 #if defined(OS_MACOSX) && !defined(OS_IOS) 651 #if defined(OS_MACOSX)
669 if (BootstrapSandboxManager::ShouldEnable()) { 652 if (BootstrapSandboxManager::ShouldEnable()) {
670 TRACE_EVENT0("startup", 653 TRACE_EVENT0("startup",
671 "BrowserMainLoop::Subsystem:BootstrapSandbox"); 654 "BrowserMainLoop::Subsystem:BootstrapSandbox");
672 CHECK(BootstrapSandboxManager::GetInstance()); 655 CHECK(BootstrapSandboxManager::GetInstance());
673 } 656 }
674 #endif 657 #endif
675 658
676 #if defined(USE_OZONE) 659 #if defined(USE_OZONE)
677 client_native_pixmap_factory_ = ui::ClientNativePixmapFactory::Create(); 660 client_native_pixmap_factory_ = ui::ClientNativePixmapFactory::Create();
678 ui::ClientNativePixmapFactory::SetInstance( 661 ui::ClientNativePixmapFactory::SetInstance(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 // was already set up by the embedder. 702 // was already set up by the embedder.
720 base::FeatureList::InitializeInstance(); 703 base::FeatureList::InitializeInstance();
721 704
722 // TODO(chrisha): Abstract away this construction mess to a helper function, 705 // TODO(chrisha): Abstract away this construction mess to a helper function,
723 // once MemoryPressureMonitor is made a concrete class. 706 // once MemoryPressureMonitor is made a concrete class.
724 #if defined(OS_CHROMEOS) 707 #if defined(OS_CHROMEOS)
725 if (chromeos::switches::MemoryPressureHandlingEnabled()) { 708 if (chromeos::switches::MemoryPressureHandlingEnabled()) {
726 memory_pressure_monitor_.reset(new base::chromeos::MemoryPressureMonitor( 709 memory_pressure_monitor_.reset(new base::chromeos::MemoryPressureMonitor(
727 chromeos::switches::GetMemoryPressureThresholds())); 710 chromeos::switches::GetMemoryPressureThresholds()));
728 } 711 }
729 #elif defined(OS_MACOSX) && !defined(OS_IOS) 712 #elif defined(OS_MACOSX)
730 memory_pressure_monitor_.reset(new base::mac::MemoryPressureMonitor()); 713 memory_pressure_monitor_.reset(new base::mac::MemoryPressureMonitor());
731 #elif defined(OS_WIN) 714 #elif defined(OS_WIN)
732 memory_pressure_monitor_.reset(CreateWinMemoryPressureMonitor( 715 memory_pressure_monitor_.reset(CreateWinMemoryPressureMonitor(
733 parsed_command_line_)); 716 parsed_command_line_));
734 #endif 717 #endif
735 718
736 #if defined(ENABLE_PLUGINS) 719 #if defined(ENABLE_PLUGINS)
737 // Prior to any processing happening on the IO thread, we create the 720 // Prior to any processing happening on the IO thread, we create the
738 // plugin service as it is predominantly used from the IO thread, 721 // plugin service as it is predominantly used from the IO thread,
739 // but must be created on the main thread. The service ctor is 722 // but must be created on the main thread. The service ctor is
740 // inexpensive and does not invoke the io_thread() accessor. 723 // inexpensive and does not invoke the io_thread() accessor.
741 { 724 {
742 TRACE_EVENT0("startup", "BrowserMainLoop::CreateThreads:PluginService"); 725 TRACE_EVENT0("startup", "BrowserMainLoop::CreateThreads:PluginService");
743 PluginService::GetInstance()->Init(); 726 PluginService::GetInstance()->Init();
744 } 727 }
745 #endif 728 #endif
746 729
747 #if defined(OS_MACOSX) && !defined(OS_IOS) 730 #if defined(OS_MACOSX)
748 // The WindowResizeHelper allows the UI thread to wait on specific renderer 731 // The WindowResizeHelper allows the UI thread to wait on specific renderer
749 // and GPU messages from the IO thread. Initializing it before the IO thread 732 // and GPU messages from the IO thread. Initializing it before the IO thread
750 // starts ensures the affected IO thread messages always have somewhere to go. 733 // starts ensures the affected IO thread messages always have somewhere to go.
751 ui::WindowResizeHelperMac::Get()->Init(base::ThreadTaskRunnerHandle::Get()); 734 ui::WindowResizeHelperMac::Get()->Init(base::ThreadTaskRunnerHandle::Get());
752 #endif 735 #endif
753 736
754 // 1) Need to initialize in-process GpuDataManager before creating threads. 737 // 1) Need to initialize in-process GpuDataManager before creating threads.
755 // It's unsafe to append the gpu command line switches to the global 738 // It's unsafe to append the gpu command line switches to the global
756 // CommandLine::ForCurrentProcess object after threads are created. 739 // CommandLine::ForCurrentProcess object after threads are created.
757 // 2) Must be after parts_->PreCreateThreads to pick up chrome://flags. 740 // 2) Must be after parts_->PreCreateThreads to pick up chrome://flags.
758 GpuDataManagerImpl::GetInstance()->Initialize(); 741 GpuDataManagerImpl::GetInstance()->Initialize();
759 742
760 #if !defined(OS_IOS) && (!defined(GOOGLE_CHROME_BUILD) || defined(OS_ANDROID)) 743 #if !defined(GOOGLE_CHROME_BUILD) || defined(OS_ANDROID)
761 // Single-process is an unsupported and not fully tested mode, so 744 // Single-process is an unsupported and not fully tested mode, so
762 // don't enable it for official Chrome builds (except on Android). 745 // don't enable it for official Chrome builds (except on Android).
763 if (parsed_command_line_.HasSwitch(switches::kSingleProcess)) 746 if (parsed_command_line_.HasSwitch(switches::kSingleProcess))
764 RenderProcessHost::SetRunRendererInProcess(true); 747 RenderProcessHost::SetRunRendererInProcess(true);
765 #endif 748 #endif
766 749
767 return result_code_; 750 return result_code_;
768 } 751 }
769 752
770 void BrowserMainLoop::CreateStartupTasks() { 753 void BrowserMainLoop::CreateStartupTasks() {
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 // need to be able to perform IO. 960 // need to be able to perform IO.
978 base::ThreadRestrictions::SetIOAllowed(true); 961 base::ThreadRestrictions::SetIOAllowed(true);
979 BrowserThread::PostTask( 962 BrowserThread::PostTask(
980 BrowserThread::IO, FROM_HERE, 963 BrowserThread::IO, FROM_HERE,
981 base::Bind(base::IgnoreResult(&base::ThreadRestrictions::SetIOAllowed), 964 base::Bind(base::IgnoreResult(&base::ThreadRestrictions::SetIOAllowed),
982 true)); 965 true));
983 966
984 if (IsRunningInMojoShell()) 967 if (IsRunningInMojoShell())
985 MojoShellConnection::Destroy(); 968 MojoShellConnection::Destroy();
986 969
987 #if !defined(OS_IOS)
988 if (RenderProcessHost::run_renderer_in_process()) 970 if (RenderProcessHost::run_renderer_in_process())
989 RenderProcessHostImpl::ShutDownInProcessRenderer(); 971 RenderProcessHostImpl::ShutDownInProcessRenderer();
990 #endif
991 972
992 if (parts_) { 973 if (parts_) {
993 TRACE_EVENT0("shutdown", 974 TRACE_EVENT0("shutdown",
994 "BrowserMainLoop::Subsystem:PostMainMessageLoopRun"); 975 "BrowserMainLoop::Subsystem:PostMainMessageLoopRun");
995 parts_->PostMainMessageLoopRun(); 976 parts_->PostMainMessageLoopRun();
996 } 977 }
997 978
998 #if defined(USE_AURA) 979 #if defined(USE_AURA)
999 aura::Env::DeleteInstance(); 980 aura::Env::DeleteInstance();
1000 #endif 981 #endif
1001 982
1002 system_stats_monitor_.reset(); 983 system_stats_monitor_.reset();
1003 984
1004 #if !defined(OS_IOS)
1005 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to 985 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to
1006 // delete related objects on the GPU thread. This must be done before 986 // delete related objects on the GPU thread. This must be done before
1007 // stopping the GPU thread. The GPU thread will close IPC channels to renderer 987 // stopping the GPU thread. The GPU thread will close IPC channels to renderer
1008 // processes so this has to happen before stopping the IO thread. 988 // processes so this has to happen before stopping the IO thread.
1009 { 989 {
1010 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GPUProcessHostShim"); 990 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GPUProcessHostShim");
1011 GpuProcessHostUIShim::DestroyAll(); 991 GpuProcessHostUIShim::DestroyAll();
1012 } 992 }
1013 // Cancel pending requests and prevent new requests. 993 // Cancel pending requests and prevent new requests.
1014 if (resource_dispatcher_host_) { 994 if (resource_dispatcher_host_) {
(...skipping 24 matching lines...) Expand all
1039 // The device monitors are using |system_monitor_| as dependency, so delete 1019 // The device monitors are using |system_monitor_| as dependency, so delete
1040 // them before |system_monitor_| goes away. 1020 // them before |system_monitor_| goes away.
1041 // On Mac and windows, the monitor needs to be destroyed on the same thread 1021 // On Mac and windows, the monitor needs to be destroyed on the same thread
1042 // as they were created. On Linux, the monitor will be deleted when IO thread 1022 // as they were created. On Linux, the monitor will be deleted when IO thread
1043 // goes away. 1023 // goes away.
1044 #if defined(OS_WIN) 1024 #if defined(OS_WIN)
1045 system_message_window_.reset(); 1025 system_message_window_.reset();
1046 #elif defined(OS_MACOSX) 1026 #elif defined(OS_MACOSX)
1047 device_monitor_mac_.reset(); 1027 device_monitor_mac_.reset();
1048 #endif 1028 #endif
1049 #endif // !defined(OS_IOS)
1050 1029
1051 // Shutdown Mojo shell and IPC. 1030 // Shutdown Mojo shell and IPC.
1052 #if !defined(OS_IOS)
1053 mojo_shell_context_.reset(); 1031 mojo_shell_context_.reset();
1054 mojo_ipc_support_.reset(); 1032 mojo_ipc_support_.reset();
1055 #endif
1056 1033
1057 // Must be size_t so we can subtract from it. 1034 // Must be size_t so we can subtract from it.
1058 for (size_t thread_id = BrowserThread::ID_COUNT - 1; 1035 for (size_t thread_id = BrowserThread::ID_COUNT - 1;
1059 thread_id >= (BrowserThread::UI + 1); 1036 thread_id >= (BrowserThread::UI + 1);
1060 --thread_id) { 1037 --thread_id) {
1061 // Find the thread object we want to stop. Looping over all valid 1038 // Find the thread object we want to stop. Looping over all valid
1062 // BrowserThread IDs and DCHECKing on a missing case in the switch 1039 // BrowserThread IDs and DCHECKing on a missing case in the switch
1063 // statement helps avoid a mismatch between this code and the 1040 // statement helps avoid a mismatch between this code and the
1064 // BrowserThread::ID enumeration. 1041 // BrowserThread::ID enumeration.
1065 // 1042 //
(...skipping 10 matching lines...) Expand all
1076 // 1053 //
1077 // - (Not sure why DB stops last.) 1054 // - (Not sure why DB stops last.)
1078 switch (thread_id) { 1055 switch (thread_id) {
1079 case BrowserThread::DB: { 1056 case BrowserThread::DB: {
1080 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:DBThread"); 1057 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:DBThread");
1081 ResetThread_DB(std::move(db_thread_)); 1058 ResetThread_DB(std::move(db_thread_));
1082 break; 1059 break;
1083 } 1060 }
1084 case BrowserThread::FILE: { 1061 case BrowserThread::FILE: {
1085 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:FileThread"); 1062 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:FileThread");
1086 #if !defined(OS_IOS)
1087 // Clean up state that lives on or uses the file_thread_ before 1063 // Clean up state that lives on or uses the file_thread_ before
1088 // it goes away. 1064 // it goes away.
1089 if (resource_dispatcher_host_) 1065 if (resource_dispatcher_host_)
1090 resource_dispatcher_host_.get()->save_file_manager()->Shutdown(); 1066 resource_dispatcher_host_.get()->save_file_manager()->Shutdown();
1091 #endif // !defined(OS_IOS)
1092 ResetThread_FILE(std::move(file_thread_)); 1067 ResetThread_FILE(std::move(file_thread_));
1093 break; 1068 break;
1094 } 1069 }
1095 case BrowserThread::FILE_USER_BLOCKING: { 1070 case BrowserThread::FILE_USER_BLOCKING: {
1096 TRACE_EVENT0("shutdown", 1071 TRACE_EVENT0("shutdown",
1097 "BrowserMainLoop::Subsystem:FileUserBlockingThread"); 1072 "BrowserMainLoop::Subsystem:FileUserBlockingThread");
1098 ResetThread_FILE_USER_BLOCKING(std::move(file_user_blocking_thread_)); 1073 ResetThread_FILE_USER_BLOCKING(std::move(file_user_blocking_thread_));
1099 break; 1074 break;
1100 } 1075 }
1101 case BrowserThread::PROCESS_LAUNCHER: { 1076 case BrowserThread::PROCESS_LAUNCHER: {
(...skipping 11 matching lines...) Expand all
1113 ResetThread_IO(std::move(io_thread_)); 1088 ResetThread_IO(std::move(io_thread_));
1114 break; 1089 break;
1115 } 1090 }
1116 case BrowserThread::UI: 1091 case BrowserThread::UI:
1117 case BrowserThread::ID_COUNT: 1092 case BrowserThread::ID_COUNT:
1118 default: 1093 default:
1119 NOTREACHED(); 1094 NOTREACHED();
1120 break; 1095 break;
1121 } 1096 }
1122 } 1097 }
1123
1124 #if !defined(OS_IOS)
1125 { 1098 {
1126 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:IndexedDBThread"); 1099 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:IndexedDBThread");
1127 ResetThread_IndexedDb(std::move(indexed_db_thread_)); 1100 ResetThread_IndexedDb(std::move(indexed_db_thread_));
1128 } 1101 }
1129 #endif
1130 1102
1131 // Close the blocking I/O pool after the other threads. Other threads such 1103 // Close the blocking I/O pool after the other threads. Other threads such
1132 // as the I/O thread may need to schedule work like closing files or flushing 1104 // as the I/O thread may need to schedule work like closing files or flushing
1133 // data during shutdown, so the blocking pool needs to be available. There 1105 // data during shutdown, so the blocking pool needs to be available. There
1134 // may also be slow operations pending that will blcok shutdown, so closing 1106 // may also be slow operations pending that will blcok shutdown, so closing
1135 // it here (which will block until required operations are complete) gives 1107 // it here (which will block until required operations are complete) gives
1136 // more head start for those operations to finish. 1108 // more head start for those operations to finish.
1137 { 1109 {
1138 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:ThreadPool"); 1110 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:ThreadPool");
1139 BrowserThreadImpl::ShutdownThreadPool(); 1111 BrowserThreadImpl::ShutdownThreadPool();
1140 } 1112 }
1141
1142 #if !defined(OS_IOS)
1143 // Must happen after the IO thread is shutdown since this may be accessed from 1113 // Must happen after the IO thread is shutdown since this may be accessed from
1144 // it. 1114 // it.
1145 { 1115 {
1146 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GPUChannelFactory"); 1116 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GPUChannelFactory");
1147 if (BrowserGpuChannelHostFactory::instance()) 1117 if (BrowserGpuChannelHostFactory::instance())
1148 BrowserGpuChannelHostFactory::Terminate(); 1118 BrowserGpuChannelHostFactory::Terminate();
1149 } 1119 }
1150 1120
1151 // Must happen after the I/O thread is shutdown since this class lives on the 1121 // Must happen after the I/O thread is shutdown since this class lives on the
1152 // I/O thread and isn't threadsafe. 1122 // I/O thread and isn't threadsafe.
1153 { 1123 {
1154 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GamepadService"); 1124 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GamepadService");
1155 GamepadService::GetInstance()->Terminate(); 1125 GamepadService::GetInstance()->Terminate();
1156 } 1126 }
1157 { 1127 {
1158 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:SensorService"); 1128 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:SensorService");
1159 DeviceInertialSensorService::GetInstance()->Shutdown(); 1129 DeviceInertialSensorService::GetInstance()->Shutdown();
1160 } 1130 }
1161 #if !defined(OS_ANDROID) 1131 #if !defined(OS_ANDROID)
1162 { 1132 {
1163 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:BatteryStatusService"); 1133 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:BatteryStatusService");
1164 device::BatteryStatusService::GetInstance()->Shutdown(); 1134 device::BatteryStatusService::GetInstance()->Shutdown();
1165 } 1135 }
1166 #endif 1136 #endif
1167 { 1137 {
1168 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:DeleteDataSources"); 1138 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:DeleteDataSources");
1169 URLDataManager::DeleteDataSources(); 1139 URLDataManager::DeleteDataSources();
1170 } 1140 }
1171 #endif // !defined(OS_IOS)
1172 1141
1173 if (parts_) { 1142 if (parts_) {
1174 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:PostDestroyThreads"); 1143 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:PostDestroyThreads");
1175 parts_->PostDestroyThreads(); 1144 parts_->PostDestroyThreads();
1176 } 1145 }
1177 } 1146 }
1178 1147
1179 void BrowserMainLoop::StopStartupTracingTimer() { 1148 void BrowserMainLoop::StopStartupTracingTimer() {
1180 startup_trace_timer_.Stop(); 1149 startup_trace_timer_.Stop();
1181 } 1150 }
1182 1151
1183 void BrowserMainLoop::InitializeMainThread() { 1152 void BrowserMainLoop::InitializeMainThread() {
1184 TRACE_EVENT0("startup", "BrowserMainLoop::InitializeMainThread"); 1153 TRACE_EVENT0("startup", "BrowserMainLoop::InitializeMainThread");
1185 static const char kThreadName[] = "CrBrowserMain"; 1154 static const char kThreadName[] = "CrBrowserMain";
1186 base::PlatformThread::SetName(kThreadName); 1155 base::PlatformThread::SetName(kThreadName);
1187 if (main_message_loop_) 1156 if (main_message_loop_)
1188 main_message_loop_->set_thread_name(kThreadName); 1157 main_message_loop_->set_thread_name(kThreadName);
1189 1158
1190 // Register the main thread by instantiating it, but don't call any methods. 1159 // Register the main thread by instantiating it, but don't call any methods.
1191 main_thread_.reset( 1160 main_thread_.reset(
1192 new BrowserThreadImpl(BrowserThread::UI, base::MessageLoop::current())); 1161 new BrowserThreadImpl(BrowserThread::UI, base::MessageLoop::current()));
1193 } 1162 }
1194 1163
1195 int BrowserMainLoop::BrowserThreadsStarted() { 1164 int BrowserMainLoop::BrowserThreadsStarted() {
1196 TRACE_EVENT0("startup", "BrowserMainLoop::BrowserThreadsStarted"); 1165 TRACE_EVENT0("startup", "BrowserMainLoop::BrowserThreadsStarted");
1197 1166
1198 #if !defined(OS_IOS)
1199 // Bring up Mojo IPC and shell as early as possible. 1167 // Bring up Mojo IPC and shell as early as possible.
1200 mojo_ipc_support_.reset(new IPC::ScopedIPCSupport( 1168 mojo_ipc_support_.reset(new IPC::ScopedIPCSupport(
1201 BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO) 1169 BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO)
1202 ->task_runner())); 1170 ->task_runner()));
1203 mojo_shell_context_.reset(new MojoShellContext); 1171 mojo_shell_context_.reset(new MojoShellContext);
1204 #if defined(OS_MACOSX) 1172 #if defined(OS_MACOSX)
1205 mojo::edk::SetMachPortProvider(MachBroker::GetInstance()); 1173 mojo::edk::SetMachPortProvider(MachBroker::GetInstance());
1206 #endif // defined(OS_MACOSX) 1174 #endif // defined(OS_MACOSX)
1207 #endif // !defined(OS_IOS)
1208 1175
1209 #if !defined(OS_IOS)
1210 indexed_db_thread_.reset(new base::Thread("IndexedDB")); 1176 indexed_db_thread_.reset(new base::Thread("IndexedDB"));
1211 indexed_db_thread_->Start(); 1177 indexed_db_thread_->Start();
1212 #endif
1213 1178
1214 #if !defined(OS_IOS)
1215 HistogramSynchronizer::GetInstance(); 1179 HistogramSynchronizer::GetInstance();
1216 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) 1180 #if defined(OS_ANDROID) || defined(OS_CHROMEOS)
1217 // Up the priority of the UI thread. 1181 // Up the priority of the UI thread.
1218 base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); 1182 base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY);
1219 #endif 1183 #endif
1220 1184
1221 bool always_uses_gpu = true; 1185 bool always_uses_gpu = true;
1222 bool established_gpu_channel = false; 1186 bool established_gpu_channel = false;
1223 #if defined(OS_ANDROID) 1187 #if defined(OS_ANDROID)
1224 // TODO(crbug.com/439322): This should be set to |true|. 1188 // TODO(crbug.com/439322): This should be set to |true|.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 base::Bind(base::IgnoreResult(&GpuProcessHost::Get), 1305 base::Bind(base::IgnoreResult(&GpuProcessHost::Get),
1342 GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, 1306 GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
1343 CAUSE_FOR_GPU_LAUNCH_BROWSER_STARTUP)); 1307 CAUSE_FOR_GPU_LAUNCH_BROWSER_STARTUP));
1344 } 1308 }
1345 1309
1346 #if defined(OS_MACOSX) 1310 #if defined(OS_MACOSX)
1347 ThemeHelperMac::GetInstance(); 1311 ThemeHelperMac::GetInstance();
1348 SystemHotkeyHelperMac::GetInstance()->DeferredLoadSystemHotkeys(); 1312 SystemHotkeyHelperMac::GetInstance()->DeferredLoadSystemHotkeys();
1349 #endif // defined(OS_MACOSX) 1313 #endif // defined(OS_MACOSX)
1350 1314
1351 #endif // !defined(OS_IOS)
1352
1353 return result_code_; 1315 return result_code_;
1354 } 1316 }
1355 1317
1356 bool BrowserMainLoop::UsingInProcessGpu() const { 1318 bool BrowserMainLoop::UsingInProcessGpu() const {
1357 return parsed_command_line_.HasSwitch(switches::kSingleProcess) || 1319 return parsed_command_line_.HasSwitch(switches::kSingleProcess) ||
1358 parsed_command_line_.HasSwitch(switches::kInProcessGPU); 1320 parsed_command_line_.HasSwitch(switches::kInProcessGPU);
1359 } 1321 }
1360 1322
1361 bool BrowserMainLoop::InitializeToolkit() { 1323 bool BrowserMainLoop::InitializeToolkit() {
1362 TRACE_EVENT0("startup", "BrowserMainLoop::InitializeToolkit"); 1324 TRACE_EVENT0("startup", "BrowserMainLoop::InitializeToolkit");
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 DCHECK(is_tracing_startup_for_duration_); 1445 DCHECK(is_tracing_startup_for_duration_);
1484 1446
1485 is_tracing_startup_for_duration_ = false; 1447 is_tracing_startup_for_duration_ = false;
1486 TracingController::GetInstance()->StopTracing( 1448 TracingController::GetInstance()->StopTracing(
1487 TracingController::CreateFileSink( 1449 TracingController::CreateFileSink(
1488 startup_trace_file_, 1450 startup_trace_file_,
1489 base::Bind(OnStoppedStartupTracing, startup_trace_file_))); 1451 base::Bind(OnStoppedStartupTracing, startup_trace_file_)));
1490 } 1452 }
1491 1453
1492 } // namespace content 1454 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/browser_context.cc ('k') | content/browser/browser_main_runner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698