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

Side by Side Diff: components/gcm_driver/gcm_driver_desktop.cc

Issue 1124783002: [GCM] Wiring heartbeat interval calls to GCMDriver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@store-heartbeat-gcm
Patch Set: Rebasing Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/gcm_driver/gcm_driver_desktop.h" 5 #include "components/gcm_driver/gcm_driver_desktop.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 void SetAccountTokens( 84 void SetAccountTokens(
85 const std::vector<GCMClient::AccountTokenInfo>& account_tokens); 85 const std::vector<GCMClient::AccountTokenInfo>& account_tokens);
86 void UpdateAccountMapping(const AccountMapping& account_mapping); 86 void UpdateAccountMapping(const AccountMapping& account_mapping);
87 void RemoveAccountMapping(const std::string& account_id); 87 void RemoveAccountMapping(const std::string& account_id);
88 void SetLastTokenFetchTime(const base::Time& time); 88 void SetLastTokenFetchTime(const base::Time& time);
89 void WakeFromSuspendForHeartbeat(bool wake); 89 void WakeFromSuspendForHeartbeat(bool wake);
90 void AddInstanceIDData(const std::string& app_id, 90 void AddInstanceIDData(const std::string& app_id,
91 const std::string& instance_id_data); 91 const std::string& instance_id_data);
92 void RemoveInstanceIDData(const std::string& app_id); 92 void RemoveInstanceIDData(const std::string& app_id);
93 void GetInstanceIDData(const std::string& app_id); 93 void GetInstanceIDData(const std::string& app_id);
94 void AddHeartbeatInterval(const std::string& scope, int interval_ms);
95 void RemoveHeartbeatInterval(const std::string& scope);
94 96
95 // For testing purpose. Can be called from UI thread. Use with care. 97 // For testing purpose. Can be called from UI thread. Use with care.
96 GCMClient* gcm_client_for_testing() const { return gcm_client_.get(); } 98 GCMClient* gcm_client_for_testing() const { return gcm_client_.get(); }
97 99
98 private: 100 private:
99 scoped_refptr<base::SequencedTaskRunner> ui_thread_; 101 scoped_refptr<base::SequencedTaskRunner> ui_thread_;
100 scoped_refptr<base::SequencedTaskRunner> io_thread_; 102 scoped_refptr<base::SequencedTaskRunner> io_thread_;
101 103
102 base::WeakPtr<GCMDriverDesktop> service_; 104 base::WeakPtr<GCMDriverDesktop> service_;
103 105
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 scoped_ptr<base::Timer> timer; 387 scoped_ptr<base::Timer> timer;
386 if (wake) 388 if (wake)
387 timer.reset(new timers::SimpleAlarmTimer()); 389 timer.reset(new timers::SimpleAlarmTimer());
388 else 390 else
389 timer.reset(new base::Timer(true, false)); 391 timer.reset(new base::Timer(true, false));
390 392
391 gcm_client_->UpdateHeartbeatTimer(timer.Pass()); 393 gcm_client_->UpdateHeartbeatTimer(timer.Pass());
392 #endif 394 #endif
393 } 395 }
394 396
397 void GCMDriverDesktop::IOWorker::AddHeartbeatInterval(
398 const std::string& scope,
399 int interval_ms) {
400 DCHECK(io_thread_->RunsTasksOnCurrentThread());
401 gcm_client_->AddHeartbeatInterval(scope, interval_ms);
402 }
403
404 void GCMDriverDesktop::IOWorker::RemoveHeartbeatInterval(
405 const std::string& scope) {
406 DCHECK(io_thread_->RunsTasksOnCurrentThread());
407 gcm_client_->RemoveHeartbeatInterval(scope);
408 }
409
395 GCMDriverDesktop::GCMDriverDesktop( 410 GCMDriverDesktop::GCMDriverDesktop(
396 scoped_ptr<GCMClientFactory> gcm_client_factory, 411 scoped_ptr<GCMClientFactory> gcm_client_factory,
397 const GCMClient::ChromeBuildInfo& chrome_build_info, 412 const GCMClient::ChromeBuildInfo& chrome_build_info,
398 const std::string& channel_status_request_url, 413 const std::string& channel_status_request_url,
399 const std::string& user_agent, 414 const std::string& user_agent,
400 PrefService* prefs, 415 PrefService* prefs,
401 const base::FilePath& store_path, 416 const base::FilePath& store_path,
402 const scoped_refptr<net::URLRequestContextGetter>& request_context, 417 const scoped_refptr<net::URLRequestContextGetter>& request_context,
403 const scoped_refptr<base::SequencedTaskRunner>& ui_thread, 418 const scoped_refptr<base::SequencedTaskRunner>& ui_thread,
404 const scoped_refptr<base::SequencedTaskRunner>& io_thread, 419 const scoped_refptr<base::SequencedTaskRunner>& io_thread,
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 776
762 // The GCMClient is ready so we can go ahead and post this task to the 777 // The GCMClient is ready so we can go ahead and post this task to the
763 // IOWorker. 778 // IOWorker.
764 io_thread_->PostTask( 779 io_thread_->PostTask(
765 FROM_HERE, 780 FROM_HERE,
766 base::Bind(&GCMDriverDesktop::IOWorker::WakeFromSuspendForHeartbeat, 781 base::Bind(&GCMDriverDesktop::IOWorker::WakeFromSuspendForHeartbeat,
767 base::Unretained(io_worker_.get()), 782 base::Unretained(io_worker_.get()),
768 wake_from_suspend_enabled_)); 783 wake_from_suspend_enabled_));
769 } 784 }
770 785
786 void GCMDriverDesktop::AddHeartbeatInterval(const std::string& scope,
787 int interval_ms) {
788 DCHECK(ui_thread_->RunsTasksOnCurrentThread());
789
790 // The GCM service has not been initialized.
791 if (!delayed_task_controller_)
792 return;
793
794 if (!delayed_task_controller_->CanRunTaskWithoutDelay()) {
795 // The GCM service was initialized but has not started yet.
796 delayed_task_controller_->AddTask(
797 base::Bind(&GCMDriverDesktop::AddHeartbeatInterval,
798 weak_ptr_factory_.GetWeakPtr(),
799 scope,
800 interval_ms));
801 return;
802 }
803
804 io_thread_->PostTask(
805 FROM_HERE,
806 base::Bind(&GCMDriverDesktop::IOWorker::AddHeartbeatInterval,
807 base::Unretained(io_worker_.get()),
808 scope,
809 interval_ms));
810 }
811
812 void GCMDriverDesktop::RemoveHeartbeatInterval(const std::string& scope) {
813 DCHECK(ui_thread_->RunsTasksOnCurrentThread());
814
815 // The GCM service has not been initialized.
816 if (!delayed_task_controller_)
817 return;
818
819 if (!delayed_task_controller_->CanRunTaskWithoutDelay()) {
820 // The GCM service was initialized but has not started yet.
821 delayed_task_controller_->AddTask(
822 base::Bind(&GCMDriverDesktop::RemoveHeartbeatInterval,
823 weak_ptr_factory_.GetWeakPtr(),
824 scope));
825 return;
826 }
827
828 io_thread_->PostTask(
829 FROM_HERE,
830 base::Bind(&GCMDriverDesktop::IOWorker::RemoveHeartbeatInterval,
831 base::Unretained(io_worker_.get()),
832 scope));
833 }
834
771 void GCMDriverDesktop::SetAccountTokens( 835 void GCMDriverDesktop::SetAccountTokens(
772 const std::vector<GCMClient::AccountTokenInfo>& account_tokens) { 836 const std::vector<GCMClient::AccountTokenInfo>& account_tokens) {
773 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); 837 DCHECK(ui_thread_->RunsTasksOnCurrentThread());
774 838
775 account_mapper_->SetAccountTokens(account_tokens); 839 account_mapper_->SetAccountTokens(account_tokens);
776 840
777 io_thread_->PostTask( 841 io_thread_->PostTask(
778 FROM_HERE, 842 FROM_HERE,
779 base::Bind(&GCMDriverDesktop::IOWorker::SetAccountTokens, 843 base::Bind(&GCMDriverDesktop::IOWorker::SetAccountTokens,
780 base::Unretained(io_worker_.get()), 844 base::Unretained(io_worker_.get()),
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); 987 DCHECK(ui_thread_->RunsTasksOnCurrentThread());
924 988
925 // Normally request_gcm_statistics_callback_ would not be null. 989 // Normally request_gcm_statistics_callback_ would not be null.
926 if (!request_gcm_statistics_callback_.is_null()) 990 if (!request_gcm_statistics_callback_.is_null())
927 request_gcm_statistics_callback_.Run(stats); 991 request_gcm_statistics_callback_.Run(stats);
928 else 992 else
929 LOG(WARNING) << "request_gcm_statistics_callback_ is NULL."; 993 LOG(WARNING) << "request_gcm_statistics_callback_ is NULL.";
930 } 994 }
931 995
932 } // namespace gcm 996 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698