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

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

Issue 184273011: Merge 253787 "[GCM] Make sure GCM checkout logic is invoked when..." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1847/src/
Patch Set: 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
« no previous file with comments | « chrome/browser/services/gcm/gcm_client_mock.h ('k') | chrome/browser/services/gcm/gcm_profile_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/services/gcm/gcm_client_mock.cc
===================================================================
--- chrome/browser/services/gcm/gcm_client_mock.cc (revision 255183)
+++ chrome/browser/services/gcm/gcm_client_mock.cc (working copy)
@@ -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() {
@@ -32,8 +35,26 @@
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,
@@ -48,7 +69,7 @@
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(&GCMClientMock::RegisterFinished,
- base::Unretained(this),
+ weak_ptr_factory_.GetWeakPtr(),
app_id,
registration_id));
}
@@ -64,13 +85,18 @@
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,
@@ -81,7 +107,7 @@
content::BrowserThread::IO,
FROM_HERE,
base::Bind(&GCMClientMock::MessageReceived,
- base::Unretained(this),
+ weak_ptr_factory_.GetWeakPtr(),
app_id,
message));
}
@@ -93,22 +119,10 @@
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) {
@@ -131,6 +145,10 @@
return registration_id;
}
+void GCMClientMock::CheckinFinished() {
+ delegate_->OnGCMReady();
+}
+
void GCMClientMock::RegisterFinished(const std::string& app_id,
const std::string& registrion_id) {
delegate_->OnRegisterFinished(
@@ -146,7 +164,7 @@
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));
@@ -170,8 +188,4 @@
delegate_->OnMessageSendError(app_id, message_id, NETWORK_ERROR);
}
-void GCMClientMock::SetReadyOnIO() {
- delegate_->OnGCMReady();
-}
-
} // namespace gcm
« no previous file with comments | « chrome/browser/services/gcm/gcm_client_mock.h ('k') | chrome/browser/services/gcm/gcm_profile_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698