| OLD | NEW |
| 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 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 scoped_ptr<GCMClientFactory> gcm_client_factory, | 349 scoped_ptr<GCMClientFactory> gcm_client_factory, |
| 350 const GCMClient::ChromeBuildInfo& chrome_build_info, | 350 const GCMClient::ChromeBuildInfo& chrome_build_info, |
| 351 const base::FilePath& store_path, | 351 const base::FilePath& store_path, |
| 352 const scoped_refptr<net::URLRequestContextGetter>& request_context, | 352 const scoped_refptr<net::URLRequestContextGetter>& request_context, |
| 353 const scoped_refptr<base::SequencedTaskRunner>& ui_thread, | 353 const scoped_refptr<base::SequencedTaskRunner>& ui_thread, |
| 354 const scoped_refptr<base::SequencedTaskRunner>& io_thread, | 354 const scoped_refptr<base::SequencedTaskRunner>& io_thread, |
| 355 const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner) | 355 const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner) |
| 356 : signed_in_(false), | 356 : signed_in_(false), |
| 357 gcm_started_(false), | 357 gcm_started_(false), |
| 358 gcm_enabled_(true), | 358 gcm_enabled_(true), |
| 359 gcm_client_ready_(false), | |
| 360 connected_(false), | 359 connected_(false), |
| 361 ui_thread_(ui_thread), | 360 ui_thread_(ui_thread), |
| 362 io_thread_(io_thread), | 361 io_thread_(io_thread), |
| 363 weak_ptr_factory_(this) { | 362 weak_ptr_factory_(this) { |
| 364 // Create and initialize the GCMClient. Note that this does not initiate the | 363 // Create and initialize the GCMClient. Note that this does not initiate the |
| 365 // GCM check-in. | 364 // GCM check-in. |
| 366 io_worker_.reset(new IOWorker(ui_thread, io_thread)); | 365 io_worker_.reset(new IOWorker(ui_thread, io_thread)); |
| 367 io_thread_->PostTask( | 366 io_thread_->PostTask( |
| 368 FROM_HERE, | 367 FROM_HERE, |
| 369 base::Bind(&GCMDriverDesktop::IOWorker::Initialize, | 368 base::Bind(&GCMDriverDesktop::IOWorker::Initialize, |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 GCMClient* GCMDriverDesktop::GetGCMClientForTesting() const { | 544 GCMClient* GCMDriverDesktop::GetGCMClientForTesting() const { |
| 546 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | 545 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
| 547 return io_worker_ ? io_worker_->gcm_client_for_testing() : NULL; | 546 return io_worker_ ? io_worker_->gcm_client_for_testing() : NULL; |
| 548 } | 547 } |
| 549 | 548 |
| 550 bool GCMDriverDesktop::IsStarted() const { | 549 bool GCMDriverDesktop::IsStarted() const { |
| 551 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | 550 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
| 552 return gcm_started_; | 551 return gcm_started_; |
| 553 } | 552 } |
| 554 | 553 |
| 555 bool GCMDriverDesktop::IsGCMClientReady() const { | |
| 556 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | |
| 557 return gcm_client_ready_; | |
| 558 } | |
| 559 | |
| 560 bool GCMDriverDesktop::IsConnected() const { | 554 bool GCMDriverDesktop::IsConnected() const { |
| 561 return connected_; | 555 return connected_; |
| 562 } | 556 } |
| 563 | 557 |
| 564 void GCMDriverDesktop::GetGCMStatistics( | 558 void GCMDriverDesktop::GetGCMStatistics( |
| 565 const GetGCMStatisticsCallback& callback, | 559 const GetGCMStatisticsCallback& callback, |
| 566 bool clear_logs) { | 560 bool clear_logs) { |
| 567 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | 561 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
| 568 DCHECK(!callback.is_null()); | 562 DCHECK(!callback.is_null()); |
| 569 | 563 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 return GCMClient::SUCCESS; | 613 return GCMClient::SUCCESS; |
| 620 } | 614 } |
| 621 | 615 |
| 622 void GCMDriverDesktop::RemoveCachedData() { | 616 void GCMDriverDesktop::RemoveCachedData() { |
| 623 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | 617 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
| 624 // Remove all the queued tasks since they no longer make sense after | 618 // Remove all the queued tasks since they no longer make sense after |
| 625 // GCM service is stopped. | 619 // GCM service is stopped. |
| 626 weak_ptr_factory_.InvalidateWeakPtrs(); | 620 weak_ptr_factory_.InvalidateWeakPtrs(); |
| 627 | 621 |
| 628 gcm_started_ = false; | 622 gcm_started_ = false; |
| 629 gcm_client_ready_ = false; | |
| 630 delayed_task_controller_.reset(); | 623 delayed_task_controller_.reset(); |
| 631 ClearCallbacks(); | 624 ClearCallbacks(); |
| 632 } | 625 } |
| 633 | 626 |
| 634 void GCMDriverDesktop::MessageReceived( | 627 void GCMDriverDesktop::MessageReceived( |
| 635 const std::string& app_id, | 628 const std::string& app_id, |
| 636 const GCMClient::IncomingMessage& message) { | 629 const GCMClient::IncomingMessage& message) { |
| 637 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | 630 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
| 638 | 631 |
| 639 // Drop the event if the service has been stopped. | 632 // Drop the event if the service has been stopped. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 661 // Drop the event if the service has been stopped. | 654 // Drop the event if the service has been stopped. |
| 662 if (!gcm_started_) | 655 if (!gcm_started_) |
| 663 return; | 656 return; |
| 664 | 657 |
| 665 GetAppHandler(app_id)->OnSendError(app_id, send_error_details); | 658 GetAppHandler(app_id)->OnSendError(app_id, send_error_details); |
| 666 } | 659 } |
| 667 | 660 |
| 668 void GCMDriverDesktop::GCMClientReady() { | 661 void GCMDriverDesktop::GCMClientReady() { |
| 669 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | 662 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
| 670 | 663 |
| 671 if (gcm_client_ready_) | |
| 672 return; | |
| 673 gcm_client_ready_ = true; | |
| 674 | |
| 675 delayed_task_controller_->SetReady(); | 664 delayed_task_controller_->SetReady(); |
| 676 } | 665 } |
| 677 | 666 |
| 678 void GCMDriverDesktop::OnConnected(const net::IPEndPoint& ip_endpoint) { | 667 void GCMDriverDesktop::OnConnected(const net::IPEndPoint& ip_endpoint) { |
| 679 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); | 668 DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
| 680 | 669 |
| 681 connected_ = true; | 670 connected_ = true; |
| 682 | 671 |
| 683 // Drop the event if signed out. | 672 // Drop the event if signed out. |
| 684 if (!signed_in_) | 673 if (!signed_in_) |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 717 | 706 |
| 718 // Normally request_gcm_statistics_callback_ would not be null. | 707 // Normally request_gcm_statistics_callback_ would not be null. |
| 719 if (!request_gcm_statistics_callback_.is_null()) | 708 if (!request_gcm_statistics_callback_.is_null()) |
| 720 request_gcm_statistics_callback_.Run(stats); | 709 request_gcm_statistics_callback_.Run(stats); |
| 721 else | 710 else |
| 722 LOG(WARNING) << "request_gcm_statistics_callback_ is NULL."; | 711 LOG(WARNING) << "request_gcm_statistics_callback_ is NULL."; |
| 723 } | 712 } |
| 724 | 713 |
| 725 } // namespace gcm | 714 } // namespace gcm |
| 726 | 715 |
| OLD | NEW |