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