| Index: chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| index 237bba967a6013be8075d1ae87087d520386b79e..638b51f27f2fd13b7daf6b67fa1e04e111e68bd1 100644
|
| --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| @@ -27,6 +27,7 @@
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/threading/thread.h"
|
| #include "base/threading/thread_restrictions.h"
|
| +#include "base/threading/worker_pool.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/app_mode/app_mode_utils.h"
|
| #include "chrome/browser/browser_process.h"
|
| @@ -45,6 +46,7 @@
|
| #include "chrome/browser/ui/browser_tabstrip.h"
|
| #include "chrome/browser/ui/chrome_select_file_policy.h"
|
| #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
|
| +#include "chrome/browser/ui/webui/print_preview/extension_printer_handler.h"
|
| #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
|
| #include "chrome/browser/ui/webui/print_preview/printer_handler.h"
|
| #include "chrome/browser/ui/webui/print_preview/sticky_settings.h"
|
| @@ -670,6 +672,10 @@ void PrintPreviewHandler::RegisterMessages() {
|
| "getExtensionPrinterCapabilities",
|
| base::Bind(&PrintPreviewHandler::HandleGetExtensionPrinterCapabilities,
|
| base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback(
|
| + "grantExtensionUsbPrinterAccess",
|
| + base::Bind(&PrintPreviewHandler::HandleGrantExtensionUsbPrinterAccess,
|
| + base::Unretained(this)));
|
| RegisterForGaiaCookieChanges();
|
| }
|
|
|
| @@ -744,6 +750,22 @@ void PrintPreviewHandler::HandleGetExtensionPrinters(
|
| &PrintPreviewHandler::OnGotPrintersForExtension, base::Unretained(this)));
|
| }
|
|
|
| +void PrintPreviewHandler::HandleGrantExtensionUsbPrinterAccess(
|
| + const base::ListValue* args) {
|
| + std::string extension_id;
|
| + bool ok = args->GetString(0, &extension_id);
|
| + DCHECK(ok);
|
| + int device_id;
|
| + ok = args->GetInteger(1, &device_id);
|
| + DCHECK(ok);
|
| +
|
| + EnsureExtensionPrinterHandlerSet();
|
| + extension_printer_handler_->StartGrantUsbPrinterAccess(
|
| + extension_id, device_id,
|
| + base::Bind(&PrintPreviewHandler::OnGotExtensionUsbPrinterInfo,
|
| + base::Unretained(this), extension_id, device_id));
|
| +}
|
| +
|
| void PrintPreviewHandler::HandleGetExtensionPrinterCapabilities(
|
| const base::ListValue* args) {
|
| std::string printer_id;
|
| @@ -1683,11 +1705,10 @@ void PrintPreviewHandler::FillPrinterDescription(
|
| #endif // defined(ENABLE_SERVICE_DISCOVERY)
|
|
|
| void PrintPreviewHandler::EnsureExtensionPrinterHandlerSet() {
|
| - if (extension_printer_handler_.get())
|
| - return;
|
| -
|
| - extension_printer_handler_ =
|
| - PrinterHandler::CreateForExtensionPrinters(Profile::FromWebUI(web_ui()));
|
| + if (!extension_printer_handler_.get()) {
|
| + extension_printer_handler_.reset(new ExtensionPrinterHandler(
|
| + Profile::FromWebUI(web_ui()), base::WorkerPool::GetTaskRunner(true)));
|
| + }
|
| }
|
|
|
| void PrintPreviewHandler::OnGotPrintersForExtension(
|
| @@ -1697,6 +1718,20 @@ void PrintPreviewHandler::OnGotPrintersForExtension(
|
| base::FundamentalValue(done));
|
| }
|
|
|
| +void PrintPreviewHandler::OnGotExtensionUsbPrinterInfo(
|
| + const std::string& extension_id,
|
| + int device_id,
|
| + const base::DictionaryValue& printer_info) {
|
| + if (printer_info.empty()) {
|
| + web_ui()->CallJavascriptFunction("failedToGetExtensionUsbPrinterInfo",
|
| + base::StringValue(extension_id),
|
| + base::FundamentalValue(device_id));
|
| + return;
|
| + }
|
| +
|
| + web_ui()->CallJavascriptFunction("onExtensionUsbPrinterAdded", printer_info);
|
| +}
|
| +
|
| void PrintPreviewHandler::OnGotExtensionPrinterCapabilities(
|
| const std::string& printer_id,
|
| const base::DictionaryValue& capabilities) {
|
|
|