| 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
|
|
|