Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(583)

Unified Diff: chrome/browser/copresence/chrome_whispernet_client_browsertest.cc

Issue 2131993002: Delete the audio modem and copresence private APIs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@eol
Patch Set: Sync again Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/copresence/chrome_whispernet_client_browsertest.cc
diff --git a/chrome/browser/copresence/chrome_whispernet_client_browsertest.cc b/chrome/browser/copresence/chrome_whispernet_client_browsertest.cc
deleted file mode 100644
index d05c37946ebd4d1a80048ea31449a30fc5b7cb20..0000000000000000000000000000000000000000
--- a/chrome/browser/copresence/chrome_whispernet_client_browsertest.cc
+++ /dev/null
@@ -1,375 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/copresence/chrome_whispernet_client.h"
-
-#include <stddef.h>
-
-#include <cmath>
-#include <cstdlib>
-#include <memory>
-#include <string>
-
-#include "base/bind.h"
-#include "base/macros.h"
-#include "base/run_loop.h"
-#include "base/stl_util.h"
-#include "build/build_config.h"
-#include "chrome/browser/extensions/extension_browsertest.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "components/audio_modem/public/audio_modem_types.h"
-#include "components/audio_modem/public/whispernet_client.h"
-#include "media/audio/audio_device_description.h"
-#include "media/audio/audio_manager.h"
-#include "media/audio/audio_manager_base.h"
-#include "media/base/audio_bus.h"
-#include "media/base/audio_converter.h"
-#include "media/base/audio_parameters.h"
-
-using audio_modem::WhispernetClient;
-using audio_modem::AUDIBLE;
-using audio_modem::INAUDIBLE;
-using audio_modem::TokenParameters;
-
-namespace {
-
-// TODO(ckehoe): Use randomly generated tokens instead.
-const char kSixZeros[] = "MDAwMDAw";
-const char kEightZeros[] = "MDAwMDAwMDA";
-const char kNineZeros[] = "MDAwMDAwMDAw";
-
-const size_t kTokenLengths[2] = {6, 6};
-
-// Copied from src/components/copresence/mediums/audio/audio_recorder.cc
-std::string AudioBusToString(scoped_refptr<media::AudioBusRefCounted> source) {
- std::string buffer;
- buffer.resize(source->frames() * source->channels() * sizeof(float));
- float* buffer_view = reinterpret_cast<float*>(string_as_array(&buffer));
-
- const int channels = source->channels();
- for (int ch = 0; ch < channels; ++ch) {
- for (int si = 0, di = ch; si < source->frames(); ++si, di += channels)
- buffer_view[di] = source->channel(ch)[si];
- }
-
- return buffer;
-}
-
-void GetTokenParamsForLengths(const size_t token_lengths[2],
- TokenParameters* params) {
- params[0].length = token_lengths[0];
- params[1].length = token_lengths[1];
-}
-
-void IgnoreResult(bool success) {}
-
-} // namespace
-
-class ChromeWhispernetClientTest : public ExtensionBrowserTest,
- public media::AudioConverter::InputCallback {
- protected:
- ChromeWhispernetClientTest()
- : initialized_(false),
- expected_audible_(false),
- saved_samples_index_(0) {}
-
- ~ChromeWhispernetClientTest() override {}
-
- void InitializeWhispernet() {
- std::unique_ptr<WhispernetClient> client(
- new ChromeWhispernetClient(browser()->profile()));
- client->Initialize(base::Bind(
- &ChromeWhispernetClientTest::InitCallback, base::Unretained(this)));
-
- run_loop_.reset(new base::RunLoop());
- run_loop_->Run();
- EXPECT_TRUE(initialized_);
- }
-
- // This needs to be called before any of the decoder tests are run. We can't
- // run this code in the constructor or the SetUp methods because the audio
- // manager seems to get initialized only *after* ExtensionBrowserTest::SetUp
- // has finished executing. Setting up a testing AudioMager causes the actual
- // create happening later in the browser initialization to fail. The only way
- // around this at the moment seems to be to have this method called from
- // every test before they try to decode.
- void SetupDecode() {
- // We get default parameters here instead of the constructor since
- // initializing Whispernet also creates our AudioManager. Initializing from
- // the test instead causes issues.
- default_params_ = media::AudioManager::Get()->GetInputStreamParameters(
- media::AudioDeviceDescription::kDefaultDeviceId);
-
- coder_params_ = media::AudioParameters(
- default_params_.format(), audio_modem::kDefaultChannelLayout,
- audio_modem::kDefaultSampleRate, audio_modem::kDefaultBitsPerSample,
- default_params_.frames_per_buffer());
-
- converter_.reset(new media::AudioConverter(
- coder_params_, default_params_,
- default_params_.sample_rate() == coder_params_.sample_rate()));
- converter_->AddInput(this);
- }
-
- void EncodeTokenAndSaveSamples(WhispernetClient* client,
- bool audible,
- const std::string& token,
- const TokenParameters token_params[2]) {
- run_loop_.reset(new base::RunLoop());
- client->RegisterSamplesCallback(
- base::Bind(&ChromeWhispernetClientTest::SamplesCallback,
- base::Unretained(this)));
- expected_token_ = token;
- expected_audible_ = audible;
-
- client->EncodeToken(token, audible ? AUDIBLE : INAUDIBLE, token_params);
- run_loop_->Run();
-
- EXPECT_GT(saved_samples_->frames(), 0);
- }
-
- void DecodeSamplesAndVerifyToken(WhispernetClient* client,
- bool expect_audible,
- const std::string& expected_token,
- const TokenParameters token_params[2]) {
- run_loop_.reset(new base::RunLoop());
- client->RegisterTokensCallback(base::Bind(
- &ChromeWhispernetClientTest::TokensCallback, base::Unretained(this)));
- expected_token_ = expected_token;
- expected_audible_ = expect_audible;
-
- ASSERT_GT(saved_samples_->frames(), 0);
-
- scoped_refptr<media::AudioBusRefCounted> samples_bus =
- ConvertSavedSamplesToSystemParams();
- client->DecodeSamples(expect_audible ? AUDIBLE : INAUDIBLE,
- AudioBusToString(samples_bus), token_params);
- run_loop_->Run();
- }
-
- void InitCallback(bool success) {
- EXPECT_TRUE(success);
- initialized_ = true;
- ASSERT_TRUE(run_loop_);
- run_loop_->Quit();
- }
-
- void SamplesCallback(
- audio_modem::AudioType type,
- const std::string& token,
- const scoped_refptr<media::AudioBusRefCounted>& samples) {
- EXPECT_EQ(expected_token_, token);
- EXPECT_EQ(expected_audible_, type == AUDIBLE);
- saved_samples_ = samples;
- ASSERT_TRUE(run_loop_);
- run_loop_->Quit();
- }
-
- void TokensCallback(const std::vector<audio_modem::AudioToken>& tokens) {
- ASSERT_TRUE(run_loop_);
- run_loop_->Quit();
-
- EXPECT_EQ(expected_token_, tokens[0].token);
- EXPECT_EQ(expected_audible_, tokens[0].audible);
- }
-
- private:
- scoped_refptr<media::AudioBusRefCounted> ConvertSavedSamplesToSystemParams() {
- int new_size =
- saved_samples_->frames() *
- std::ceil(static_cast<double>(default_params_.sample_rate()) /
- coder_params_.sample_rate());
- new_size =
- std::ceil(static_cast<double>(new_size) / converter_->ChunkSize()) *
- converter_->ChunkSize();
-
- scoped_refptr<media::AudioBusRefCounted> converted_samples =
- media::AudioBusRefCounted::Create(default_params_.channels(), new_size);
-
- // Convert our single channel samples to two channel. Decode samples
- // expects 2 channel data.
- saved_samples_stereo_ =
- media::AudioBusRefCounted::Create(2, saved_samples_->frames());
- memcpy(saved_samples_stereo_->channel(0), saved_samples_->channel(0),
- sizeof(float) * saved_samples_->frames());
- memcpy(saved_samples_stereo_->channel(1), saved_samples_->channel(0),
- sizeof(float) * saved_samples_->frames());
-
- saved_samples_index_ = 0;
- converter_->Convert(converted_samples.get());
-
- return converted_samples;
- }
-
- // AudioConverter::InputCallback overrides:
- double ProvideInput(media::AudioBus* dest,
- uint32_t /* frames_delayed */) override {
- // Copy any saved samples we have to the output bus.
- const int remaining_frames =
- saved_samples_->frames() - saved_samples_index_;
- const int frames_to_copy = std::min(remaining_frames, dest->frames());
- saved_samples_stereo_->CopyPartialFramesTo(saved_samples_index_,
- frames_to_copy, 0, dest);
- saved_samples_index_ += frames_to_copy;
-
- // Pad any remaining space with zeroes.
- if (remaining_frames < dest->frames()) {
- dest->ZeroFramesPartial(remaining_frames,
- dest->frames() - remaining_frames);
- }
-
- // Return the volume level.
- return 1.0;
- }
-
- std::unique_ptr<base::RunLoop> run_loop_;
- bool initialized_;
-
- std::string expected_token_;
- bool expected_audible_;
-
- scoped_refptr<media::AudioBusRefCounted> saved_samples_;
- scoped_refptr<media::AudioBusRefCounted> saved_samples_stereo_;
- int saved_samples_index_;
-
- std::unique_ptr<media::AudioConverter> converter_;
-
- media::AudioParameters default_params_;
- media::AudioParameters coder_params_;
-
- DISALLOW_COPY_AND_ASSIGN(ChromeWhispernetClientTest);
-};
-
-// These tests are irrelevant if NACL is disabled. See crbug.com/449198.
-#if defined(DISABLE_NACL)
-#define MAYBE_Initialize DISABLED_Initialize
-#define MAYBE_EncodeAndDecode DISABLED_EncodeAndDecode
-#define MAYBE_TokenLengths DISABLED_TokenLengths
-#define MAYBE_Crc DISABLED_Crc
-#define MAYBE_Parity DISABLED_Parity
-#else
-#define MAYBE_Initialize Initialize
-#define MAYBE_EncodeAndDecode EncodeAndDecode
-#define MAYBE_TokenLengths TokenLengths
-#define MAYBE_Crc Crc
-#define MAYBE_Parity Parity
-#endif
-
-// This test trips up ASAN on ChromeOS. See:
-// https://code.google.com/p/address-sanitizer/issues/detail?id=189
-#if defined(DISABLE_NACL) || defined(OS_CHROMEOS)
-#define MAYBE_MultipleClients DISABLED_MultipleClients
-#else
-#define MAYBE_MultipleClients MultipleClients
-#endif
-
-IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_Initialize) {
- InitializeWhispernet();
-}
-
-IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_EncodeAndDecode) {
- std::unique_ptr<WhispernetClient> client(
- new ChromeWhispernetClient(browser()->profile()));
- client->Initialize(base::Bind(&IgnoreResult));
- SetupDecode();
-
- TokenParameters token_params[2];
- GetTokenParamsForLengths(kTokenLengths, token_params);
-
- EncodeTokenAndSaveSamples(client.get(), true, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), true, kSixZeros, token_params);
-
- EncodeTokenAndSaveSamples(client.get(), false, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), false, kSixZeros, token_params);
-}
-
-IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_TokenLengths) {
- std::unique_ptr<WhispernetClient> client(
- new ChromeWhispernetClient(browser()->profile()));
- client->Initialize(base::Bind(&IgnoreResult));
- SetupDecode();
-
- const size_t kLongTokenLengths[2] = {8, 9};
- TokenParameters token_params[2];
- GetTokenParamsForLengths(kLongTokenLengths, token_params);
-
- EncodeTokenAndSaveSamples(client.get(), true, kEightZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), true, kEightZeros, token_params);
-
- EncodeTokenAndSaveSamples(client.get(), false, kNineZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), false, kNineZeros, token_params);
-}
-
-IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_Crc) {
- std::unique_ptr<WhispernetClient> client(
- new ChromeWhispernetClient(browser()->profile()));
- client->Initialize(base::Bind(&IgnoreResult));
- SetupDecode();
-
- TokenParameters token_params[2];
- GetTokenParamsForLengths(kTokenLengths, token_params);
- token_params[0].crc = true;
- token_params[1].crc = true;
-
- EncodeTokenAndSaveSamples(client.get(), true, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), true, kSixZeros, token_params);
-
- EncodeTokenAndSaveSamples(client.get(), false, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), false, kSixZeros, token_params);
-}
-
-IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_Parity) {
- std::unique_ptr<WhispernetClient> client(
- new ChromeWhispernetClient(browser()->profile()));
- client->Initialize(base::Bind(&IgnoreResult));
- SetupDecode();
-
- TokenParameters token_params[2];
- GetTokenParamsForLengths(kTokenLengths, token_params);
- token_params[0].parity = false;
- token_params[1].parity = false;
-
- EncodeTokenAndSaveSamples(client.get(), true, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), true, kSixZeros, token_params);
-
- EncodeTokenAndSaveSamples(client.get(), false, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client.get(), false, kSixZeros, token_params);
-}
-
-IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_MultipleClients) {
- std::unique_ptr<WhispernetClient> client_1(
- new ChromeWhispernetClient(browser()->profile()));
- std::unique_ptr<WhispernetClient> client_2(
- new ChromeWhispernetClient(browser()->profile()));
- std::unique_ptr<WhispernetClient> client_3(
- new ChromeWhispernetClient(browser()->profile()));
- SetupDecode();
-
- TokenParameters token_params[2];
- GetTokenParamsForLengths(kTokenLengths, token_params);
-
- // Test concurrent initialization.
- client_1->Initialize(base::Bind(&IgnoreResult));
- client_2->Initialize(base::Bind(&IgnoreResult));
-
- EncodeTokenAndSaveSamples(client_1.get(), true, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client_1.get(), true, kSixZeros, token_params);
-
- EncodeTokenAndSaveSamples(client_2.get(), false, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client_2.get(), false, kSixZeros, token_params);
-
- // Test sequential initialization.
- client_3->Initialize(base::Bind(&IgnoreResult));
-
- EncodeTokenAndSaveSamples(client_3.get(), true, kSixZeros, token_params);
- DecodeSamplesAndVerifyToken(client_3.get(), true, kSixZeros, token_params);
-
- const size_t kLongTokenLengths[2] = {8, 9};
- GetTokenParamsForLengths(kLongTokenLengths, token_params);
-
- EncodeTokenAndSaveSamples(client_2.get(), true, kEightZeros, token_params);
- DecodeSamplesAndVerifyToken(client_2.get(), true, kEightZeros, token_params);
-}
« no previous file with comments | « chrome/browser/copresence/chrome_whispernet_client.cc ('k') | chrome/browser/copresence/chrome_whispernet_config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698