Commit b2857a80 authored by Donna Wu's avatar Donna Wu Committed by Commit Bot

Use USB mojo interfaces in PrinterProviderApi.

Bug: 716628
Change-Id: If48a9b1aaa71a9264475dd0ad62707a45bd927e5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1493716Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Commit-Queue: Donna Wu <donna.wu@intel.com>
Cr-Commit-Position: refs/heads/master@{#637583}
parent dd0b5cd8
......@@ -229,7 +229,7 @@ void ExtensionPrinterHandler::StartGrantPrinterAccess(
permissions_manager->AllowUsbDevice(extension_id, *device_info);
GetPrinterProviderAPI(profile_)->DispatchGetUsbPrinterInfoRequested(
extension_id, device,
extension_id, *device_info,
base::BindOnce(&ExtensionPrinterHandler::WrapGetPrinterInfoCallback,
weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
}
......
......@@ -409,10 +409,10 @@ class FakePrinterProviderAPI : public PrinterProviderAPI {
void DispatchGetUsbPrinterInfoRequested(
const std::string& extension_id,
scoped_refptr<device::UsbDevice> device,
const device::mojom::UsbDeviceInfo& device,
PrinterProviderAPI::GetPrinterInfoCallback callback) override {
EXPECT_EQ("fake extension id", extension_id);
EXPECT_TRUE(device);
EXPECT_FALSE(device.guid.empty());
pending_usb_info_callbacks_.push(std::move(callback));
}
......
......@@ -486,6 +486,7 @@ source_set("browser_tests") {
"//device/base:mocks",
"//device/bluetooth:mocks",
"//device/usb:test_support",
"//device/usb/public/cpp:test_support",
"//extensions:test_support",
"//extensions/browser:test_support",
"//extensions/common",
......
......@@ -19,9 +19,6 @@
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "device/usb/mojo/type_converters.h"
#include "device/usb/public/mojom/device.mojom.h"
#include "device/usb/usb_device.h"
#include "extensions/browser/api/printer_provider/printer_provider_print_job.h"
#include "extensions/browser/api/printer_provider_internal/printer_provider_internal_api.h"
#include "extensions/browser/api/printer_provider_internal/printer_provider_internal_api_observer.h"
......@@ -34,8 +31,6 @@
#include "extensions/common/api/usb.h"
#include "extensions/common/extension.h"
using device::UsbDevice;
namespace extensions {
namespace {
......@@ -257,7 +252,7 @@ class PrinterProviderAPIImpl : public PrinterProviderAPI,
int request_id) const override;
void DispatchGetUsbPrinterInfoRequested(
const std::string& extension_id,
scoped_refptr<UsbDevice> device,
const device::mojom::UsbDeviceInfo& device,
GetPrinterInfoCallback callback) override;
// PrinterProviderInternalAPIObserver implementation:
......@@ -639,7 +634,7 @@ const PrinterProviderPrintJob* PrinterProviderAPIImpl::GetPrintJob(
void PrinterProviderAPIImpl::DispatchGetUsbPrinterInfoRequested(
const std::string& extension_id,
scoped_refptr<UsbDevice> device,
const device::mojom::UsbDeviceInfo& device,
GetPrinterInfoCallback callback) {
EventRouter* event_router = EventRouter::Get(browser_context_);
if (!event_router->ExtensionHasEventListener(
......@@ -652,10 +647,7 @@ void PrinterProviderAPIImpl::DispatchGetUsbPrinterInfoRequested(
int request_id =
pending_usb_printer_info_requests_[extension_id].Add(std::move(callback));
api::usb::Device api_device;
auto device_info = device::mojom::UsbDeviceInfo::From(*device);
DCHECK(device_info);
UsbDeviceManager::Get(browser_context_)
->GetApiDevice(*device_info, &api_device);
UsbDeviceManager::Get(browser_context_)->GetApiDevice(device, &api_device);
std::unique_ptr<base::ListValue> internal_args(new base::ListValue());
// Request id is not part of the public API and it will be massaged out in
......
......@@ -10,6 +10,7 @@
#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
#include "components/keyed_service/core/keyed_service.h"
#include "device/usb/public/mojom/device.mojom.h"
namespace base {
class DictionaryValue;
......@@ -21,10 +22,6 @@ namespace content {
class BrowserContext;
}
namespace device {
class UsbDevice;
}
namespace extensions {
class Extension;
struct PrinterProviderPrintJob;
......@@ -95,7 +92,7 @@ class PrinterProviderAPI : public KeyedService {
// extension identified by |extension_id|.
virtual void DispatchGetUsbPrinterInfoRequested(
const std::string& extension_id,
scoped_refptr<device::UsbDevice> device,
const device::mojom::UsbDeviceInfo& device,
GetPrinterInfoCallback callback) = 0;
};
......
......@@ -15,8 +15,7 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_restrictions.h"
#include "device/usb/mock_usb_device.h"
#include "device/usb/mock_usb_service.h"
#include "device/usb/public/cpp/fake_usb_device_manager.h"
#include "extensions/browser/api/printer_provider/printer_provider_api.h"
#include "extensions/browser/api/printer_provider/printer_provider_api_factory.h"
#include "extensions/browser/api/printer_provider/printer_provider_print_job.h"
......@@ -106,7 +105,7 @@ class PrinterProviderApiTest : public ShellApiTest {
void StartGetUsbPrinterInfoRequest(
const std::string& extension_id,
scoped_refptr<device::UsbDevice> device,
const device::mojom::UsbDeviceInfo& device,
PrinterProviderAPI::GetPrinterInfoCallback callback) {
PrinterProviderAPIFactory::GetInstance()
->GetForBrowserContext(browser_context())
......@@ -254,9 +253,8 @@ class PrinterProviderApiTest : public ShellApiTest {
// |expected_result|: The printer info that the app is expected to report.
void RunUsbPrinterInfoRequestTest(const std::string& test_param) {
ResultCatcher catcher;
scoped_refptr<device::UsbDevice> device =
new device::MockUsbDevice(0, 0, "Google", "USB Printer", "");
usb_service_.AddDevice(device);
device::mojom::UsbDeviceInfoPtr device =
usb_manager_.CreateAndAddDevice(0, 0, "Google", "USB Printer", "");
std::string extension_id;
InitializePrinterProviderTestApp("api_test/printer_provider/usb_printers",
......@@ -267,7 +265,7 @@ class PrinterProviderApiTest : public ShellApiTest {
new base::DictionaryValue());
base::RunLoop run_loop;
StartGetUsbPrinterInfoRequest(
extension_id, device,
extension_id, *device,
base::Bind(&ExpectValueAndRunCallback, expected_printer_info.get(),
run_loop.QuitClosure()));
run_loop.Run();
......@@ -306,7 +304,7 @@ class PrinterProviderApiTest : public ShellApiTest {
}
protected:
device::MockUsbService usb_service_;
device::FakeUsbDeviceManager usb_manager_;
private:
DISALLOW_COPY_AND_ASSIGN(PrinterProviderApiTest);
......@@ -759,9 +757,8 @@ IN_PROC_BROWSER_TEST_F(PrinterProviderApiTest, GetPrintersInvalidPrinterValue) {
IN_PROC_BROWSER_TEST_F(PrinterProviderApiTest, GetUsbPrinterInfo) {
ResultCatcher catcher;
scoped_refptr<device::UsbDevice> device =
new device::MockUsbDevice(0, 0, "Google", "USB Printer", "");
usb_service_.AddDevice(device);
device::mojom::UsbDeviceInfoPtr device =
usb_manager_.CreateAndAddDevice(0, 0, "Google", "USB Printer", "");
std::string extension_id;
InitializePrinterProviderTestApp("api_test/printer_provider/usb_printers",
......@@ -774,14 +771,14 @@ IN_PROC_BROWSER_TEST_F(PrinterProviderApiTest, GetUsbPrinterInfo) {
.Set("description", "This printer is a USB device.")
.Set("extensionId", extension_id)
.Set("extensionName", "Test USB printer provider")
.Set("id", base::StringPrintf(
"%s:usbDevice-%u", extension_id.c_str(),
device_manager->GetIdFromGuid(device->guid())))
.Set("id",
base::StringPrintf("%s:usbDevice-%u", extension_id.c_str(),
device_manager->GetIdFromGuid(device->guid)))
.Set("name", "Test Printer")
.Build());
base::RunLoop run_loop;
StartGetUsbPrinterInfoRequest(
extension_id, device,
extension_id, *device,
base::Bind(&ExpectValueAndRunCallback, expected_printer_info.get(),
run_loop.QuitClosure()));
run_loop.Run();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment