1 // Copyright 2015 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 "extensions/common/api/printer_provider/usb_printer_manifest_data.h"
6 #include "extensions/common/manifest_test.h"
7 #include "extensions/common/value_builder.h"
8 #include "services/device/public/mojom/usb_enumeration_options.mojom.h"
9
10 namespace extensions {
11
12 class UsbPrinterManifestTest : public ManifestTest {
13 public:
UsbPrinterManifestTest()14 UsbPrinterManifestTest() {}
~UsbPrinterManifestTest()15 ~UsbPrinterManifestTest() override {}
16 };
17
TEST_F(UsbPrinterManifestTest,Filters)18 TEST_F(UsbPrinterManifestTest, Filters) {
19 scoped_refptr<Extension> extension =
20 LoadAndExpectSuccess("usb_printers_filters.json");
21 const UsbPrinterManifestData* manifest_data =
22 UsbPrinterManifestData::Get(extension.get());
23 ASSERT_TRUE(manifest_data);
24 ASSERT_EQ(2u, manifest_data->filters_.size());
25
26 {
27 const device::mojom::UsbDeviceFilter& filter = *manifest_data->filters_[0];
28 EXPECT_TRUE(filter.has_vendor_id);
29 EXPECT_EQ(1, filter.vendor_id);
30 EXPECT_TRUE(filter.has_product_id);
31 EXPECT_EQ(2, filter.product_id);
32 }
33
34 {
35 const device::mojom::UsbDeviceFilter& filter = *manifest_data->filters_[1];
36 EXPECT_TRUE(filter.has_vendor_id);
37 EXPECT_EQ(1, filter.vendor_id);
38 EXPECT_TRUE(filter.has_class_code);
39 EXPECT_EQ(2, filter.class_code);
40 EXPECT_TRUE(filter.has_subclass_code);
41 EXPECT_EQ(3, filter.subclass_code);
42 EXPECT_TRUE(filter.has_protocol_code);
43 EXPECT_EQ(4, filter.protocol_code);
44 }
45 }
46
TEST_F(UsbPrinterManifestTest,InvalidFilter)47 TEST_F(UsbPrinterManifestTest, InvalidFilter) {
48 LoadAndExpectError(
49 "usb_printers_invalid_filter.json",
50 "Only one of productId or interfaceClass may be specified.");
51 }
52
53 } // namespace extensions
54