| Index: chrome/browser/ui/webui/print_preview/printer_backend_proxy.cc | 
| diff --git a/chrome/browser/ui/webui/print_preview/printer_backend_proxy.cc b/chrome/browser/ui/webui/print_preview/printer_backend_proxy.cc | 
| index effbb06c0d45e3532ef7a9dc6ff37666ed58006a..f610f77d33c52b053717e04de93b442f7c4d3a22 100644 | 
| --- a/chrome/browser/ui/webui/print_preview/printer_backend_proxy.cc | 
| +++ b/chrome/browser/ui/webui/print_preview/printer_backend_proxy.cc | 
| @@ -52,8 +52,6 @@ std::unique_ptr<base::DictionaryValue> FetchCapabilitiesOnBlockingPool( | 
| return GetSettingsOnBlockingPool(device_name, basic_info); | 
| } | 
|  | 
| -}  // namespace | 
| - | 
| std::string GetDefaultPrinterOnBlockingPoolThread() { | 
| DCHECK(content::BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); | 
|  | 
| @@ -65,21 +63,50 @@ std::string GetDefaultPrinterOnBlockingPoolThread() { | 
| return default_printer; | 
| } | 
|  | 
| -void EnumeratePrinters(Profile* /* profile */, | 
| -                       const EnumeratePrintersCallback& cb) { | 
| -  base::PostTaskAndReplyWithResult( | 
| -      content::BrowserThread::GetBlockingPool(), FROM_HERE, | 
| -      base::Bind(&EnumeratePrintersOnBlockingPoolThread), cb); | 
| -} | 
| +// Default implementation of PrinterBackendProxy.  Makes calls directly to | 
| +// the print backend on the appropriate thread. | 
| +class PrinterBackendProxyDefault : public PrinterBackendProxy { | 
| + public: | 
| +  PrinterBackendProxyDefault() {} | 
| + | 
| +  ~PrinterBackendProxyDefault() override { | 
| +    DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| +  } | 
| + | 
| +  void GetDefaultPrinter(const DefaultPrinterCallback& cb) override { | 
| +    DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| + | 
| +    base::PostTaskAndReplyWithResult( | 
| +        content::BrowserThread::GetBlockingPool(), FROM_HERE, | 
| +        base::Bind(&GetDefaultPrinterOnBlockingPoolThread), cb); | 
| +  } | 
|  | 
| -void ConfigurePrinterAndFetchCapabilities(Profile* /* profile */, | 
| -                                          const std::string& device_name, | 
| -                                          const PrinterSetupCallback& cb) { | 
| -  DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| +  void EnumeratePrinters(const EnumeratePrintersCallback& cb) override { | 
| +    DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| + | 
| +    base::PostTaskAndReplyWithResult( | 
| +        content::BrowserThread::GetBlockingPool(), FROM_HERE, | 
| +        base::Bind(&EnumeratePrintersOnBlockingPoolThread), cb); | 
| +  } | 
| + | 
| +  void ConfigurePrinterAndFetchCapabilities( | 
| +      const std::string& device_name, | 
| +      const PrinterSetupCallback& cb) override { | 
| +    DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| + | 
| +    base::PostTaskAndReplyWithResult( | 
| +        content::BrowserThread::GetBlockingPool(), FROM_HERE, | 
| +        base::Bind(&FetchCapabilitiesOnBlockingPool, device_name), cb); | 
| +  } | 
| + | 
| + private: | 
| +  DISALLOW_COPY_AND_ASSIGN(PrinterBackendProxyDefault); | 
| +}; | 
| + | 
| +}  // namespace | 
|  | 
| -  base::PostTaskAndReplyWithResult( | 
| -      content::BrowserThread::GetBlockingPool(), FROM_HERE, | 
| -      base::Bind(&FetchCapabilitiesOnBlockingPool, device_name), cb); | 
| +std::unique_ptr<PrinterBackendProxy> PrinterBackendProxy::Create() { | 
| +  return base::MakeUnique<PrinterBackendProxyDefault>(); | 
| } | 
|  | 
| }  // namespace printing | 
|  |