OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 5 |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/memory/scoped_vector.h" | 7 #include "base/memory/scoped_vector.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "base/test/test_simple_task_runner.h" | 9 #include "base/test/test_simple_task_runner.h" |
10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 namespace { | 29 namespace { |
30 | 30 |
31 const char kUrlPrefix[] = "https://prefix.com/foo"; | 31 const char kUrlPrefix[] = "https://prefix.com/foo"; |
32 const char kBackupConnectUrlPrefix[] = "https://alt1-prefix.com/foo"; | 32 const char kBackupConnectUrlPrefix[] = "https://alt1-prefix.com/foo"; |
33 const char kBackupHttpUrlPrefix[] = "https://alt2-prefix.com/foo"; | 33 const char kBackupHttpUrlPrefix[] = "https://alt2-prefix.com/foo"; |
34 const char kBackupNetworkUrlPrefix[] = "https://alt3-prefix.com/foo"; | 34 const char kBackupNetworkUrlPrefix[] = "https://alt3-prefix.com/foo"; |
35 const char kClient[] = "unittest"; | 35 const char kClient[] = "unittest"; |
36 const char kAppVer[] = "1.0"; | 36 const char kAppVer[] = "1.0"; |
37 const char kAdditionalQuery[] = "additional_query"; | 37 const char kAdditionalQuery[] = "additional_query"; |
38 | 38 |
| 39 #if defined(OS_ANDROID) |
| 40 const char kDefaultPhishList[] = "goog-mobilephish-shavar"; |
| 41 const char kDefaultMalwareList[] = "goog-mobilemalware-shavar"; |
| 42 #else |
| 43 const char kDefaultPhishList[] = "goog-phish-shavar"; |
| 44 const char kDefaultMalwareList[] = "goog-malware-shavar"; |
| 45 #endif |
| 46 |
39 // Add-prefix chunk with single prefix. | 47 // Add-prefix chunk with single prefix. |
40 const char kRawChunkPayload1[] = { | 48 const char kRawChunkPayload1[] = { |
41 '\0', '\0', '\0', '\x08', // 32-bit payload length in network byte order. | 49 '\0', '\0', '\0', '\x08', // 32-bit payload length in network byte order. |
42 '\x08', // field 1, wire format varint | 50 '\x08', // field 1, wire format varint |
43 '\x03', // chunk_number varint 3 | 51 '\x03', // chunk_number varint 3 |
44 '\x22', // field 4, wire format length-delimited | 52 '\x22', // field 4, wire format length-delimited |
45 '\x04', // varint 4 length | 53 '\x04', // varint 4 length |
46 'a', 'b', 'c', 'd' // 4-byte prefix | 54 'a', 'b', 'c', 'd' // 4-byte prefix |
47 }; | 55 }; |
48 const std::string kChunkPayload1(kRawChunkPayload1, sizeof(kRawChunkPayload1)); | 56 const std::string kChunkPayload1(kRawChunkPayload1, sizeof(kRawChunkPayload1)); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 #endif | 95 #endif |
88 return scoped_ptr<SafeBrowsingProtocolManager>( | 96 return scoped_ptr<SafeBrowsingProtocolManager>( |
89 SafeBrowsingProtocolManager::Create(delegate, NULL, config)); | 97 SafeBrowsingProtocolManager::Create(delegate, NULL, config)); |
90 } | 98 } |
91 | 99 |
92 void ValidateUpdateFetcherRequest( | 100 void ValidateUpdateFetcherRequest( |
93 const net::TestURLFetcher* url_fetcher, | 101 const net::TestURLFetcher* url_fetcher, |
94 const std::string& expected_prefix) { | 102 const std::string& expected_prefix) { |
95 ASSERT_TRUE(url_fetcher); | 103 ASSERT_TRUE(url_fetcher); |
96 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); | 104 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); |
97 EXPECT_EQ("goog-phish-shavar;\ngoog-malware-shavar;\n", | 105 |
98 url_fetcher->upload_data()); | 106 std::string expected_lists(base::StringPrintf("%s;\n%s;\n", |
| 107 kDefaultPhishList, |
| 108 kDefaultMalwareList)); |
| 109 EXPECT_EQ(expected_lists, url_fetcher->upload_data()); |
99 EXPECT_EQ(GURL(expected_prefix + "/downloads?client=unittest&appver=1.0" | 110 EXPECT_EQ(GURL(expected_prefix + "/downloads?client=unittest&appver=1.0" |
100 "&pver=3.0" + key_param_), | 111 "&pver=3.0" + key_param_), |
101 url_fetcher->GetOriginalURL()); | 112 url_fetcher->GetOriginalURL()); |
102 } | 113 } |
103 | 114 |
104 void ValidateUpdateFetcherRequest(const net::TestURLFetcher* url_fetcher) { | 115 void ValidateUpdateFetcherRequest(const net::TestURLFetcher* url_fetcher) { |
105 ValidateUpdateFetcherRequest(url_fetcher, kUrlPrefix); | 116 ValidateUpdateFetcherRequest(url_fetcher, kUrlPrefix); |
106 } | 117 } |
107 | 118 |
108 void ValidateRedirectFetcherRequest(const net::TestURLFetcher* url_fetcher, | 119 void ValidateRedirectFetcherRequest(const net::TestURLFetcher* url_fetcher, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 | 172 |
162 // Received a successful response. | 173 // Received a successful response. |
163 next = pm->GetNextUpdateInterval(false); | 174 next = pm->GetNextUpdateInterval(false); |
164 EXPECT_EQ(next, TimeDelta::FromSeconds(1800)); | 175 EXPECT_EQ(next, TimeDelta::FromSeconds(1800)); |
165 } | 176 } |
166 | 177 |
167 TEST_F(SafeBrowsingProtocolManagerTest, TestChunkStrings) { | 178 TEST_F(SafeBrowsingProtocolManagerTest, TestChunkStrings) { |
168 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 179 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
169 | 180 |
170 // Add and Sub chunks. | 181 // Add and Sub chunks. |
171 SBListChunkRanges phish("goog-phish-shavar"); | 182 SBListChunkRanges phish(kDefaultPhishList); |
172 phish.adds = "1,4,6,8-20,99"; | 183 phish.adds = "1,4,6,8-20,99"; |
173 phish.subs = "16,32,64-96"; | 184 phish.subs = "16,32,64-96"; |
174 EXPECT_EQ("goog-phish-shavar;a:1,4,6,8-20,99:s:16,32,64-96\n", | 185 EXPECT_EQ(base::StringPrintf("%s;a:1,4,6,8-20,99:s:16,32,64-96\n", |
| 186 kDefaultPhishList), |
175 safe_browsing::FormatList(phish)); | 187 safe_browsing::FormatList(phish)); |
176 | 188 |
177 // Add chunks only. | 189 // Add chunks only. |
178 phish.subs = ""; | 190 phish.subs = ""; |
179 EXPECT_EQ("goog-phish-shavar;a:1,4,6,8-20,99\n", | 191 EXPECT_EQ(base::StringPrintf("%s;a:1,4,6,8-20,99\n", |
| 192 kDefaultPhishList), |
180 safe_browsing::FormatList(phish)); | 193 safe_browsing::FormatList(phish)); |
181 | 194 |
182 // Sub chunks only. | 195 // Sub chunks only. |
183 phish.adds = ""; | 196 phish.adds = ""; |
184 phish.subs = "16,32,64-96"; | 197 phish.subs = "16,32,64-96"; |
185 EXPECT_EQ("goog-phish-shavar;s:16,32,64-96\n", | 198 EXPECT_EQ(base::StringPrintf("%s;s:16,32,64-96\n", |
| 199 kDefaultPhishList), |
186 safe_browsing::FormatList(phish)); | 200 safe_browsing::FormatList(phish)); |
187 | 201 |
188 // No chunks of either type. | 202 // No chunks of either type. |
189 phish.adds = ""; | 203 phish.adds = ""; |
190 phish.subs = ""; | 204 phish.subs = ""; |
191 EXPECT_EQ("goog-phish-shavar;\n", safe_browsing::FormatList(phish)); | 205 EXPECT_EQ(base::StringPrintf("%s;\n", kDefaultPhishList), |
| 206 safe_browsing::FormatList(phish)); |
192 } | 207 } |
193 | 208 |
194 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashBackOffTimes) { | 209 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashBackOffTimes) { |
195 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 210 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
196 | 211 |
197 // No errors or back off time yet. | 212 // No errors or back off time yet. |
198 EXPECT_EQ(0U, pm->gethash_error_count_); | 213 EXPECT_EQ(0U, pm->gethash_error_count_); |
199 EXPECT_TRUE(pm->next_gethash_time_.is_null()); | 214 EXPECT_TRUE(pm->next_gethash_time_.is_null()); |
200 | 215 |
201 Time now = Time::Now(); | 216 Time now = Time::Now(); |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 CreateProtocolManager(&test_delegate)); | 426 CreateProtocolManager(&test_delegate)); |
412 | 427 |
413 // Kick off initialization. This returns chunks from the DB synchronously. | 428 // Kick off initialization. This returns chunks from the DB synchronously. |
414 pm->ForceScheduleNextUpdate(TimeDelta()); | 429 pm->ForceScheduleNextUpdate(TimeDelta()); |
415 runner->RunPendingTasks(); | 430 runner->RunPendingTasks(); |
416 | 431 |
417 // We should have an URLFetcher at this point in time. | 432 // We should have an URLFetcher at this point in time. |
418 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 433 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
419 ASSERT_TRUE(url_fetcher); | 434 ASSERT_TRUE(url_fetcher); |
420 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); | 435 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); |
421 EXPECT_EQ("goog-phish-shavar;a:adds_phish:s:subs_phish\n" | 436 EXPECT_EQ(base::StringPrintf("%s;a:adds_phish:s:subs_phish\n" |
422 "unknown_list;a:adds_unknown:s:subs_unknown\n" | 437 "unknown_list;a:adds_unknown:s:subs_unknown\n" |
423 "goog-malware-shavar;\n", | 438 "%s;\n", |
| 439 kDefaultPhishList, kDefaultMalwareList), |
424 url_fetcher->upload_data()); | 440 url_fetcher->upload_data()); |
425 EXPECT_EQ(GURL("https://prefix.com/foo/downloads?client=unittest&appver=1.0" | 441 EXPECT_EQ(GURL("https://prefix.com/foo/downloads?client=unittest&appver=1.0" |
426 "&pver=3.0" + key_param_), | 442 "&pver=3.0" + key_param_), |
427 url_fetcher->GetOriginalURL()); | 443 url_fetcher->GetOriginalURL()); |
428 | 444 |
429 url_fetcher->set_status(net::URLRequestStatus()); | 445 url_fetcher->set_status(net::URLRequestStatus()); |
430 url_fetcher->set_response_code(200); | 446 url_fetcher->set_response_code(200); |
431 url_fetcher->SetResponseString(std::string()); | 447 url_fetcher->SetResponseString(std::string()); |
432 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); | 448 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); |
433 | 449 |
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
920 // Kick off initialization. This returns chunks from the DB synchronously. | 936 // Kick off initialization. This returns chunks from the DB synchronously. |
921 pm->ForceScheduleNextUpdate(TimeDelta()); | 937 pm->ForceScheduleNextUpdate(TimeDelta()); |
922 runner->RunPendingTasks(); | 938 runner->RunPendingTasks(); |
923 | 939 |
924 // The update response contains a single redirect command. | 940 // The update response contains a single redirect command. |
925 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 941 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
926 ValidateUpdateFetcherRequest(url_fetcher); | 942 ValidateUpdateFetcherRequest(url_fetcher); |
927 url_fetcher->set_status(net::URLRequestStatus()); | 943 url_fetcher->set_status(net::URLRequestStatus()); |
928 url_fetcher->set_response_code(200); | 944 url_fetcher->set_response_code(200); |
929 url_fetcher->SetResponseString( | 945 url_fetcher->SetResponseString( |
930 "i:goog-phish-shavar\n" | 946 base::StringPrintf("i:%s\n" |
931 "u:redirect-server.example.com/path\n"); | 947 "u:redirect-server.example.com/path\n", |
| 948 kDefaultPhishList)); |
932 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); | 949 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); |
933 | 950 |
934 // The redirect response contains an empty body. | 951 // The redirect response contains an empty body. |
935 net::TestURLFetcher* chunk_url_fetcher = | 952 net::TestURLFetcher* chunk_url_fetcher = |
936 url_fetcher_factory.GetFetcherByID(1); | 953 url_fetcher_factory.GetFetcherByID(1); |
937 ValidateRedirectFetcherRequest( | 954 ValidateRedirectFetcherRequest( |
938 chunk_url_fetcher, "https://redirect-server.example.com/path"); | 955 chunk_url_fetcher, "https://redirect-server.example.com/path"); |
939 chunk_url_fetcher->set_status(net::URLRequestStatus()); | 956 chunk_url_fetcher->set_status(net::URLRequestStatus()); |
940 chunk_url_fetcher->set_response_code(200); | 957 chunk_url_fetcher->set_response_code(200); |
941 chunk_url_fetcher->SetResponseString(std::string()); | 958 chunk_url_fetcher->SetResponseString(std::string()); |
(...skipping 24 matching lines...) Expand all Loading... |
966 // Kick off initialization. This returns chunks from the DB synchronously. | 983 // Kick off initialization. This returns chunks from the DB synchronously. |
967 pm->ForceScheduleNextUpdate(TimeDelta()); | 984 pm->ForceScheduleNextUpdate(TimeDelta()); |
968 runner->RunPendingTasks(); | 985 runner->RunPendingTasks(); |
969 | 986 |
970 // The update response contains a single redirect command. | 987 // The update response contains a single redirect command. |
971 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 988 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
972 ValidateUpdateFetcherRequest(url_fetcher); | 989 ValidateUpdateFetcherRequest(url_fetcher); |
973 url_fetcher->set_status(net::URLRequestStatus()); | 990 url_fetcher->set_status(net::URLRequestStatus()); |
974 url_fetcher->set_response_code(200); | 991 url_fetcher->set_response_code(200); |
975 url_fetcher->SetResponseString( | 992 url_fetcher->SetResponseString( |
976 "i:goog-phish-shavar\n" | 993 base::StringPrintf("i:%s\n" |
977 "u:redirect-server.example.com/path\n"); | 994 "u:redirect-server.example.com/path\n", |
| 995 kDefaultPhishList)); |
978 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); | 996 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); |
979 | 997 |
980 // The redirect response contains an invalid body. | 998 // The redirect response contains an invalid body. |
981 net::TestURLFetcher* chunk_url_fetcher = | 999 net::TestURLFetcher* chunk_url_fetcher = |
982 url_fetcher_factory.GetFetcherByID(1); | 1000 url_fetcher_factory.GetFetcherByID(1); |
983 ValidateRedirectFetcherRequest( | 1001 ValidateRedirectFetcherRequest( |
984 chunk_url_fetcher, "https://redirect-server.example.com/path"); | 1002 chunk_url_fetcher, "https://redirect-server.example.com/path"); |
985 chunk_url_fetcher->set_status(net::URLRequestStatus()); | 1003 chunk_url_fetcher->set_status(net::URLRequestStatus()); |
986 chunk_url_fetcher->set_response_code(200); | 1004 chunk_url_fetcher->set_response_code(200); |
987 chunk_url_fetcher->SetResponseString("THIS IS AN INVALID RESPONSE"); | 1005 chunk_url_fetcher->SetResponseString("THIS IS AN INVALID RESPONSE"); |
988 chunk_url_fetcher->delegate()->OnURLFetchComplete(chunk_url_fetcher); | 1006 chunk_url_fetcher->delegate()->OnURLFetchComplete(chunk_url_fetcher); |
989 | 1007 |
990 EXPECT_TRUE(pm->IsUpdateScheduled()); | 1008 EXPECT_TRUE(pm->IsUpdateScheduled()); |
991 } | 1009 } |
992 | 1010 |
993 // Tests a single valid update response, followed by a single redirect response | 1011 // Tests a single valid update response, followed by a single redirect response |
994 // containing chunks. | 1012 // containing chunks. |
995 TEST_F(SafeBrowsingProtocolManagerTest, SingleRedirectResponseWithChunks) { | 1013 TEST_F(SafeBrowsingProtocolManagerTest, SingleRedirectResponseWithChunks) { |
996 scoped_refptr<base::TestSimpleTaskRunner> runner( | 1014 scoped_refptr<base::TestSimpleTaskRunner> runner( |
997 new base::TestSimpleTaskRunner()); | 1015 new base::TestSimpleTaskRunner()); |
998 base::ThreadTaskRunnerHandle runner_handler(runner); | 1016 base::ThreadTaskRunnerHandle runner_handler(runner); |
999 net::TestURLFetcherFactory url_fetcher_factory; | 1017 net::TestURLFetcherFactory url_fetcher_factory; |
1000 | 1018 |
1001 testing::StrictMock<MockProtocolDelegate> test_delegate; | 1019 testing::StrictMock<MockProtocolDelegate> test_delegate; |
1002 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 1020 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
1003 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 1021 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
1004 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 1022 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
1005 std::vector<SBListChunkRanges>(), | 1023 std::vector<SBListChunkRanges>(), |
1006 false))); | 1024 false))); |
1007 EXPECT_CALL(test_delegate, AddChunksRaw("goog-phish-shavar", _, _)).WillOnce( | 1025 EXPECT_CALL(test_delegate, AddChunksRaw(kDefaultPhishList, _, _)).WillOnce( |
1008 Invoke(HandleAddChunks)); | 1026 Invoke(HandleAddChunks)); |
1009 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 1027 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
1010 | 1028 |
1011 scoped_ptr<SafeBrowsingProtocolManager> pm( | 1029 scoped_ptr<SafeBrowsingProtocolManager> pm( |
1012 CreateProtocolManager(&test_delegate)); | 1030 CreateProtocolManager(&test_delegate)); |
1013 | 1031 |
1014 // Kick off initialization. This returns chunks from the DB synchronously. | 1032 // Kick off initialization. This returns chunks from the DB synchronously. |
1015 pm->ForceScheduleNextUpdate(TimeDelta()); | 1033 pm->ForceScheduleNextUpdate(TimeDelta()); |
1016 runner->RunPendingTasks(); | 1034 runner->RunPendingTasks(); |
1017 | 1035 |
1018 // The update response contains a single redirect command. | 1036 // The update response contains a single redirect command. |
1019 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 1037 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
1020 ValidateUpdateFetcherRequest(url_fetcher); | 1038 ValidateUpdateFetcherRequest(url_fetcher); |
1021 url_fetcher->set_status(net::URLRequestStatus()); | 1039 url_fetcher->set_status(net::URLRequestStatus()); |
1022 url_fetcher->set_response_code(200); | 1040 url_fetcher->set_response_code(200); |
1023 url_fetcher->SetResponseString( | 1041 url_fetcher->SetResponseString( |
1024 "i:goog-phish-shavar\n" | 1042 base::StringPrintf("i:%s\n" |
1025 "u:redirect-server.example.com/path\n"); | 1043 "u:redirect-server.example.com/path\n", |
| 1044 kDefaultPhishList)); |
1026 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); | 1045 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); |
1027 | 1046 |
1028 // The redirect response contains a single chunk. | 1047 // The redirect response contains a single chunk. |
1029 net::TestURLFetcher* chunk_url_fetcher = | 1048 net::TestURLFetcher* chunk_url_fetcher = |
1030 url_fetcher_factory.GetFetcherByID(1); | 1049 url_fetcher_factory.GetFetcherByID(1); |
1031 ValidateRedirectFetcherRequest( | 1050 ValidateRedirectFetcherRequest( |
1032 chunk_url_fetcher, "https://redirect-server.example.com/path"); | 1051 chunk_url_fetcher, "https://redirect-server.example.com/path"); |
1033 chunk_url_fetcher->set_status(net::URLRequestStatus()); | 1052 chunk_url_fetcher->set_status(net::URLRequestStatus()); |
1034 chunk_url_fetcher->set_response_code(200); | 1053 chunk_url_fetcher->set_response_code(200); |
1035 chunk_url_fetcher->SetResponseString(kChunkPayload1); | 1054 chunk_url_fetcher->SetResponseString(kChunkPayload1); |
(...skipping 14 matching lines...) Expand all Loading... |
1050 new base::TestSimpleTaskRunner()); | 1069 new base::TestSimpleTaskRunner()); |
1051 base::ThreadTaskRunnerHandle runner_handler(runner); | 1070 base::ThreadTaskRunnerHandle runner_handler(runner); |
1052 net::TestURLFetcherFactory url_fetcher_factory; | 1071 net::TestURLFetcherFactory url_fetcher_factory; |
1053 | 1072 |
1054 testing::StrictMock<MockProtocolDelegate> test_delegate; | 1073 testing::StrictMock<MockProtocolDelegate> test_delegate; |
1055 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 1074 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
1056 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 1075 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
1057 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 1076 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
1058 std::vector<SBListChunkRanges>(), | 1077 std::vector<SBListChunkRanges>(), |
1059 false))); | 1078 false))); |
1060 EXPECT_CALL(test_delegate, AddChunksRaw("goog-phish-shavar", _, _)). | 1079 EXPECT_CALL(test_delegate, AddChunksRaw(kDefaultPhishList, _, _)). |
1061 WillRepeatedly(Invoke(HandleAddChunks)); | 1080 WillRepeatedly(Invoke(HandleAddChunks)); |
1062 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 1081 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
1063 | 1082 |
1064 scoped_ptr<SafeBrowsingProtocolManager> pm( | 1083 scoped_ptr<SafeBrowsingProtocolManager> pm( |
1065 CreateProtocolManager(&test_delegate)); | 1084 CreateProtocolManager(&test_delegate)); |
1066 | 1085 |
1067 // Kick off initialization. This returns chunks from the DB synchronously. | 1086 // Kick off initialization. This returns chunks from the DB synchronously. |
1068 pm->ForceScheduleNextUpdate(TimeDelta()); | 1087 pm->ForceScheduleNextUpdate(TimeDelta()); |
1069 runner->RunPendingTasks(); | 1088 runner->RunPendingTasks(); |
1070 | 1089 |
1071 // The update response contains multiple redirect commands. | 1090 // The update response contains multiple redirect commands. |
1072 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 1091 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
1073 ValidateUpdateFetcherRequest(url_fetcher); | 1092 ValidateUpdateFetcherRequest(url_fetcher); |
1074 url_fetcher->set_status(net::URLRequestStatus()); | 1093 url_fetcher->set_status(net::URLRequestStatus()); |
1075 url_fetcher->set_response_code(200); | 1094 url_fetcher->set_response_code(200); |
1076 url_fetcher->SetResponseString( | 1095 url_fetcher->SetResponseString( |
1077 "i:goog-phish-shavar\n" | 1096 base::StringPrintf("i:%s\n" |
1078 "u:redirect-server.example.com/one\n" | 1097 "u:redirect-server.example.com/one\n" |
1079 "u:redirect-server.example.com/two\n"); | 1098 "u:redirect-server.example.com/two\n", |
| 1099 kDefaultPhishList)); |
1080 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); | 1100 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); |
1081 | 1101 |
1082 // The first redirect response contains a single chunk. | 1102 // The first redirect response contains a single chunk. |
1083 net::TestURLFetcher* first_chunk_url_fetcher = | 1103 net::TestURLFetcher* first_chunk_url_fetcher = |
1084 url_fetcher_factory.GetFetcherByID(1); | 1104 url_fetcher_factory.GetFetcherByID(1); |
1085 ValidateRedirectFetcherRequest( | 1105 ValidateRedirectFetcherRequest( |
1086 first_chunk_url_fetcher, "https://redirect-server.example.com/one"); | 1106 first_chunk_url_fetcher, "https://redirect-server.example.com/one"); |
1087 first_chunk_url_fetcher->set_status(net::URLRequestStatus()); | 1107 first_chunk_url_fetcher->set_status(net::URLRequestStatus()); |
1088 first_chunk_url_fetcher->set_response_code(200); | 1108 first_chunk_url_fetcher->set_response_code(200); |
1089 first_chunk_url_fetcher->SetResponseString(kChunkPayload1); | 1109 first_chunk_url_fetcher->SetResponseString(kChunkPayload1); |
(...skipping 16 matching lines...) Expand all Loading... |
1106 second_chunk_url_fetcher->delegate()->OnURLFetchComplete( | 1126 second_chunk_url_fetcher->delegate()->OnURLFetchComplete( |
1107 second_chunk_url_fetcher); | 1127 second_chunk_url_fetcher); |
1108 | 1128 |
1109 EXPECT_FALSE(pm->IsUpdateScheduled()); | 1129 EXPECT_FALSE(pm->IsUpdateScheduled()); |
1110 | 1130 |
1111 // Invoke the AddChunksCallback to finish the update. | 1131 // Invoke the AddChunksCallback to finish the update. |
1112 runner->RunPendingTasks(); | 1132 runner->RunPendingTasks(); |
1113 | 1133 |
1114 EXPECT_TRUE(pm->IsUpdateScheduled()); | 1134 EXPECT_TRUE(pm->IsUpdateScheduled()); |
1115 } | 1135 } |
OLD | NEW |