| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "content/browser/bluetooth/bluetooth_blacklist.h" | |
| 6 | |
| 7 #include "device/bluetooth/bluetooth_uuid.h" | |
| 8 #include "testing/gtest/include/gtest/gtest.h" | |
| 9 | |
| 10 using device::BluetoothUUID; | |
| 11 | |
| 12 namespace content { | |
| 13 | |
| 14 namespace { | |
| 15 | |
| 16 base::Optional<BluetoothUUID> Canonicalize(const std::string& str) { | |
| 17 return base::make_optional(device::BluetoothUUID(str)); | |
| 18 } | |
| 19 | |
| 20 } // namespace | |
| 21 | |
| 22 class BluetoothBlacklistTest : public ::testing::Test { | |
| 23 public: | |
| 24 BluetoothBlacklistTest() : list_(BluetoothBlacklist::Get()) { | |
| 25 // Because BluetoothBlacklist is used via a singleton instance, the data | |
| 26 // must be reset for each test. | |
| 27 list_.ResetToDefaultValuesForTest(); | |
| 28 } | |
| 29 BluetoothBlacklist& list_; | |
| 30 }; | |
| 31 | |
| 32 TEST_F(BluetoothBlacklistTest, NonExcludedUUID) { | |
| 33 BluetoothUUID non_excluded_uuid("00000000-0000-0000-0000-000000000000"); | |
| 34 EXPECT_FALSE(list_.IsExcluded(non_excluded_uuid)); | |
| 35 EXPECT_FALSE(list_.IsExcludedFromReads(non_excluded_uuid)); | |
| 36 EXPECT_FALSE(list_.IsExcludedFromWrites(non_excluded_uuid)); | |
| 37 } | |
| 38 | |
| 39 TEST_F(BluetoothBlacklistTest, ExcludeUUID) { | |
| 40 BluetoothUUID excluded_uuid("eeee"); | |
| 41 list_.Add(excluded_uuid, BluetoothBlacklist::Value::EXCLUDE); | |
| 42 EXPECT_TRUE(list_.IsExcluded(excluded_uuid)); | |
| 43 EXPECT_TRUE(list_.IsExcludedFromReads(excluded_uuid)); | |
| 44 EXPECT_TRUE(list_.IsExcludedFromWrites(excluded_uuid)); | |
| 45 } | |
| 46 | |
| 47 TEST_F(BluetoothBlacklistTest, ExcludeReadsUUID) { | |
| 48 BluetoothUUID exclude_reads_uuid("eeee"); | |
| 49 list_.Add(exclude_reads_uuid, BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 50 EXPECT_FALSE(list_.IsExcluded(exclude_reads_uuid)); | |
| 51 EXPECT_TRUE(list_.IsExcludedFromReads(exclude_reads_uuid)); | |
| 52 EXPECT_FALSE(list_.IsExcludedFromWrites(exclude_reads_uuid)); | |
| 53 } | |
| 54 | |
| 55 TEST_F(BluetoothBlacklistTest, ExcludeWritesUUID) { | |
| 56 BluetoothUUID exclude_writes_uuid("eeee"); | |
| 57 list_.Add(exclude_writes_uuid, BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 58 EXPECT_FALSE(list_.IsExcluded(exclude_writes_uuid)); | |
| 59 EXPECT_FALSE(list_.IsExcludedFromReads(exclude_writes_uuid)); | |
| 60 EXPECT_TRUE(list_.IsExcludedFromWrites(exclude_writes_uuid)); | |
| 61 } | |
| 62 | |
| 63 TEST_F(BluetoothBlacklistTest, InvalidUUID) { | |
| 64 BluetoothUUID empty_string_uuid(""); | |
| 65 EXPECT_DEATH_IF_SUPPORTED( | |
| 66 list_.Add(empty_string_uuid, BluetoothBlacklist::Value::EXCLUDE), ""); | |
| 67 EXPECT_DEATH_IF_SUPPORTED(list_.IsExcluded(empty_string_uuid), ""); | |
| 68 EXPECT_DEATH_IF_SUPPORTED(list_.IsExcludedFromReads(empty_string_uuid), ""); | |
| 69 EXPECT_DEATH_IF_SUPPORTED(list_.IsExcludedFromWrites(empty_string_uuid), ""); | |
| 70 | |
| 71 BluetoothUUID invalid_string_uuid("Not a valid UUID string."); | |
| 72 EXPECT_DEATH_IF_SUPPORTED( | |
| 73 list_.Add(invalid_string_uuid, BluetoothBlacklist::Value::EXCLUDE), ""); | |
| 74 EXPECT_DEATH_IF_SUPPORTED(list_.IsExcluded(invalid_string_uuid), ""); | |
| 75 EXPECT_DEATH_IF_SUPPORTED(list_.IsExcludedFromReads(invalid_string_uuid), ""); | |
| 76 EXPECT_DEATH_IF_SUPPORTED(list_.IsExcludedFromWrites(invalid_string_uuid), | |
| 77 ""); | |
| 78 } | |
| 79 | |
| 80 // Abreviated UUIDs used to create, or test against, the blacklist work | |
| 81 // correctly compared to full UUIDs. | |
| 82 TEST_F(BluetoothBlacklistTest, AbreviatedUUIDs) { | |
| 83 list_.Add(BluetoothUUID("aaaa"), BluetoothBlacklist::Value::EXCLUDE); | |
| 84 EXPECT_TRUE( | |
| 85 list_.IsExcluded(BluetoothUUID("0000aaaa-0000-1000-8000-00805f9b34fb"))); | |
| 86 | |
| 87 list_.Add(BluetoothUUID("0000bbbb-0000-1000-8000-00805f9b34fb"), | |
| 88 BluetoothBlacklist::Value::EXCLUDE); | |
| 89 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("bbbb"))); | |
| 90 } | |
| 91 | |
| 92 // Tests permutations of previous values and then Add() with a new value, | |
| 93 // requiring result to be strictest result of the combination. | |
| 94 TEST_F(BluetoothBlacklistTest, Add_MergingExcludeValues) { | |
| 95 list_.Add(BluetoothUUID("ee01"), BluetoothBlacklist::Value::EXCLUDE); | |
| 96 list_.Add(BluetoothUUID("ee01"), BluetoothBlacklist::Value::EXCLUDE); | |
| 97 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("ee01"))); | |
| 98 | |
| 99 list_.Add(BluetoothUUID("ee02"), BluetoothBlacklist::Value::EXCLUDE); | |
| 100 list_.Add(BluetoothUUID("ee02"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 101 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("ee02"))); | |
| 102 | |
| 103 list_.Add(BluetoothUUID("ee03"), BluetoothBlacklist::Value::EXCLUDE); | |
| 104 list_.Add(BluetoothUUID("ee03"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 105 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("ee03"))); | |
| 106 | |
| 107 list_.Add(BluetoothUUID("ee04"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 108 list_.Add(BluetoothUUID("ee04"), BluetoothBlacklist::Value::EXCLUDE); | |
| 109 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("ee04"))); | |
| 110 | |
| 111 list_.Add(BluetoothUUID("ee05"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 112 list_.Add(BluetoothUUID("ee05"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 113 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("ee05"))); | |
| 114 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("ee05"))); | |
| 115 | |
| 116 list_.Add(BluetoothUUID("ee06"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 117 list_.Add(BluetoothUUID("ee06"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 118 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("ee06"))); | |
| 119 | |
| 120 list_.Add(BluetoothUUID("ee07"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 121 list_.Add(BluetoothUUID("ee07"), BluetoothBlacklist::Value::EXCLUDE); | |
| 122 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("ee07"))); | |
| 123 | |
| 124 list_.Add(BluetoothUUID("ee08"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 125 list_.Add(BluetoothUUID("ee08"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 126 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("ee08"))); | |
| 127 | |
| 128 list_.Add(BluetoothUUID("ee09"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 129 list_.Add(BluetoothUUID("ee09"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 130 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("ee09"))); | |
| 131 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("ee09"))); | |
| 132 } | |
| 133 | |
| 134 // Tests Add() with string that contains many UUID:exclusion value pairs, | |
| 135 // checking that the correct blacklist entries are created for them. | |
| 136 TEST_F(BluetoothBlacklistTest, Add_StringWithValidEntries) { | |
| 137 list_.Add( | |
| 138 "0001:e,0002:r,0003:w, " // Single items. | |
| 139 "0004:r,0004:r, " // Duplicate items. | |
| 140 "0005:r,0005:w, " // Items that merge. | |
| 141 "00000006:e, " // 8 char UUID. | |
| 142 "00000007-0000-1000-8000-00805f9b34fb:e"); | |
| 143 | |
| 144 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0001"))); | |
| 145 | |
| 146 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("0002"))); | |
| 147 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("0002"))); | |
| 148 | |
| 149 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("0003"))); | |
| 150 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("0003"))); | |
| 151 | |
| 152 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("0004"))); | |
| 153 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("0004"))); | |
| 154 | |
| 155 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0005"))); | |
| 156 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0006"))); | |
| 157 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0007"))); | |
| 158 } | |
| 159 | |
| 160 // Tests Add() with strings that contain no valid UUID:exclusion value. | |
| 161 TEST_F(BluetoothBlacklistTest, Add_StringsWithNoValidEntries) { | |
| 162 size_t previous_list_size = list_.size(); | |
| 163 list_.Add(""); | |
| 164 list_.Add("~!@#$%^&*()-_=+[]{}/*-"); | |
| 165 list_.Add(":"); | |
| 166 list_.Add(","); | |
| 167 list_.Add(",,"); | |
| 168 list_.Add(",:,"); | |
| 169 list_.Add("1234:"); | |
| 170 list_.Add("1234:q"); | |
| 171 list_.Add("1234:E"); | |
| 172 list_.Add("1234:R"); | |
| 173 list_.Add("1234:W"); | |
| 174 list_.Add("1234:ee"); | |
| 175 list_.Add("1234 :e"); | |
| 176 list_.Add("1234: e"); | |
| 177 list_.Add("1:e"); | |
| 178 list_.Add("1:r"); | |
| 179 list_.Add("1:w"); | |
| 180 list_.Add("00001800-0000-1000-8000-00805f9b34fb:ee"); | |
| 181 list_.Add("z0001800-0000-1000-8000-00805f9b34fb:e"); | |
| 182 list_.Add("☯"); | |
| 183 EXPECT_EQ(previous_list_size, list_.size()); | |
| 184 } | |
| 185 | |
| 186 // Tests Add() with strings that contain exactly one valid UUID:exclusion value | |
| 187 // pair, and optionally other issues in the string that are ignored. | |
| 188 TEST_F(BluetoothBlacklistTest, Add_StringsWithOneValidEntry) { | |
| 189 size_t previous_list_size = list_.size(); | |
| 190 list_.Add("0001:e"); | |
| 191 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 192 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0001"))); | |
| 193 | |
| 194 list_.Add("00000002:e"); | |
| 195 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 196 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0002"))); | |
| 197 | |
| 198 list_.Add("00000003-0000-1000-8000-00805f9b34fb:e"); | |
| 199 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 200 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0003"))); | |
| 201 | |
| 202 list_.Add(" 0004:e "); | |
| 203 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 204 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0004"))); | |
| 205 | |
| 206 list_.Add(", 0005:e ,"); | |
| 207 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 208 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0005"))); | |
| 209 | |
| 210 list_.Add(":, 0006:e ,,no"); | |
| 211 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 212 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0006"))); | |
| 213 | |
| 214 list_.Add("0007:, 0008:e"); | |
| 215 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 216 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0008"))); | |
| 217 | |
| 218 list_.Add("\r\n0009:e\n\r"); | |
| 219 EXPECT_EQ(++previous_list_size, list_.size()); | |
| 220 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("0009"))); | |
| 221 } | |
| 222 | |
| 223 TEST_F(BluetoothBlacklistTest, IsExcluded_BluetoothScanFilter_ReturnsFalse) { | |
| 224 list_.Add(BluetoothUUID("eeee"), BluetoothBlacklist::Value::EXCLUDE); | |
| 225 list_.Add(BluetoothUUID("ee01"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 226 list_.Add(BluetoothUUID("ee02"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 227 { | |
| 228 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> empty_filters; | |
| 229 EXPECT_FALSE(list_.IsExcluded(empty_filters)); | |
| 230 } | |
| 231 { | |
| 232 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> single_empty_filter(1); | |
| 233 | |
| 234 single_empty_filter[0] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 235 single_empty_filter[0]->services = | |
| 236 mojo::Array<base::Optional<BluetoothUUID>>(); | |
| 237 | |
| 238 EXPECT_EQ(0u, single_empty_filter[0]->services.size()); | |
| 239 EXPECT_FALSE(list_.IsExcluded(single_empty_filter)); | |
| 240 } | |
| 241 { | |
| 242 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> | |
| 243 single_non_matching_filter(1); | |
| 244 | |
| 245 single_non_matching_filter[0] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 246 single_non_matching_filter[0]->services.push_back(Canonicalize("0000")); | |
| 247 | |
| 248 EXPECT_FALSE(list_.IsExcluded(single_non_matching_filter)); | |
| 249 } | |
| 250 { | |
| 251 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> | |
| 252 multiple_non_matching_filters(2); | |
| 253 | |
| 254 multiple_non_matching_filters[0] = | |
| 255 blink::mojom::WebBluetoothScanFilter::New(); | |
| 256 multiple_non_matching_filters[0]->services.push_back(Canonicalize("0000")); | |
| 257 multiple_non_matching_filters[0]->services.push_back(Canonicalize("ee01")); | |
| 258 | |
| 259 multiple_non_matching_filters[1] = | |
| 260 blink::mojom::WebBluetoothScanFilter::New(); | |
| 261 multiple_non_matching_filters[1]->services.push_back(Canonicalize("ee02")); | |
| 262 multiple_non_matching_filters[1]->services.push_back(Canonicalize("0003")); | |
| 263 | |
| 264 EXPECT_FALSE(list_.IsExcluded(multiple_non_matching_filters)); | |
| 265 } | |
| 266 } | |
| 267 | |
| 268 TEST_F(BluetoothBlacklistTest, IsExcluded_BluetoothScanFilter_ReturnsTrue) { | |
| 269 list_.Add(BluetoothUUID("eeee"), BluetoothBlacklist::Value::EXCLUDE); | |
| 270 { | |
| 271 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> single_matching_filter( | |
| 272 1); | |
| 273 | |
| 274 single_matching_filter[0] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 275 single_matching_filter[0]->services.push_back(Canonicalize("eeee")); | |
| 276 | |
| 277 EXPECT_TRUE(list_.IsExcluded(single_matching_filter)); | |
| 278 } | |
| 279 { | |
| 280 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> first_matching_filter( | |
| 281 2); | |
| 282 | |
| 283 first_matching_filter[0] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 284 first_matching_filter[0]->services.push_back(Canonicalize("eeee")); | |
| 285 first_matching_filter[0]->services.push_back(Canonicalize("0001")); | |
| 286 | |
| 287 first_matching_filter[1] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 288 first_matching_filter[1]->services.push_back(Canonicalize("0002")); | |
| 289 first_matching_filter[1]->services.push_back(Canonicalize("0003")); | |
| 290 | |
| 291 EXPECT_TRUE(list_.IsExcluded(first_matching_filter)); | |
| 292 } | |
| 293 { | |
| 294 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> last_matching_filter( | |
| 295 2); | |
| 296 | |
| 297 last_matching_filter[0] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 298 last_matching_filter[0]->services.push_back(Canonicalize("0001")); | |
| 299 last_matching_filter[0]->services.push_back(Canonicalize("0001")); | |
| 300 | |
| 301 last_matching_filter[1] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 302 last_matching_filter[1]->services.push_back(Canonicalize("0002")); | |
| 303 last_matching_filter[1]->services.push_back(Canonicalize("eeee")); | |
| 304 | |
| 305 EXPECT_TRUE(list_.IsExcluded(last_matching_filter)); | |
| 306 } | |
| 307 { | |
| 308 mojo::Array<blink::mojom::WebBluetoothScanFilterPtr> | |
| 309 multiple_matching_filters(2); | |
| 310 | |
| 311 multiple_matching_filters[0] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 312 multiple_matching_filters[0]->services.push_back(Canonicalize("eeee")); | |
| 313 multiple_matching_filters[0]->services.push_back(Canonicalize("eeee")); | |
| 314 | |
| 315 multiple_matching_filters[1] = blink::mojom::WebBluetoothScanFilter::New(); | |
| 316 multiple_matching_filters[1]->services.push_back(Canonicalize("eeee")); | |
| 317 multiple_matching_filters[1]->services.push_back(Canonicalize("eeee")); | |
| 318 | |
| 319 EXPECT_TRUE(list_.IsExcluded(multiple_matching_filters)); | |
| 320 } | |
| 321 } | |
| 322 | |
| 323 TEST_F(BluetoothBlacklistTest, RemoveExcludedUUIDs_NonMatching) { | |
| 324 list_.Add(BluetoothUUID("eeee"), BluetoothBlacklist::Value::EXCLUDE); | |
| 325 list_.Add(BluetoothUUID("ee01"), BluetoothBlacklist::Value::EXCLUDE_READS); | |
| 326 list_.Add(BluetoothUUID("ee02"), BluetoothBlacklist::Value::EXCLUDE_WRITES); | |
| 327 | |
| 328 // options.optional_services should be the same before and after | |
| 329 // RemoveExcludedUUIDs(). | |
| 330 { | |
| 331 // Empty optional_services. | |
| 332 blink::mojom::WebBluetoothRequestDeviceOptions options; | |
| 333 options.optional_services = mojo::Array<base::Optional<BluetoothUUID>>(); | |
| 334 | |
| 335 mojo::Array<base::Optional<BluetoothUUID>> expected = | |
| 336 options.optional_services.Clone(); | |
| 337 | |
| 338 list_.RemoveExcludedUUIDs(&options); | |
| 339 EXPECT_TRUE(options.optional_services.Equals(expected)); | |
| 340 } | |
| 341 { | |
| 342 // One non-matching service in optional_services. | |
| 343 blink::mojom::WebBluetoothRequestDeviceOptions options; | |
| 344 options.optional_services.push_back(Canonicalize("0000")); | |
| 345 | |
| 346 mojo::Array<base::Optional<BluetoothUUID>> expected = | |
| 347 options.optional_services.Clone(); | |
| 348 | |
| 349 list_.RemoveExcludedUUIDs(&options); | |
| 350 EXPECT_TRUE(options.optional_services.Equals(expected)); | |
| 351 } | |
| 352 { | |
| 353 // Multiple non-matching services in optional_services. | |
| 354 blink::mojom::WebBluetoothRequestDeviceOptions options; | |
| 355 options.optional_services.push_back(Canonicalize("0000")); | |
| 356 options.optional_services.push_back(Canonicalize("ee01")); | |
| 357 options.optional_services.push_back(Canonicalize("ee02")); | |
| 358 options.optional_services.push_back(Canonicalize("0003")); | |
| 359 | |
| 360 mojo::Array<base::Optional<BluetoothUUID>> expected = | |
| 361 options.optional_services.Clone(); | |
| 362 | |
| 363 list_.RemoveExcludedUUIDs(&options); | |
| 364 EXPECT_TRUE(options.optional_services.Equals(expected)); | |
| 365 } | |
| 366 } | |
| 367 | |
| 368 TEST_F(BluetoothBlacklistTest, RemoveExcludedUuids_Matching) { | |
| 369 list_.Add(BluetoothUUID("eeee"), BluetoothBlacklist::Value::EXCLUDE); | |
| 370 list_.Add(BluetoothUUID("eee2"), BluetoothBlacklist::Value::EXCLUDE); | |
| 371 list_.Add(BluetoothUUID("eee3"), BluetoothBlacklist::Value::EXCLUDE); | |
| 372 list_.Add(BluetoothUUID("eee4"), BluetoothBlacklist::Value::EXCLUDE); | |
| 373 { | |
| 374 // Single matching service in optional_services. | |
| 375 blink::mojom::WebBluetoothRequestDeviceOptions options; | |
| 376 options.optional_services.push_back(Canonicalize("eeee")); | |
| 377 | |
| 378 mojo::Array<base::Optional<BluetoothUUID>> expected; | |
| 379 | |
| 380 list_.RemoveExcludedUUIDs(&options); | |
| 381 | |
| 382 EXPECT_TRUE(options.optional_services.Equals(expected)); | |
| 383 } | |
| 384 { | |
| 385 // Single matching of many services in optional_services. | |
| 386 blink::mojom::WebBluetoothRequestDeviceOptions options; | |
| 387 options.optional_services.push_back(Canonicalize("0000")); | |
| 388 options.optional_services.push_back(Canonicalize("eeee")); | |
| 389 options.optional_services.push_back(Canonicalize("0001")); | |
| 390 | |
| 391 mojo::Array<base::Optional<BluetoothUUID>> expected; | |
| 392 expected.push_back(Canonicalize("0000")); | |
| 393 expected.push_back(Canonicalize("0001")); | |
| 394 | |
| 395 list_.RemoveExcludedUUIDs(&options); | |
| 396 EXPECT_TRUE(options.optional_services.Equals(expected)); | |
| 397 } | |
| 398 { | |
| 399 // All matching of many services in optional_services. | |
| 400 blink::mojom::WebBluetoothRequestDeviceOptions options; | |
| 401 options.optional_services.push_back(Canonicalize("eee2")); | |
| 402 options.optional_services.push_back(Canonicalize("eee4")); | |
| 403 options.optional_services.push_back(Canonicalize("eee3")); | |
| 404 options.optional_services.push_back(Canonicalize("eeee")); | |
| 405 | |
| 406 mojo::Array<base::Optional<BluetoothUUID>> expected; | |
| 407 | |
| 408 list_.RemoveExcludedUUIDs(&options); | |
| 409 EXPECT_TRUE(options.optional_services.Equals(expected)); | |
| 410 } | |
| 411 } | |
| 412 | |
| 413 TEST_F(BluetoothBlacklistTest, VerifyDefaultBlacklistSize) { | |
| 414 // REMINDER: ADD new blacklist items to tests below for each exclusion type. | |
| 415 EXPECT_EQ(13u, list_.size()); | |
| 416 } | |
| 417 | |
| 418 TEST_F(BluetoothBlacklistTest, VerifyDefaultExcludeList) { | |
| 419 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("1800"))); | |
| 420 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("1801"))); | |
| 421 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("1812"))); | |
| 422 EXPECT_TRUE( | |
| 423 list_.IsExcluded(BluetoothUUID("00001530-1212-efde-1523-785feabcd123"))); | |
| 424 EXPECT_TRUE( | |
| 425 list_.IsExcluded(BluetoothUUID("f000ffc0-0451-4000-b000-000000000000"))); | |
| 426 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("00060000"))); | |
| 427 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("fffd"))); | |
| 428 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("2a02"))); | |
| 429 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("2a03"))); | |
| 430 EXPECT_TRUE(list_.IsExcluded(BluetoothUUID("2a25"))); | |
| 431 EXPECT_FALSE( | |
| 432 list_.IsExcluded(BluetoothUUID("bad1c9a2-9a5b-4015-8b60-1579bbbf2135"))); | |
| 433 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("2902"))); | |
| 434 EXPECT_FALSE(list_.IsExcluded(BluetoothUUID("2903"))); | |
| 435 EXPECT_TRUE( | |
| 436 list_.IsExcluded(BluetoothUUID("bad2ddcf-60db-45cd-bef9-fd72b153cf7c"))); | |
| 437 EXPECT_FALSE( | |
| 438 list_.IsExcluded(BluetoothUUID("bad3ec61-3cc3-4954-9702-7977df514114"))); | |
| 439 } | |
| 440 | |
| 441 TEST_F(BluetoothBlacklistTest, VerifyDefaultExcludeReadList) { | |
| 442 EXPECT_FALSE(list_.IsExcludedFromReads(BluetoothUUID("1800"))); | |
| 443 EXPECT_FALSE(list_.IsExcludedFromReads(BluetoothUUID("1801"))); | |
| 444 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("1812"))); | |
| 445 EXPECT_TRUE(list_.IsExcludedFromReads( | |
| 446 BluetoothUUID("00001530-1212-efde-1523-785feabcd123"))); | |
| 447 EXPECT_TRUE(list_.IsExcludedFromReads( | |
| 448 BluetoothUUID("f000ffc0-0451-4000-b000-000000000000"))); | |
| 449 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("00060000"))); | |
| 450 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("fffd"))); | |
| 451 EXPECT_FALSE(list_.IsExcludedFromReads(BluetoothUUID("2a02"))); | |
| 452 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("2a03"))); | |
| 453 EXPECT_TRUE(list_.IsExcludedFromReads(BluetoothUUID("2a25"))); | |
| 454 EXPECT_TRUE(list_.IsExcludedFromReads( | |
| 455 BluetoothUUID("bad1c9a2-9a5b-4015-8b60-1579bbbf2135"))); | |
| 456 EXPECT_FALSE(list_.IsExcludedFromReads(BluetoothUUID("2902"))); | |
| 457 EXPECT_FALSE(list_.IsExcludedFromReads(BluetoothUUID("2903"))); | |
| 458 EXPECT_TRUE(list_.IsExcludedFromReads( | |
| 459 BluetoothUUID("bad2ddcf-60db-45cd-bef9-fd72b153cf7c"))); | |
| 460 EXPECT_TRUE(list_.IsExcludedFromReads( | |
| 461 BluetoothUUID("bad3ec61-3cc3-4954-9702-7977df514114"))); | |
| 462 } | |
| 463 | |
| 464 TEST_F(BluetoothBlacklistTest, VerifyDefaultExcludeWriteList) { | |
| 465 EXPECT_FALSE(list_.IsExcludedFromWrites(BluetoothUUID("1800"))); | |
| 466 EXPECT_FALSE(list_.IsExcludedFromWrites(BluetoothUUID("1801"))); | |
| 467 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("1812"))); | |
| 468 EXPECT_TRUE(list_.IsExcludedFromWrites( | |
| 469 BluetoothUUID("00001530-1212-efde-1523-785feabcd123"))); | |
| 470 EXPECT_TRUE(list_.IsExcludedFromWrites( | |
| 471 BluetoothUUID("f000ffc0-0451-4000-b000-000000000000"))); | |
| 472 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("00060000"))); | |
| 473 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("fffd"))); | |
| 474 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("2a02"))); | |
| 475 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("2a03"))); | |
| 476 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("2a25"))); | |
| 477 EXPECT_FALSE(list_.IsExcludedFromWrites( | |
| 478 BluetoothUUID("bad1c9a2-9a5b-4015-8b60-1579bbbf2135"))); | |
| 479 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("2902"))); | |
| 480 EXPECT_TRUE(list_.IsExcludedFromWrites(BluetoothUUID("2903"))); | |
| 481 EXPECT_TRUE(list_.IsExcludedFromWrites( | |
| 482 BluetoothUUID("bad2ddcf-60db-45cd-bef9-fd72b153cf7c"))); | |
| 483 EXPECT_FALSE(list_.IsExcludedFromWrites( | |
| 484 BluetoothUUID("bad3ec61-3cc3-4954-9702-7977df514114"))); | |
| 485 } | |
| 486 | |
| 487 } // namespace content | |
| OLD | NEW |