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
3// found in the LICENSE file.
4
5#ifndef CHROMECAST_SHELL_BROWSER_CAST_BROWSER_PROCESS_H_
6#define CHROMECAST_SHELL_BROWSER_CAST_BROWSER_PROCESS_H_
7
8#include "base/macros.h"
9#include "base/memory/scoped_ptr.h"
10
11namespace breakpad {
12class CrashDumpManager;
13}  // namespace breakpad
14
15namespace chromecast {
16class CastService;
17class WebCryptoServer;
18
19namespace metrics {
20class CastMetricsHelper;
21class CastMetricsServiceClient;
22}  // namespace metrics
23
24namespace shell {
25class CastBrowserContext;
26class RemoteDebuggingServer;
27
28class CastBrowserProcess {
29 public:
30  // Gets the global instance of CastBrowserProcess. Does not create lazily and
31  // assumes the instance already exists.
32  static CastBrowserProcess* GetInstance();
33
34  CastBrowserProcess();
35  virtual ~CastBrowserProcess();
36
37  void SetBrowserContext(CastBrowserContext* browser_context);
38  void SetCastService(CastService* cast_service);
39  void SetRemoteDebuggingServer(RemoteDebuggingServer* remote_debugging_server);
40  void SetMetricsServiceClient(
41      metrics::CastMetricsServiceClient* metrics_service_client);
42
43  CastBrowserContext* browser_context() const { return browser_context_.get(); }
44  CastService* cast_service() const { return cast_service_.get(); }
45  metrics::CastMetricsServiceClient* metrics_service_client() const {
46    return metrics_service_client_.get();
47  }
48
49 private:
50  scoped_ptr<CastBrowserContext> browser_context_;
51  scoped_ptr<metrics::CastMetricsServiceClient> metrics_service_client_;
52  scoped_ptr<RemoteDebuggingServer> remote_debugging_server_;
53
54  // Note: CastService must be destroyed before others.
55  scoped_ptr<CastService> cast_service_;
56
57  DISALLOW_COPY_AND_ASSIGN(CastBrowserProcess);
58};
59
60}  // namespace shell
61}  // namespace chromecast
62
63#endif  // CHROMECAST_SHELL_BROWSER_CAST_BROWSER_PROCESS_H_
64