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

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: Fix test 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 99a4f54d8b8f83803c00efa1e33f64bac858c76c..656fe558b366fe9eb15284a6bcef253227a7f59f 100644
--- a/chrome/browser/services/gcm/gcm_client_mock.cc
+++ b/chrome/browser/services/gcm/gcm_client_mock.cc
@@ -13,10 +13,13 @@
namespace gcm {
-GCMClientMock::GCMClientMock(Status status, ErrorSimulation error_simulation)
+GCMClientMock::GCMClientMock(LoadingDelay loading_delay,
+ ErrorSimulation error_simulation)
: delegate_(NULL),
- status_(status),
- error_simulation_(error_simulation) {
+ status_(UNINITIALIZED),
+ loading_delay_(loading_delay),
+ error_simulation_(error_simulation),
+ weak_ptr_factory_(this) {
}
GCMClientMock::~GCMClientMock() {
@@ -33,8 +36,26 @@ void GCMClientMock::Initialize(
delegate_ = delegate;
}
+void GCMClientMock::Load() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ DCHECK_NE(LOADED, status_);
+
+ if (loading_delay_ == DELAY_LOADING)
+ return;
+ DoLoading();
+}
+
+void GCMClientMock::DoLoading() {
+ status_ = LOADED;
+ base::MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(&GCMClientMock::CheckinFinished,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
void GCMClientMock::CheckOut() {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ status_ = CHECKED_OUT;
}
void GCMClientMock::Register(const std::string& app_id,
@@ -49,7 +70,7 @@ void GCMClientMock::Register(const std::string& app_id,
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(&GCMClientMock::RegisterFinished,
- base::Unretained(this),
+ weak_ptr_factory_.GetWeakPtr(),
app_id,
registration_id));
}
@@ -65,13 +86,18 @@ void GCMClientMock::Send(const std::string& app_id,
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(&GCMClientMock::SendFinished,
- base::Unretained(this),
+ weak_ptr_factory_.GetWeakPtr(),
app_id,
message.id));
}
-bool GCMClientMock::IsReady() const {
- return status_ == READY;
+void GCMClientMock::PerformDelayedLoading() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO,
+ FROM_HERE,
+ base::Bind(&GCMClientMock::DoLoading, weak_ptr_factory_.GetWeakPtr()));
}
void GCMClientMock::ReceiveMessage(const std::string& app_id,
@@ -82,7 +108,7 @@ void GCMClientMock::ReceiveMessage(const std::string& app_id,
content::BrowserThread::IO,
FROM_HERE,
base::Bind(&GCMClientMock::MessageReceived,
- base::Unretained(this),
+ weak_ptr_factory_.GetWeakPtr(),
app_id,
message));
}
@@ -94,22 +120,10 @@ void GCMClientMock::DeleteMessages(const std::string& app_id) {
content::BrowserThread::IO,
FROM_HERE,
base::Bind(&GCMClientMock::MessagesDeleted,
- base::Unretained(this),
+ weak_ptr_factory_.GetWeakPtr(),
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) {
@@ -132,6 +146,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(
@@ -147,7 +165,7 @@ void GCMClientMock::SendFinished(const std::string& app_id,
base::MessageLoop::current()->PostDelayedTask(
FROM_HERE,
base::Bind(&GCMClientMock::MessageSendError,
- base::Unretained(this),
+ weak_ptr_factory_.GetWeakPtr(),
app_id,
message_id),
base::TimeDelta::FromMilliseconds(200));
@@ -171,8 +189,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