| 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 #include "chrome/browser/safe_browsing/protocol_manager.h" |
| 6 |
| 7 #include <memory> |
| 5 #include <vector> | 8 #include <vector> |
| 6 | 9 |
| 7 #include "base/memory/scoped_ptr.h" | |
| 8 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
| 9 #include "base/test/test_simple_task_runner.h" | 11 #include "base/test/test_simple_task_runner.h" |
| 10 #include "base/thread_task_runner_handle.h" | 12 #include "base/thread_task_runner_handle.h" |
| 11 #include "base/time/time.h" | 13 #include "base/time/time.h" |
| 12 #include "chrome/browser/safe_browsing/chunk.pb.h" | 14 #include "chrome/browser/safe_browsing/chunk.pb.h" |
| 13 #include "chrome/browser/safe_browsing/protocol_manager.h" | |
| 14 #include "components/safe_browsing_db/safebrowsing.pb.h" | 15 #include "components/safe_browsing_db/safebrowsing.pb.h" |
| 15 #include "components/safe_browsing_db/util.h" | 16 #include "components/safe_browsing_db/util.h" |
| 16 #include "google_apis/google_api_keys.h" | 17 #include "google_apis/google_api_keys.h" |
| 17 #include "net/base/escape.h" | 18 #include "net/base/escape.h" |
| 18 #include "net/base/load_flags.h" | 19 #include "net/base/load_flags.h" |
| 19 #include "net/base/net_errors.h" | 20 #include "net/base/net_errors.h" |
| 20 #include "net/url_request/test_url_fetcher_factory.h" | 21 #include "net/url_request/test_url_fetcher_factory.h" |
| 21 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
| 22 #include "testing/gmock_mutant.h" | 23 #include "testing/gmock_mutant.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 | 74 |
| 74 void SetUp() override { | 75 void SetUp() override { |
| 75 std::string key = google_apis::GetAPIKey(); | 76 std::string key = google_apis::GetAPIKey(); |
| 76 if (!key.empty()) { | 77 if (!key.empty()) { |
| 77 key_param_ = base::StringPrintf( | 78 key_param_ = base::StringPrintf( |
| 78 "&key=%s", | 79 "&key=%s", |
| 79 net::EscapeQueryParamValue(key, true).c_str()); | 80 net::EscapeQueryParamValue(key, true).c_str()); |
| 80 } | 81 } |
| 81 } | 82 } |
| 82 | 83 |
| 83 scoped_ptr<SafeBrowsingProtocolManager> CreateProtocolManager( | 84 std::unique_ptr<SafeBrowsingProtocolManager> CreateProtocolManager( |
| 84 SafeBrowsingProtocolManagerDelegate* delegate) { | 85 SafeBrowsingProtocolManagerDelegate* delegate) { |
| 85 SafeBrowsingProtocolConfig config; | 86 SafeBrowsingProtocolConfig config; |
| 86 config.client_name = kClient; | 87 config.client_name = kClient; |
| 87 config.url_prefix = kUrlPrefix; | 88 config.url_prefix = kUrlPrefix; |
| 88 config.backup_connect_error_url_prefix = kBackupConnectUrlPrefix; | 89 config.backup_connect_error_url_prefix = kBackupConnectUrlPrefix; |
| 89 config.backup_http_error_url_prefix = kBackupHttpUrlPrefix; | 90 config.backup_http_error_url_prefix = kBackupHttpUrlPrefix; |
| 90 config.backup_network_error_url_prefix = kBackupNetworkUrlPrefix; | 91 config.backup_network_error_url_prefix = kBackupNetworkUrlPrefix; |
| 91 config.version = kAppVer; | 92 config.version = kAppVer; |
| 92 return scoped_ptr<SafeBrowsingProtocolManager>( | 93 return std::unique_ptr<SafeBrowsingProtocolManager>( |
| 93 SafeBrowsingProtocolManager::Create(delegate, NULL, config)); | 94 SafeBrowsingProtocolManager::Create(delegate, NULL, config)); |
| 94 } | 95 } |
| 95 | 96 |
| 96 void ValidateUpdateFetcherRequest(const net::TestURLFetcher* url_fetcher, | 97 void ValidateUpdateFetcherRequest(const net::TestURLFetcher* url_fetcher, |
| 97 const std::string& expected_prefix, | 98 const std::string& expected_prefix, |
| 98 const std::string& expected_suffix) { | 99 const std::string& expected_suffix) { |
| 99 ASSERT_TRUE(url_fetcher); | 100 ASSERT_TRUE(url_fetcher); |
| 100 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); | 101 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); |
| 101 | 102 |
| 102 std::string expected_lists(base::StringPrintf("%s;\n%s;\n", | 103 std::string expected_lists(base::StringPrintf("%s;\n%s;\n", |
| (...skipping 14 matching lines...) Expand all Loading... |
| 117 const std::string& expected_url) { | 118 const std::string& expected_url) { |
| 118 ASSERT_TRUE(url_fetcher); | 119 ASSERT_TRUE(url_fetcher); |
| 119 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); | 120 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); |
| 120 EXPECT_EQ("", url_fetcher->upload_data()); | 121 EXPECT_EQ("", url_fetcher->upload_data()); |
| 121 EXPECT_EQ(GURL(expected_url), url_fetcher->GetOriginalURL()); | 122 EXPECT_EQ(GURL(expected_url), url_fetcher->GetOriginalURL()); |
| 122 } | 123 } |
| 123 }; | 124 }; |
| 124 | 125 |
| 125 // Ensure that we respect section 5 of the SafeBrowsing protocol specification. | 126 // Ensure that we respect section 5 of the SafeBrowsing protocol specification. |
| 126 TEST_F(SafeBrowsingProtocolManagerTest, TestBackOffTimes) { | 127 TEST_F(SafeBrowsingProtocolManagerTest, TestBackOffTimes) { |
| 127 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 128 std::unique_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
| 128 | 129 |
| 129 pm->next_update_interval_ = TimeDelta::FromSeconds(1800); | 130 pm->next_update_interval_ = TimeDelta::FromSeconds(1800); |
| 130 ASSERT_TRUE(pm->back_off_fuzz_ >= 0.0 && pm->back_off_fuzz_ <= 1.0); | 131 ASSERT_TRUE(pm->back_off_fuzz_ >= 0.0 && pm->back_off_fuzz_ <= 1.0); |
| 131 | 132 |
| 132 TimeDelta next; | 133 TimeDelta next; |
| 133 | 134 |
| 134 // No errors received so far. | 135 // No errors received so far. |
| 135 next = pm->GetNextUpdateInterval(false); | 136 next = pm->GetNextUpdateInterval(false); |
| 136 EXPECT_EQ(next, TimeDelta::FromSeconds(1800)); | 137 EXPECT_EQ(next, TimeDelta::FromSeconds(1800)); |
| 137 | 138 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 166 // 7 errors. | 167 // 7 errors. |
| 167 next = pm->GetNextUpdateInterval(true); | 168 next = pm->GetNextUpdateInterval(true); |
| 168 EXPECT_EQ(next, TimeDelta::FromMinutes(480)); | 169 EXPECT_EQ(next, TimeDelta::FromMinutes(480)); |
| 169 | 170 |
| 170 // Received a successful response. | 171 // Received a successful response. |
| 171 next = pm->GetNextUpdateInterval(false); | 172 next = pm->GetNextUpdateInterval(false); |
| 172 EXPECT_EQ(next, TimeDelta::FromSeconds(1800)); | 173 EXPECT_EQ(next, TimeDelta::FromSeconds(1800)); |
| 173 } | 174 } |
| 174 | 175 |
| 175 TEST_F(SafeBrowsingProtocolManagerTest, TestChunkStrings) { | 176 TEST_F(SafeBrowsingProtocolManagerTest, TestChunkStrings) { |
| 176 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 177 std::unique_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
| 177 | 178 |
| 178 // Add and Sub chunks. | 179 // Add and Sub chunks. |
| 179 SBListChunkRanges phish(kDefaultPhishList); | 180 SBListChunkRanges phish(kDefaultPhishList); |
| 180 phish.adds = "1,4,6,8-20,99"; | 181 phish.adds = "1,4,6,8-20,99"; |
| 181 phish.subs = "16,32,64-96"; | 182 phish.subs = "16,32,64-96"; |
| 182 EXPECT_EQ(base::StringPrintf("%s;a:1,4,6,8-20,99:s:16,32,64-96\n", | 183 EXPECT_EQ(base::StringPrintf("%s;a:1,4,6,8-20,99:s:16,32,64-96\n", |
| 183 kDefaultPhishList), | 184 kDefaultPhishList), |
| 184 FormatList(phish)); | 185 FormatList(phish)); |
| 185 | 186 |
| 186 // Add chunks only. | 187 // Add chunks only. |
| 187 phish.subs = ""; | 188 phish.subs = ""; |
| 188 EXPECT_EQ(base::StringPrintf("%s;a:1,4,6,8-20,99\n", kDefaultPhishList), | 189 EXPECT_EQ(base::StringPrintf("%s;a:1,4,6,8-20,99\n", kDefaultPhishList), |
| 189 FormatList(phish)); | 190 FormatList(phish)); |
| 190 | 191 |
| 191 // Sub chunks only. | 192 // Sub chunks only. |
| 192 phish.adds = ""; | 193 phish.adds = ""; |
| 193 phish.subs = "16,32,64-96"; | 194 phish.subs = "16,32,64-96"; |
| 194 EXPECT_EQ(base::StringPrintf("%s;s:16,32,64-96\n", kDefaultPhishList), | 195 EXPECT_EQ(base::StringPrintf("%s;s:16,32,64-96\n", kDefaultPhishList), |
| 195 FormatList(phish)); | 196 FormatList(phish)); |
| 196 | 197 |
| 197 // No chunks of either type. | 198 // No chunks of either type. |
| 198 phish.adds = ""; | 199 phish.adds = ""; |
| 199 phish.subs = ""; | 200 phish.subs = ""; |
| 200 EXPECT_EQ(base::StringPrintf("%s;\n", kDefaultPhishList), FormatList(phish)); | 201 EXPECT_EQ(base::StringPrintf("%s;\n", kDefaultPhishList), FormatList(phish)); |
| 201 } | 202 } |
| 202 | 203 |
| 203 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashBackOffTimes) { | 204 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashBackOffTimes) { |
| 204 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 205 std::unique_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
| 205 | 206 |
| 206 // No errors or back off time yet. | 207 // No errors or back off time yet. |
| 207 EXPECT_EQ(0U, pm->gethash_error_count_); | 208 EXPECT_EQ(0U, pm->gethash_error_count_); |
| 208 EXPECT_TRUE(pm->next_gethash_time_.is_null()); | 209 EXPECT_TRUE(pm->next_gethash_time_.is_null()); |
| 209 | 210 |
| 210 Time now = Time::Now(); | 211 Time now = Time::Now(); |
| 211 | 212 |
| 212 // 1 error. | 213 // 1 error. |
| 213 pm->HandleGetHashError(now); | 214 pm->HandleGetHashError(now); |
| 214 EXPECT_EQ(1U, pm->gethash_error_count_); | 215 EXPECT_EQ(1U, pm->gethash_error_count_); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 EXPECT_EQ(6U, pm->gethash_error_count_); | 247 EXPECT_EQ(6U, pm->gethash_error_count_); |
| 247 EXPECT_TRUE(pm->next_gethash_time_ == now + TimeDelta::FromMinutes(480)); | 248 EXPECT_TRUE(pm->next_gethash_time_ == now + TimeDelta::FromMinutes(480)); |
| 248 | 249 |
| 249 // 7 errors. | 250 // 7 errors. |
| 250 pm->HandleGetHashError(now); | 251 pm->HandleGetHashError(now); |
| 251 EXPECT_EQ(7U, pm->gethash_error_count_); | 252 EXPECT_EQ(7U, pm->gethash_error_count_); |
| 252 EXPECT_TRUE(pm->next_gethash_time_== now + TimeDelta::FromMinutes(480)); | 253 EXPECT_TRUE(pm->next_gethash_time_== now + TimeDelta::FromMinutes(480)); |
| 253 } | 254 } |
| 254 | 255 |
| 255 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashUrl) { | 256 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashUrl) { |
| 256 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 257 std::unique_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
| 257 | 258 |
| 258 EXPECT_EQ( | 259 EXPECT_EQ( |
| 259 "https://prefix.com/foo/gethash?client=unittest&appver=1.0&" | 260 "https://prefix.com/foo/gethash?client=unittest&appver=1.0&" |
| 260 "pver=3.0" + | 261 "pver=3.0" + |
| 261 key_param_ + "&ext=0", | 262 key_param_ + "&ext=0", |
| 262 pm->GetHashUrl(false).spec()); | 263 pm->GetHashUrl(false).spec()); |
| 263 | 264 |
| 264 pm->set_additional_query(kAdditionalQuery); | 265 pm->set_additional_query(kAdditionalQuery); |
| 265 EXPECT_EQ( | 266 EXPECT_EQ( |
| 266 "https://prefix.com/foo/gethash?client=unittest&appver=1.0&" | 267 "https://prefix.com/foo/gethash?client=unittest&appver=1.0&" |
| 267 "pver=3.0" + | 268 "pver=3.0" + |
| 268 key_param_ + "&additional_query&ext=1", | 269 key_param_ + "&additional_query&ext=1", |
| 269 pm->GetHashUrl(true).spec()); | 270 pm->GetHashUrl(true).spec()); |
| 270 } | 271 } |
| 271 | 272 |
| 272 TEST_F(SafeBrowsingProtocolManagerTest, TestUpdateUrl) { | 273 TEST_F(SafeBrowsingProtocolManagerTest, TestUpdateUrl) { |
| 273 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 274 std::unique_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
| 274 | 275 |
| 275 EXPECT_EQ( | 276 EXPECT_EQ( |
| 276 "https://prefix.com/foo/downloads?client=unittest&appver=1.0&" | 277 "https://prefix.com/foo/downloads?client=unittest&appver=1.0&" |
| 277 "pver=3.0" + | 278 "pver=3.0" + |
| 278 key_param_ + "&ext=1", | 279 key_param_ + "&ext=1", |
| 279 pm->UpdateUrl(true).spec()); | 280 pm->UpdateUrl(true).spec()); |
| 280 | 281 |
| 281 pm->set_additional_query(kAdditionalQuery); | 282 pm->set_additional_query(kAdditionalQuery); |
| 282 EXPECT_EQ( | 283 EXPECT_EQ( |
| 283 "https://prefix.com/foo/downloads?client=unittest&appver=1.0&" | 284 "https://prefix.com/foo/downloads?client=unittest&appver=1.0&" |
| 284 "pver=3.0" + | 285 "pver=3.0" + |
| 285 key_param_ + "&additional_query&ext=0", | 286 key_param_ + "&additional_query&ext=0", |
| 286 pm->UpdateUrl(false).spec()); | 287 pm->UpdateUrl(false).spec()); |
| 287 } | 288 } |
| 288 | 289 |
| 289 TEST_F(SafeBrowsingProtocolManagerTest, TestNextChunkUrl) { | 290 TEST_F(SafeBrowsingProtocolManagerTest, TestNextChunkUrl) { |
| 290 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); | 291 std::unique_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); |
| 291 | 292 |
| 292 std::string url_partial = "localhost:1234/foo/bar?foo"; | 293 std::string url_partial = "localhost:1234/foo/bar?foo"; |
| 293 std::string url_http_full = "http://localhost:1234/foo/bar?foo"; | 294 std::string url_http_full = "http://localhost:1234/foo/bar?foo"; |
| 294 std::string url_https_full = "https://localhost:1234/foo/bar?foo"; | 295 std::string url_https_full = "https://localhost:1234/foo/bar?foo"; |
| 295 std::string url_https_no_query = "https://localhost:1234/foo/bar"; | 296 std::string url_https_no_query = "https://localhost:1234/foo/bar"; |
| 296 | 297 |
| 297 EXPECT_EQ("https://localhost:1234/foo/bar?foo", | 298 EXPECT_EQ("https://localhost:1234/foo/bar?foo", |
| 298 pm->NextChunkUrl(url_partial).spec()); | 299 pm->NextChunkUrl(url_partial).spec()); |
| 299 EXPECT_EQ("http://localhost:1234/foo/bar?foo", | 300 EXPECT_EQ("http://localhost:1234/foo/bar?foo", |
| 300 pm->NextChunkUrl(url_http_full).spec()); | 301 pm->NextChunkUrl(url_http_full).spec()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 319 class MockProtocolDelegate : public SafeBrowsingProtocolManagerDelegate { | 320 class MockProtocolDelegate : public SafeBrowsingProtocolManagerDelegate { |
| 320 public: | 321 public: |
| 321 MockProtocolDelegate() {} | 322 MockProtocolDelegate() {} |
| 322 ~MockProtocolDelegate() override {} | 323 ~MockProtocolDelegate() override {} |
| 323 | 324 |
| 324 MOCK_METHOD0(UpdateStarted, void()); | 325 MOCK_METHOD0(UpdateStarted, void()); |
| 325 MOCK_METHOD1(UpdateFinished, void(bool)); | 326 MOCK_METHOD1(UpdateFinished, void(bool)); |
| 326 MOCK_METHOD0(ResetDatabase, void()); | 327 MOCK_METHOD0(ResetDatabase, void()); |
| 327 MOCK_METHOD1(GetChunks, void(GetChunksCallback)); | 328 MOCK_METHOD1(GetChunks, void(GetChunksCallback)); |
| 328 | 329 |
| 329 // gmock does not work with scoped_ptr<> at this time. Add a local method to | 330 // gmock does not work with std::unique_ptr<> at this time. Add a local |
| 331 // method to |
| 330 // mock, then call that from an override. Beware of object ownership when | 332 // mock, then call that from an override. Beware of object ownership when |
| 331 // making changes here. | 333 // making changes here. |
| 332 MOCK_METHOD3(AddChunksRaw, | 334 MOCK_METHOD3(AddChunksRaw, |
| 333 void(const std::string& lists, | 335 void(const std::string& lists, |
| 334 const std::vector<scoped_ptr<SBChunkData>>& chunks, | 336 const std::vector<std::unique_ptr<SBChunkData>>& chunks, |
| 335 AddChunksCallback)); | 337 AddChunksCallback)); |
| 336 void AddChunks(const std::string& list, | 338 void AddChunks( |
| 337 scoped_ptr<std::vector<scoped_ptr<SBChunkData>>> chunks, | 339 const std::string& list, |
| 338 AddChunksCallback callback) override { | 340 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks, |
| 341 AddChunksCallback callback) override { |
| 339 AddChunksRaw(list, *chunks, callback); | 342 AddChunksRaw(list, *chunks, callback); |
| 340 } | 343 } |
| 341 | 344 |
| 342 // TODO(shess): Actually test this case somewhere. | 345 // TODO(shess): Actually test this case somewhere. |
| 343 MOCK_METHOD1(DeleteChunksRaw, | 346 MOCK_METHOD1(DeleteChunksRaw, |
| 344 void(const std::vector<SBChunkDelete>& chunk_deletes)); | 347 void(const std::vector<SBChunkDelete>& chunk_deletes)); |
| 345 void DeleteChunks( | 348 void DeleteChunks( |
| 346 scoped_ptr<std::vector<SBChunkDelete>> chunk_deletes) override { | 349 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes) override { |
| 347 DeleteChunksRaw(*chunk_deletes); | 350 DeleteChunksRaw(*chunk_deletes); |
| 348 } | 351 } |
| 349 }; | 352 }; |
| 350 | 353 |
| 351 // |InvokeGetChunksCallback| is required because GMock's InvokeArgument action | 354 // |InvokeGetChunksCallback| is required because GMock's InvokeArgument action |
| 352 // expects to use operator(), and a Callback only provides Run(). | 355 // expects to use operator(), and a Callback only provides Run(). |
| 353 // TODO(cbentzel): Use ACTION or ACTION_TEMPLATE instead? | 356 // TODO(cbentzel): Use ACTION or ACTION_TEMPLATE instead? |
| 354 void InvokeGetChunksCallback( | 357 void InvokeGetChunksCallback( |
| 355 const std::vector<SBListChunkRanges>& ranges, | 358 const std::vector<SBListChunkRanges>& ranges, |
| 356 bool database_error, | 359 bool database_error, |
| 357 SafeBrowsingProtocolManagerDelegate::GetChunksCallback callback) { | 360 SafeBrowsingProtocolManagerDelegate::GetChunksCallback callback) { |
| 358 callback.Run(ranges, database_error, false); | 361 callback.Run(ranges, database_error, false); |
| 359 } | 362 } |
| 360 | 363 |
| 361 // |HandleAddChunks| deletes the chunks and asynchronously invokes | 364 // |HandleAddChunks| deletes the chunks and asynchronously invokes |
| 362 // |callback| since SafeBrowsingProtocolManager is not re-entrant at the time | 365 // |callback| since SafeBrowsingProtocolManager is not re-entrant at the time |
| 363 // this is called. This guarantee is part of the | 366 // this is called. This guarantee is part of the |
| 364 // SafeBrowsingProtocolManagerDelegate contract. | 367 // SafeBrowsingProtocolManagerDelegate contract. |
| 365 void HandleAddChunks( | 368 void HandleAddChunks( |
| 366 const std::string& unused_list, | 369 const std::string& unused_list, |
| 367 const std::vector<scoped_ptr<SBChunkData>>& chunks, | 370 const std::vector<std::unique_ptr<SBChunkData>>& chunks, |
| 368 SafeBrowsingProtocolManagerDelegate::AddChunksCallback callback) { | 371 SafeBrowsingProtocolManagerDelegate::AddChunksCallback callback) { |
| 369 scoped_refptr<base::SingleThreadTaskRunner> task_runner( | 372 scoped_refptr<base::SingleThreadTaskRunner> task_runner( |
| 370 base::ThreadTaskRunnerHandle::Get()); | 373 base::ThreadTaskRunnerHandle::Get()); |
| 371 if (!task_runner.get()) | 374 if (!task_runner.get()) |
| 372 return; | 375 return; |
| 373 task_runner->PostTask(FROM_HERE, callback); | 376 task_runner->PostTask(FROM_HERE, callback); |
| 374 } | 377 } |
| 375 | 378 |
| 376 } // namespace | 379 } // namespace |
| 377 | 380 |
| 378 // Tests that the Update protocol will be skipped if there are problems | 381 // Tests that the Update protocol will be skipped if there are problems |
| 379 // accessing the database. | 382 // accessing the database. |
| 380 TEST_F(SafeBrowsingProtocolManagerTest, ProblemAccessingDatabase) { | 383 TEST_F(SafeBrowsingProtocolManagerTest, ProblemAccessingDatabase) { |
| 381 scoped_refptr<base::TestSimpleTaskRunner> runner( | 384 scoped_refptr<base::TestSimpleTaskRunner> runner( |
| 382 new base::TestSimpleTaskRunner()); | 385 new base::TestSimpleTaskRunner()); |
| 383 base::ThreadTaskRunnerHandle runner_handler(runner); | 386 base::ThreadTaskRunnerHandle runner_handler(runner); |
| 384 | 387 |
| 385 testing::StrictMock<MockProtocolDelegate> test_delegate; | 388 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 386 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 389 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 387 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 390 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 388 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 391 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 389 std::vector<SBListChunkRanges>(), | 392 std::vector<SBListChunkRanges>(), |
| 390 true))); | 393 true))); |
| 391 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); | 394 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); |
| 392 | 395 |
| 393 scoped_ptr<SafeBrowsingProtocolManager> pm( | 396 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 394 CreateProtocolManager(&test_delegate)); | 397 CreateProtocolManager(&test_delegate)); |
| 395 | 398 |
| 396 pm->ForceScheduleNextUpdate(TimeDelta()); | 399 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 397 runner->RunPendingTasks(); | 400 runner->RunPendingTasks(); |
| 398 | 401 |
| 399 EXPECT_TRUE(pm->IsUpdateScheduled()); | 402 EXPECT_TRUE(pm->IsUpdateScheduled()); |
| 400 } | 403 } |
| 401 | 404 |
| 402 // Tests the contents of the POST body when there are contents in the | 405 // Tests the contents of the POST body when there are contents in the |
| 403 // local database. This is not exhaustive, as the actual list formatting | 406 // local database. This is not exhaustive, as the actual list formatting |
| (...skipping 16 matching lines...) Expand all Loading... |
| 420 ranges.push_back(range_unknown); | 423 ranges.push_back(range_unknown); |
| 421 | 424 |
| 422 testing::StrictMock<MockProtocolDelegate> test_delegate; | 425 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 423 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 426 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 424 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 427 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 425 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 428 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 426 ranges, | 429 ranges, |
| 427 false))); | 430 false))); |
| 428 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 431 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 429 | 432 |
| 430 scoped_ptr<SafeBrowsingProtocolManager> pm( | 433 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 431 CreateProtocolManager(&test_delegate)); | 434 CreateProtocolManager(&test_delegate)); |
| 432 | 435 |
| 433 // Kick off initialization. This returns chunks from the DB synchronously. | 436 // Kick off initialization. This returns chunks from the DB synchronously. |
| 434 pm->ForceScheduleNextUpdate(TimeDelta()); | 437 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 435 runner->RunPendingTasks(); | 438 runner->RunPendingTasks(); |
| 436 | 439 |
| 437 // We should have an URLFetcher at this point in time. | 440 // We should have an URLFetcher at this point in time. |
| 438 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 441 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 439 ASSERT_TRUE(url_fetcher); | 442 ASSERT_TRUE(url_fetcher); |
| 440 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); | 443 EXPECT_EQ(net::LOAD_DISABLE_CACHE, url_fetcher->GetLoadFlags()); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 463 net::TestURLFetcherFactory url_fetcher_factory; | 466 net::TestURLFetcherFactory url_fetcher_factory; |
| 464 | 467 |
| 465 testing::StrictMock<MockProtocolDelegate> test_delegate; | 468 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 466 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 469 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 467 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 470 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 468 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 471 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 469 std::vector<SBListChunkRanges>(), | 472 std::vector<SBListChunkRanges>(), |
| 470 false))); | 473 false))); |
| 471 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 474 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 472 | 475 |
| 473 scoped_ptr<SafeBrowsingProtocolManager> pm( | 476 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 474 CreateProtocolManager(&test_delegate)); | 477 CreateProtocolManager(&test_delegate)); |
| 475 | 478 |
| 476 // Kick off initialization. This returns chunks from the DB synchronously. | 479 // Kick off initialization. This returns chunks from the DB synchronously. |
| 477 pm->ForceScheduleNextUpdate(TimeDelta()); | 480 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 478 runner->RunPendingTasks(); | 481 runner->RunPendingTasks(); |
| 479 | 482 |
| 480 // We should have an URLFetcher at this point in time. | 483 // We should have an URLFetcher at this point in time. |
| 481 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 484 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 482 ValidateUpdateFetcherRequest(url_fetcher); | 485 ValidateUpdateFetcherRequest(url_fetcher); |
| 483 | 486 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 510 net::TestURLFetcherFactory url_fetcher_factory; | 513 net::TestURLFetcherFactory url_fetcher_factory; |
| 511 | 514 |
| 512 testing::StrictMock<MockProtocolDelegate> test_delegate; | 515 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 513 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 516 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 514 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 517 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 515 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 518 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 516 std::vector<SBListChunkRanges>(), | 519 std::vector<SBListChunkRanges>(), |
| 517 false))); | 520 false))); |
| 518 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); | 521 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); |
| 519 | 522 |
| 520 scoped_ptr<SafeBrowsingProtocolManager> pm( | 523 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 521 CreateProtocolManager(&test_delegate)); | 524 CreateProtocolManager(&test_delegate)); |
| 522 | 525 |
| 523 // Kick off initialization. This returns chunks from the DB synchronously. | 526 // Kick off initialization. This returns chunks from the DB synchronously. |
| 524 pm->ForceScheduleNextUpdate(TimeDelta()); | 527 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 525 runner->RunPendingTasks(); | 528 runner->RunPendingTasks(); |
| 526 | 529 |
| 527 // We should have an URLFetcher at this point in time. | 530 // We should have an URLFetcher at this point in time. |
| 528 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 531 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 529 ValidateUpdateFetcherRequest(url_fetcher); | 532 ValidateUpdateFetcherRequest(url_fetcher); |
| 530 | 533 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 557 net::TestURLFetcherFactory url_fetcher_factory; | 560 net::TestURLFetcherFactory url_fetcher_factory; |
| 558 | 561 |
| 559 testing::StrictMock<MockProtocolDelegate> test_delegate; | 562 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 560 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 563 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 561 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 564 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 562 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 565 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 563 std::vector<SBListChunkRanges>(), | 566 std::vector<SBListChunkRanges>(), |
| 564 false))); | 567 false))); |
| 565 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 568 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 566 | 569 |
| 567 scoped_ptr<SafeBrowsingProtocolManager> pm( | 570 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 568 CreateProtocolManager(&test_delegate)); | 571 CreateProtocolManager(&test_delegate)); |
| 569 | 572 |
| 570 // Kick off initialization. This returns chunks from the DB synchronously. | 573 // Kick off initialization. This returns chunks from the DB synchronously. |
| 571 pm->ForceScheduleNextUpdate(TimeDelta()); | 574 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 572 runner->RunPendingTasks(); | 575 runner->RunPendingTasks(); |
| 573 | 576 |
| 574 // We should have an URLFetcher at this point in time. | 577 // We should have an URLFetcher at this point in time. |
| 575 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 578 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 576 ValidateUpdateFetcherRequest(url_fetcher); | 579 ValidateUpdateFetcherRequest(url_fetcher); |
| 577 | 580 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 604 net::TestURLFetcherFactory url_fetcher_factory; | 607 net::TestURLFetcherFactory url_fetcher_factory; |
| 605 | 608 |
| 606 testing::StrictMock<MockProtocolDelegate> test_delegate; | 609 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 607 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 610 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 608 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 611 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 609 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 612 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 610 std::vector<SBListChunkRanges>(), | 613 std::vector<SBListChunkRanges>(), |
| 611 false))); | 614 false))); |
| 612 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); | 615 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); |
| 613 | 616 |
| 614 scoped_ptr<SafeBrowsingProtocolManager> pm( | 617 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 615 CreateProtocolManager(&test_delegate)); | 618 CreateProtocolManager(&test_delegate)); |
| 616 | 619 |
| 617 // Kick off initialization. This returns chunks from the DB synchronously. | 620 // Kick off initialization. This returns chunks from the DB synchronously. |
| 618 pm->ForceScheduleNextUpdate(TimeDelta()); | 621 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 619 runner->RunPendingTasks(); | 622 runner->RunPendingTasks(); |
| 620 | 623 |
| 621 // We should have an URLFetcher at this point in time. | 624 // We should have an URLFetcher at this point in time. |
| 622 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 625 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 623 ValidateUpdateFetcherRequest(url_fetcher); | 626 ValidateUpdateFetcherRequest(url_fetcher); |
| 624 | 627 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 655 net::TestURLFetcherFactory url_fetcher_factory; | 658 net::TestURLFetcherFactory url_fetcher_factory; |
| 656 | 659 |
| 657 testing::StrictMock<MockProtocolDelegate> test_delegate; | 660 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 658 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 661 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 659 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 662 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 660 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 663 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 661 std::vector<SBListChunkRanges>(), | 664 std::vector<SBListChunkRanges>(), |
| 662 false))); | 665 false))); |
| 663 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); | 666 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); |
| 664 | 667 |
| 665 scoped_ptr<SafeBrowsingProtocolManager> pm( | 668 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 666 CreateProtocolManager(&test_delegate)); | 669 CreateProtocolManager(&test_delegate)); |
| 667 | 670 |
| 668 // Kick off initialization. This returns chunks from the DB synchronously. | 671 // Kick off initialization. This returns chunks from the DB synchronously. |
| 669 pm->ForceScheduleNextUpdate(TimeDelta()); | 672 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 670 runner->RunPendingTasks(); | 673 runner->RunPendingTasks(); |
| 671 | 674 |
| 672 // We should have an URLFetcher at this point in time. | 675 // We should have an URLFetcher at this point in time. |
| 673 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 676 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 674 ValidateUpdateFetcherRequest(url_fetcher); | 677 ValidateUpdateFetcherRequest(url_fetcher); |
| 675 | 678 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 702 net::TestURLFetcherFactory url_fetcher_factory; | 705 net::TestURLFetcherFactory url_fetcher_factory; |
| 703 | 706 |
| 704 testing::StrictMock<MockProtocolDelegate> test_delegate; | 707 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 705 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 708 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 706 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 709 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 707 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 710 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 708 std::vector<SBListChunkRanges>(), | 711 std::vector<SBListChunkRanges>(), |
| 709 false))); | 712 false))); |
| 710 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 713 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 711 | 714 |
| 712 scoped_ptr<SafeBrowsingProtocolManager> pm( | 715 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 713 CreateProtocolManager(&test_delegate)); | 716 CreateProtocolManager(&test_delegate)); |
| 714 | 717 |
| 715 // Kick off initialization. This returns chunks from the DB synchronously. | 718 // Kick off initialization. This returns chunks from the DB synchronously. |
| 716 pm->ForceScheduleNextUpdate(TimeDelta()); | 719 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 717 runner->RunPendingTasks(); | 720 runner->RunPendingTasks(); |
| 718 | 721 |
| 719 // We should have an URLFetcher at this point in time. | 722 // We should have an URLFetcher at this point in time. |
| 720 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 723 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 721 ValidateUpdateFetcherRequest(url_fetcher); | 724 ValidateUpdateFetcherRequest(url_fetcher); |
| 722 | 725 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 748 net::TestURLFetcherFactory url_fetcher_factory; | 751 net::TestURLFetcherFactory url_fetcher_factory; |
| 749 | 752 |
| 750 testing::StrictMock<MockProtocolDelegate> test_delegate; | 753 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 751 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 754 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 752 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 755 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 753 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 756 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 754 std::vector<SBListChunkRanges>(), | 757 std::vector<SBListChunkRanges>(), |
| 755 false))); | 758 false))); |
| 756 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); | 759 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); |
| 757 | 760 |
| 758 scoped_ptr<SafeBrowsingProtocolManager> pm( | 761 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 759 CreateProtocolManager(&test_delegate)); | 762 CreateProtocolManager(&test_delegate)); |
| 760 | 763 |
| 761 // Kick off initialization. This returns chunks from the DB synchronously. | 764 // Kick off initialization. This returns chunks from the DB synchronously. |
| 762 pm->ForceScheduleNextUpdate(TimeDelta()); | 765 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 763 runner->RunPendingTasks(); | 766 runner->RunPendingTasks(); |
| 764 | 767 |
| 765 // We should have an URLFetcher at this point in time. | 768 // We should have an URLFetcher at this point in time. |
| 766 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 769 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 767 ValidateUpdateFetcherRequest(url_fetcher); | 770 ValidateUpdateFetcherRequest(url_fetcher); |
| 768 | 771 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 796 net::TestURLFetcherFactory url_fetcher_factory; | 799 net::TestURLFetcherFactory url_fetcher_factory; |
| 797 | 800 |
| 798 testing::StrictMock<MockProtocolDelegate> test_delegate; | 801 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 799 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 802 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 800 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 803 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 801 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 804 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 802 std::vector<SBListChunkRanges>(), | 805 std::vector<SBListChunkRanges>(), |
| 803 false))); | 806 false))); |
| 804 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 807 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 805 | 808 |
| 806 scoped_ptr<SafeBrowsingProtocolManager> pm( | 809 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 807 CreateProtocolManager(&test_delegate)); | 810 CreateProtocolManager(&test_delegate)); |
| 808 | 811 |
| 809 // Kick off initialization. This returns chunks from the DB synchronously. | 812 // Kick off initialization. This returns chunks from the DB synchronously. |
| 810 pm->ForceScheduleNextUpdate(TimeDelta()); | 813 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 811 runner->RunPendingTasks(); | 814 runner->RunPendingTasks(); |
| 812 | 815 |
| 813 // We should have an URLFetcher at this point in time. | 816 // We should have an URLFetcher at this point in time. |
| 814 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 817 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 815 ValidateUpdateFetcherRequest(url_fetcher); | 818 ValidateUpdateFetcherRequest(url_fetcher); |
| 816 | 819 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 842 net::TestURLFetcherFactory url_fetcher_factory; | 845 net::TestURLFetcherFactory url_fetcher_factory; |
| 843 | 846 |
| 844 testing::StrictMock<MockProtocolDelegate> test_delegate; | 847 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 845 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 848 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 846 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 849 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 847 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 850 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 848 std::vector<SBListChunkRanges>(), | 851 std::vector<SBListChunkRanges>(), |
| 849 false))); | 852 false))); |
| 850 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 853 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 851 | 854 |
| 852 scoped_ptr<SafeBrowsingProtocolManager> pm( | 855 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 853 CreateProtocolManager(&test_delegate)); | 856 CreateProtocolManager(&test_delegate)); |
| 854 | 857 |
| 855 // Kick off initialization. This returns chunks from the DB synchronously. | 858 // Kick off initialization. This returns chunks from the DB synchronously. |
| 856 pm->ForceScheduleNextUpdate(TimeDelta()); | 859 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 857 runner->RunPendingTasks(); | 860 runner->RunPendingTasks(); |
| 858 | 861 |
| 859 // We should have an URLFetcher at this point in time. | 862 // We should have an URLFetcher at this point in time. |
| 860 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 863 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 861 ValidateUpdateFetcherRequest(url_fetcher); | 864 ValidateUpdateFetcherRequest(url_fetcher); |
| 862 | 865 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 887 | 890 |
| 888 testing::StrictMock<MockProtocolDelegate> test_delegate; | 891 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 889 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 892 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 890 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 893 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 891 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 894 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 892 std::vector<SBListChunkRanges>(), | 895 std::vector<SBListChunkRanges>(), |
| 893 false))); | 896 false))); |
| 894 EXPECT_CALL(test_delegate, ResetDatabase()).Times(1); | 897 EXPECT_CALL(test_delegate, ResetDatabase()).Times(1); |
| 895 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 898 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 896 | 899 |
| 897 scoped_ptr<SafeBrowsingProtocolManager> pm( | 900 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 898 CreateProtocolManager(&test_delegate)); | 901 CreateProtocolManager(&test_delegate)); |
| 899 | 902 |
| 900 // Kick off initialization. This returns chunks from the DB synchronously. | 903 // Kick off initialization. This returns chunks from the DB synchronously. |
| 901 pm->ForceScheduleNextUpdate(TimeDelta()); | 904 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 902 runner->RunPendingTasks(); | 905 runner->RunPendingTasks(); |
| 903 | 906 |
| 904 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 907 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 905 ValidateUpdateFetcherRequest(url_fetcher); | 908 ValidateUpdateFetcherRequest(url_fetcher); |
| 906 | 909 |
| 907 // The update response is successful, and has a reset command. | 910 // The update response is successful, and has a reset command. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 922 net::TestURLFetcherFactory url_fetcher_factory; | 925 net::TestURLFetcherFactory url_fetcher_factory; |
| 923 | 926 |
| 924 testing::StrictMock<MockProtocolDelegate> test_delegate; | 927 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 925 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 928 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 926 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 929 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 927 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 930 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 928 std::vector<SBListChunkRanges>(), | 931 std::vector<SBListChunkRanges>(), |
| 929 false))); | 932 false))); |
| 930 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 933 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 931 | 934 |
| 932 scoped_ptr<SafeBrowsingProtocolManager> pm( | 935 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 933 CreateProtocolManager(&test_delegate)); | 936 CreateProtocolManager(&test_delegate)); |
| 934 | 937 |
| 935 // Kick off initialization. This returns chunks from the DB synchronously. | 938 // Kick off initialization. This returns chunks from the DB synchronously. |
| 936 pm->ForceScheduleNextUpdate(TimeDelta()); | 939 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 937 runner->RunPendingTasks(); | 940 runner->RunPendingTasks(); |
| 938 | 941 |
| 939 // The update response contains a single redirect command. | 942 // The update response contains a single redirect command. |
| 940 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 943 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 941 ValidateUpdateFetcherRequest(url_fetcher); | 944 ValidateUpdateFetcherRequest(url_fetcher); |
| 942 url_fetcher->set_status(net::URLRequestStatus()); | 945 url_fetcher->set_status(net::URLRequestStatus()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 969 net::TestURLFetcherFactory url_fetcher_factory; | 972 net::TestURLFetcherFactory url_fetcher_factory; |
| 970 | 973 |
| 971 testing::StrictMock<MockProtocolDelegate> test_delegate; | 974 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 972 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 975 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 973 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 976 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 974 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 977 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 975 std::vector<SBListChunkRanges>(), | 978 std::vector<SBListChunkRanges>(), |
| 976 false))); | 979 false))); |
| 977 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); | 980 EXPECT_CALL(test_delegate, UpdateFinished(false)).Times(1); |
| 978 | 981 |
| 979 scoped_ptr<SafeBrowsingProtocolManager> pm( | 982 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 980 CreateProtocolManager(&test_delegate)); | 983 CreateProtocolManager(&test_delegate)); |
| 981 | 984 |
| 982 // Kick off initialization. This returns chunks from the DB synchronously. | 985 // Kick off initialization. This returns chunks from the DB synchronously. |
| 983 pm->ForceScheduleNextUpdate(TimeDelta()); | 986 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 984 runner->RunPendingTasks(); | 987 runner->RunPendingTasks(); |
| 985 | 988 |
| 986 // The update response contains a single redirect command. | 989 // The update response contains a single redirect command. |
| 987 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 990 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 988 ValidateUpdateFetcherRequest(url_fetcher); | 991 ValidateUpdateFetcherRequest(url_fetcher); |
| 989 url_fetcher->set_status(net::URLRequestStatus()); | 992 url_fetcher->set_status(net::URLRequestStatus()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1018 testing::StrictMock<MockProtocolDelegate> test_delegate; | 1021 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 1019 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 1022 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 1020 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 1023 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 1021 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 1024 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 1022 std::vector<SBListChunkRanges>(), | 1025 std::vector<SBListChunkRanges>(), |
| 1023 false))); | 1026 false))); |
| 1024 EXPECT_CALL(test_delegate, AddChunksRaw(kDefaultPhishList, _, _)).WillOnce( | 1027 EXPECT_CALL(test_delegate, AddChunksRaw(kDefaultPhishList, _, _)).WillOnce( |
| 1025 Invoke(HandleAddChunks)); | 1028 Invoke(HandleAddChunks)); |
| 1026 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 1029 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 1027 | 1030 |
| 1028 scoped_ptr<SafeBrowsingProtocolManager> pm( | 1031 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 1029 CreateProtocolManager(&test_delegate)); | 1032 CreateProtocolManager(&test_delegate)); |
| 1030 | 1033 |
| 1031 // Kick off initialization. This returns chunks from the DB synchronously. | 1034 // Kick off initialization. This returns chunks from the DB synchronously. |
| 1032 pm->ForceScheduleNextUpdate(TimeDelta()); | 1035 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 1033 runner->RunPendingTasks(); | 1036 runner->RunPendingTasks(); |
| 1034 | 1037 |
| 1035 // The update response contains a single redirect command. | 1038 // The update response contains a single redirect command. |
| 1036 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 1039 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 1037 ValidateUpdateFetcherRequest(url_fetcher); | 1040 ValidateUpdateFetcherRequest(url_fetcher); |
| 1038 url_fetcher->set_status(net::URLRequestStatus()); | 1041 url_fetcher->set_status(net::URLRequestStatus()); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1072 testing::StrictMock<MockProtocolDelegate> test_delegate; | 1075 testing::StrictMock<MockProtocolDelegate> test_delegate; |
| 1073 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); | 1076 EXPECT_CALL(test_delegate, UpdateStarted()).Times(1); |
| 1074 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( | 1077 EXPECT_CALL(test_delegate, GetChunks(_)).WillOnce( |
| 1075 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, | 1078 Invoke(testing::CreateFunctor(InvokeGetChunksCallback, |
| 1076 std::vector<SBListChunkRanges>(), | 1079 std::vector<SBListChunkRanges>(), |
| 1077 false))); | 1080 false))); |
| 1078 EXPECT_CALL(test_delegate, AddChunksRaw(kDefaultPhishList, _, _)). | 1081 EXPECT_CALL(test_delegate, AddChunksRaw(kDefaultPhishList, _, _)). |
| 1079 WillRepeatedly(Invoke(HandleAddChunks)); | 1082 WillRepeatedly(Invoke(HandleAddChunks)); |
| 1080 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); | 1083 EXPECT_CALL(test_delegate, UpdateFinished(true)).Times(1); |
| 1081 | 1084 |
| 1082 scoped_ptr<SafeBrowsingProtocolManager> pm( | 1085 std::unique_ptr<SafeBrowsingProtocolManager> pm( |
| 1083 CreateProtocolManager(&test_delegate)); | 1086 CreateProtocolManager(&test_delegate)); |
| 1084 | 1087 |
| 1085 // Kick off initialization. This returns chunks from the DB synchronously. | 1088 // Kick off initialization. This returns chunks from the DB synchronously. |
| 1086 pm->ForceScheduleNextUpdate(TimeDelta()); | 1089 pm->ForceScheduleNextUpdate(TimeDelta()); |
| 1087 runner->RunPendingTasks(); | 1090 runner->RunPendingTasks(); |
| 1088 | 1091 |
| 1089 // The update response contains multiple redirect commands. | 1092 // The update response contains multiple redirect commands. |
| 1090 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); | 1093 net::TestURLFetcher* url_fetcher = url_fetcher_factory.GetFetcherByID(0); |
| 1091 ValidateUpdateFetcherRequest(url_fetcher); | 1094 ValidateUpdateFetcherRequest(url_fetcher); |
| 1092 url_fetcher->set_status(net::URLRequestStatus()); | 1095 url_fetcher->set_status(net::URLRequestStatus()); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1127 | 1130 |
| 1128 EXPECT_FALSE(pm->IsUpdateScheduled()); | 1131 EXPECT_FALSE(pm->IsUpdateScheduled()); |
| 1129 | 1132 |
| 1130 // Invoke the AddChunksCallback to finish the update. | 1133 // Invoke the AddChunksCallback to finish the update. |
| 1131 runner->RunPendingTasks(); | 1134 runner->RunPendingTasks(); |
| 1132 | 1135 |
| 1133 EXPECT_TRUE(pm->IsUpdateScheduled()); | 1136 EXPECT_TRUE(pm->IsUpdateScheduled()); |
| 1134 } | 1137 } |
| 1135 | 1138 |
| 1136 } // namespace safe_browsing | 1139 } // namespace safe_browsing |
| OLD | NEW |