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

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

Issue 10398051: [Sync] Replace TalkMediator*/MediatorThread* with PushClient (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments, fix test Created 8 years, 7 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_consts.cc ('k') | jingle/jingle.gyp » ('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 fd11caed6e1713d6640c2ecd80d965784e6067ce..e318c1a1f41a207884729571185959b124cbad05 100644
--- a/chrome/service/cloud_print/cloud_print_proxy_backend.cc
+++ b/chrome/service/cloud_print/cloud_print_proxy_backend.cc
@@ -8,6 +8,7 @@
#include <vector>
#include "base/bind.h"
+#include "base/compiler_specific.h"
#include "base/file_util.h"
#include "base/rand_util.h"
#include "base/values.h"
@@ -24,8 +25,7 @@
#include "googleurl/src/gurl.h"
#include "grit/generated_resources.h"
#include "jingle/notifier/base/notifier_options.h"
-#include "jingle/notifier/listener/mediator_thread_impl.h"
-#include "jingle/notifier/listener/talk_mediator_impl.h"
+#include "jingle/notifier/listener/push_client.h"
#include "ui/base/l10n/l10n_util.h"
// The real guts of CloudPrintProxyBackend, to keep the public client API clean.
@@ -33,7 +33,7 @@ class CloudPrintProxyBackend::Core
: public base::RefCountedThreadSafe<CloudPrintProxyBackend::Core>,
public CloudPrintAuth::Client,
public CloudPrintConnector::Client,
- public notifier::TalkMediator::Delegate {
+ public notifier::PushClient::Observer {
public:
// It is OK for print_server_url to be empty. In this case system should
// use system default (local) print server.
@@ -80,18 +80,17 @@ class CloudPrintProxyBackend::Core
const std::string& access_token,
const std::string& robot_oauth_refresh_token,
const std::string& robot_email,
- const std::string& user_email);
- virtual void OnInvalidCredentials();
+ const std::string& user_email) OVERRIDE;
+ virtual void OnInvalidCredentials() OVERRIDE;
// CloudPrintConnector::Client implementation.
- virtual void OnAuthFailed();
+ virtual void OnAuthFailed() OVERRIDE;
- // notifier::TalkMediator::Delegate implementation.
+ // notifier::PushClient::Delegate implementation.
virtual void OnNotificationStateChange(
- bool notifications_enabled);
+ bool notifications_enabled) OVERRIDE;
virtual void OnIncomingNotification(
- const notifier::Notification& notification);
- virtual void OnOutgoingNotification();
+ const notifier::Notification& notification) OVERRIDE;
private:
friend class base::RefCountedThreadSafe<Core>;
@@ -143,7 +142,7 @@ class CloudPrintProxyBackend::Core
// OAuth client info.
gaia::OAuthClientInfo oauth_client_info_;
// Notification (xmpp) handler.
- scoped_ptr<notifier::TalkMediator> talk_mediator_;
+ scoped_ptr<notifier::PushClient> push_client_;
// Indicates whether XMPP notifications are currently enabled.
bool notifications_enabled_;
// The time when notifications were enabled. Valid only when
@@ -351,10 +350,8 @@ void CloudPrintProxyBackend::Core::OnAuthenticationComplete(
InitNotifications(robot_email, access_token);
} else {
// If we are refreshing a token, update the XMPP token too.
- DCHECK(talk_mediator_.get());
- talk_mediator_->SetAuthToken(robot_email,
- access_token,
- kSyncGaiaServiceId);
+ DCHECK(push_client_.get());
+ push_client_->UpdateCredentials(robot_email, access_token);
}
// Start cloud print connector if needed.
if (!connector_->IsRunning()) {
@@ -393,16 +390,14 @@ void CloudPrintProxyBackend::Core::InitNotifications(
notifier_options.request_context_getter =
g_service_process->GetServiceURLRequestContextGetter();
notifier_options.auth_mechanism = "X-OAUTH2";
- talk_mediator_.reset(new notifier::TalkMediatorImpl(
- new notifier::MediatorThreadImpl(notifier_options),
- notifier_options));
+ push_client_.reset(new notifier::PushClient(notifier_options));
+ push_client_->AddObserver(this);
notifier::Subscription subscription;
subscription.channel = kCloudPrintPushNotificationsSource;
subscription.from = kCloudPrintPushNotificationsSource;
- talk_mediator_->AddSubscription(subscription);
- talk_mediator_->SetDelegate(this);
- talk_mediator_->SetAuthToken(robot_email, access_token, kSyncGaiaServiceId);
- talk_mediator_->Login();
+ push_client_->UpdateSubscriptions(
+ notifier::SubscriptionList(1, subscription));
+ push_client_->UpdateCredentials(robot_email, access_token);
}
void CloudPrintProxyBackend::Core::DoShutdown() {
@@ -412,10 +407,11 @@ void CloudPrintProxyBackend::Core::DoShutdown() {
if (connector_->IsRunning())
connector_->Stop();
- // Important to delete the TalkMediator on this thread.
- if (talk_mediator_.get())
- talk_mediator_->Logout();
- talk_mediator_.reset();
+ // Important to delete the PushClient on this thread.
+ if (push_client_.get()) {
+ push_client_->RemoveObserver(this);
+ }
+ push_client_.reset();
notifications_enabled_ = false;
notifications_enabled_since_ = base::TimeTicks();
token_store_.reset();
@@ -536,5 +532,3 @@ void CloudPrintProxyBackend::Core::OnIncomingNotification(
notification.channel.c_str()))
HandlePrinterNotification(notification.data);
}
-
-void CloudPrintProxyBackend::Core::OnOutgoingNotification() {}
« no previous file with comments | « chrome/service/cloud_print/cloud_print_consts.cc ('k') | jingle/jingle.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698