1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_SERVICES_GCM_FAKE_GCM_PROFILE_SERVICE_H_ 6 #define CHROME_BROWSER_SERVICES_GCM_FAKE_GCM_PROFILE_SERVICE_H_ 7 8 #include <list> 9 #include <vector> 10 11 #include "chrome/browser/services/gcm/gcm_profile_service.h" 12 #include "components/gcm_driver/gcm_driver.h" 13 14 namespace content { 15 class BrowserContext; 16 } // namespace content 17 18 namespace gcm { 19 20 // Acts as a bridge between GCM API and GCMClient layer for testing purposes. 21 class FakeGCMProfileService : public GCMProfileService { 22 public: 23 // Helper function to be used with 24 // KeyedService::SetTestingFactory(). 25 static KeyedService* Build(content::BrowserContext* context); 26 27 explicit FakeGCMProfileService(Profile* profile); 28 virtual ~FakeGCMProfileService(); 29 30 void RegisterFinished(const std::string& app_id, 31 const std::vector<std::string>& sender_ids); 32 void UnregisterFinished(const std::string& app_id); 33 void SendFinished(const std::string& app_id, 34 const std::string& receiver_id, 35 const GCMClient::OutgoingMessage& message); 36 37 void AddExpectedUnregisterResponse(GCMClient::Result result); 38 39 const GCMClient::OutgoingMessage& last_sent_message() const { 40 return last_sent_message_; 41 } 42 43 const std::string& last_receiver_id() const { 44 return last_receiver_id_; 45 } 46 47 const std::string& last_registered_app_id() const { 48 return last_registered_app_id_; 49 } 50 51 const std::vector<std::string>& last_registered_sender_ids() const { 52 return last_registered_sender_ids_; 53 } 54 55 void set_collect(bool collect) { 56 collect_ = collect; 57 } 58 59 private: 60 // Indicates whether the serivce will collect paramters of the calls for 61 // furter verification in tests. 62 bool collect_; 63 std::string last_registered_app_id_; 64 std::vector<std::string> last_registered_sender_ids_; 65 std::list<GCMClient::Result> unregister_responses_; 66 GCMClient::OutgoingMessage last_sent_message_; 67 std::string last_receiver_id_; 68 69 DISALLOW_COPY_AND_ASSIGN(FakeGCMProfileService); 70 }; 71 72 } // namespace gcm 73 74 #endif // CHROME_BROWSER_SERVICES_GCM_FAKE_GCM_PROFILE_SERVICE_H_ 75