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 "chrome/browser/services/gcm/gcm_profile_service.h" | 5 #include "chrome/browser/services/gcm/gcm_profile_service.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
11 #include "base/callback.h" | 11 #include "base/callback.h" |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
| 14 #include "chrome/browser/services/gcm/fake_gcm_app_handler.h" |
14 #include "chrome/browser/services/gcm/fake_gcm_client.h" | 15 #include "chrome/browser/services/gcm/fake_gcm_client.h" |
15 #include "chrome/browser/services/gcm/fake_gcm_client_factory.h" | 16 #include "chrome/browser/services/gcm/fake_gcm_client_factory.h" |
16 #include "chrome/browser/services/gcm/fake_signin_manager.h" | 17 #include "chrome/browser/services/gcm/fake_signin_manager.h" |
17 #include "chrome/browser/services/gcm/gcm_driver.h" | 18 #include "chrome/browser/services/gcm/gcm_driver.h" |
18 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" | 19 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" |
19 #include "chrome/browser/signin/signin_manager_factory.h" | 20 #include "chrome/browser/signin/signin_manager_factory.h" |
20 #include "chrome/test/base/testing_profile.h" | 21 #include "chrome/test/base/testing_profile.h" |
21 #include "components/gcm_driver/gcm_client_factory.h" | 22 #include "components/gcm_driver/gcm_client_factory.h" |
22 #include "components/pref_registry/pref_registry_syncable.h" | 23 #include "components/pref_registry/pref_registry_syncable.h" |
23 #include "content/public/browser/browser_context.h" | 24 #include "content/public/browser/browser_context.h" |
(...skipping 23 matching lines...) Expand all Loading... |
47 | 48 |
48 } // namespace | 49 } // namespace |
49 | 50 |
50 class GCMProfileServiceTest : public testing::Test { | 51 class GCMProfileServiceTest : public testing::Test { |
51 protected: | 52 protected: |
52 GCMProfileServiceTest(); | 53 GCMProfileServiceTest(); |
53 virtual ~GCMProfileServiceTest(); | 54 virtual ~GCMProfileServiceTest(); |
54 | 55 |
55 // testing::Test: | 56 // testing::Test: |
56 virtual void SetUp() OVERRIDE; | 57 virtual void SetUp() OVERRIDE; |
| 58 virtual void TearDown() OVERRIDE; |
57 | 59 |
58 FakeGCMClient* GetGCMClient() const; | 60 FakeGCMClient* GetGCMClient() const; |
59 | 61 |
60 void RegisterAndWaitForCompletion(const std::vector<std::string>& sender_ids); | 62 void RegisterAndWaitForCompletion(const std::vector<std::string>& sender_ids); |
61 void UnregisterAndWaitForCompletion(); | 63 void UnregisterAndWaitForCompletion(); |
62 void SendAndWaitForCompletion(const GCMClient::OutgoingMessage& message); | 64 void SendAndWaitForCompletion(const GCMClient::OutgoingMessage& message); |
63 | 65 |
64 void RegisterCompleted(const base::Closure& callback, | 66 void RegisterCompleted(const base::Closure& callback, |
65 const std::string& registration_id, | 67 const std::string& registration_id, |
66 GCMClient::Result result); | 68 GCMClient::Result result); |
67 void UnregisterCompleted(const base::Closure& callback, | 69 void UnregisterCompleted(const base::Closure& callback, |
68 GCMClient::Result result); | 70 GCMClient::Result result); |
69 void SendCompleted(const base::Closure& callback, | 71 void SendCompleted(const base::Closure& callback, |
70 const std::string& message_id, | 72 const std::string& message_id, |
71 GCMClient::Result result); | 73 GCMClient::Result result); |
72 | 74 |
73 GCMDriver* driver() const { return gcm_profile_service_->driver(); } | 75 GCMDriver* driver() const { return gcm_profile_service_->driver(); } |
74 std::string registration_id() const { return registration_id_; } | 76 std::string registration_id() const { return registration_id_; } |
75 GCMClient::Result registration_result() const { return registration_result_; } | 77 GCMClient::Result registration_result() const { return registration_result_; } |
76 GCMClient::Result unregistration_result() const { | 78 GCMClient::Result unregistration_result() const { |
77 return unregistration_result_; | 79 return unregistration_result_; |
78 } | 80 } |
79 std::string send_message_id() const { return send_message_id_; } | 81 std::string send_message_id() const { return send_message_id_; } |
80 GCMClient::Result send_result() const { return send_result_; } | 82 GCMClient::Result send_result() const { return send_result_; } |
81 | 83 |
82 private: | 84 private: |
83 content::TestBrowserThreadBundle thread_bundle_; | 85 content::TestBrowserThreadBundle thread_bundle_; |
84 scoped_ptr<TestingProfile> profile_; | 86 scoped_ptr<TestingProfile> profile_; |
85 GCMProfileService* gcm_profile_service_; | 87 GCMProfileService* gcm_profile_service_; |
| 88 scoped_ptr<FakeGCMAppHandler> gcm_app_handler_; |
86 | 89 |
87 std::string registration_id_; | 90 std::string registration_id_; |
88 GCMClient::Result registration_result_; | 91 GCMClient::Result registration_result_; |
89 GCMClient::Result unregistration_result_; | 92 GCMClient::Result unregistration_result_; |
90 std::string send_message_id_; | 93 std::string send_message_id_; |
91 GCMClient::Result send_result_; | 94 GCMClient::Result send_result_; |
92 | 95 |
93 DISALLOW_COPY_AND_ASSIGN(GCMProfileServiceTest); | 96 DISALLOW_COPY_AND_ASSIGN(GCMProfileServiceTest); |
94 }; | 97 }; |
95 | 98 |
96 GCMProfileServiceTest::GCMProfileServiceTest() | 99 GCMProfileServiceTest::GCMProfileServiceTest() |
97 : gcm_profile_service_(NULL), | 100 : gcm_profile_service_(NULL), |
| 101 gcm_app_handler_(new FakeGCMAppHandler), |
98 registration_result_(GCMClient::UNKNOWN_ERROR), | 102 registration_result_(GCMClient::UNKNOWN_ERROR), |
99 send_result_(GCMClient::UNKNOWN_ERROR) { | 103 send_result_(GCMClient::UNKNOWN_ERROR) { |
100 } | 104 } |
101 | 105 |
102 GCMProfileServiceTest::~GCMProfileServiceTest() { | 106 GCMProfileServiceTest::~GCMProfileServiceTest() { |
103 } | 107 } |
104 | 108 |
105 FakeGCMClient* GCMProfileServiceTest::GetGCMClient() const { | 109 FakeGCMClient* GCMProfileServiceTest::GetGCMClient() const { |
106 return static_cast<FakeGCMClient*>( | 110 return static_cast<FakeGCMClient*>( |
107 gcm_profile_service_->driver()->GetGCMClientForTesting()); | 111 gcm_profile_service_->driver()->GetGCMClientForTesting()); |
108 } | 112 } |
109 | 113 |
110 void GCMProfileServiceTest::SetUp() { | 114 void GCMProfileServiceTest::SetUp() { |
111 TestingProfile::Builder builder; | 115 TestingProfile::Builder builder; |
112 builder.AddTestingFactory(SigninManagerFactory::GetInstance(), | 116 builder.AddTestingFactory(SigninManagerFactory::GetInstance(), |
113 FakeSigninManager::Build); | 117 FakeSigninManager::Build); |
114 profile_ = builder.Build(); | 118 profile_ = builder.Build(); |
115 | 119 |
116 gcm_profile_service_ = static_cast<GCMProfileService*>( | 120 gcm_profile_service_ = static_cast<GCMProfileService*>( |
117 GCMProfileServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 121 GCMProfileServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
118 profile_.get(), | 122 profile_.get(), |
119 &BuildGCMProfileService)); | 123 &BuildGCMProfileService)); |
| 124 gcm_profile_service_->driver()->AddAppHandler( |
| 125 kTestAppID, gcm_app_handler_.get()); |
120 | 126 |
121 FakeSigninManager* signin_manager = static_cast<FakeSigninManager*>( | 127 FakeSigninManager* signin_manager = static_cast<FakeSigninManager*>( |
122 SigninManagerFactory::GetInstance()->GetForProfile(profile_.get())); | 128 SigninManagerFactory::GetInstance()->GetForProfile(profile_.get())); |
123 signin_manager->SignIn(kTestAccountID); | 129 signin_manager->SignIn(kTestAccountID); |
124 base::RunLoop().RunUntilIdle(); | 130 base::RunLoop().RunUntilIdle(); |
125 } | 131 } |
126 | 132 |
| 133 void GCMProfileServiceTest::TearDown() { |
| 134 gcm_profile_service_->driver()->RemoveAppHandler(kTestAppID); |
| 135 } |
| 136 |
127 void GCMProfileServiceTest::RegisterAndWaitForCompletion( | 137 void GCMProfileServiceTest::RegisterAndWaitForCompletion( |
128 const std::vector<std::string>& sender_ids) { | 138 const std::vector<std::string>& sender_ids) { |
129 base::RunLoop run_loop; | 139 base::RunLoop run_loop; |
130 gcm_profile_service_->driver()->Register( | 140 gcm_profile_service_->driver()->Register( |
131 kTestAppID, | 141 kTestAppID, |
132 sender_ids, | 142 sender_ids, |
133 base::Bind(&GCMProfileServiceTest::RegisterCompleted, | 143 base::Bind(&GCMProfileServiceTest::RegisterCompleted, |
134 base::Unretained(this), | 144 base::Unretained(this), |
135 run_loop.QuitClosure())); | 145 run_loop.QuitClosure())); |
136 run_loop.Run(); | 146 run_loop.Run(); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 GCMClient::OutgoingMessage message; | 212 GCMClient::OutgoingMessage message; |
203 message.id = "1"; | 213 message.id = "1"; |
204 message.data["key1"] = "value1"; | 214 message.data["key1"] = "value1"; |
205 SendAndWaitForCompletion( message); | 215 SendAndWaitForCompletion( message); |
206 | 216 |
207 EXPECT_EQ(message.id, send_message_id()); | 217 EXPECT_EQ(message.id, send_message_id()); |
208 EXPECT_EQ(GCMClient::SUCCESS, send_result()); | 218 EXPECT_EQ(GCMClient::SUCCESS, send_result()); |
209 } | 219 } |
210 | 220 |
211 } // namespace gcm | 221 } // namespace gcm |
OLD | NEW |