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 |