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

Unified Diff: chrome/browser/services/gcm/gcm_client_mock.cc

Issue 165993005: [GCM] Make sure GCM checkout logic is invoked when the profile is signed out (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address feedback Created 6 years, 10 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
Index: chrome/browser/services/gcm/gcm_client_mock.cc
diff --git a/chrome/browser/services/gcm/gcm_client_mock.cc b/chrome/browser/services/gcm/gcm_client_mock.cc
index 45f434983bbb8d418df1164815844ded21a144ef..bead4bd60644ccd3bd46e5fefa1f77f72b3a0cd8 100644
--- a/chrome/browser/services/gcm/gcm_client_mock.cc
+++ b/chrome/browser/services/gcm/gcm_client_mock.cc
@@ -13,9 +13,11 @@
namespace gcm {
-GCMClientMock::GCMClientMock(Status status, ErrorSimulation error_simulation)
+GCMClientMock::GCMClientMock(CheckinDelay checkin_delay,
+ ErrorSimulation error_simulation)
: delegate_(NULL),
- status_(status),
+ status_(UNINITIALIZED),
+ checkin_delay_(checkin_delay),
error_simulation_(error_simulation) {
}
@@ -32,8 +34,23 @@ void GCMClientMock::Initialize(
delegate_ = delegate;
}
+void GCMClientMock::CheckIn() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ DCHECK_NE(CHECKED_IN, status_);
+
+ if (checkin_delay_ == CHECKIN_DELAY)
+ return;
+
+ status_ = CHECKED_IN;
+ base::MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(&GCMClientMock::CheckinFinished,
+ base::Unretained(this)));
+}
+
void GCMClientMock::CheckOut() {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ status_ = CHECKED_OUT;
}
void GCMClientMock::Register(const std::string& app_id,
@@ -69,8 +86,15 @@ void GCMClientMock::Send(const std::string& app_id,
message.id));
}
-bool GCMClientMock::IsReady() const {
- return status_ == READY;
+void GCMClientMock::PerformDelayedCheckIn() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ DCHECK_EQ(checkin_delay_, CHECKIN_DELAY);
+
+ checkin_delay_ = NO_CHECKIN_DELAY;
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO,
+ FROM_HERE,
+ base::Bind(&GCMClientMock::CheckIn, base::Unretained(this)));
}
void GCMClientMock::ReceiveMessage(const std::string& app_id,
@@ -97,18 +121,6 @@ void GCMClientMock::DeleteMessages(const std::string& app_id) {
app_id));
}
-void GCMClientMock::SetReady() {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- DCHECK_EQ(status_, NOT_READY);
-
- status_ = READY;
- content::BrowserThread::PostTask(
- content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(&GCMClientMock::SetReadyOnIO,
- base::Unretained(this)));
-}
-
// static
std::string GCMClientMock::GetRegistrationIdFromSenderIds(
const std::vector<std::string>& sender_ids) {
@@ -131,6 +143,10 @@ std::string GCMClientMock::GetRegistrationIdFromSenderIds(
return registration_id;
}
+void GCMClientMock::CheckinFinished() {
+ delegate_->OnGCMReady();
+}
+
void GCMClientMock::RegisterFinished(const std::string& app_id,
const std::string& registrion_id) {
delegate_->OnRegisterFinished(
@@ -170,8 +186,4 @@ void GCMClientMock::MessageSendError(const std::string& app_id,
delegate_->OnMessageSendError(app_id, message_id, NETWORK_ERROR);
}
-void GCMClientMock::SetReadyOnIO() {
- delegate_->OnGCMReady();
-}
-
} // namespace gcm

Powered by Google App Engine
This is Rietveld 408576698