Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / chromecast / service / cast_service.h
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
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_