| Index: chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
|
| diff --git a/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc b/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
|
| index 3021dcf223cb7727660e2b5e7707661de1899168..3236e3ecda46426e5261994ef313b501b8fbc0f7 100644
|
| --- a/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
|
| +++ b/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
|
| @@ -18,29 +18,12 @@
|
| #include "chrome/browser/local_discovery/pwg_raster_converter.h"
|
| #include "components/cloud_devices/common/cloud_device_description.h"
|
| #include "components/cloud_devices/common/printer_description.h"
|
| -#include "device/core/device_client.h"
|
| -#include "device/usb/usb_device.h"
|
| -#include "device/usb/usb_service.h"
|
| -#include "extensions/browser/api/device_permissions_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"
|
| -#include "extensions/browser/extension_registry.h"
|
| -#include "extensions/common/api/printer_provider/usb_printer_manifest_data.h"
|
| -#include "extensions/common/permissions/permissions_data.h"
|
| -#include "extensions/common/permissions/usb_device_permission.h"
|
| -#include "extensions/common/permissions/usb_device_permission_data.h"
|
| -#include "extensions/common/value_builder.h"
|
| #include "printing/pdf_render_settings.h"
|
| #include "printing/pwg_raster_settings.h"
|
|
|
| -using device::UsbDevice;
|
| -using extensions::DevicePermissionsManager;
|
| -using extensions::DictionaryBuilder;
|
| -using extensions::Extension;
|
| -using extensions::ExtensionRegistry;
|
| -using extensions::ListBuilder;
|
| -using extensions::UsbPrinterManifestData;
|
| using local_discovery::PWGRasterConverter;
|
|
|
| namespace {
|
| @@ -83,14 +66,6 @@
|
| callback);
|
| }
|
|
|
| -bool HasUsbPrinterProviderPermissions(const Extension* extension) {
|
| - return extension->permissions_data() &&
|
| - extension->permissions_data()->HasAPIPermission(
|
| - extensions::APIPermission::kPrinterProvider) &&
|
| - extension->permissions_data()->HasAPIPermission(
|
| - extensions::APIPermission::kUsb);
|
| -}
|
| -
|
| } // namespace
|
|
|
| ExtensionPrinterHandler::ExtensionPrinterHandler(
|
| @@ -107,34 +82,11 @@
|
| void ExtensionPrinterHandler::Reset() {
|
| // TODO(tbarzic): Keep track of pending request ids issued by |this| and
|
| // cancel them from here.
|
| - pending_enumeration_count_ = 0;
|
| weak_ptr_factory_.InvalidateWeakPtrs();
|
| }
|
|
|
| void ExtensionPrinterHandler::StartGetPrinters(
|
| const PrinterHandler::GetPrintersCallback& callback) {
|
| - // Assume that there can only be one printer enumeration occuring at once.
|
| - DCHECK_EQ(pending_enumeration_count_, 0);
|
| - pending_enumeration_count_ = 1;
|
| -
|
| - bool extension_supports_usb_printers = false;
|
| - ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_);
|
| - for (const auto& extension : registry->enabled_extensions()) {
|
| - if (UsbPrinterManifestData::Get(extension.get()) &&
|
| - HasUsbPrinterProviderPermissions(extension.get())) {
|
| - extension_supports_usb_printers = true;
|
| - break;
|
| - }
|
| - }
|
| -
|
| - if (extension_supports_usb_printers) {
|
| - device::UsbService* service = device::DeviceClient::Get()->GetUsbService();
|
| - pending_enumeration_count_++;
|
| - service->GetDevices(
|
| - base::Bind(&ExtensionPrinterHandler::OnUsbDevicesEnumerated,
|
| - weak_ptr_factory_.GetWeakPtr(), callback));
|
| - }
|
| -
|
| extensions::PrinterProviderAPIFactory::GetInstance()
|
| ->GetForBrowserContext(browser_context_)
|
| ->DispatchGetPrintersRequested(
|
| @@ -240,11 +192,7 @@
|
| const PrinterHandler::GetPrintersCallback& callback,
|
| const base::ListValue& printers,
|
| bool done) {
|
| - DCHECK_GT(pending_enumeration_count_, 0);
|
| - if (done)
|
| - pending_enumeration_count_--;
|
| -
|
| - callback.Run(printers, pending_enumeration_count_ == 0);
|
| + callback.Run(printers, done);
|
| }
|
|
|
| void ExtensionPrinterHandler::WrapGetCapabilityCallback(
|
| @@ -260,54 +208,3 @@
|
| const std::string& status) {
|
| callback.Run(success, status);
|
| }
|
| -
|
| -void ExtensionPrinterHandler::OnUsbDevicesEnumerated(
|
| - const PrinterHandler::GetPrintersCallback& callback,
|
| - const std::vector<scoped_refptr<UsbDevice>>& devices) {
|
| - ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_);
|
| - DevicePermissionsManager* permissions_manager =
|
| - DevicePermissionsManager::Get(browser_context_);
|
| -
|
| - ListBuilder printer_list;
|
| -
|
| - for (const auto& extension : registry->enabled_extensions()) {
|
| - const UsbPrinterManifestData* manifest_data =
|
| - UsbPrinterManifestData::Get(extension.get());
|
| - if (!manifest_data || !HasUsbPrinterProviderPermissions(extension.get()))
|
| - continue;
|
| -
|
| - const extensions::DevicePermissions* device_permissions =
|
| - permissions_manager->GetForExtension(extension->id());
|
| - for (const auto& device : devices) {
|
| - if (manifest_data->SupportsDevice(device)) {
|
| - extensions::UsbDevicePermission::CheckParam param(
|
| - device->vendor_id(), device->product_id(),
|
| - extensions::UsbDevicePermissionData::UNSPECIFIED_INTERFACE);
|
| - if (device_permissions->FindUsbDeviceEntry(device) ||
|
| - extension->permissions_data()->CheckAPIPermissionWithParam(
|
| - extensions::APIPermission::kUsbDevice, ¶m)) {
|
| - // Skip devices the extension already has permission to access.
|
| - continue;
|
| - }
|
| -
|
| - printer_list.Append(
|
| - DictionaryBuilder()
|
| - .Set("id", base::StringPrintf("provisional-usb:%s:%u",
|
| - extension->id().c_str(),
|
| - device->unique_id()))
|
| - .Set("name",
|
| - DevicePermissionsManager::GetPermissionMessage(
|
| - device->vendor_id(), device->product_id(),
|
| - device->manufacturer_string(),
|
| - device->product_string(), base::string16(), false))
|
| - .Set("extensionId", extension->id())
|
| - .Set("extensionName", extension->name())
|
| - .Set("provisional", true));
|
| - }
|
| - }
|
| - }
|
| -
|
| - DCHECK_GT(pending_enumeration_count_, 0);
|
| - pending_enumeration_count_--;
|
| - callback.Run(*printer_list.Build().get(), pending_enumeration_count_ == 0);
|
| -}
|
|
|