| Index: extensions/browser/api/hid/hid_apitest.cc
|
| diff --git a/extensions/browser/api/hid/hid_apitest.cc b/extensions/browser/api/hid/hid_apitest.cc
|
| index c53bc336ce8c3bfc2314951a8a4d3170e2b2193a..ac114f2cd1421e275a8f8a79248dba595c671cad 100644
|
| --- a/extensions/browser/api/hid/hid_apitest.cc
|
| +++ b/extensions/browser/api/hid/hid_apitest.cc
|
| @@ -10,6 +10,8 @@
|
| #include "device/hid/hid_device_info.h"
|
| #include "device/hid/hid_service.h"
|
| #include "device/hid/hid_usage_and_page.h"
|
| +#include "extensions/browser/api/device_permissions_prompt.h"
|
| +#include "extensions/shell/browser/shell_extensions_api_client.h"
|
| #include "extensions/shell/test/shell_apitest.h"
|
| #include "extensions/test/extension_test_message_listener.h"
|
| #include "net/base/io_buffer.h"
|
| @@ -157,7 +159,7 @@ class MockHidService : public HidService {
|
| kReportDescriptor + sizeof(kReportDescriptor));
|
| }
|
| HidService::AddDevice(new HidDeviceInfo(device_id, vendor_id, product_id,
|
| - "", "", kHIDBusTypeUSB,
|
| + "Test Device", "A", kHIDBusTypeUSB,
|
| report_descriptor));
|
| }
|
|
|
| @@ -170,6 +172,38 @@ class MockHidService : public HidService {
|
|
|
| namespace extensions {
|
|
|
| +class TestDevicePermissionsPrompt
|
| + : public DevicePermissionsPrompt,
|
| + public DevicePermissionsPrompt::Prompt::Observer {
|
| + public:
|
| + TestDevicePermissionsPrompt(content::WebContents* web_contents)
|
| + : DevicePermissionsPrompt(web_contents) {}
|
| +
|
| + ~TestDevicePermissionsPrompt() override { prompt()->SetObserver(nullptr); }
|
| +
|
| + void ShowDialog() override { prompt()->SetObserver(this); }
|
| +
|
| + void OnDevicesChanged() override {
|
| + for (size_t i = 0; i < prompt()->GetDeviceCount(); ++i) {
|
| + prompt()->GrantDevicePermission(i);
|
| + if (!prompt()->multiple()) {
|
| + break;
|
| + }
|
| + }
|
| + prompt()->Dismissed();
|
| + }
|
| +};
|
| +
|
| +class TestExtensionsAPIClient : public ShellExtensionsAPIClient {
|
| + public:
|
| + TestExtensionsAPIClient() : ShellExtensionsAPIClient() {}
|
| +
|
| + scoped_ptr<DevicePermissionsPrompt> CreateDevicePermissionsPrompt(
|
| + content::WebContents* web_contents) const override {
|
| + return make_scoped_ptr(new TestDevicePermissionsPrompt(web_contents));
|
| + }
|
| +};
|
| +
|
| class HidApiTest : public ShellApiTest {
|
| public:
|
| void SetUpOnMainThread() override {
|
| @@ -219,4 +253,20 @@ IN_PROC_BROWSER_TEST_F(HidApiTest, OnDeviceRemoved) {
|
| EXPECT_EQ("success", result_listener.message());
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(HidApiTest, GetUserSelectedDevices) {
|
| + ExtensionTestMessageListener open_listener("opened_device", false);
|
| +
|
| + TestExtensionsAPIClient test_api_client;
|
| + ASSERT_TRUE(LoadApp("api_test/hid/get_user_selected_devices"));
|
| + ASSERT_TRUE(open_listener.WaitUntilSatisfied());
|
| +
|
| + ExtensionTestMessageListener remove_listener("removed", false);
|
| + hid_service_->RemoveDevice(kTestDeviceIds[0]);
|
| + ASSERT_TRUE(remove_listener.WaitUntilSatisfied());
|
| +
|
| + ExtensionTestMessageListener add_listener("added", false);
|
| + hid_service_->AddDevice(kTestDeviceIds[0], 0x18D1, 0x58F0, true);
|
| + ASSERT_TRUE(add_listener.WaitUntilSatisfied());
|
| +}
|
| +
|
| } // namespace extensions
|
|
|