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 <stdint.h> |
| 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
9 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
10 #include "base/location.h" | 12 #include "base/location.h" |
| 13 #include "base/macros.h" |
11 #include "base/metrics/field_trial.h" | 14 #include "base/metrics/field_trial.h" |
12 #include "base/prefs/pref_registry_simple.h" | 15 #include "base/prefs/pref_registry_simple.h" |
13 #include "base/prefs/testing_pref_service.h" | 16 #include "base/prefs/testing_pref_service.h" |
14 #include "base/run_loop.h" | 17 #include "base/run_loop.h" |
15 #include "base/strings/string_util.h" | 18 #include "base/strings/string_util.h" |
16 #include "base/test/test_simple_task_runner.h" | 19 #include "base/test/test_simple_task_runner.h" |
17 #include "base/thread_task_runner_handle.h" | 20 #include "base/thread_task_runner_handle.h" |
18 #include "base/threading/thread.h" | 21 #include "base/threading/thread.h" |
19 #include "components/gcm_driver/fake_gcm_app_handler.h" | 22 #include "components/gcm_driver/fake_gcm_app_handler.h" |
20 #include "components/gcm_driver/fake_gcm_client.h" | 23 #include "components/gcm_driver/fake_gcm_client.h" |
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
832 // Tests a single instance of GCMDriver. | 835 // Tests a single instance of GCMDriver. |
833 class GCMChannelStatusSyncerTest : public GCMDriverTest { | 836 class GCMChannelStatusSyncerTest : public GCMDriverTest { |
834 public: | 837 public: |
835 GCMChannelStatusSyncerTest(); | 838 GCMChannelStatusSyncerTest(); |
836 ~GCMChannelStatusSyncerTest() override; | 839 ~GCMChannelStatusSyncerTest() override; |
837 | 840 |
838 // testing::Test: | 841 // testing::Test: |
839 void SetUp() override; | 842 void SetUp() override; |
840 | 843 |
841 void CompleteGCMChannelStatusRequest(bool enabled, int poll_interval_seconds); | 844 void CompleteGCMChannelStatusRequest(bool enabled, int poll_interval_seconds); |
842 bool CompareDelaySeconds(int64 expected_delay_seconds, | 845 bool CompareDelaySeconds(int64_t expected_delay_seconds, |
843 int64 actual_delay_seconds); | 846 int64_t actual_delay_seconds); |
844 | 847 |
845 GCMChannelStatusSyncer* syncer() { | 848 GCMChannelStatusSyncer* syncer() { |
846 return driver()->gcm_channel_status_syncer_for_testing(); | 849 return driver()->gcm_channel_status_syncer_for_testing(); |
847 } | 850 } |
848 | 851 |
849 private: | 852 private: |
850 net::TestURLFetcherFactory url_fetcher_factory_; | 853 net::TestURLFetcherFactory url_fetcher_factory_; |
851 | 854 |
852 DISALLOW_COPY_AND_ASSIGN(GCMChannelStatusSyncerTest); | 855 DISALLOW_COPY_AND_ASSIGN(GCMChannelStatusSyncerTest); |
853 }; | 856 }; |
(...skipping 27 matching lines...) Expand all Loading... |
881 response_proto.SerializeToString(&response_string); | 884 response_proto.SerializeToString(&response_string); |
882 | 885 |
883 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); | 886 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); |
884 ASSERT_TRUE(fetcher); | 887 ASSERT_TRUE(fetcher); |
885 fetcher->set_response_code(net::HTTP_OK); | 888 fetcher->set_response_code(net::HTTP_OK); |
886 fetcher->SetResponseString(response_string); | 889 fetcher->SetResponseString(response_string); |
887 fetcher->delegate()->OnURLFetchComplete(fetcher); | 890 fetcher->delegate()->OnURLFetchComplete(fetcher); |
888 } | 891 } |
889 | 892 |
890 bool GCMChannelStatusSyncerTest::CompareDelaySeconds( | 893 bool GCMChannelStatusSyncerTest::CompareDelaySeconds( |
891 int64 expected_delay_seconds, int64 actual_delay_seconds) { | 894 int64_t expected_delay_seconds, |
| 895 int64_t actual_delay_seconds) { |
892 // Most of time, the actual delay should not be smaller than the expected | 896 // Most of time, the actual delay should not be smaller than the expected |
893 // delay. | 897 // delay. |
894 if (actual_delay_seconds >= expected_delay_seconds) | 898 if (actual_delay_seconds >= expected_delay_seconds) |
895 return true; | 899 return true; |
896 // It is also OK that the actual delay is a bit smaller than the expected | 900 // It is also OK that the actual delay is a bit smaller than the expected |
897 // delay in case that the test runs slowly. | 901 // delay in case that the test runs slowly. |
898 return expected_delay_seconds - actual_delay_seconds < 30; | 902 return expected_delay_seconds - actual_delay_seconds < 30; |
899 } | 903 } |
900 | 904 |
901 TEST_F(GCMChannelStatusSyncerTest, DisableAndEnable) { | 905 TEST_F(GCMChannelStatusSyncerTest, DisableAndEnable) { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
999 // Wait until the GCM channel status request gets triggered. | 1003 // Wait until the GCM channel status request gets triggered. |
1000 PumpUILoop(); | 1004 PumpUILoop(); |
1001 | 1005 |
1002 // Keep delay such that we can find out the computed delay time. | 1006 // Keep delay such that we can find out the computed delay time. |
1003 syncer()->set_delay_removed_for_testing(false); | 1007 syncer()->set_delay_removed_for_testing(false); |
1004 | 1008 |
1005 // Complete the request. The default interval is intact. | 1009 // Complete the request. The default interval is intact. |
1006 CompleteGCMChannelStatusRequest(true, 0); | 1010 CompleteGCMChannelStatusRequest(true, 0); |
1007 | 1011 |
1008 // The next request should be scheduled at the expected default interval. | 1012 // The next request should be scheduled at the expected default interval. |
1009 int64 actual_delay_seconds = | 1013 int64_t actual_delay_seconds = |
1010 syncer()->current_request_delay_interval().InSeconds(); | 1014 syncer()->current_request_delay_interval().InSeconds(); |
1011 int64 expected_delay_seconds = | 1015 int64_t expected_delay_seconds = |
1012 GCMChannelStatusRequest::default_poll_interval_seconds(); | 1016 GCMChannelStatusRequest::default_poll_interval_seconds(); |
1013 EXPECT_TRUE(CompareDelaySeconds(expected_delay_seconds, actual_delay_seconds)) | 1017 EXPECT_TRUE(CompareDelaySeconds(expected_delay_seconds, actual_delay_seconds)) |
1014 << "expected delay: " << expected_delay_seconds | 1018 << "expected delay: " << expected_delay_seconds |
1015 << " actual delay: " << actual_delay_seconds; | 1019 << " actual delay: " << actual_delay_seconds; |
1016 | 1020 |
1017 // Simulate browser start by recreating GCMDriver. | 1021 // Simulate browser start by recreating GCMDriver. |
1018 ShutdownDriver(); | 1022 ShutdownDriver(); |
1019 CreateDriver(); | 1023 CreateDriver(); |
1020 AddAppHandlers(); | 1024 AddAppHandlers(); |
1021 | 1025 |
(...skipping 21 matching lines...) Expand all Loading... |
1043 | 1047 |
1044 // Keep delay such that we can find out the computed delay time. | 1048 // Keep delay such that we can find out the computed delay time. |
1045 syncer()->set_delay_removed_for_testing(false); | 1049 syncer()->set_delay_removed_for_testing(false); |
1046 | 1050 |
1047 // Complete the request. The interval is being changed. | 1051 // Complete the request. The interval is being changed. |
1048 int new_poll_interval_seconds = | 1052 int new_poll_interval_seconds = |
1049 GCMChannelStatusRequest::default_poll_interval_seconds() * 2; | 1053 GCMChannelStatusRequest::default_poll_interval_seconds() * 2; |
1050 CompleteGCMChannelStatusRequest(true, new_poll_interval_seconds); | 1054 CompleteGCMChannelStatusRequest(true, new_poll_interval_seconds); |
1051 | 1055 |
1052 // The next request should be scheduled at the expected updated interval. | 1056 // The next request should be scheduled at the expected updated interval. |
1053 int64 actual_delay_seconds = | 1057 int64_t actual_delay_seconds = |
1054 syncer()->current_request_delay_interval().InSeconds(); | 1058 syncer()->current_request_delay_interval().InSeconds(); |
1055 int64 expected_delay_seconds = new_poll_interval_seconds; | 1059 int64_t expected_delay_seconds = new_poll_interval_seconds; |
1056 EXPECT_TRUE(CompareDelaySeconds(expected_delay_seconds, actual_delay_seconds)) | 1060 EXPECT_TRUE(CompareDelaySeconds(expected_delay_seconds, actual_delay_seconds)) |
1057 << "expected delay: " << expected_delay_seconds | 1061 << "expected delay: " << expected_delay_seconds |
1058 << " actual delay: " << actual_delay_seconds; | 1062 << " actual delay: " << actual_delay_seconds; |
1059 | 1063 |
1060 // Simulate browser start by recreating GCMDriver. | 1064 // Simulate browser start by recreating GCMDriver. |
1061 ShutdownDriver(); | 1065 ShutdownDriver(); |
1062 CreateDriver(); | 1066 CreateDriver(); |
1063 AddAppHandlers(); | 1067 AddAppHandlers(); |
1064 | 1068 |
1065 // After start-up, the request should still be scheduled at the expected | 1069 // After start-up, the request should still be scheduled at the expected |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1283 PumpUILoop(); | 1287 PumpUILoop(); |
1284 EXPECT_EQ(GCMClient::UNKNOWN_ERROR, unregistration_result()); | 1288 EXPECT_EQ(GCMClient::UNKNOWN_ERROR, unregistration_result()); |
1285 | 1289 |
1286 // DeleteToken operation will be invoked after GCMClient becomes ready. | 1290 // DeleteToken operation will be invoked after GCMClient becomes ready. |
1287 GetGCMClient()->PerformDelayedStart(); | 1291 GetGCMClient()->PerformDelayedStart(); |
1288 WaitForAsyncOperation(); | 1292 WaitForAsyncOperation(); |
1289 EXPECT_EQ(GCMClient::SUCCESS, unregistration_result()); | 1293 EXPECT_EQ(GCMClient::SUCCESS, unregistration_result()); |
1290 } | 1294 } |
1291 | 1295 |
1292 } // namespace gcm | 1296 } // namespace gcm |
OLD | NEW |