diff options
author | reillyg <reillyg@chromium.org> | 2014-08-28 22:52:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-29 05:53:46 +0000 |
commit | f4dc9d143de2350fc4879c178059737997944016 (patch) | |
tree | de808301f613297af60b8ce5bdee43cc2b511264 /device/hid/hid_device_filter_unittest.cc | |
parent | 3a05d24b124114e117c2d81592edbd14bbcf1b1c (diff) | |
download | chromium_src-f4dc9d143de2350fc4879c178059737997944016.zip chromium_src-f4dc9d143de2350fc4879c178059737997944016.tar.gz chromium_src-f4dc9d143de2350fc4879c178059737997944016.tar.bz2 |
Add more generic filters to the chrome.hid.getDevices API.
Instead of specifying each of the USB vendor and product ID pairs an
app has permission to open this API extension allows filtering of
devices by vendor and product IDs as well as HID usage pages and
usages. The 'vendorId' and 'productId' properties of GetDevicesOptions
are still supported for backwards compatibility.
BUG=
Review URL: https://codereview.chromium.org/514923002
Cr-Commit-Position: refs/heads/master@{#292577}
Diffstat (limited to 'device/hid/hid_device_filter_unittest.cc')
-rw-r--r-- | device/hid/hid_device_filter_unittest.cc | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/device/hid/hid_device_filter_unittest.cc b/device/hid/hid_device_filter_unittest.cc new file mode 100644 index 0000000..599dda4 --- /dev/null +++ b/device/hid/hid_device_filter_unittest.cc @@ -0,0 +1,116 @@ +// Copyright 2014 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/hid/hid_device_filter.h" +#include "device/hid/hid_device_info.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace device { + +namespace { + +class HidFilterTest : public testing::Test { + public: + virtual void SetUp() OVERRIDE { + device_info_.vendor_id = 0x046d; + device_info_.product_id = 0xc31c; + + HidCollectionInfo collection; + collection.usage.usage_page = HidUsageAndPage::kPageKeyboard; + collection.usage.usage = 0x01; + device_info_.collections.push_back(collection); + } + + protected: + HidDeviceInfo device_info_; +}; + +TEST_F(HidFilterTest, MatchAny) { + HidDeviceFilter filter; + ASSERT_TRUE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchVendorId) { + HidDeviceFilter filter; + filter.SetVendorId(0x046d); + ASSERT_TRUE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchVendorIdNegative) { + HidDeviceFilter filter; + filter.SetVendorId(0x18d1); + ASSERT_FALSE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchProductId) { + HidDeviceFilter filter; + filter.SetVendorId(0x046d); + filter.SetProductId(0xc31c); + ASSERT_TRUE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchProductIdNegative) { + HidDeviceFilter filter; + filter.SetVendorId(0x046d); + filter.SetProductId(0x0801); + ASSERT_FALSE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchUsagePage) { + HidDeviceFilter filter; + filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); + ASSERT_TRUE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchUsagePageNegative) { + HidDeviceFilter filter; + filter.SetUsagePage(HidUsageAndPage::kPageLed); + ASSERT_FALSE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchVendorAndUsagePage) { + HidDeviceFilter filter; + filter.SetVendorId(0x046d); + filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); + ASSERT_TRUE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchUsageAndPage) { + HidDeviceFilter filter; + filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); + filter.SetUsage(0x01); + ASSERT_TRUE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchUsageAndPageNegative) { + HidDeviceFilter filter; + filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); + filter.SetUsage(0x02); + ASSERT_FALSE(filter.Matches(device_info_)); +} + +TEST_F(HidFilterTest, MatchEmptyFilterListNegative) { + std::vector<HidDeviceFilter> filters; + ASSERT_FALSE(HidDeviceFilter::MatchesAny(device_info_, filters)); +} + +TEST_F(HidFilterTest, MatchFilterList) { + std::vector<HidDeviceFilter> filters; + HidDeviceFilter filter; + filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); + filters.push_back(filter); + ASSERT_TRUE(HidDeviceFilter::MatchesAny(device_info_, filters)); +} + +TEST_F(HidFilterTest, MatchFilterListNegative) { + std::vector<HidDeviceFilter> filters; + HidDeviceFilter filter; + filter.SetUsagePage(HidUsageAndPage::kPageLed); + filters.push_back(filter); + ASSERT_FALSE(HidDeviceFilter::MatchesAny(device_info_, filters)); +} + +} // namespace + +} // namespace device |