OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/browser/cast_browser_main_parts.h" | 5 #include "chromecast/browser/cast_browser_main_parts.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
13 #include "base/files/file_util.h" | 13 #include "base/files/file_util.h" |
14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/memory/ptr_util.h" |
15 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
16 #include "base/path_service.h" | 17 #include "base/path_service.h" |
17 #include "base/run_loop.h" | 18 #include "base/run_loop.h" |
18 #include "base/thread_task_runner_handle.h" | 19 #include "base/thread_task_runner_handle.h" |
19 #include "build/build_config.h" | 20 #include "build/build_config.h" |
20 #include "cc/base/switches.h" | 21 #include "cc/base/switches.h" |
21 #include "chromecast/base/cast_constants.h" | 22 #include "chromecast/base/cast_constants.h" |
22 #include "chromecast/base/cast_paths.h" | 23 #include "chromecast/base/cast_paths.h" |
23 #include "chromecast/base/cast_sys_info_util.h" | 24 #include "chromecast/base/cast_sys_info_util.h" |
24 #include "chromecast/base/chromecast_switches.h" | 25 #include "chromecast/base/chromecast_switches.h" |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 #if defined(OS_ANDROID) | 294 #if defined(OS_ANDROID) |
294 net::NetworkChangeNotifier::SetFactory( | 295 net::NetworkChangeNotifier::SetFactory( |
295 new net::NetworkChangeNotifierFactoryAndroid()); | 296 new net::NetworkChangeNotifierFactoryAndroid()); |
296 #else | 297 #else |
297 net::NetworkChangeNotifier::SetFactory( | 298 net::NetworkChangeNotifier::SetFactory( |
298 new NetworkChangeNotifierFactoryCast()); | 299 new NetworkChangeNotifierFactoryCast()); |
299 #endif // defined(OS_ANDROID) | 300 #endif // defined(OS_ANDROID) |
300 } | 301 } |
301 | 302 |
302 void CastBrowserMainParts::PostMainMessageLoopStart() { | 303 void CastBrowserMainParts::PostMainMessageLoopStart() { |
303 cast_browser_process_->SetMetricsHelper(make_scoped_ptr( | 304 cast_browser_process_->SetMetricsHelper(base::WrapUnique( |
304 new metrics::CastMetricsHelper(base::ThreadTaskRunnerHandle::Get()))); | 305 new metrics::CastMetricsHelper(base::ThreadTaskRunnerHandle::Get()))); |
305 | 306 |
306 #if defined(OS_ANDROID) | 307 #if defined(OS_ANDROID) |
307 base::MessageLoopForUI::current()->Start(); | 308 base::MessageLoopForUI::current()->Start(); |
308 #endif // defined(OS_ANDROID) | 309 #endif // defined(OS_ANDROID) |
309 } | 310 } |
310 | 311 |
311 void CastBrowserMainParts::ToolkitInitialized() { | 312 void CastBrowserMainParts::ToolkitInitialized() { |
312 #if defined(OS_LINUX) | 313 #if defined(OS_LINUX) |
313 // Without this call, the FontConfig library gets implicitly initialized | 314 // Without this call, the FontConfig library gets implicitly initialized |
(...skipping 13 matching lines...) Expand all Loading... |
327 | 328 |
328 int CastBrowserMainParts::PreCreateThreads() { | 329 int CastBrowserMainParts::PreCreateThreads() { |
329 #if defined(OS_ANDROID) | 330 #if defined(OS_ANDROID) |
330 // GPU process is started immediately after threads are created, requiring | 331 // GPU process is started immediately after threads are created, requiring |
331 // CrashDumpManager to be initialized beforehand. | 332 // CrashDumpManager to be initialized beforehand. |
332 base::FilePath crash_dumps_dir; | 333 base::FilePath crash_dumps_dir; |
333 if (!chromecast::CrashHandler::GetCrashDumpLocation(&crash_dumps_dir)) { | 334 if (!chromecast::CrashHandler::GetCrashDumpLocation(&crash_dumps_dir)) { |
334 LOG(ERROR) << "Could not find crash dump location."; | 335 LOG(ERROR) << "Could not find crash dump location."; |
335 } | 336 } |
336 cast_browser_process_->SetCrashDumpManager( | 337 cast_browser_process_->SetCrashDumpManager( |
337 make_scoped_ptr(new breakpad::CrashDumpManager(crash_dumps_dir))); | 338 base::WrapUnique(new breakpad::CrashDumpManager(crash_dumps_dir))); |
338 #else | 339 #else |
339 base::FilePath home_dir; | 340 base::FilePath home_dir; |
340 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); | 341 CHECK(PathService::Get(DIR_CAST_HOME, &home_dir)); |
341 if (!base::CreateDirectory(home_dir)) | 342 if (!base::CreateDirectory(home_dir)) |
342 return 1; | 343 return 1; |
343 | 344 |
344 // Hook for internal code | 345 // Hook for internal code |
345 cast_browser_process_->browser_client()->PreCreateThreads(); | 346 cast_browser_process_->browser_client()->PreCreateThreads(); |
346 | 347 |
347 // AudioManager is created immediately after threads are created, requiring | 348 // AudioManager is created immediately after threads are created, requiring |
348 // AudioManagerFactory to be set beforehand. | 349 // AudioManagerFactory to be set beforehand. |
349 ::media::AudioManager::SetFactory( | 350 ::media::AudioManager::SetFactory( |
350 new media::CastAudioManagerFactory(media_pipeline_backend_manager())); | 351 new media::CastAudioManagerFactory(media_pipeline_backend_manager())); |
351 | 352 |
352 // Set GL strings so GPU config code can make correct feature blacklisting/ | 353 // Set GL strings so GPU config code can make correct feature blacklisting/ |
353 // whitelisting decisions. | 354 // whitelisting decisions. |
354 // Note: SetGLStrings can be called before GpuDataManager::Initialize. | 355 // Note: SetGLStrings can be called before GpuDataManager::Initialize. |
355 scoped_ptr<CastSysInfo> sys_info = CreateSysInfo(); | 356 std::unique_ptr<CastSysInfo> sys_info = CreateSysInfo(); |
356 content::GpuDataManager::GetInstance()->SetGLStrings( | 357 content::GpuDataManager::GetInstance()->SetGLStrings( |
357 sys_info->GetGlVendor(), sys_info->GetGlRenderer(), | 358 sys_info->GetGlVendor(), sys_info->GetGlRenderer(), |
358 sys_info->GetGlVersion()); | 359 sys_info->GetGlVersion()); |
359 #endif | 360 #endif |
360 | 361 |
361 #if defined(USE_AURA) | 362 #if defined(USE_AURA) |
362 // Screen can (and should) exist even with no displays connected. Its presence | 363 // Screen can (and should) exist even with no displays connected. Its presence |
363 // is assumed as an interface to access display information, e.g. from metrics | 364 // is assumed as an interface to access display information, e.g. from metrics |
364 // code. See CastContentWindow::CreateWindowTree for update when resolution | 365 // code. See CastContentWindow::CreateWindowTree for update when resolution |
365 // is available. | 366 // is available. |
366 cast_browser_process_->SetCastScreen(make_scoped_ptr(new CastScreen)); | 367 cast_browser_process_->SetCastScreen(base::WrapUnique(new CastScreen)); |
367 DCHECK(!gfx::Screen::GetScreen()); | 368 DCHECK(!gfx::Screen::GetScreen()); |
368 gfx::Screen::SetScreenInstance(cast_browser_process_->cast_screen()); | 369 gfx::Screen::SetScreenInstance(cast_browser_process_->cast_screen()); |
369 #endif | 370 #endif |
370 | 371 |
371 content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme( | 372 content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme( |
372 kChromeResourceScheme); | 373 kChromeResourceScheme); |
373 return 0; | 374 return 0; |
374 } | 375 } |
375 | 376 |
376 void CastBrowserMainParts::PreMainMessageLoopRun() { | 377 void CastBrowserMainParts::PreMainMessageLoopRun() { |
377 scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple()); | 378 scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple()); |
378 metrics::RegisterPrefs(pref_registry.get()); | 379 metrics::RegisterPrefs(pref_registry.get()); |
379 cast_browser_process_->SetPrefService( | 380 cast_browser_process_->SetPrefService( |
380 PrefServiceHelper::CreatePrefService(pref_registry.get())); | 381 PrefServiceHelper::CreatePrefService(pref_registry.get())); |
381 | 382 |
382 #if defined(OS_ANDROID) | 383 #if defined(OS_ANDROID) |
383 ::media::SetMediaClientAndroid(new media::CastMediaClientAndroid()); | 384 ::media::SetMediaClientAndroid(new media::CastMediaClientAndroid()); |
384 #endif // defined(OS_ANDROID) | 385 #endif // defined(OS_ANDROID) |
385 | 386 |
386 cast_browser_process_->SetConnectivityChecker( | 387 cast_browser_process_->SetConnectivityChecker( |
387 ConnectivityChecker::Create( | 388 ConnectivityChecker::Create( |
388 content::BrowserThread::GetMessageLoopProxyForThread( | 389 content::BrowserThread::GetMessageLoopProxyForThread( |
389 content::BrowserThread::IO))); | 390 content::BrowserThread::IO))); |
390 | 391 |
391 cast_browser_process_->SetNetLog(net_log_.get()); | 392 cast_browser_process_->SetNetLog(net_log_.get()); |
392 | 393 |
393 url_request_context_factory_->InitializeOnUIThread(net_log_.get()); | 394 url_request_context_factory_->InitializeOnUIThread(net_log_.get()); |
394 | 395 |
395 cast_browser_process_->SetBrowserContext( | 396 cast_browser_process_->SetBrowserContext( |
396 make_scoped_ptr(new CastBrowserContext(url_request_context_factory_))); | 397 base::WrapUnique(new CastBrowserContext(url_request_context_factory_))); |
397 cast_browser_process_->SetMetricsServiceClient( | 398 cast_browser_process_->SetMetricsServiceClient( |
398 metrics::CastMetricsServiceClient::Create( | 399 metrics::CastMetricsServiceClient::Create( |
399 content::BrowserThread::GetBlockingPool(), | 400 content::BrowserThread::GetBlockingPool(), |
400 cast_browser_process_->pref_service(), | 401 cast_browser_process_->pref_service(), |
401 cast_browser_process_->browser_context()->GetRequestContext())); | 402 cast_browser_process_->browser_context()->GetRequestContext())); |
402 | 403 |
403 if (!PlatformClientAuth::Initialize()) | 404 if (!PlatformClientAuth::Initialize()) |
404 LOG(ERROR) << "PlatformClientAuth::Initialize failed."; | 405 LOG(ERROR) << "PlatformClientAuth::Initialize failed."; |
405 | 406 |
406 cast_browser_process_->SetRemoteDebuggingServer(make_scoped_ptr( | 407 cast_browser_process_->SetRemoteDebuggingServer(base::WrapUnique( |
407 new RemoteDebuggingServer(cast_browser_process_->browser_client()-> | 408 new RemoteDebuggingServer(cast_browser_process_->browser_client() |
408 EnableRemoteDebuggingImmediately()))); | 409 ->EnableRemoteDebuggingImmediately()))); |
409 | 410 |
410 #if defined(USE_AURA) && !defined(DISABLE_DISPLAY) | 411 #if defined(USE_AURA) && !defined(DISABLE_DISPLAY) |
411 // TODO(halliwell) move audio builds to use ozone_platform_cast, then can | 412 // TODO(halliwell) move audio builds to use ozone_platform_cast, then can |
412 // simplify this by removing DISABLE_DISPLAY condition. Should then also | 413 // simplify this by removing DISABLE_DISPLAY condition. Should then also |
413 // assert(ozone_platform_cast) in BUILD.gn where it depends on //ui/ozone. | 414 // assert(ozone_platform_cast) in BUILD.gn where it depends on //ui/ozone. |
414 video_plane_controller_.reset( | 415 video_plane_controller_.reset( |
415 new media::VideoPlaneController(GetMediaTaskRunner())); | 416 new media::VideoPlaneController(GetMediaTaskRunner())); |
416 cast_browser_process_->cast_screen()->SetDisplayResizeCallback( | 417 cast_browser_process_->cast_screen()->SetDisplayResizeCallback( |
417 base::Bind(&media::VideoPlaneController::SetGraphicsPlaneResolution, | 418 base::Bind(&media::VideoPlaneController::SetGraphicsPlaneResolution, |
418 base::Unretained(video_plane_controller_.get()))); | 419 base::Unretained(video_plane_controller_.get()))); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 void CastBrowserMainParts::PostDestroyThreads() { | 495 void CastBrowserMainParts::PostDestroyThreads() { |
495 #if !defined(OS_ANDROID) | 496 #if !defined(OS_ANDROID) |
496 media_resource_tracker_->FinalizeAndDestroy(); | 497 media_resource_tracker_->FinalizeAndDestroy(); |
497 media_resource_tracker_ = nullptr; | 498 media_resource_tracker_ = nullptr; |
498 media_pipeline_backend_manager_.reset(); | 499 media_pipeline_backend_manager_.reset(); |
499 #endif | 500 #endif |
500 } | 501 } |
501 | 502 |
502 } // namespace shell | 503 } // namespace shell |
503 } // namespace chromecast | 504 } // namespace chromecast |
OLD | NEW |