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

Side by Side Diff: chrome/browser/extensions/api/bluetooth/bluetooth_apitest.cc

Issue 180163009: chrome.bluetooth API improvements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address code review feedback, simplify threading model. Created 6 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <string.h> 5 #include <string.h>
6 6
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h" 9 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h"
10 #include "chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h" 10 #include "chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 device1_.reset(new testing::NiceMock<MockBluetoothDevice>( 64 device1_.reset(new testing::NiceMock<MockBluetoothDevice>(
65 mock_adapter_, 0, "d1", "11:12:13:14:15:16", 65 mock_adapter_, 0, "d1", "11:12:13:14:15:16",
66 true /* paired */, true /* connected */)); 66 true /* paired */, true /* connected */));
67 device2_.reset(new testing::NiceMock<MockBluetoothDevice>( 67 device2_.reset(new testing::NiceMock<MockBluetoothDevice>(
68 mock_adapter_, 0, "d2", "21:22:23:24:25:26", 68 mock_adapter_, 0, "d2", "21:22:23:24:25:26",
69 false /* paired */, false /* connected */)); 69 false /* paired */, false /* connected */));
70 device3_.reset(new testing::NiceMock<MockBluetoothDevice>( 70 device3_.reset(new testing::NiceMock<MockBluetoothDevice>(
71 mock_adapter_, 0, "d3", "31:32:33:34:35:36", 71 mock_adapter_, 0, "d3", "31:32:33:34:35:36",
72 false /* paired */, false /* connected */)); 72 false /* paired */, false /* connected */));
73
74 } 73 }
75 74
76 void DiscoverySessionCallback( 75 void DiscoverySessionCallback(
77 const BluetoothAdapter::DiscoverySessionCallback& callback, 76 const BluetoothAdapter::DiscoverySessionCallback& callback,
78 const BluetoothAdapter::ErrorCallback& error_callback) { 77 const BluetoothAdapter::ErrorCallback& error_callback) {
79 if (mock_session_.get()) { 78 if (mock_session_.get()) {
80 callback.Run( 79 callback.Run(
81 scoped_ptr<BluetoothDiscoverySession>(mock_session_.release())); 80 scoped_ptr<BluetoothDiscoverySession>(mock_session_.release()));
82 return; 81 return;
83 } 82 }
(...skipping 10 matching lines...) Expand all
94 protected: 93 protected:
95 testing::StrictMock<MockBluetoothAdapter>* mock_adapter_; 94 testing::StrictMock<MockBluetoothAdapter>* mock_adapter_;
96 scoped_ptr<testing::NiceMock<MockBluetoothDiscoverySession> > mock_session_; 95 scoped_ptr<testing::NiceMock<MockBluetoothDiscoverySession> > mock_session_;
97 scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device1_; 96 scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device1_;
98 scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device2_; 97 scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device2_;
99 scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device3_; 98 scoped_ptr<testing::NiceMock<MockBluetoothDevice> > device3_;
100 scoped_ptr<testing::NiceMock<MockBluetoothProfile> > profile1_; 99 scoped_ptr<testing::NiceMock<MockBluetoothProfile> > profile1_;
101 scoped_ptr<testing::NiceMock<MockBluetoothProfile> > profile2_; 100 scoped_ptr<testing::NiceMock<MockBluetoothProfile> > profile2_;
102 101
103 extensions::ExtensionBluetoothEventRouter* event_router() { 102 extensions::ExtensionBluetoothEventRouter* event_router() {
104 return extensions::BluetoothAPI::Get(browser()->profile()) 103 return bluetooth_api()->event_router();
105 ->bluetooth_event_router(); 104 }
105
106 extensions::BluetoothAPI* bluetooth_api() {
107 return extensions::BluetoothAPI::Get(browser()->profile());
106 } 108 }
107 109
108 private: 110 private:
109 scoped_refptr<Extension> empty_extension_; 111 scoped_refptr<Extension> empty_extension_;
110 }; 112 };
111 113
112 class TestBluetoothAddProfileFunction 114 class TestBluetoothAddProfileFunction
113 : public api::BluetoothAddProfileFunction { 115 : public api::BluetoothAddProfileFunction {
114 public: 116 public:
115 explicit TestBluetoothAddProfileFunction(BluetoothProfile* profile) 117 explicit TestBluetoothAddProfileFunction(BluetoothProfile* profile)
(...skipping 27 matching lines...) Expand all
143 memcpy(&(data.randomizer), kOutOfBandPairingDataRandomizer, 145 memcpy(&(data.randomizer), kOutOfBandPairingDataRandomizer,
144 device::kBluetoothOutOfBandPairingDataSize); 146 device::kBluetoothOutOfBandPairingDataSize);
145 return data; 147 return data;
146 } 148 }
147 149
148 static bool CallClosure(const base::Closure& callback) { 150 static bool CallClosure(const base::Closure& callback) {
149 callback.Run(); 151 callback.Run();
150 return true; 152 return true;
151 } 153 }
152 154
155 static bool CallErrorClosure(const BluetoothDevice::ErrorCallback& callback) {
156 callback.Run();
157 return true;
158 }
159
153 static void StopDiscoverySessionCallback(const base::Closure& callback, 160 static void StopDiscoverySessionCallback(const base::Closure& callback,
154 const base::Closure& error_callback) { 161 const base::Closure& error_callback) {
155 callback.Run(); 162 callback.Run();
156 } 163 }
157 164
158 static void CallOutOfBandPairingDataCallback( 165 static void CallOutOfBandPairingDataCallback(
159 const BluetoothAdapter::BluetoothOutOfBandPairingDataCallback& callback, 166 const BluetoothAdapter::BluetoothOutOfBandPairingDataCallback& callback,
160 const BluetoothAdapter::ErrorCallback& error_callback) { 167 const BluetoothAdapter::ErrorCallback& error_callback) {
161 callback.Run(GetOutOfBandPairingData()); 168 callback.Run(GetOutOfBandPairingData());
162 } 169 }
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 new api::BluetoothSetOutOfBandPairingDataFunction); 314 new api::BluetoothSetOutOfBandPairingDataFunction);
308 // There isn't actually a result. 315 // There isn't actually a result.
309 (void) utils::RunFunctionAndReturnSingleResult( 316 (void) utils::RunFunctionAndReturnSingleResult(
310 set_oob_function.get(), params, browser()); 317 set_oob_function.get(), params, browser());
311 318
312 // Try again with an error 319 // Try again with an error
313 testing::Mock::VerifyAndClearExpectations(mock_adapter_); 320 testing::Mock::VerifyAndClearExpectations(mock_adapter_);
314 testing::Mock::VerifyAndClearExpectations(device1_.get()); 321 testing::Mock::VerifyAndClearExpectations(device1_.get());
315 EXPECT_CALL(*mock_adapter_, GetDevice(device1_->GetAddress())) 322 EXPECT_CALL(*mock_adapter_, GetDevice(device1_->GetAddress()))
316 .WillOnce(testing::Return(device1_.get())); 323 .WillOnce(testing::Return(device1_.get()));
317 EXPECT_CALL(*device1_, 324 EXPECT_CALL(
318 ClearOutOfBandPairingData(testing::_, 325 *device1_,
319 testing::Truly(CallClosure))); 326 ClearOutOfBandPairingData(testing::_, testing::Truly(CallErrorClosure)));
320 327
321 set_oob_function = setupFunction( 328 set_oob_function = setupFunction(
322 new api::BluetoothSetOutOfBandPairingDataFunction); 329 new api::BluetoothSetOutOfBandPairingDataFunction);
323 std::string error(utils::RunFunctionAndReturnError( 330 std::string error(utils::RunFunctionAndReturnError(
324 set_oob_function.get(), params, browser())); 331 set_oob_function.get(), params, browser()));
325 EXPECT_FALSE(error.empty()); 332 EXPECT_FALSE(error.empty());
326 333
327 // TODO(bryeung): Also test setting the data when there is support for 334 // TODO(bryeung): Also test setting the data when there is support for
328 // ArrayBuffers in the arguments to the RunFunctionAnd* methods. 335 // ArrayBuffers in the arguments to the RunFunctionAnd* methods.
329 // crbug.com/132796 336 // crbug.com/132796
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 // Load and wait for setup 558 // Load and wait for setup
552 ExtensionTestMessageListener listener("ready", true); 559 ExtensionTestMessageListener listener("ready", true);
553 scoped_refptr<const Extension> extension( 560 scoped_refptr<const Extension> extension(
554 LoadExtension(test_data_dir_.AppendASCII("bluetooth/on_connection"))); 561 LoadExtension(test_data_dir_.AppendASCII("bluetooth/on_connection")));
555 ASSERT_TRUE(extension.get()); 562 ASSERT_TRUE(extension.get());
556 EXPECT_TRUE(listener.WaitUntilSatisfied()); 563 EXPECT_TRUE(listener.WaitUntilSatisfied());
557 564
558 scoped_refptr<device::MockBluetoothSocket> socket = 565 scoped_refptr<device::MockBluetoothSocket> socket =
559 new device::MockBluetoothSocket(); 566 new device::MockBluetoothSocket();
560 567
568 EXPECT_CALL(*mock_adapter_, GetDevice(device1_->GetAddress()))
569 .WillOnce(testing::Return(device1_.get()));
570
561 event_router()->AddProfile("1234", extension->id(), profile1_.get()); 571 event_router()->AddProfile("1234", extension->id(), profile1_.get());
562 event_router()->DispatchConnectionEvent( 572 bluetooth_api()->DispatchConnectionEvent(
563 extension->id(), "1234", device1_.get(), socket); 573 extension->id(), "1234", device1_.get(), socket);
574 // Connection events are dispatched using a couple of PostTask to the UI
575 // thread. Waiting until idle ensures the event is dispatched to the
576 // receiver(s).
577 base::RunLoop().RunUntilIdle();
564 578
565 listener.Reply("go"); 579 listener.Reply("go");
566 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); 580 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
567 event_router()->RemoveProfile("1234"); 581 event_router()->RemoveProfile("1234");
568 } 582 }
569 583
570 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetProfiles) { 584 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetProfiles) {
571 ResultCatcher catcher; 585 ResultCatcher catcher;
572 catcher.RestrictToProfile(browser()->profile()); 586 catcher.RestrictToProfile(browser()->profile());
573 587
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 // Load and wait for setup 668 // Load and wait for setup
655 ExtensionTestMessageListener listener("ready", true); 669 ExtensionTestMessageListener listener("ready", true);
656 ASSERT_TRUE( 670 ASSERT_TRUE(
657 LoadExtension(test_data_dir_.AppendASCII("bluetooth/device_info"))); 671 LoadExtension(test_data_dir_.AppendASCII("bluetooth/device_info")));
658 EXPECT_TRUE(listener.WaitUntilSatisfied()); 672 EXPECT_TRUE(listener.WaitUntilSatisfied());
659 673
660 listener.Reply("go"); 674 listener.Reply("go");
661 675
662 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); 676 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
663 } 677 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698