From 945c90df408fc010d5e56e0768881d26e451adad Mon Sep 17 00:00:00 2001 From: ortuno Date: Mon, 31 Aug 2015 18:47:08 -0700 Subject: bluetooth-advertising: Fix wrong assignment and append of wrong type The assignment statements where flipped so service data was always null. Also the wrong function was being used to append to the writer which caused chrome to crash. BUG=525313 Review URL: https://codereview.chromium.org/1317933003 Cr-Commit-Position: refs/heads/master@{#346555} --- device/BUILD.gn | 1 + device/bluetooth/bluetooth_advertisement.h | 4 +- .../bluetooth/bluetooth_advertisement_unittest.cc | 70 ++++++++++++++++++++++ device/device_tests.gyp | 1 + 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 device/bluetooth/bluetooth_advertisement_unittest.cc (limited to 'device') diff --git a/device/BUILD.gn b/device/BUILD.gn index 9a26321..f147303 100644 --- a/device/BUILD.gn +++ b/device/BUILD.gn @@ -34,6 +34,7 @@ test("device_unittests") { "bluetooth/bluetooth_adapter_unittest.cc", "bluetooth/bluetooth_adapter_win_unittest.cc", "bluetooth/bluetooth_advertisement_chromeos_unittest.cc", + "bluetooth/bluetooth_advertisement_unittest.cc", "bluetooth/bluetooth_audio_sink_chromeos_unittest.cc", "bluetooth/bluetooth_chromeos_unittest.cc", "bluetooth/bluetooth_device_unittest.cc", diff --git a/device/bluetooth/bluetooth_advertisement.h b/device/bluetooth/bluetooth_advertisement.h index 46f19b1..eb4cebb 100644 --- a/device/bluetooth/bluetooth_advertisement.h +++ b/device/bluetooth/bluetooth_advertisement.h @@ -71,10 +71,10 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothAdvertisement manufacturer_data_ = manufacturer_data.Pass(); } void set_solicit_uuids(scoped_ptr solicit_uuids) { - solicit_uuids = solicit_uuids_.Pass(); + solicit_uuids_ = solicit_uuids.Pass(); } void set_service_data(scoped_ptr service_data) { - service_data = service_data_.Pass(); + service_data_ = service_data.Pass(); } void set_include_tx_power(bool include_tx_power) { diff --git a/device/bluetooth/bluetooth_advertisement_unittest.cc b/device/bluetooth/bluetooth_advertisement_unittest.cc new file mode 100644 index 0000000..fe95ba3 --- /dev/null +++ b/device/bluetooth/bluetooth_advertisement_unittest.cc @@ -0,0 +1,70 @@ +// 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 "device/bluetooth/bluetooth_advertisement.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace device { + +namespace { + +TEST(BluetoothAdvertisementTest, DataMembersAreAssignedCorrectly) { + // Sample manufacturer data. + BluetoothAdvertisement::ManufacturerData manufacturer_data; + std::vector sample_data(5, 0); + manufacturer_data[0] = std::vector(5, 0); + // Sample UUID List. + const BluetoothAdvertisement::UUIDList uuids(1, "1234"); + // Sample Service Data. + BluetoothAdvertisement::ServiceData service_data; + service_data["1234"] = std::vector(5, 0); + + BluetoothAdvertisement::Data data( + BluetoothAdvertisement::ADVERTISEMENT_TYPE_BROADCAST); + ASSERT_EQ(data.type(), BluetoothAdvertisement::ADVERTISEMENT_TYPE_BROADCAST); + + // Try without assiging Service UUID. + ASSERT_FALSE(data.service_uuids().get()); + // Assign Service UUID. + data.set_service_uuids( + make_scoped_ptr(new BluetoothAdvertisement::UUIDList(uuids))); + // Retrieve Service UUID. + ASSERT_EQ(*data.service_uuids(), uuids); + // Retrieve again. + ASSERT_FALSE(data.service_uuids().get()); + + // Try without assigning Manufacturer Data. + ASSERT_FALSE(data.manufacturer_data().get()); + // Assign Manufacturer Data. + data.set_manufacturer_data(make_scoped_ptr( + new BluetoothAdvertisement::ManufacturerData(manufacturer_data))); + // Retrieve Manufacturer Data. + ASSERT_EQ(*data.manufacturer_data(), manufacturer_data); + // Retrieve again. + ASSERT_FALSE(data.manufacturer_data().get()); + + // Try without assigning Solicit UUIDs. + ASSERT_FALSE(data.solicit_uuids().get()); + // Assign Solicit UUIDs. + data.set_solicit_uuids( + make_scoped_ptr(new BluetoothAdvertisement::UUIDList(uuids))); + // Retrieve Solicit UUIDs. + ASSERT_EQ(*data.solicit_uuids(), uuids); + // Retieve again. + ASSERT_FALSE(data.solicit_uuids().get()); + + // Try without assigning Service Data. + ASSERT_FALSE(data.service_data().get()); + // Assign Service Data. + data.set_service_data( + make_scoped_ptr(new BluetoothAdvertisement::ServiceData(service_data))); + // Retrieve Service Data. + ASSERT_EQ(*data.service_data(), service_data); + // Retrieve again. + ASSERT_FALSE(data.service_data().get()); +} + +} // namespace + +} // namespace device diff --git a/device/device_tests.gyp b/device/device_tests.gyp index e1b3bad..82f3dcb 100644 --- a/device/device_tests.gyp +++ b/device/device_tests.gyp @@ -40,6 +40,7 @@ 'bluetooth/bluetooth_adapter_unittest.cc', 'bluetooth/bluetooth_adapter_win_unittest.cc', 'bluetooth/bluetooth_advertisement_chromeos_unittest.cc', + 'bluetooth/bluetooth_advertisement_unittest.cc', 'bluetooth/bluetooth_audio_sink_chromeos_unittest.cc', 'bluetooth/bluetooth_chromeos_unittest.cc', 'bluetooth/bluetooth_device_unittest.cc', -- cgit v1.1