Commit 77ddcddc authored by justincarlson's avatar justincarlson Committed by Commit Bot

Remove the legacy (extension-notifier) usb printer detector.

Also, Rename the remaining printerdetector with the less prefix 'Usb' in preparation for other work on printer detection.

BUG=734161

Review-Url: https://codereview.chromium.org/2945653002
Cr-Commit-Position: refs/heads/master@{#480267}
parent ba7d2a42
......@@ -1247,11 +1247,10 @@ source_set("chromeos") {
"power/renderer_freezer.h",
"preferences.cc",
"preferences.h",
"printer_detector/cups_printer_detector.cc",
"printer_detector/legacy_printer_detector.cc",
"printer_detector/printer_detector.h",
"printer_detector/printer_detector_factory.cc",
"printer_detector/printer_detector_factory.h",
"printer_detector/usb_printer_detector.cc",
"printer_detector/usb_printer_detector.h",
"printer_detector/usb_printer_detector_factory.cc",
"printer_detector/usb_printer_detector_factory.h",
"printing/cups_print_job.cc",
"printing/cups_print_job.h",
"printing/cups_print_job_manager.cc",
......@@ -1768,7 +1767,6 @@ source_set("unit_tests") {
"power/power_prefs_unittest.cc",
"power/renderer_freezer_unittest.cc",
"preferences_unittest.cc",
"printer_detector/printer_detector_unittest.cc",
"printing/printers_manager_unittest.cc",
"printing/specifics_translation_unittest.cc",
"profiles/profile_list_chromeos_unittest.cc",
......
......@@ -4,7 +4,9 @@
#include <stdint.h>
#include <map>
#include <memory>
#include <set>
#include <utility>
#include <vector>
......@@ -18,7 +20,7 @@
#include "base/synchronization/lock.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/printer_detector/printer_detector.h"
#include "chrome/browser/chromeos/printer_detector/usb_printer_detector.h"
#include "chrome/browser/chromeos/printing/ppd_provider_factory.h"
#include "chrome/browser/chromeos/printing/printer_configurer.h"
#include "chrome/browser/chromeos/printing/printers_manager_factory.h"
......@@ -70,32 +72,32 @@ std::string GuessEffectiveMakeAndModel(const device::UsbDevice& device) {
// The PrinterDetector that drives the flow for setting up a USB printer to use
// CUPS backend.
class CupsPrinterDetectorImpl : public PrinterDetector,
public device::UsbService::Observer {
class UsbPrinterDetectorImpl : public UsbPrinterDetector,
public device::UsbService::Observer {
public:
explicit CupsPrinterDetectorImpl(Profile* profile)
explicit UsbPrinterDetectorImpl(Profile* profile)
: profile_(profile),
usb_observer_(this),
observer_list_(
new base::ObserverListThreadSafe<PrinterDetector::Observer>),
new base::ObserverListThreadSafe<UsbPrinterDetector::Observer>),
weak_ptr_factory_(this) {
device::UsbService* usb_service =
device::DeviceClient::Get()->GetUsbService();
if (usb_service) {
usb_observer_.Add(usb_service);
usb_service->GetDevices(base::Bind(&CupsPrinterDetectorImpl::OnGetDevices,
usb_service->GetDevices(base::Bind(&UsbPrinterDetectorImpl::OnGetDevices,
weak_ptr_factory_.GetWeakPtr()));
}
}
~CupsPrinterDetectorImpl() override = default;
~UsbPrinterDetectorImpl() override = default;
// PrinterDetector interface function.
void AddObserver(PrinterDetector::Observer* observer) override {
void AddObserver(UsbPrinterDetector::Observer* observer) override {
observer_list_->AddObserver(observer);
}
// PrinterDetector interface function.
void RemoveObserver(PrinterDetector::Observer* observer) override {
void RemoveObserver(UsbPrinterDetector::Observer* observer) override {
observer_list_->RemoveObserver(observer);
}
......@@ -145,7 +147,8 @@ class CupsPrinterDetectorImpl : public PrinterDetector,
// We already have pp_lock_, so need to call the pre-locked version of
// GetPrinters to prevent deadlock.
observer_list_->Notify(
FROM_HERE, &PrinterDetector::Observer::OnAvailableUsbPrintersChanged,
FROM_HERE,
&UsbPrinterDetector::Observer::OnAvailableUsbPrintersChanged,
GetPrintersLocked());
} else {
// If the device has been removed but it's not in present_printers_, it
......@@ -202,7 +205,7 @@ class CupsPrinterDetectorImpl : public PrinterDetector,
printing::CreateProvider(profile_);
ppd_provider->ResolveUsbIds(
device->vendor_id(), device->product_id(),
base::Bind(&CupsPrinterDetectorImpl::ResolveUsbIdsDone,
base::Bind(&UsbPrinterDetectorImpl::ResolveUsbIdsDone,
weak_ptr_factory_.GetWeakPtr(), ppd_provider,
base::Passed(std::move(data))));
}
......@@ -213,7 +216,7 @@ class CupsPrinterDetectorImpl : public PrinterDetector,
SetUpPrinterData* data_ptr = data.get();
data_ptr->configurer->SetUpPrinter(
*(data_ptr->printer),
base::Bind(&CupsPrinterDetectorImpl::SetUpPrinterDone,
base::Bind(&UsbPrinterDetectorImpl::SetUpPrinterDone,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(std::move(data))));
}
......@@ -272,16 +275,12 @@ class CupsPrinterDetectorImpl : public PrinterDetector,
base::AutoLock auto_lock(pp_lock_);
present_printers_.emplace(data->device->guid(), std::move(data->printer));
observer_list_->Notify(
FROM_HERE, &PrinterDetector::Observer::OnAvailableUsbPrintersChanged,
FROM_HERE,
&UsbPrinterDetector::Observer::OnAvailableUsbPrintersChanged,
GetPrintersLocked());
}
}
void SetNotificationUIManagerForTesting(
NotificationUIManager* manager) override {
LOG(FATAL) << "Not implemented for CUPS";
}
// Map from USB GUID to Printer that we have detected as being currently
// plugged in and have finished processing. Note present_printers_ may be
// accessed from multiple threads, so is protected by pp_lock_.
......@@ -296,22 +295,17 @@ class CupsPrinterDetectorImpl : public PrinterDetector,
Profile* profile_;
ScopedObserver<device::UsbService, device::UsbService::Observer>
usb_observer_;
scoped_refptr<base::ObserverListThreadSafe<PrinterDetector::Observer>>
scoped_refptr<base::ObserverListThreadSafe<UsbPrinterDetector::Observer>>
observer_list_;
base::WeakPtrFactory<CupsPrinterDetectorImpl> weak_ptr_factory_;
base::WeakPtrFactory<UsbPrinterDetectorImpl> weak_ptr_factory_;
};
} // namespace
// Nop base class implementation of GetPrinters(). Because this is non-empty we
// have to define it out-of-line.
std::vector<Printer> PrinterDetector::GetPrinters() {
return std::vector<Printer>();
}
// static
std::unique_ptr<PrinterDetector> PrinterDetector::CreateCups(Profile* profile) {
return base::MakeUnique<CupsPrinterDetectorImpl>(profile);
std::unique_ptr<UsbPrinterDetector> UsbPrinterDetector::Create(
Profile* profile) {
return base::MakeUnique<UsbPrinterDetectorImpl>(profile);
}
} // namespace chromeos
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_PRINTER_DETECTOR_H_
#define CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_PRINTER_DETECTOR_H_
#ifndef CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_USB_PRINTER_DETECTOR_H_
#define CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_USB_PRINTER_DETECTOR_H_
#include <memory>
#include <string>
......@@ -13,28 +13,14 @@
#include "chromeos/printing/printer_configuration.h"
#include "components/keyed_service/core/keyed_service.h"
class NotificationUIManager;
class Profile;
namespace chromeos {
// Observes device::UsbService for addition of USB printers (devices with
// interface class 7). What it does with this depends on whether or not
// CUPS printing support is enabled.
//
// If CUPS is disabled, the Legacy implementation should be used. The legacy
// implementation shows a notification depending on whether there are printer
// provider apps that declared support for the USB device installed. If such
// app exists, the notification notifies the user the printer is ready.
// Otherwise the notification offers user to search Chrome Web Store for apps
// that support the printer. Clicking the notification launches webstore_widget
// app for the printer. The notification is shown only for active user's
// profile.
//
// If CUPS is enabled, the Cups implementation should be used. This
// implementation to guides the user through setting up a new USB printer in the
// CUPS backend.
class PrinterDetector : public KeyedService {
// interface class 7). When a device is detected, it is forwarded to the
// printing subsystem for either autoconfiguration or user guidance.
class UsbPrinterDetector : public KeyedService {
public:
class Observer {
public:
......@@ -45,35 +31,23 @@ class PrinterDetector : public KeyedService {
const std::vector<Printer>& printers) = 0;
};
// Factory function for the Legacy implementation.
static std::unique_ptr<PrinterDetector> CreateLegacy(Profile* profile);
// Factory function for the CUPS implementation.
static std::unique_ptr<PrinterDetector> CreateCups(Profile* profile);
~PrinterDetector() override {}
// Observer management. Note these are only implemented for the cups backend.
// TODO(justincarlson) - Change these all to pure virtual functions when the
// legacy backend is retired.
static std::unique_ptr<UsbPrinterDetector> Create(Profile* profile);
~UsbPrinterDetector() override = default;
virtual void AddObserver(Observer* observer) {}
virtual void RemoveObserver(Observer* observer) {}
virtual void AddObserver(Observer* observer) = 0;
virtual void RemoveObserver(Observer* observer) = 0;
// Get the current set of detected printers.
virtual std::vector<Printer> GetPrinters();
virtual std::vector<Printer> GetPrinters() = 0;
protected:
PrinterDetector() = default;
UsbPrinterDetector() = default;
private:
friend class PrinterDetectorAppSearchEnabledTest;
virtual void SetNotificationUIManagerForTesting(
NotificationUIManager* manager) = 0;
DISALLOW_COPY_AND_ASSIGN(PrinterDetector);
DISALLOW_COPY_AND_ASSIGN(UsbPrinterDetector);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_PRINTER_DETECTOR_H_
#endif // CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_USB_PRINTER_DETECTOR_H_
......@@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/printer_detector/printer_detector_factory.h"
#include "chrome/browser/chromeos/printer_detector/usb_printer_detector_factory.h"
#include "base/command_line.h"
#include "chrome/browser/chromeos/printer_detector/printer_detector.h"
#include "chrome/browser/chromeos/printer_detector/usb_printer_detector.h"
#include "chrome/browser/chromeos/printing/printers_manager_factory.h"
#include "chrome/browser/profiles/incognito_helpers.h"
#include "chrome/browser/profiles/profile.h"
......@@ -17,55 +17,49 @@ namespace chromeos {
namespace {
static base::LazyInstance<PrinterDetectorFactory>::DestructorAtExit g_factory =
base::LazyInstance<UsbPrinterDetectorFactory>::DestructorAtExit g_factory =
LAZY_INSTANCE_INITIALIZER;
} // namespace
// static
PrinterDetectorFactory* PrinterDetectorFactory::GetInstance() {
UsbPrinterDetectorFactory* UsbPrinterDetectorFactory::GetInstance() {
return g_factory.Pointer();
}
PrinterDetector* PrinterDetectorFactory::Get(content::BrowserContext* context) {
return static_cast<PrinterDetector*>(
UsbPrinterDetector* UsbPrinterDetectorFactory::Get(
content::BrowserContext* context) {
return static_cast<UsbPrinterDetector*>(
GetServiceForBrowserContext(context, false));
}
PrinterDetectorFactory::PrinterDetectorFactory()
UsbPrinterDetectorFactory::UsbPrinterDetectorFactory()
: BrowserContextKeyedServiceFactory(
"PrinterDetectorFactory",
"UsbPrinterDetectorFactory",
BrowserContextDependencyManager::GetInstance()) {
DependsOn(
extensions::ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
DependsOn(PrintersManagerFactory::GetInstance());
}
PrinterDetectorFactory::~PrinterDetectorFactory() {
}
UsbPrinterDetectorFactory::~UsbPrinterDetectorFactory() {}
content::BrowserContext* PrinterDetectorFactory::GetBrowserContextToUse(
content::BrowserContext* UsbPrinterDetectorFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
return chrome::GetBrowserContextRedirectedInIncognito(context);
}
KeyedService* PrinterDetectorFactory::BuildServiceInstanceFor(
KeyedService* UsbPrinterDetectorFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
::switches::kDisableNativeCups)) {
return PrinterDetector::CreateLegacy(Profile::FromBrowserContext(context))
.release();
}
return PrinterDetector::CreateCups(Profile::FromBrowserContext(context))
return UsbPrinterDetector::Create(Profile::FromBrowserContext(context))
.release();
}
bool PrinterDetectorFactory::ServiceIsCreatedWithBrowserContext() const {
bool UsbPrinterDetectorFactory::ServiceIsCreatedWithBrowserContext() const {
return true;
}
bool PrinterDetectorFactory::ServiceIsNULLWhileTesting() const {
bool UsbPrinterDetectorFactory::ServiceIsNULLWhileTesting() const {
return true;
}
......
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_PRINTER_DETECTOR_FACTORY_H_
#define CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_PRINTER_DETECTOR_FACTORY_H_
#ifndef CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_USB_PRINTER_DETECTOR_FACTORY_H_
#define CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_USB_PRINTER_DETECTOR_FACTORY_H_
#include "base/lazy_instance.h"
#include "base/macros.h"
......@@ -16,13 +16,13 @@ class BrowserContext;
namespace chromeos {
class PrinterDetector;
class UsbPrinterDetector;
class PrinterDetectorFactory : public BrowserContextKeyedServiceFactory {
class UsbPrinterDetectorFactory : public BrowserContextKeyedServiceFactory {
public:
static PrinterDetectorFactory* GetInstance();
static UsbPrinterDetectorFactory* GetInstance();
PrinterDetector* Get(content::BrowserContext* context);
UsbPrinterDetector* Get(content::BrowserContext* context);
protected:
// BrowserContextKeyedServiceFactory:
......@@ -30,9 +30,9 @@ class PrinterDetectorFactory : public BrowserContextKeyedServiceFactory {
content::BrowserContext* context) const override;
private:
friend struct base::LazyInstanceTraitsBase<PrinterDetectorFactory>;
PrinterDetectorFactory();
~PrinterDetectorFactory() override;
friend struct base::LazyInstanceTraitsBase<UsbPrinterDetectorFactory>;
UsbPrinterDetectorFactory();
~UsbPrinterDetectorFactory() override;
// BrowserContextKeyedServiceFactory:
KeyedService* BuildServiceInstanceFor(
......@@ -40,9 +40,9 @@ class PrinterDetectorFactory : public BrowserContextKeyedServiceFactory {
bool ServiceIsCreatedWithBrowserContext() const override;
bool ServiceIsNULLWhileTesting() const override;
DISALLOW_COPY_AND_ASSIGN(PrinterDetectorFactory);
DISALLOW_COPY_AND_ASSIGN(UsbPrinterDetectorFactory);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_PRINTER_DETECTOR_FACTORY_H_
#endif // CHROME_BROWSER_CHROMEOS_PRINTER_DETECTOR_USB_PRINTER_DETECTOR_FACTORY_H_
......@@ -10,8 +10,8 @@
#include "base/observer_list.h"
#include "base/scoped_observer.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "chrome/browser/chromeos/printer_detector/printer_detector.h"
#include "chrome/browser/chromeos/printer_detector/printer_detector_factory.h"
#include "chrome/browser/chromeos/printer_detector/usb_printer_detector.h"
#include "chrome/browser/chromeos/printer_detector/usb_printer_detector_factory.h"
#include "chrome/browser/chromeos/printing/printers_manager.h"
#include "chrome/browser/chromeos/printing/printers_manager_factory.h"
#include "chrome/browser/profiles/profile.h"
......@@ -22,15 +22,15 @@ namespace {
// Implementation of PrinterDiscoverer interface.
class PrinterDiscovererImpl : public PrinterDiscoverer,
public PrinterDetector::Observer {
public UsbPrinterDetector::Observer {
public:
explicit PrinterDiscovererImpl(Profile* profile)
: detector_observer_(this), profile_(profile), weak_ptr_factory_(this) {
PrinterDetector* detector =
PrinterDetectorFactory::GetInstance()->Get(profile);
DCHECK(detector);
detector_observer_.Add(detector);
usb_printers_ = detector->GetPrinters();
UsbPrinterDetector* usb_detector =
UsbPrinterDetectorFactory::GetInstance()->Get(profile);
DCHECK(usb_detector);
detector_observer_.Add(usb_detector);
usb_printers_ = usb_detector->GetPrinters();
}
~PrinterDiscovererImpl() override = default;
......@@ -103,7 +103,8 @@ class PrinterDiscovererImpl : public PrinterDiscoverer,
std::vector<Printer> usb_printers_;
base::ObserverList<PrinterDiscoverer::Observer> observer_list_;
ScopedObserver<PrinterDetector, PrinterDetector::Observer> detector_observer_;
ScopedObserver<UsbPrinterDetector, UsbPrinterDetector::Observer>
detector_observer_;
Profile* profile_;
base::WeakPtrFactory<PrinterDiscovererImpl> weak_ptr_factory_;
};
......
......@@ -119,7 +119,7 @@
#endif
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/printer_detector/printer_detector_factory.h"
#include "chrome/browser/chromeos/printer_detector/usb_printer_detector_factory.h"
#include "chrome/browser/chromeos/printing/cups_print_job_manager_factory.h"
#include "chrome/browser/chromeos/printing/printers_manager_factory.h"
#include "chrome/browser/chromeos/tether/tether_service_factory.h"
......@@ -230,7 +230,7 @@ EnsureBrowserContextKeyedServiceFactoriesBuilt() {
EnhancedBookmarkKeyServiceFactory::GetInstance();
#endif
#if defined(OS_CHROMEOS)
chromeos::PrinterDetectorFactory::GetInstance();
chromeos::UsbPrinterDetectorFactory::GetInstance();
chromeos::CupsPrintJobManagerFactory::GetInstance();
chromeos::PrintersManagerFactory::GetInstance();
TetherServiceFactory::GetInstance();
......
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