// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROMECAST_BROWSER_CAST_BROWSER_PROCESS_H_ #define CHROMECAST_BROWSER_CAST_BROWSER_PROCESS_H_ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" class PrefService; namespace breakpad { class CrashDumpManager; } // namespace breakpad namespace chromecast { class CastService; class ConnectivityChecker; namespace metrics { class CastMetricsHelper; class CastMetricsServiceClient; } // namespace metrics namespace shell { class CastBrowserContext; class CastResourceDispatcherHostDelegate; class RemoteDebuggingServer; class CastBrowserProcess { public: // Gets the global instance of CastBrowserProcess. Does not create lazily and // assumes the instance already exists. static CastBrowserProcess* GetInstance(); CastBrowserProcess(); virtual ~CastBrowserProcess(); void SetBrowserContext(scoped_ptr browser_context); void SetCastService(scoped_ptr cast_service); void SetMetricsHelper(scoped_ptr metrics_helper); void SetMetricsServiceClient( scoped_ptr metrics_service_client); void SetPrefService(scoped_ptr pref_service); void SetRemoteDebuggingServer( scoped_ptr remote_debugging_server); void SetResourceDispatcherHostDelegate( scoped_ptr delegate); #if defined(OS_ANDROID) void SetCrashDumpManager( scoped_ptr crash_dump_manager); #endif // defined(OS_ANDROID) void SetConnectivityChecker( scoped_refptr connectivity_checker); CastBrowserContext* browser_context() const { return browser_context_.get(); } CastService* cast_service() const { return cast_service_.get(); } metrics::CastMetricsServiceClient* metrics_service_client() const { return metrics_service_client_.get(); } PrefService* pref_service() const { return pref_service_.get(); } CastResourceDispatcherHostDelegate* resource_dispatcher_host_delegate() const { return resource_dispatcher_host_delegate_.get(); } ConnectivityChecker* connectivity_checker() const { return connectivity_checker_.get(); } private: // Note: The following order should match the order they are set in // CastBrowserMainParts. scoped_ptr metrics_helper_; scoped_ptr pref_service_; scoped_refptr connectivity_checker_; scoped_ptr browser_context_; scoped_ptr metrics_service_client_; scoped_ptr resource_dispatcher_host_delegate_; #if defined(OS_ANDROID) scoped_ptr crash_dump_manager_; #endif // defined(OS_ANDROID) scoped_ptr remote_debugging_server_; // Note: CastService must be destroyed before others. scoped_ptr cast_service_; DISALLOW_COPY_AND_ASSIGN(CastBrowserProcess); }; } // namespace shell } // namespace chromecast #endif // CHROMECAST_BROWSER_CAST_BROWSER_PROCESS_H_