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

Unified Diff: chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.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/extensions/api/audio_modem/audio_modem_api_unittest.cc
diff --git a/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc b/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
deleted file mode 100644
index 22daaff577c5f2a29cb82884f77f2ad2f3f5e472..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
+++ /dev/null
@@ -1,395 +0,0 @@
-// Copyright 2015 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/extensions/api/audio_modem/audio_modem_api.h"
-
-#include <map>
-#include <memory>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/callback.h"
-#include "base/memory/ptr_util.h"
-#include "base/memory/ref_counted.h"
-#include "base/values.h"
-#include "chrome/browser/extensions/extension_api_unittest.h"
-#include "chrome/browser/extensions/extension_function_test_utils.h"
-#include "chrome/browser/extensions/test_extension_system.h"
-#include "components/audio_modem/public/modem.h"
-#include "components/audio_modem/test/stub_modem.h"
-#include "components/audio_modem/test/stub_whispernet_client.h"
-#include "extensions/browser/api_test_utils.h"
-#include "extensions/browser/event_router.h"
-#include "extensions/browser/event_router_factory.h"
-
-using audio_modem::AUDIBLE;
-using audio_modem::AudioToken;
-using audio_modem::INAUDIBLE;
-using audio_modem::StubModem;
-using audio_modem::StubWhispernetClient;
-
-using base::BinaryValue;
-using base::DictionaryValue;
-using base::ListValue;
-using base::StringValue;
-using base::Value;
-
-using content::BrowserContext;
-
-namespace ext_test_utils = extension_function_test_utils;
-
-namespace extensions {
-
-namespace {
-
-// The TestingFactoryFunction uses a BrowserContext as its context pointer.
-// But each BrowserContext is still associated with a unit test.
-// So we store the StubModem created in each test.
-std::map<BrowserContext*, StubModem*> g_modems;
-
-// Create a test AudioModemAPI and store the modem it uses.
-std::unique_ptr<KeyedService> ApiFactoryFunction(BrowserContext* context) {
- StubModem* modem = new StubModem;
- g_modems[context] = modem;
- return base::WrapUnique(new AudioModemAPI(
- context,
- base::WrapUnique<audio_modem::WhispernetClient>(new StubWhispernetClient),
- base::WrapUnique<audio_modem::Modem>(modem)));
-}
-
-std::unique_ptr<DictionaryValue> CreateParams(const std::string& audio_band) {
- std::unique_ptr<DictionaryValue> params(new DictionaryValue);
- params->SetInteger("timeoutMillis", 60000);
- params->SetString("band", audio_band);
- params->SetInteger("encoding.tokenLength", 4);
- return params;
-}
-
-std::unique_ptr<BinaryValue> CreateToken(const std::string& token) {
- return BinaryValue::CreateWithCopiedBuffer(token.c_str(), token.size());
-}
-
-std::unique_ptr<ListValue> CreateList(std::unique_ptr<Value> single_elt) {
- std::unique_ptr<ListValue> list(new ListValue);
- list->Append(std::move(single_elt));
- return list;
-}
-
-std::unique_ptr<ListValue> CreateList(std::unique_ptr<Value> elt1,
- std::unique_ptr<Value> elt2) {
- std::unique_ptr<ListValue> list(new ListValue);
- list->Append(std::move(elt1));
- list->Append(std::move(elt2));
- return list;
-}
-
-DictionaryValue* CreateReceivedToken(const std::string& token,
- const std::string& audio_band) {
- DictionaryValue* out = new DictionaryValue;
- out->Set("token", CreateToken(token));
- out->SetString("band", audio_band);
- return out;
-}
-
-bool ReceivedSingleToken(const Event* event,
- const DictionaryValue* expected_token) {
- ListValue* received_tokens;
- event->event_args->GetList(0, &received_tokens);
- if (received_tokens->GetSize() != 1)
- return false;
-
- DictionaryValue* received_token;
- received_tokens->GetDictionary(0, &received_token);
- return received_token->Equals(expected_token);
-}
-
-// TODO(ckehoe): Put this in //extensions/test.
-// Then replace the other EventRouter mocks.
-class StubEventRouter : public EventRouter {
- public:
- // Callback to receive events. First argument is
- // the extension id to receive the event.
- using EventCallback =
- base::Callback<void(const std::string&, std::unique_ptr<Event>)>;
-
- explicit StubEventRouter(BrowserContext* context)
- : EventRouter(context, nullptr) {}
-
- void DispatchEventToExtension(const std::string& extension_id,
- std::unique_ptr<Event> event) override {
- event_callback_.Run(extension_id, std::move(event));
- }
-
- void SetEventCallBack(EventCallback event_callback) {
- event_callback_ = event_callback;
- }
-
- void ClearEventCallback() {
- event_callback_.Reset();
- }
-
- private:
- EventCallback event_callback_;
-};
-
-// StubEventRouter factory function
-std::unique_ptr<KeyedService> StubEventRouterFactoryFunction(
- content::BrowserContext* context) {
- return base::WrapUnique(new StubEventRouter(context));
-}
-
-} // namespace
-
-class AudioModemApiUnittest : public ExtensionApiUnittest {
- public:
- AudioModemApiUnittest() {}
- ~AudioModemApiUnittest() override {}
-
- protected:
- template <typename Function>
- const std::string RunFunction(std::unique_ptr<ListValue> args,
- const Extension* extension) {
- scoped_refptr<UIThreadExtensionFunction> function(new Function);
- function->set_extension(extension);
- function->set_browser_context(profile());
- function->set_has_callback(true);
- ext_test_utils::RunFunction(function.get(), std::move(args), browser(),
- ext_test_utils::NONE);
-
- std::string result_status;
- CHECK(function->GetResultList()->GetString(0, &result_status));
- return result_status;
- }
-
- template <typename Function>
- const std::string RunFunction(std::unique_ptr<ListValue> args) {
- return RunFunction<Function>(std::move(args), GetExtension(std::string()));
- }
-
- StubModem* GetModem() const {
- return g_modems[profile()];
- }
-
- const Extension* GetExtension(const std::string& name) {
- if (!extensions_by_name_[name].get()) {
- std::unique_ptr<DictionaryValue> extension_definition(
- new DictionaryValue);
- extension_definition->SetString("name", name);
- extension_definition->SetString("version", "1.0");
- extensions_by_name_[name] = api_test_utils::CreateExtension(
- Manifest::INTERNAL, extension_definition.get(), name);
- DVLOG(2) << "Created extension " << extensions_by_name_[name]->id();
- }
- return extensions_by_name_[name].get();
- }
-
- const std::vector<std::unique_ptr<const Event>>& GetEventsForExtension(
- const std::string& name) {
- const Extension* extension = extensions_by_name_[name].get();
- DCHECK(extension);
- return events_by_extension_id_[extension->id()];
- }
-
- const std::vector<std::unique_ptr<const Event>>& GetEvents() {
- return GetEventsForExtension(std::string());
- }
-
- private:
- void SetUp() override {
- ExtensionApiUnittest::SetUp();
- AudioModemAPI::GetFactoryInstance()->SetTestingFactory(
- profile(), &ApiFactoryFunction);
-
- StubEventRouter* stub_event_router = static_cast<StubEventRouter*>(
- extensions::EventRouterFactory::GetInstance()->SetTestingFactoryAndUse(
- profile(), &StubEventRouterFactoryFunction));
- stub_event_router->SetEventCallBack(base::Bind(
- &AudioModemApiUnittest::CaptureEvent, base::Unretained(this)));
- }
-
- void CaptureEvent(const std::string& extension_id,
- std::unique_ptr<Event> event) {
- events_by_extension_id_[extension_id].push_back(std::move(event));
- }
-
- std::map<std::string, scoped_refptr<Extension>> extensions_by_name_;
-
- std::map<std::string, std::vector<std::unique_ptr<const Event>>>
- events_by_extension_id_;
-};
-
-TEST_F(AudioModemApiUnittest, TransmitBasic) {
- // Start transmitting inaudibly.
- EXPECT_EQ("success", RunFunction<AudioModemTransmitFunction>(
- CreateList(CreateParams("inaudible"), CreateToken("1234"))));
- EXPECT_TRUE(GetModem()->IsPlaying(INAUDIBLE));
-
- // Can't cancel audible transmit - we haven't started it yet.
- EXPECT_EQ("invalidRequest",
- RunFunction<AudioModemStopTransmitFunction>(
- CreateList(base::MakeUnique<StringValue>("audible"))));
-
- // Start transmitting audibly.
- EXPECT_EQ("success", RunFunction<AudioModemTransmitFunction>(
- CreateList(CreateParams("audible"), CreateToken("ABCD"))));
- EXPECT_TRUE(GetModem()->IsPlaying(AUDIBLE));
-
- // Stop audible transmit. We're still transmitting inaudibly.
- EXPECT_EQ("success", RunFunction<AudioModemStopTransmitFunction>(CreateList(
- base::MakeUnique<StringValue>("audible"))));
- EXPECT_FALSE(GetModem()->IsPlaying(AUDIBLE));
- EXPECT_TRUE(GetModem()->IsPlaying(INAUDIBLE));
-
- // Stop inaudible transmit.
- EXPECT_EQ("success", RunFunction<AudioModemStopTransmitFunction>(CreateList(
- base::MakeUnique<StringValue>("inaudible"))));
- EXPECT_FALSE(GetModem()->IsPlaying(INAUDIBLE));
-}
-
-TEST_F(AudioModemApiUnittest, ReceiveBasic) {
- // Start listening for audible tokens.
- EXPECT_EQ("success", RunFunction<AudioModemReceiveFunction>(
- CreateList(CreateParams("audible"))));
- EXPECT_TRUE(GetModem()->IsRecording(AUDIBLE));
-
- // Can't cancel inaudible receive - we haven't started it yet.
- EXPECT_EQ("invalidRequest",
- RunFunction<AudioModemStopReceiveFunction>(
- CreateList(base::MakeUnique<StringValue>("inaudible"))));
-
- // Send some audible tokens.
- std::vector<AudioToken> tokens;
- tokens.push_back(AudioToken("1234", true));
- tokens.push_back(AudioToken("ABCD", true));
- tokens.push_back(AudioToken("abcd", false));
- GetModem()->DeliverTokens(tokens);
-
- // Check the tokens received.
- EXPECT_EQ(1u, GetEvents().size());
- std::unique_ptr<ListValue> expected_tokens(new ListValue);
- expected_tokens->Append(CreateReceivedToken("1234", "audible"));
- expected_tokens->Append(CreateReceivedToken("ABCD", "audible"));
- ListValue* received_tokens;
- GetEvents()[0]->event_args->GetList(0, &received_tokens);
- EXPECT_TRUE(received_tokens->Equals(expected_tokens.get()));
-
- // Start listening for inaudible tokens.
- EXPECT_EQ("success", RunFunction<AudioModemReceiveFunction>(
- CreateList(CreateParams("inaudible"))));
- EXPECT_TRUE(GetModem()->IsRecording(INAUDIBLE));
-
- // Send some more tokens.
- tokens.push_back(AudioToken("5678", false));
- GetModem()->DeliverTokens(tokens);
-
- // Check the tokens received.
- EXPECT_EQ(2u, GetEvents().size());
- expected_tokens->Append(CreateReceivedToken("abcd", "inaudible"));
- expected_tokens->Append(CreateReceivedToken("5678", "inaudible"));
- GetEvents()[1]->event_args->GetList(0, &received_tokens);
- EXPECT_TRUE(received_tokens->Equals(expected_tokens.get()));
-
- // Stop audible receive. We're still receiving inaudible.
- EXPECT_EQ("success", RunFunction<AudioModemStopReceiveFunction>(CreateList(
- base::MakeUnique<StringValue>("audible"))));
- EXPECT_FALSE(GetModem()->IsRecording(AUDIBLE));
- EXPECT_TRUE(GetModem()->IsRecording(INAUDIBLE));
-
- // Stop inaudible receive.
- EXPECT_EQ("success", RunFunction<AudioModemStopReceiveFunction>(CreateList(
- base::MakeUnique<StringValue>("inaudible"))));
- EXPECT_FALSE(GetModem()->IsRecording(INAUDIBLE));
-}
-
-TEST_F(AudioModemApiUnittest, TransmitMultiple) {
- // Start transmit.
- EXPECT_EQ("success", RunFunction<AudioModemTransmitFunction>(
- CreateList(CreateParams("audible"), CreateToken("1234")),
- GetExtension("ext1")));
- EXPECT_TRUE(GetModem()->IsPlaying(AUDIBLE));
-
- // Another extension can't interfere with the first one.
- EXPECT_EQ("inUse", RunFunction<AudioModemTransmitFunction>(
- CreateList(CreateParams("audible"), CreateToken("ABCD")),
- GetExtension("ext2")));
- EXPECT_EQ("invalidRequest",
- RunFunction<AudioModemStopTransmitFunction>(
- CreateList(base::MakeUnique<StringValue>("audible")),
- GetExtension("ext2")));
- EXPECT_TRUE(GetModem()->IsPlaying(AUDIBLE));
-
- // The other extension can use the other audio band, however.
- EXPECT_EQ("success", RunFunction<AudioModemTransmitFunction>(
- CreateList(CreateParams("inaudible"), CreateToken("ABCD")),
- GetExtension("ext2")));
- EXPECT_TRUE(GetModem()->IsPlaying(INAUDIBLE));
-
- // The first extension can change its token.
- // But the other band is still in use.
- EXPECT_EQ("success", RunFunction<AudioModemTransmitFunction>(
- CreateList(CreateParams("audible"), CreateToken("abcd")),
- GetExtension("ext1")));
- EXPECT_EQ("inUse", RunFunction<AudioModemTransmitFunction>(
- CreateList(CreateParams("inaudible"), CreateToken("1234")),
- GetExtension("ext1")));
-
- // Stop transmission.
- EXPECT_EQ("success", RunFunction<AudioModemStopTransmitFunction>(
- CreateList(base::MakeUnique<StringValue>("audible")),
- GetExtension("ext1")));
- EXPECT_FALSE(GetModem()->IsPlaying(AUDIBLE));
- EXPECT_EQ("success",
- RunFunction<AudioModemStopTransmitFunction>(
- CreateList(base::MakeUnique<StringValue>("inaudible")),
- GetExtension("ext2")));
- EXPECT_FALSE(GetModem()->IsPlaying(INAUDIBLE));
-}
-
-TEST_F(AudioModemApiUnittest, ReceiveMultiple) {
- // Start receive. Multiple extensions can receive on the same band.
- EXPECT_EQ("success", RunFunction<AudioModemReceiveFunction>(
- CreateList(CreateParams("inaudible")), GetExtension("ext1")));
- EXPECT_TRUE(GetModem()->IsRecording(INAUDIBLE));
- EXPECT_EQ("success", RunFunction<AudioModemReceiveFunction>(
- CreateList(CreateParams("inaudible")), GetExtension("ext2")));
-
- // Receive a token.
- GetModem()->DeliverTokens(std::vector<AudioToken>(
- 1, AudioToken("abcd", false)));
- EXPECT_EQ(1u, GetEventsForExtension("ext1").size());
- EXPECT_EQ(1u, GetEventsForExtension("ext2").size());
-
- // Check the token received.
- std::unique_ptr<DictionaryValue> expected_token(
- CreateReceivedToken("abcd", "inaudible"));
- EXPECT_TRUE(ReceivedSingleToken(GetEventsForExtension("ext1")[0].get(),
- expected_token.get()));
- EXPECT_TRUE(ReceivedSingleToken(GetEventsForExtension("ext2")[0].get(),
- expected_token.get()));
-
- // If one extension stops, the modem is still receiving for the other.
- EXPECT_EQ("success",
- RunFunction<AudioModemStopReceiveFunction>(
- CreateList(base::MakeUnique<StringValue>("inaudible")),
- GetExtension("ext1")));
- EXPECT_TRUE(GetModem()->IsRecording(INAUDIBLE));
-
- // Receive another token. Should only go to ext2.
- GetModem()->DeliverTokens(std::vector<AudioToken>(
- 1, AudioToken("1234", false)));
- EXPECT_EQ(1u, GetEventsForExtension("ext1").size());
- EXPECT_EQ(2u, GetEventsForExtension("ext2").size());
- expected_token.reset(CreateReceivedToken("1234", "inaudible"));
- EXPECT_TRUE(ReceivedSingleToken(GetEventsForExtension("ext2")[1].get(),
- expected_token.get()));
-
- EXPECT_EQ("success",
- RunFunction<AudioModemStopReceiveFunction>(
- CreateList(base::MakeUnique<StringValue>("inaudible")),
- GetExtension("ext2")));
- EXPECT_FALSE(GetModem()->IsRecording(INAUDIBLE));
-}
-
-} // namespace extensions
« no previous file with comments | « chrome/browser/extensions/api/audio_modem/audio_modem_api.cc ('k') | chrome/browser/extensions/api/copresence_private/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698