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.
5 #ifndef CHROME_BROWSER_COPRESENCE_CHROME_WHISPERNET_CLIENT_H_
6 #define CHROME_BROWSER_COPRESENCE_CHROME_WHISPERNET_CLIENT_H_
11 #include "base/callback.h"
12 #include "base/macros.h"
13 #include "components/copresence/public/copresence_constants.h"
14 #include "components/copresence/public/whispernet_client.h"
20 namespace extensions {
22 namespace copresence_private {
23 struct AudioParameters;
29 class AudioBusRefCounted;
32 // This class is responsible for communication with our ledger_proxy extension
33 // that talks to the whispernet audio library.
34 class ChromeWhispernetClient final : public copresence::WhispernetClient {
36 // The browser context needs to outlive this class.
37 explicit ChromeWhispernetClient(content::BrowserContext* browser_context);
38 ~ChromeWhispernetClient() override;
40 // WhispernetClient overrides:
41 void Initialize(const copresence::SuccessCallback& init_callback) override;
42 void Shutdown() override;
44 void EncodeToken(const std::string& token,
45 copresence::AudioType type) override;
46 void DecodeSamples(copresence::AudioType type,
47 const std::string& samples) override;
48 void DetectBroadcast() override;
50 void RegisterTokensCallback(
51 const copresence::TokensCallback& tokens_callback) override;
52 void RegisterSamplesCallback(
53 const copresence::SamplesCallback& samples_callback) override;
54 void RegisterDetectBroadcastCallback(
55 const copresence::SuccessCallback& db_callback) override;
57 copresence::TokensCallback GetTokensCallback() override;
58 copresence::SamplesCallback GetSamplesCallback() override;
59 copresence::SuccessCallback GetDetectBroadcastCallback() override;
60 copresence::SuccessCallback GetInitializedCallback() override;
62 static const char kWhispernetProxyExtensionId[];
65 // Fire an event to initialize whispernet with the given parameters.
66 void InitializeWhispernet(
67 const extensions::api::copresence_private::AudioParameters& params);
69 // This gets called twice; once when the proxy extension loads, the second
70 // time when we have initialized the proxy extension's encoder and decoder.
71 void OnExtensionLoaded(bool success);
73 content::BrowserContext* browser_context_;
75 copresence::SuccessCallback extension_loaded_callback_;
76 copresence::SuccessCallback init_callback_;
78 copresence::TokensCallback tokens_callback_;
79 copresence::SamplesCallback samples_callback_;
80 copresence::SuccessCallback db_callback_;
82 bool extension_loaded_;
84 DISALLOW_COPY_AND_ASSIGN(ChromeWhispernetClient);
87 #endif // CHROME_BROWSER_COPRESENCE_CHROME_WHISPERNET_CLIENT_H_