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

Side by Side Diff: chrome/browser/copresence/chrome_whispernet_client_browsertest.cc

Issue 444373004: Add Audible support to the whispernet client. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/copresence/chrome_whispernet_client.h" 5 #include "chrome/browser/copresence/chrome_whispernet_client.h"
6 6
7 #include <cstdlib> 7 #include <cstdlib>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/stl_util.h" 14 #include "base/stl_util.h"
15 #include "chrome/browser/extensions/api/copresence/copresence_api.h" 15 #include "chrome/browser/extensions/api/copresence/copresence_api.h"
16 #include "chrome/browser/extensions/extension_browsertest.h" 16 #include "chrome/browser/extensions/extension_browsertest.h"
17 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/browser/ui/browser.h" 18 #include "chrome/browser/ui/browser.h"
19 #include "chrome/test/base/in_process_browser_test.h" 19 #include "chrome/test/base/in_process_browser_test.h"
20 #include "media/base/audio_bus.h" 20 #include "media/base/audio_bus.h"
21 21
22 namespace { 22 namespace {
23 23
24 const char kSixZeros[] = "MDAwMDAw";
25
24 copresence::WhispernetClient* GetWhispernetClient( 26 copresence::WhispernetClient* GetWhispernetClient(
25 content::BrowserContext* context) { 27 content::BrowserContext* context) {
26 extensions::CopresenceService* service = 28 extensions::CopresenceService* service =
27 extensions::CopresenceService::GetFactoryInstance()->Get(context); 29 extensions::CopresenceService::GetFactoryInstance()->Get(context);
28 return service ? service->whispernet_client() : NULL; 30 return service ? service->whispernet_client() : NULL;
29 } 31 }
30 32
31 // Copied from src/components/copresence/mediums/audio/audio_recorder.cc 33 // Copied from src/components/copresence/mediums/audio/audio_recorder.cc
32 std::string AudioBusToString(scoped_refptr<media::AudioBusRefCounted> source) { 34 std::string AudioBusToString(scoped_refptr<media::AudioBusRefCounted> source) {
33 std::string buffer; 35 std::string buffer;
(...skipping 20 matching lines...) Expand all
54 void InitializeWhispernet() { 56 void InitializeWhispernet() {
55 context_ = browser()->profile(); 57 context_ = browser()->profile();
56 run_loop_.reset(new base::RunLoop()); 58 run_loop_.reset(new base::RunLoop());
57 GetWhispernetClient(context_)->Initialize(base::Bind( 59 GetWhispernetClient(context_)->Initialize(base::Bind(
58 &ChromeWhispernetClientTest::InitCallback, base::Unretained(this))); 60 &ChromeWhispernetClientTest::InitCallback, base::Unretained(this)));
59 run_loop_->Run(); 61 run_loop_->Run();
60 62
61 EXPECT_TRUE(initialized_); 63 EXPECT_TRUE(initialized_);
62 } 64 }
63 65
64 void EncodeTokenAndSaveSamples() { 66 void EncodeTokenAndSaveSamples(bool audible) {
65 copresence::WhispernetClient* client = GetWhispernetClient(context_); 67 copresence::WhispernetClient* client = GetWhispernetClient(context_);
66 ASSERT_TRUE(client); 68 ASSERT_TRUE(client);
67 69
68 // This is the base64 encoding for "000000".
69 const std::string kZeroToken = "MDAwMDAw";
70
71 run_loop_.reset(new base::RunLoop()); 70 run_loop_.reset(new base::RunLoop());
72 client->RegisterSamplesCallback(base::Bind( 71 client->RegisterSamplesCallback(base::Bind(
73 &ChromeWhispernetClientTest::SamplesCallback, base::Unretained(this))); 72 &ChromeWhispernetClientTest::SamplesCallback, base::Unretained(this)));
74 expected_token_ = kZeroToken; 73 expected_token_ = kSixZeros;
75 74
76 client->EncodeToken(kZeroToken); 75 client->EncodeToken(kSixZeros, audible);
77 run_loop_->Run(); 76 run_loop_->Run();
78 77
79 EXPECT_GT(saved_samples_->frames(), 0); 78 EXPECT_GT(saved_samples_->frames(), 0);
80 } 79 }
81 80
82 void DecodeSamplesAndVerifyToken() { 81 void DecodeSamplesAndVerifyToken() {
83 copresence::WhispernetClient* client = GetWhispernetClient(context_); 82 copresence::WhispernetClient* client = GetWhispernetClient(context_);
84 ASSERT_TRUE(client); 83 ASSERT_TRUE(client);
85 84
86 const std::string kZeroToken = "MDAwMDAw";
87
88 run_loop_.reset(new base::RunLoop()); 85 run_loop_.reset(new base::RunLoop());
89 client->RegisterTokensCallback(base::Bind( 86 client->RegisterTokensCallback(base::Bind(
90 &ChromeWhispernetClientTest::TokensCallback, base::Unretained(this))); 87 &ChromeWhispernetClientTest::TokensCallback, base::Unretained(this)));
91 expected_token_ = kZeroToken; 88 expected_token_ = kSixZeros;
92 89
93 ASSERT_GT(saved_samples_->frames(), 0); 90 ASSERT_GT(saved_samples_->frames(), 0);
94 91
95 // Convert our single channel samples to two channel. Decode samples 92 // Convert our single channel samples to two channel. Decode samples
96 // expects 2 channel data. 93 // expects 2 channel data.
97 scoped_refptr<media::AudioBusRefCounted> samples_bus = 94 scoped_refptr<media::AudioBusRefCounted> samples_bus =
98 media::AudioBusRefCounted::Create(2, saved_samples_->frames()); 95 media::AudioBusRefCounted::Create(2, saved_samples_->frames());
99 memcpy(samples_bus->channel(0), 96 memcpy(samples_bus->channel(0),
100 saved_samples_->channel(0), 97 saved_samples_->channel(0),
101 sizeof(float) * saved_samples_->frames()); 98 sizeof(float) * saved_samples_->frames());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 157
161 DISALLOW_COPY_AND_ASSIGN(ChromeWhispernetClientTest); 158 DISALLOW_COPY_AND_ASSIGN(ChromeWhispernetClientTest);
162 }; 159 };
163 160
164 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, Initialize) { 161 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, Initialize) {
165 InitializeWhispernet(); 162 InitializeWhispernet();
166 } 163 }
167 164
168 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, EncodeToken) { 165 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, EncodeToken) {
169 InitializeWhispernet(); 166 InitializeWhispernet();
170 EncodeTokenAndSaveSamples(); 167 EncodeTokenAndSaveSamples(false);
171 } 168 }
172 169
173 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, DecodeSamples) { 170 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, DecodeSamples) {
174 InitializeWhispernet(); 171 InitializeWhispernet();
175 EncodeTokenAndSaveSamples(); 172 EncodeTokenAndSaveSamples(false);
176 DecodeSamplesAndVerifyToken(); 173 DecodeSamplesAndVerifyToken();
177 } 174 }
178 175
179 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, DetectBroadcast) { 176 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, DetectBroadcast) {
180 InitializeWhispernet(); 177 InitializeWhispernet();
181 EncodeTokenAndSaveSamples(); 178 EncodeTokenAndSaveSamples(false);
182 DecodeSamplesAndVerifyToken(); 179 DecodeSamplesAndVerifyToken();
183 DetectBroadcast(); 180 DetectBroadcast();
184 } 181 }
182
183 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, Audible) {
184 InitializeWhispernet();
185 EncodeTokenAndSaveSamples(true);
186 DecodeSamplesAndVerifyToken();
187 }
OLDNEW
« no previous file with comments | « chrome/browser/copresence/chrome_whispernet_client.cc ('k') | chrome/browser/resources/whispernet_proxy/js/init.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698