• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_SERVICE_CAST_SERVICE_H_
6 #define CHROMECAST_SERVICE_CAST_SERVICE_H_
7 
8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h"
10 
11 namespace base {
12 class ThreadChecker;
13 }
14 
15 namespace content {
16 class BrowserContext;
17 }
18 
19 namespace net {
20 class URLRequestContextGetter;
21 }
22 
23 namespace chromecast {
24 
25 class CastService {
26  public:
27   // Create() takes a separate url request context getter because the request
28   // context getter obtained through the browser context might not be
29   // appropriate for the url requests made by the cast service/reciever.
30   // For example, on Chromecast, it is needed to pass in a system url request
31   // context getter that would set the request context for NSS, which the main
32   // getter doesn't do.
33   static CastService* Create(
34       content::BrowserContext* browser_context,
35       net::URLRequestContextGetter* request_context_getter);
36 
37   virtual ~CastService();
38 
39   // Start/stop the cast service.
40   void Start();
41   void Stop();
42 
43  protected:
44   explicit CastService(content::BrowserContext* browser_context);
45   virtual void Initialize() = 0;
46 
47   // Implementation-specific start/stop behavior.
48   virtual void StartInternal() = 0;
49   virtual void StopInternal() = 0;
50 
browser_context()51   content::BrowserContext* browser_context() const { return browser_context_; }
52 
53  private:
54   content::BrowserContext* const browser_context_;
55   bool stopped_;
56 
57   const scoped_ptr<base::ThreadChecker> thread_checker_;
58 
59   DISALLOW_COPY_AND_ASSIGN(CastService);
60 };
61 
62 }  // namespace chromecast
63 
64 #endif  // CHROMECAST_SERVICE_CAST_SERVICE_H_
65