summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
diff options
context:
space:
mode:
authorrogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-04 16:37:34 +0000
committerrogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-04 16:37:34 +0000
commit8c885f66a6a432a182ddb1e09bd10ed6aeb4c178 (patch)
tree3129651d957439b6961a08b60573907d4e4e57c1 /chrome/browser/ui/webui/print_preview/print_preview_handler.cc
parent7cefa6bf1eae4bce7b5e28f94f595661415c89f9 (diff)
downloadchromium_src-8c885f66a6a432a182ddb1e09bd10ed6aeb4c178.zip
chromium_src-8c885f66a6a432a182ddb1e09bd10ed6aeb4c178.tar.gz
chromium_src-8c885f66a6a432a182ddb1e09bd10ed6aeb4c178.tar.bz2
Add mirror support to cloud print.
BUG=388826 TBR=sky@chromium.org Review URL: https://codereview.chromium.org/349343002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281413 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/webui/print_preview/print_preview_handler.cc')
-rw-r--r--chrome/browser/ui/webui/print_preview/print_preview_handler.cc29
1 files changed, 28 insertions, 1 deletions
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 f47fe27..ffc06bd 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -36,6 +36,7 @@
#include "chrome/browser/printing/print_view_manager.h"
#include "chrome/browser/printing/printer_manager_dialog.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/signin/account_reconcilor_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -54,9 +55,10 @@
#include "components/cloud_devices/common/cloud_device_description.h"
#include "components/cloud_devices/common/cloud_devices_urls.h"
#include "components/cloud_devices/common/printer_description.h"
+#include "components/signin/core/browser/account_reconcilor.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/signin/core/browser/signin_manager.h"
-#include "components/signin/core/browser/signin_manager_base.h"
+#include "components/signin/core/common/profile_management_switches.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_controller.h"
@@ -551,6 +553,7 @@ PrintPreviewHandler::PrintPreviewHandler()
manage_cloud_printers_dialog_request_count_(0),
reported_failed_preview_(false),
has_logged_printers_count_(false),
+ reconcilor_(NULL),
weak_factory_(this) {
ReportUserActionHistogram(PREVIEW_STARTED);
}
@@ -558,6 +561,8 @@ PrintPreviewHandler::PrintPreviewHandler()
PrintPreviewHandler::~PrintPreviewHandler() {
if (select_file_dialog_.get())
select_file_dialog_->ListenerDestroyed();
+
+ UnregisterForMergeSession();
}
void PrintPreviewHandler::RegisterMessages() {
@@ -621,6 +626,7 @@ void PrintPreviewHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("getPrivetPrinterCapabilities",
base::Bind(&PrintPreviewHandler::HandleGetPrivetPrinterCapabilities,
base::Unretained(this)));
+ RegisterForMergeSession();
}
bool PrintPreviewHandler::PrivetPrintingEnabled() {
@@ -1267,6 +1273,12 @@ void PrintPreviewHandler::OnPrintDialogShown() {
ClosePreviewDialog();
}
+void PrintPreviewHandler::MergeSessionCompleted(
+ const std::string& account_id,
+ const GoogleServiceAuthError& error) {
+ OnSigninComplete();
+}
+
void PrintPreviewHandler::SelectFile(const base::FilePath& default_filename) {
ui::SelectFileDialog::FileTypeInfo file_type_info;
file_type_info.extensions.resize(1);
@@ -1587,3 +1599,18 @@ void PrintPreviewHandler::FillPrinterDescription(
}
#endif // defined(ENABLE_SERVICE_DISCOVERY)
+
+void PrintPreviewHandler::RegisterForMergeSession() {
+ DCHECK(!reconcilor_);
+ Profile* profile = Profile::FromWebUI(web_ui());
+ if (switches::IsEnableAccountConsistency() && !profile->IsOffTheRecord()) {
+ reconcilor_ = AccountReconcilorFactory::GetForProfile(profile);
+ if (reconcilor_)
+ reconcilor_->AddMergeSessionObserver(this);
+ }
+}
+
+void PrintPreviewHandler::UnregisterForMergeSession() {
+ if (reconcilor_)
+ reconcilor_->RemoveMergeSessionObserver(this);
+}