Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Side by Side Diff: chrome/browser/safe_browsing/client_side_detection_host_unittest.cc

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/files/file_path.h" 5 #include "base/files/file_path.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "chrome/browser/safe_browsing/browser_feature_extractor.h" 10 #include "chrome/browser/safe_browsing/browser_feature_extractor.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 other.feature_map_size() == arg.feature_map_size()); 67 other.feature_map_size() == arg.feature_map_size());
68 } 68 }
69 69
70 // Test that the callback is NULL when the verdict is not phishing. 70 // Test that the callback is NULL when the verdict is not phishing.
71 MATCHER(CallbackIsNull, "") { 71 MATCHER(CallbackIsNull, "") {
72 return arg.is_null(); 72 return arg.is_null();
73 } 73 }
74 74
75 ACTION(QuitUIMessageLoop) { 75 ACTION(QuitUIMessageLoop) {
76 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); 76 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
77 MessageLoopForUI::current()->Quit(); 77 base::MessageLoopForUI::current()->Quit();
78 } 78 }
79 79
80 // It's kind of insane that InvokeArgument doesn't work with callbacks, but it 80 // It's kind of insane that InvokeArgument doesn't work with callbacks, but it
81 // doesn't seem like it. 81 // doesn't seem like it.
82 ACTION_TEMPLATE(InvokeCallbackArgument, 82 ACTION_TEMPLATE(InvokeCallbackArgument,
83 HAS_1_TEMPLATE_PARAMS(int, k), 83 HAS_1_TEMPLATE_PARAMS(int, k),
84 AND_2_VALUE_PARAMS(p0, p1)) { 84 AND_2_VALUE_PARAMS(p0, p1)) {
85 ::std::tr1::get<k>(args).Run(p0, p1); 85 ::std::tr1::get<k>(args).Run(p0, p1);
86 } 86 }
87 87
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 MOCK_METHOD2(ExtractMalwareFeatures, 170 MOCK_METHOD2(ExtractMalwareFeatures,
171 void(const BrowseInfo* info, 171 void(const BrowseInfo* info,
172 ClientMalwareRequest*)); 172 ClientMalwareRequest*));
173 }; 173 };
174 174
175 // Helper function which quits the UI message loop from the IO message loop. 175 // Helper function which quits the UI message loop from the IO message loop.
176 void QuitUIMessageLoopFromIO() { 176 void QuitUIMessageLoopFromIO() {
177 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 177 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
178 BrowserThread::PostTask(BrowserThread::UI, 178 BrowserThread::PostTask(BrowserThread::UI,
179 FROM_HERE, 179 FROM_HERE,
180 MessageLoop::QuitClosure()); 180 base::MessageLoop::QuitClosure());
181 } 181 }
182 } // namespace 182 } // namespace
183 183
184 class ClientSideDetectionHostTest : public ChromeRenderViewHostTestHarness { 184 class ClientSideDetectionHostTest : public ChromeRenderViewHostTestHarness {
185 public: 185 public:
186 typedef SafeBrowsingUIManager::UnsafeResource UnsafeResource; 186 typedef SafeBrowsingUIManager::UnsafeResource UnsafeResource;
187 187
188 virtual void SetUp() { 188 virtual void SetUp() {
189 // Set custom profile object so that we can mock calls to IsOffTheRecord. 189 // Set custom profile object so that we can mock calls to IsOffTheRecord.
190 // This needs to happen before we call the parent SetUp() function. We use 190 // This needs to happen before we call the parent SetUp() function. We use
(...skipping 24 matching lines...) Expand all
215 csd_host_.reset(safe_browsing::ClientSideDetectionHost::Create( 215 csd_host_.reset(safe_browsing::ClientSideDetectionHost::Create(
216 web_contents())); 216 web_contents()));
217 csd_host_->set_client_side_detection_service(csd_service_.get()); 217 csd_host_->set_client_side_detection_service(csd_service_.get());
218 csd_host_->set_safe_browsing_managers(ui_manager_, database_manager_); 218 csd_host_->set_safe_browsing_managers(ui_manager_, database_manager_);
219 // We need to create this here since we don't call 219 // We need to create this here since we don't call
220 // DidNavigateMainFramePostCommit in this test. 220 // DidNavigateMainFramePostCommit in this test.
221 csd_host_->browse_info_.reset(new BrowseInfo); 221 csd_host_->browse_info_.reset(new BrowseInfo);
222 } 222 }
223 223
224 static void RunAllPendingOnIO(base::WaitableEvent* event) { 224 static void RunAllPendingOnIO(base::WaitableEvent* event) {
225 MessageLoop::current()->RunUntilIdle(); 225 base::MessageLoop::current()->RunUntilIdle();
226 event->Signal(); 226 event->Signal();
227 } 227 }
228 228
229 virtual void TearDown() { 229 virtual void TearDown() {
230 // Delete the host object on the UI thread and release the 230 // Delete the host object on the UI thread and release the
231 // SafeBrowsingService. 231 // SafeBrowsingService.
232 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, 232 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE,
233 csd_host_.release()); 233 csd_host_.release());
234 database_manager_ = NULL; 234 database_manager_ = NULL;
235 ui_manager_ = NULL; 235 ui_manager_ = NULL;
(...skipping 23 matching lines...) Expand all
259 return csd_host_->browse_info_.get(); 259 return csd_host_->browse_info_.get();
260 } 260 }
261 261
262 void FlushIOMessageLoop() { 262 void FlushIOMessageLoop() {
263 // If there was a message posted on the IO thread to display the 263 // If there was a message posted on the IO thread to display the
264 // interstitial page we know that it would have been posted before 264 // interstitial page we know that it would have been posted before
265 // we put the quit message there. 265 // we put the quit message there.
266 BrowserThread::PostTask(BrowserThread::IO, 266 BrowserThread::PostTask(BrowserThread::IO,
267 FROM_HERE, 267 FROM_HERE,
268 base::Bind(&QuitUIMessageLoopFromIO)); 268 base::Bind(&QuitUIMessageLoopFromIO));
269 MessageLoop::current()->Run(); 269 base::MessageLoop::current()->Run();
270 } 270 }
271 271
272 void ExpectPreClassificationChecks(const GURL& url, 272 void ExpectPreClassificationChecks(const GURL& url,
273 const bool* is_private, 273 const bool* is_private,
274 const bool* is_incognito, 274 const bool* is_incognito,
275 const bool* match_csd_whitelist, 275 const bool* match_csd_whitelist,
276 const bool* get_valid_cached_result, 276 const bool* get_valid_cached_result,
277 const bool* is_in_cache, 277 const bool* is_in_cache,
278 const bool* over_report_limit) { 278 const bool* over_report_limit) {
279 if (is_private) { 279 if (is_private) {
(...skipping 19 matching lines...) Expand all
299 if (over_report_limit) { 299 if (over_report_limit) {
300 EXPECT_CALL(*csd_service_, OverPhishingReportLimit()) 300 EXPECT_CALL(*csd_service_, OverPhishingReportLimit())
301 .WillOnce(Return(*over_report_limit)); 301 .WillOnce(Return(*over_report_limit));
302 } 302 }
303 } 303 }
304 304
305 void WaitAndCheckPreClassificationChecks() { 305 void WaitAndCheckPreClassificationChecks() {
306 // Wait for CheckCsdWhitelist to be called if at all. 306 // Wait for CheckCsdWhitelist to be called if at all.
307 FlushIOMessageLoop(); 307 FlushIOMessageLoop();
308 // Checks for CheckCache() to be called if at all. 308 // Checks for CheckCache() to be called if at all.
309 MessageLoop::current()->RunUntilIdle(); 309 base::MessageLoop::current()->RunUntilIdle();
310 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 310 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
311 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 311 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
312 EXPECT_TRUE(Mock::VerifyAndClear(database_manager_.get())); 312 EXPECT_TRUE(Mock::VerifyAndClear(database_manager_.get()));
313 EXPECT_TRUE(Mock::VerifyAndClear(mock_profile_)); 313 EXPECT_TRUE(Mock::VerifyAndClear(mock_profile_));
314 } 314 }
315 315
316 void SetFeatureExtractor(BrowserFeatureExtractor* extractor) { 316 void SetFeatureExtractor(BrowserFeatureExtractor* extractor) {
317 csd_host_->feature_extractor_.reset(extractor); 317 csd_host_->feature_extractor_.reset(extractor);
318 } 318 }
319 319
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 SendClientReportPhishingRequest( 396 SendClientReportPhishingRequest(
397 Pointee(PartiallyEqualVerdict(verdict)), _)) 397 Pointee(PartiallyEqualVerdict(verdict)), _))
398 .WillOnce(SaveArg<1>(&cb)); 398 .WillOnce(SaveArg<1>(&cb));
399 OnPhishingDetectionDone(verdict.SerializeAsString()); 399 OnPhishingDetectionDone(verdict.SerializeAsString());
400 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 400 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
401 ASSERT_FALSE(cb.is_null()); 401 ASSERT_FALSE(cb.is_null());
402 402
403 // Make sure DoDisplayBlockingPage is not going to be called. 403 // Make sure DoDisplayBlockingPage is not going to be called.
404 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_)).Times(0); 404 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_)).Times(0);
405 cb.Run(GURL(verdict.url()), false); 405 cb.Run(GURL(verdict.url()), false);
406 MessageLoop::current()->RunUntilIdle(); 406 base::MessageLoop::current()->RunUntilIdle();
407 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 407 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
408 } 408 }
409 409
410 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneDisabled) { 410 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneDisabled) {
411 // Case 2: client thinks the page is phishing and so does the server but 411 // Case 2: client thinks the page is phishing and so does the server but
412 // showing the interstitial is disabled => no interstitial is shown. 412 // showing the interstitial is disabled => no interstitial is shown.
413 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 413 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
414 web_contents(), 414 web_contents(),
415 csd_service_.get()); 415 csd_service_.get());
416 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 416 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
(...skipping 11 matching lines...) Expand all
428 SendClientReportPhishingRequest( 428 SendClientReportPhishingRequest(
429 Pointee(PartiallyEqualVerdict(verdict)), _)) 429 Pointee(PartiallyEqualVerdict(verdict)), _))
430 .WillOnce(SaveArg<1>(&cb)); 430 .WillOnce(SaveArg<1>(&cb));
431 OnPhishingDetectionDone(verdict.SerializeAsString()); 431 OnPhishingDetectionDone(verdict.SerializeAsString());
432 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 432 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
433 ASSERT_FALSE(cb.is_null()); 433 ASSERT_FALSE(cb.is_null());
434 434
435 // Make sure DoDisplayBlockingPage is not going to be called. 435 // Make sure DoDisplayBlockingPage is not going to be called.
436 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_)).Times(0); 436 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_)).Times(0);
437 cb.Run(GURL(verdict.url()), false); 437 cb.Run(GURL(verdict.url()), false);
438 MessageLoop::current()->RunUntilIdle(); 438 base::MessageLoop::current()->RunUntilIdle();
439 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 439 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
440 } 440 }
441 441
442 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneShowInterstitial) { 442 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneShowInterstitial) {
443 // Case 3: client thinks the page is phishing and so does the server. 443 // Case 3: client thinks the page is phishing and so does the server.
444 // We show an interstitial. 444 // We show an interstitial.
445 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 445 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
446 web_contents(), 446 web_contents(),
447 csd_service_.get()); 447 csd_service_.get());
448 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 448 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
(...skipping 14 matching lines...) Expand all
463 .WillOnce(SaveArg<1>(&cb)); 463 .WillOnce(SaveArg<1>(&cb));
464 OnPhishingDetectionDone(verdict.SerializeAsString()); 464 OnPhishingDetectionDone(verdict.SerializeAsString());
465 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 465 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
466 ASSERT_FALSE(cb.is_null()); 466 ASSERT_FALSE(cb.is_null());
467 467
468 UnsafeResource resource; 468 UnsafeResource resource;
469 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_)) 469 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_))
470 .WillOnce(SaveArg<0>(&resource)); 470 .WillOnce(SaveArg<0>(&resource));
471 cb.Run(phishing_url, true); 471 cb.Run(phishing_url, true);
472 472
473 MessageLoop::current()->RunUntilIdle(); 473 base::MessageLoop::current()->RunUntilIdle();
474 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 474 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
475 EXPECT_EQ(phishing_url, resource.url); 475 EXPECT_EQ(phishing_url, resource.url);
476 EXPECT_EQ(phishing_url, resource.original_url); 476 EXPECT_EQ(phishing_url, resource.original_url);
477 EXPECT_FALSE(resource.is_subresource); 477 EXPECT_FALSE(resource.is_subresource);
478 EXPECT_EQ(SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, resource.threat_type); 478 EXPECT_EQ(SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, resource.threat_type);
479 EXPECT_EQ(web_contents()->GetRenderProcessHost()->GetID(), 479 EXPECT_EQ(web_contents()->GetRenderProcessHost()->GetID(),
480 resource.render_process_host_id); 480 resource.render_process_host_id);
481 EXPECT_EQ(web_contents()->GetRenderViewHost()->GetRoutingID(), 481 EXPECT_EQ(web_contents()->GetRenderViewHost()->GetRoutingID(),
482 resource.render_view_id); 482 resource.render_view_id);
483 483
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 EXPECT_CALL(*csd_service_, 541 EXPECT_CALL(*csd_service_,
542 SendClientReportPhishingRequest( 542 SendClientReportPhishingRequest(
543 Pointee(PartiallyEqualVerdict(verdict)), _)) 543 Pointee(PartiallyEqualVerdict(verdict)), _))
544 .WillOnce(DoAll(DeleteArg<0>(), 544 .WillOnce(DoAll(DeleteArg<0>(),
545 SaveArg<1>(&cb_other), 545 SaveArg<1>(&cb_other),
546 QuitUIMessageLoop())); 546 QuitUIMessageLoop()));
547 std::vector<GURL> redirect_chain; 547 std::vector<GURL> redirect_chain;
548 redirect_chain.push_back(other_phishing_url); 548 redirect_chain.push_back(other_phishing_url);
549 SetRedirectChain(redirect_chain); 549 SetRedirectChain(redirect_chain);
550 OnPhishingDetectionDone(verdict.SerializeAsString()); 550 OnPhishingDetectionDone(verdict.SerializeAsString());
551 MessageLoop::current()->Run(); 551 base::MessageLoop::current()->Run();
552 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 552 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
553 ASSERT_FALSE(cb_other.is_null()); 553 ASSERT_FALSE(cb_other.is_null());
554 554
555 // We expect that the interstitial is shown for the second phishing URL and 555 // We expect that the interstitial is shown for the second phishing URL and
556 // not for the first phishing URL. 556 // not for the first phishing URL.
557 UnsafeResource resource; 557 UnsafeResource resource;
558 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_)) 558 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_))
559 .WillOnce(SaveArg<0>(&resource)); 559 .WillOnce(SaveArg<0>(&resource));
560 560
561 cb.Run(phishing_url, true); // Should have no effect. 561 cb.Run(phishing_url, true); // Should have no effect.
562 cb_other.Run(other_phishing_url, true); // Should show interstitial. 562 cb_other.Run(other_phishing_url, true); // Should show interstitial.
563 563
564 MessageLoop::current()->RunUntilIdle(); 564 base::MessageLoop::current()->RunUntilIdle();
565 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 565 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
566 EXPECT_EQ(other_phishing_url, resource.url); 566 EXPECT_EQ(other_phishing_url, resource.url);
567 EXPECT_EQ(other_phishing_url, resource.original_url); 567 EXPECT_EQ(other_phishing_url, resource.original_url);
568 EXPECT_FALSE(resource.is_subresource); 568 EXPECT_FALSE(resource.is_subresource);
569 EXPECT_EQ(SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, resource.threat_type); 569 EXPECT_EQ(SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, resource.threat_type);
570 EXPECT_EQ(web_contents()->GetRenderProcessHost()->GetID(), 570 EXPECT_EQ(web_contents()->GetRenderProcessHost()->GetID(),
571 resource.render_process_host_id); 571 resource.render_process_host_id);
572 EXPECT_EQ(web_contents()->GetRenderViewHost()->GetRoutingID(), 572 EXPECT_EQ(web_contents()->GetRenderViewHost()->GetRoutingID(),
573 resource.render_view_id); 573 resource.render_view_id);
574 574
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 SetUnsafeResourceToCurrent(); 620 SetUnsafeResourceToCurrent();
621 621
622 EXPECT_CALL(*csd_service_, 622 EXPECT_CALL(*csd_service_,
623 SendClientReportPhishingRequest( 623 SendClientReportPhishingRequest(
624 Pointee(PartiallyEqualVerdict(verdict)), CallbackIsNull())) 624 Pointee(PartiallyEqualVerdict(verdict)), CallbackIsNull()))
625 .WillOnce(DoAll(DeleteArg<0>(), QuitUIMessageLoop())); 625 .WillOnce(DoAll(DeleteArg<0>(), QuitUIMessageLoop()));
626 std::vector<GURL> redirect_chain; 626 std::vector<GURL> redirect_chain;
627 redirect_chain.push_back(url); 627 redirect_chain.push_back(url);
628 SetRedirectChain(redirect_chain); 628 SetRedirectChain(redirect_chain);
629 OnPhishingDetectionDone(verdict.SerializeAsString()); 629 OnPhishingDetectionDone(verdict.SerializeAsString());
630 MessageLoop::current()->Run(); 630 base::MessageLoop::current()->Run();
631 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 631 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
632 } 632 }
633 633
634 TEST_F(ClientSideDetectionHostTest, UpdateIPHostMap) { 634 TEST_F(ClientSideDetectionHostTest, UpdateIPHostMap) {
635 BrowseInfo* browse_info = GetBrowseInfo(); 635 BrowseInfo* browse_info = GetBrowseInfo();
636 636
637 // Empty IP or host are skipped 637 // Empty IP or host are skipped
638 UpdateIPHostMap("250.10.10.10", std::string()); 638 UpdateIPHostMap("250.10.10.10", std::string());
639 ASSERT_EQ(0U, browse_info->ips.size()); 639 ASSERT_EQ(0U, browse_info->ips.size());
640 UpdateIPHostMap(std::string(), "google.com/"); 640 UpdateIPHostMap(std::string(), "google.com/");
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 NULL); 947 NULL);
948 948
949 UnsafeResource resource; 949 UnsafeResource resource;
950 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_)) 950 EXPECT_CALL(*ui_manager_, DoDisplayBlockingPage(_))
951 .WillOnce(SaveArg<0>(&resource)); 951 .WillOnce(SaveArg<0>(&resource));
952 952
953 NavigateAndCommit(url); 953 NavigateAndCommit(url);
954 // Wait for CheckCsdWhitelist to be called on the IO thread. 954 // Wait for CheckCsdWhitelist to be called on the IO thread.
955 FlushIOMessageLoop(); 955 FlushIOMessageLoop();
956 // Wait for CheckCache() to be called on the UI thread. 956 // Wait for CheckCache() to be called on the UI thread.
957 MessageLoop::current()->RunUntilIdle(); 957 base::MessageLoop::current()->RunUntilIdle();
958 // Now we check that all expected functions were indeed called on the two 958 // Now we check that all expected functions were indeed called on the two
959 // service objects. 959 // service objects.
960 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 960 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
961 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 961 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
962 EXPECT_EQ(url, resource.url); 962 EXPECT_EQ(url, resource.url);
963 EXPECT_EQ(url, resource.original_url); 963 EXPECT_EQ(url, resource.original_url);
964 resource.callback.Reset(); 964 resource.callback.Reset();
965 msg = process()->sink().GetFirstMessageMatching( 965 msg = process()->sink().GetFirstMessageMatching(
966 SafeBrowsingMsg_StartPhishingDetection::ID); 966 SafeBrowsingMsg_StartPhishingDetection::ID);
967 ASSERT_FALSE(msg); 967 ASSERT_FALSE(msg);
968 } 968 }
969 969
970 } // namespace safe_browsing 970 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698