• 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 CHROME_BROWSER_COPRESENCE_CHROME_WHISPERNET_CLIENT_H_
6 #define CHROME_BROWSER_COPRESENCE_CHROME_WHISPERNET_CLIENT_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "base/callback.h"
12 #include "base/macros.h"
13 #include "components/copresence/public/whispernet_client.h"
14 
15 namespace content {
16 class BrowserContext;
17 }
18 
19 namespace extensions {
20 namespace api {
21 namespace copresence_private {
22 struct AudioParameters;
23 }
24 }
25 }
26 
27 namespace media {
28 class AudioBusRefCounted;
29 }
30 
31 // This class is responsible for communication with our ledger_proxy extension
32 // that talks to the whispernet audio library.
33 class ChromeWhispernetClient : public copresence::WhispernetClient {
34  public:
35   // The browser context needs to outlive this class.
36   explicit ChromeWhispernetClient(content::BrowserContext* browser_context);
37   virtual ~ChromeWhispernetClient();
38 
39   // WhispernetClient overrides:
40   virtual void Initialize(const SuccessCallback& init_callback) OVERRIDE;
41   virtual void Shutdown() OVERRIDE;
42 
43   virtual void EncodeToken(const std::string& token, bool audible) OVERRIDE;
44   virtual void DecodeSamples(const std::string& samples) OVERRIDE;
45   virtual void DetectBroadcast() OVERRIDE;
46 
47   virtual void RegisterTokensCallback(
48       const TokensCallback& tokens_callback) OVERRIDE;
49   virtual void RegisterSamplesCallback(
50       const SamplesCallback& samples_callback) OVERRIDE;
51   virtual void RegisterDetectBroadcastCallback(
52       const SuccessCallback& db_callback) OVERRIDE;
53 
54   virtual TokensCallback GetTokensCallback() OVERRIDE;
55   virtual SamplesCallback GetSamplesCallback() OVERRIDE;
56   virtual SuccessCallback GetDetectBroadcastCallback() OVERRIDE;
57   virtual SuccessCallback GetInitializedCallback() OVERRIDE;
58 
59   static const char kWhispernetProxyExtensionId[];
60 
61  private:
62   // Fire an event to initialize whispernet with the given parameters.
63   void InitializeWhispernet(
64       const extensions::api::copresence_private::AudioParameters& params);
65 
66   // This gets called twice; once when the proxy extension loads, the second
67   // time when we have initialized the proxy extension's encoder and decoder.
68   void OnExtensionLoaded(bool success);
69 
70   content::BrowserContext* browser_context_;
71 
72   SuccessCallback extension_loaded_callback_;
73   SuccessCallback init_callback_;
74 
75   TokensCallback tokens_callback_;
76   SamplesCallback samples_callback_;
77   SuccessCallback db_callback_;
78 
79   bool extension_loaded_;
80 
81   DISALLOW_COPY_AND_ASSIGN(ChromeWhispernetClient);
82 };
83 
84 #endif  // CHROME_BROWSER_COPRESENCE_CHROME_WHISPERNET_CLIENT_H_
85