Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11192)

Unified Diff: chrome/service/cloud_print/cloud_print_proxy_backend.cc

Issue 1900033005: Simplify some CloudPrintProxy code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/service/cloud_print/cloud_print_proxy_backend.h ('k') | pdf/document_loader.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/service/cloud_print/cloud_print_proxy_backend.cc
diff --git a/chrome/service/cloud_print/cloud_print_proxy_backend.cc b/chrome/service/cloud_print/cloud_print_proxy_backend.cc
index bc09b0701997065a6183570a9dfccf8c45ecbc1a..98ca6706a8f983fc8a8fcf5d72d9865ead516d5b 100644
--- a/chrome/service/cloud_print/cloud_print_proxy_backend.cc
+++ b/chrome/service/cloud_print/cloud_print_proxy_backend.cc
@@ -63,8 +63,7 @@ class CloudPrintProxyBackend::Core
void DoInitializeWithRobotAuthCode(const std::string& robot_oauth_auth_code,
const std::string& robot_email);
- // Called on the CloudPrintProxyBackend core_thread_ to perform
- // shutdown.
+ // Called on the CloudPrintProxyBackend |core_thread_| to perform shutdown.
void DoShutdown();
void DoRegisterSelectedPrinters(
const printing::PrinterList& printer_list);
@@ -94,6 +93,14 @@ class CloudPrintProxyBackend::Core
~Core() override {}
+ CloudPrintProxyFrontend* frontend() { return backend_->frontend_; }
+
+ bool PostFrontendTask(const tracked_objects::Location& from_here,
+ const base::Closure& task);
+
+ bool CurrentlyOnFrontendThread() const;
+ bool CurrentlyOnCoreThread() const;
+
void CreateAuthAndConnector();
void DestroyAuthAndConnector();
@@ -127,7 +134,7 @@ class CloudPrintProxyBackend::Core
CloudPrintTokenStore* GetTokenStore();
// Our parent CloudPrintProxyBackend
- CloudPrintProxyBackend* backend_;
+ CloudPrintProxyBackend* const backend_;
// Cloud Print authenticator.
scoped_refptr<CloudPrintAuth> auth_;
@@ -178,10 +185,9 @@ bool CloudPrintProxyBackend::InitializeWithToken(
const std::string& cloud_print_token) {
if (!core_thread_.Start())
return false;
- core_thread_.task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&CloudPrintProxyBackend::Core::DoInitializeWithToken,
- core_.get(), cloud_print_token));
+ PostCoreTask(FROM_HERE,
+ base::Bind(&CloudPrintProxyBackend::Core::DoInitializeWithToken,
+ core_.get(), cloud_print_token));
return true;
}
@@ -190,7 +196,7 @@ bool CloudPrintProxyBackend::InitializeWithRobotToken(
const std::string& robot_email) {
if (!core_thread_.Start())
return false;
- core_thread_.task_runner()->PostTask(
+ PostCoreTask(
FROM_HERE,
base::Bind(&CloudPrintProxyBackend::Core::DoInitializeWithRobotToken,
core_.get(), robot_oauth_refresh_token, robot_email));
@@ -202,7 +208,7 @@ bool CloudPrintProxyBackend::InitializeWithRobotAuthCode(
const std::string& robot_email) {
if (!core_thread_.Start())
return false;
- core_thread_.task_runner()->PostTask(
+ PostCoreTask(
FROM_HERE,
base::Bind(&CloudPrintProxyBackend::Core::DoInitializeWithRobotAuthCode,
core_.get(), robot_oauth_auth_code, robot_email));
@@ -210,17 +216,22 @@ bool CloudPrintProxyBackend::InitializeWithRobotAuthCode(
}
void CloudPrintProxyBackend::Shutdown() {
- core_thread_.task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&CloudPrintProxyBackend::Core::DoShutdown, core_.get()));
+ PostCoreTask(FROM_HERE, base::Bind(&CloudPrintProxyBackend::Core::DoShutdown,
+ core_.get()));
core_thread_.Stop();
- core_ = NULL; // Releases reference to core_.
+ core_ = nullptr; // Releases reference to |core_|.
}
void CloudPrintProxyBackend::UnregisterPrinters() {
- core_thread_.task_runner()->PostTask(
- FROM_HERE, base::Bind(&CloudPrintProxyBackend::Core::DoUnregisterPrinters,
- core_.get()));
+ PostCoreTask(FROM_HERE,
+ base::Bind(&CloudPrintProxyBackend::Core::DoUnregisterPrinters,
+ core_.get()));
+}
+
+bool CloudPrintProxyBackend::PostCoreTask(
+ const tracked_objects::Location& from_here,
+ const base::Closure& task) {
+ return core_thread_.task_runner()->PostTask(from_here, task);
}
CloudPrintProxyBackend::Core::Core(
@@ -238,6 +249,20 @@ CloudPrintProxyBackend::Core::Core(
settings_.CopyFrom(settings);
}
+bool CloudPrintProxyBackend::Core::PostFrontendTask(
+ const tracked_objects::Location& from_here,
+ const base::Closure& task) {
+ return backend_->frontend_loop_->task_runner()->PostTask(from_here, task);
+}
+
+bool CloudPrintProxyBackend::Core::CurrentlyOnFrontendThread() const {
+ return base::MessageLoop::current() == backend_->frontend_loop_;
+}
+
+bool CloudPrintProxyBackend::Core::CurrentlyOnCoreThread() const {
+ return base::MessageLoop::current() == backend_->core_thread_.message_loop();
+}
+
void CloudPrintProxyBackend::Core::CreateAuthAndConnector() {
if (!auth_.get()) {
auth_ = new CloudPrintAuth(this, settings_.server_url(), oauth_client_info_,
@@ -256,7 +281,7 @@ void CloudPrintProxyBackend::Core::DestroyAuthAndConnector() {
void CloudPrintProxyBackend::Core::DoInitializeWithToken(
const std::string& cloud_print_token) {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
CreateAuthAndConnector();
auth_->AuthenticateWithToken(cloud_print_token);
}
@@ -264,7 +289,7 @@ void CloudPrintProxyBackend::Core::DoInitializeWithToken(
void CloudPrintProxyBackend::Core::DoInitializeWithRobotToken(
const std::string& robot_oauth_refresh_token,
const std::string& robot_email) {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
CreateAuthAndConnector();
auth_->AuthenticateWithRobotToken(robot_oauth_refresh_token, robot_email);
}
@@ -272,7 +297,7 @@ void CloudPrintProxyBackend::Core::DoInitializeWithRobotToken(
void CloudPrintProxyBackend::Core::DoInitializeWithRobotAuthCode(
const std::string& robot_oauth_auth_code,
const std::string& robot_email) {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
CreateAuthAndConnector();
auth_->AuthenticateWithRobotAuthCode(robot_oauth_auth_code, robot_email);
}
@@ -287,10 +312,9 @@ void CloudPrintProxyBackend::Core::OnAuthenticationComplete(
token_store->SetToken(access_token);
robot_email_ = robot_email;
// Let the frontend know that we have authenticated.
- backend_->frontend_loop_->task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&Core::NotifyAuthenticated, this, robot_oauth_refresh_token,
- robot_email, user_email));
+ PostFrontendTask(FROM_HERE, base::Bind(&Core::NotifyAuthenticated, this,
+ robot_oauth_refresh_token, robot_email,
+ user_email));
if (first_time) {
InitNotifications(robot_email, access_token);
} else {
@@ -302,17 +326,17 @@ void CloudPrintProxyBackend::Core::OnAuthenticationComplete(
if (!connector_->IsRunning()) {
if (!connector_->Start()) {
// Let the frontend know that we do not have a print system.
- backend_->frontend_loop_->task_runner()->PostTask(
- FROM_HERE, base::Bind(&Core::NotifyPrintSystemUnavailable, this));
+ PostFrontendTask(FROM_HERE,
+ base::Bind(&Core::NotifyPrintSystemUnavailable, this));
}
}
}
void CloudPrintProxyBackend::Core::OnInvalidCredentials() {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
VLOG(1) << "CP_CONNECTOR: Auth Error";
- backend_->frontend_loop_->task_runner()->PostTask(
- FROM_HERE, base::Bind(&Core::NotifyAuthenticationFailed, this));
+ PostFrontendTask(FROM_HERE,
+ base::Bind(&Core::NotifyAuthenticationFailed, this));
}
void CloudPrintProxyBackend::Core::OnAuthFailed() {
@@ -328,14 +352,14 @@ void CloudPrintProxyBackend::Core::OnAuthFailed() {
void CloudPrintProxyBackend::Core::OnXmppPingUpdated(int ping_timeout) {
settings_.SetXmppPingTimeoutSec(ping_timeout);
- backend_->frontend_loop_->task_runner()->PostTask(
+ PostFrontendTask(
FROM_HERE, base::Bind(&Core::NotifyXmppPingUpdated, this, ping_timeout));
}
void CloudPrintProxyBackend::Core::InitNotifications(
const std::string& robot_email,
const std::string& access_token) {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
pending_xmpp_pings_ = 0;
notifier::NotifierOptions notifier_options;
@@ -357,7 +381,7 @@ void CloudPrintProxyBackend::Core::InitNotifications(
}
void CloudPrintProxyBackend::Core::DoShutdown() {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
VLOG(1) << "CP_CONNECTOR: Shutdown connector, id: " << settings_.proxy_id();
if (connector_->IsRunning())
@@ -376,21 +400,20 @@ void CloudPrintProxyBackend::Core::DoShutdown() {
}
void CloudPrintProxyBackend::Core::DoUnregisterPrinters() {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
std::string access_token = GetTokenStore()->token();
std::list<std::string> printer_ids;
connector_->GetPrinterIds(&printer_ids);
- backend_->frontend_loop_->task_runner()->PostTask(
- FROM_HERE, base::Bind(&Core::NotifyUnregisterPrinters, this, access_token,
- printer_ids));
+ PostFrontendTask(FROM_HERE, base::Bind(&Core::NotifyUnregisterPrinters, this,
+ access_token, printer_ids));
}
void CloudPrintProxyBackend::Core::HandlePrinterNotification(
const std::string& notification) {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
size_t pos = notification.rfind(kNotificationUpdateSettings);
if (pos == std::string::npos) {
@@ -407,7 +430,7 @@ void CloudPrintProxyBackend::Core::HandlePrinterNotification(
void CloudPrintProxyBackend::Core::PollForJobs() {
VLOG(1) << "CP_CONNECTOR: Polling for jobs.";
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
// Check all printers for jobs.
connector_->CheckForJobs(kJobFetchReasonPoll, std::string());
@@ -477,7 +500,7 @@ void CloudPrintProxyBackend::Core::CheckXmppPingStatus() {
}
CloudPrintTokenStore* CloudPrintProxyBackend::Core::GetTokenStore() {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
if (!token_store_.get())
token_store_.reset(new CloudPrintTokenStore);
return token_store_.get();
@@ -487,35 +510,35 @@ void CloudPrintProxyBackend::Core::NotifyAuthenticated(
const std::string& robot_oauth_refresh_token,
const std::string& robot_email,
const std::string& user_email) {
- DCHECK(base::MessageLoop::current() == backend_->frontend_loop_);
- backend_->frontend_
- ->OnAuthenticated(robot_oauth_refresh_token, robot_email, user_email);
+ DCHECK(CurrentlyOnFrontendThread());
+ frontend()->OnAuthenticated(robot_oauth_refresh_token, robot_email,
+ user_email);
}
void CloudPrintProxyBackend::Core::NotifyAuthenticationFailed() {
- DCHECK(base::MessageLoop::current() == backend_->frontend_loop_);
- backend_->frontend_->OnAuthenticationFailed();
+ DCHECK(CurrentlyOnFrontendThread());
+ frontend()->OnAuthenticationFailed();
}
void CloudPrintProxyBackend::Core::NotifyPrintSystemUnavailable() {
- DCHECK(base::MessageLoop::current() == backend_->frontend_loop_);
- backend_->frontend_->OnPrintSystemUnavailable();
+ DCHECK(CurrentlyOnFrontendThread());
+ frontend()->OnPrintSystemUnavailable();
}
void CloudPrintProxyBackend::Core::NotifyUnregisterPrinters(
const std::string& auth_token,
const std::list<std::string>& printer_ids) {
- DCHECK(base::MessageLoop::current() == backend_->frontend_loop_);
- backend_->frontend_->OnUnregisterPrinters(auth_token, printer_ids);
+ DCHECK(CurrentlyOnFrontendThread());
+ frontend()->OnUnregisterPrinters(auth_token, printer_ids);
}
void CloudPrintProxyBackend::Core::NotifyXmppPingUpdated(int ping_timeout) {
- DCHECK(base::MessageLoop::current() == backend_->frontend_loop_);
- backend_->frontend_->OnXmppPingUpdated(ping_timeout);
+ DCHECK(CurrentlyOnFrontendThread());
+ frontend()->OnXmppPingUpdated(ping_timeout);
}
void CloudPrintProxyBackend::Core::OnNotificationsEnabled() {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
notifications_enabled_ = true;
notifications_enabled_since_ = base::TimeTicks::Now();
VLOG(1) << "Notifications for connector " << settings_.proxy_id()
@@ -533,7 +556,7 @@ void CloudPrintProxyBackend::Core::OnNotificationsEnabled() {
void CloudPrintProxyBackend::Core::OnNotificationsDisabled(
notifier::NotificationsDisabledReason reason) {
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
+ DCHECK(CurrentlyOnCoreThread());
notifications_enabled_ = false;
LOG(ERROR) << "Notifications for connector " << settings_.proxy_id()
<< " disabled.";
@@ -547,11 +570,12 @@ void CloudPrintProxyBackend::Core::OnNotificationsDisabled(
void CloudPrintProxyBackend::Core::OnIncomingNotification(
const notifier::Notification& notification) {
+ DCHECK(CurrentlyOnCoreThread());
+
// Since we got some notification from the server,
// reset pending ping counter to 0.
pending_xmpp_pings_ = 0;
- DCHECK(base::MessageLoop::current() == backend_->core_thread_.message_loop());
VLOG(1) << "CP_CONNECTOR: Incoming notification.";
if (base::EqualsCaseInsensitiveASCII(kCloudPrintPushNotificationsSource,
notification.channel))
« no previous file with comments | « chrome/service/cloud_print/cloud_print_proxy_backend.h ('k') | pdf/document_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698