summaryrefslogtreecommitdiffstats
path: root/device
diff options
context:
space:
mode:
authorortuno <ortuno@chromium.org>2015-08-31 18:47:08 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-01 01:47:40 +0000
commit945c90df408fc010d5e56e0768881d26e451adad (patch)
tree4192857a10c926755551fdfdc023cfa3b585e73e /device
parent2f57aa5dce866b4a2acb7028a954c42b0e8724a3 (diff)
downloadchromium_src-945c90df408fc010d5e56e0768881d26e451adad.zip
chromium_src-945c90df408fc010d5e56e0768881d26e451adad.tar.gz
chromium_src-945c90df408fc010d5e56e0768881d26e451adad.tar.bz2
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}
Diffstat (limited to 'device')
-rw-r--r--device/BUILD.gn1
-rw-r--r--device/bluetooth/bluetooth_advertisement.h4
-rw-r--r--device/bluetooth/bluetooth_advertisement_unittest.cc70
-rw-r--r--device/device_tests.gyp1
4 files changed, 74 insertions, 2 deletions
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<UUIDList> solicit_uuids) {
- solicit_uuids = solicit_uuids_.Pass();
+ solicit_uuids_ = solicit_uuids.Pass();
}
void set_service_data(scoped_ptr<ServiceData> 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<uint8_t> sample_data(5, 0);
+ manufacturer_data[0] = std::vector<uint8_t>(5, 0);
+ // Sample UUID List.
+ const BluetoothAdvertisement::UUIDList uuids(1, "1234");
+ // Sample Service Data.
+ BluetoothAdvertisement::ServiceData service_data;
+ service_data["1234"] = std::vector<uint8_t>(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',