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