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

Side by Side Diff: chrome/browser/metrics/chromeos_metrics_provider_unittest.cc

Issue 910433002: Fix crash on second failed connect to a paired device (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bugfix unit tests Created 5 years, 10 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
« no previous file with comments | « no previous file | chromeos/dbus/fake_bluetooth_device_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/metrics/chromeos_metrics_provider.h" 5 #include "chrome/browser/metrics/chromeos_metrics_provider.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" 10 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 provider.ProvideSystemProfileMetrics(&system_profile); 188 provider.ProvideSystemProfileMetrics(&system_profile);
189 189
190 EXPECT_TRUE(system_profile.has_hardware()); 190 EXPECT_TRUE(system_profile.has_hardware());
191 EXPECT_TRUE(system_profile.hardware().has_bluetooth()); 191 EXPECT_TRUE(system_profile.hardware().has_bluetooth());
192 192
193 EXPECT_TRUE(system_profile.hardware().bluetooth().is_present()); 193 EXPECT_TRUE(system_profile.hardware().bluetooth().is_present());
194 EXPECT_TRUE(system_profile.hardware().bluetooth().is_enabled()); 194 EXPECT_TRUE(system_profile.hardware().bluetooth().is_enabled());
195 } 195 }
196 196
197 TEST_F(ChromeOSMetricsProviderTest, BluetoothPairedDevices) { 197 TEST_F(ChromeOSMetricsProviderTest, BluetoothPairedDevices) {
198 // The fake bluetooth adapter class already claims to be paired with one 198 // The fake bluetooth adapter class already claims to be paired with two
199 // device when initialized. Add a second and third fake device to it so we 199 // device when initialized. Add a third and fourth fake device to it so we
200 // can test the cases where a device is not paired (LE device, generally) 200 // can test the cases where a device is not paired (LE device, generally)
201 // and a device that does not have Device ID information. 201 // and a device that does not have Device ID information.
202 fake_bluetooth_device_client_->CreateDevice( 202 fake_bluetooth_device_client_->CreateDevice(
203 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 203 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
204 dbus::ObjectPath(FakeBluetoothDeviceClient::kRequestPinCodePath)); 204 dbus::ObjectPath(FakeBluetoothDeviceClient::kRequestPinCodePath));
205 205
206 fake_bluetooth_device_client_->CreateDevice( 206 fake_bluetooth_device_client_->CreateDevice(
207 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 207 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
208 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath)); 208 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath));
209 209
210 FakeBluetoothDeviceClient::Properties* properties = 210 FakeBluetoothDeviceClient::Properties* properties =
211 fake_bluetooth_device_client_->GetProperties( 211 fake_bluetooth_device_client_->GetProperties(
212 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath)); 212 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath));
213 properties->paired.ReplaceValue(true); 213 properties->paired.ReplaceValue(true);
214 214
215 ChromeOSMetricsProvider provider; 215 ChromeOSMetricsProvider provider;
216 provider.OnDidCreateMetricsLog(); 216 provider.OnDidCreateMetricsLog();
217 metrics::SystemProfileProto system_profile; 217 metrics::SystemProfileProto system_profile;
218 provider.ProvideSystemProfileMetrics(&system_profile); 218 provider.ProvideSystemProfileMetrics(&system_profile);
219 219
220 ASSERT_TRUE(system_profile.has_hardware()); 220 ASSERT_TRUE(system_profile.has_hardware());
221 ASSERT_TRUE(system_profile.hardware().has_bluetooth()); 221 ASSERT_TRUE(system_profile.hardware().has_bluetooth());
222 222
223 // Only two of the devices should appear. 223 // Only three of the devices should appear.
224 EXPECT_EQ(2, system_profile.hardware().bluetooth().paired_device_size()); 224 EXPECT_EQ(3, system_profile.hardware().bluetooth().paired_device_size());
225 225
226 typedef metrics::SystemProfileProto::Hardware::Bluetooth::PairedDevice 226 typedef metrics::SystemProfileProto::Hardware::Bluetooth::PairedDevice
227 PairedDevice; 227 PairedDevice;
228 228
229 // First device should match the Paired Device object, complete with 229 // First device should match the Paired Device object, complete with
230 // parsed Device ID information. 230 // parsed Device ID information.
231 PairedDevice device1 = system_profile.hardware().bluetooth().paired_device(0); 231 PairedDevice device1 = system_profile.hardware().bluetooth().paired_device(0);
232 232
233 EXPECT_EQ(FakeBluetoothDeviceClient::kPairedDeviceClass, 233 EXPECT_EQ(FakeBluetoothDeviceClient::kPairedDeviceClass,
234 device1.bluetooth_class()); 234 device1.bluetooth_class());
235 EXPECT_EQ(PairedDevice::DEVICE_COMPUTER, device1.type()); 235 EXPECT_EQ(PairedDevice::DEVICE_COMPUTER, device1.type());
236 EXPECT_EQ(0x001122U, device1.vendor_prefix()); 236 EXPECT_EQ(0x001122U, device1.vendor_prefix());
237 EXPECT_EQ(PairedDevice::VENDOR_ID_USB, device1.vendor_id_source()); 237 EXPECT_EQ(PairedDevice::VENDOR_ID_USB, device1.vendor_id_source());
238 EXPECT_EQ(0x05ACU, device1.vendor_id()); 238 EXPECT_EQ(0x05ACU, device1.vendor_id());
239 EXPECT_EQ(0x030DU, device1.product_id()); 239 EXPECT_EQ(0x030DU, device1.product_id());
240 EXPECT_EQ(0x0306U, device1.device_id()); 240 EXPECT_EQ(0x0306U, device1.device_id());
241 241
242 // Second device should match the Confirm Passkey object, this has 242 // Third device should match the Confirm Passkey object, this has
243 // no Device ID information. 243 // no Device ID information.
244 PairedDevice device2 = system_profile.hardware().bluetooth().paired_device(1); 244 PairedDevice device2 = system_profile.hardware().bluetooth().paired_device(1);
245 245
246 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass, 246 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass,
247 device2.bluetooth_class()); 247 device2.bluetooth_class());
248 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type()); 248 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type());
249 EXPECT_EQ(0x207D74U, device2.vendor_prefix()); 249 EXPECT_EQ(0x207D74U, device2.vendor_prefix());
250 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source()); 250 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source());
251 } 251 }
OLDNEW
« no previous file with comments | « no previous file | chromeos/dbus/fake_bluetooth_device_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698