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

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

Issue 9419033: Move creation of BrowserContext objects that live in content to content, instead of depending on th… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Fix memory leaks in tests Created 8 years, 10 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/file_path.h" 5 #include "base/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/synchronization/waitable_event.h"
8 #include "chrome/browser/safe_browsing/browser_feature_extractor.h" 9 #include "chrome/browser/safe_browsing/browser_feature_extractor.h"
9 #include "chrome/browser/safe_browsing/client_side_detection_host.h" 10 #include "chrome/browser/safe_browsing/client_side_detection_host.h"
10 #include "chrome/browser/safe_browsing/client_side_detection_service.h" 11 #include "chrome/browser/safe_browsing/client_side_detection_service.h"
11 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 12 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 13 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
13 #include "chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h" 14 #include "chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h"
14 #include "chrome/common/chrome_switches.h" 15 #include "chrome/common/chrome_switches.h"
15 #include "chrome/common/safe_browsing/csd.pb.h" 16 #include "chrome/common/safe_browsing/csd.pb.h"
16 #include "chrome/common/safe_browsing/safebrowsing_messages.h" 17 #include "chrome/common/safe_browsing/safebrowsing_messages.h"
17 #include "chrome/test/base/testing_profile.h" 18 #include "chrome/test/base/testing_profile.h"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 public: 153 public:
153 virtual void SetUp() { 154 virtual void SetUp() {
154 // Set custom profile object so that we can mock calls to IsOffTheRecord. 155 // Set custom profile object so that we can mock calls to IsOffTheRecord.
155 // This needs to happen before we call the parent SetUp() function. We use 156 // This needs to happen before we call the parent SetUp() function. We use
156 // a nice mock because other parts of the code are calling IsOffTheRecord. 157 // a nice mock because other parts of the code are calling IsOffTheRecord.
157 mock_profile_ = new NiceMock<MockTestingProfile>(); 158 mock_profile_ = new NiceMock<MockTestingProfile>();
158 browser_context_.reset(mock_profile_); 159 browser_context_.reset(mock_profile_);
159 160
160 ui_thread_.reset(new content::TestBrowserThread(BrowserThread::UI, 161 ui_thread_.reset(new content::TestBrowserThread(BrowserThread::UI,
161 &message_loop_)); 162 &message_loop_));
163 file_user_blocking_thread_.reset(
164 new content::TestBrowserThread(BrowserThread::FILE_USER_BLOCKING,
165 &message_loop_));
162 // Note: we're starting a real IO thread to make sure our DCHECKs that 166 // Note: we're starting a real IO thread to make sure our DCHECKs that
163 // verify which thread is running are actually tested. 167 // verify which thread is running are actually tested.
164 io_thread_.reset(new content::TestBrowserThread(BrowserThread::IO)); 168 io_thread_.reset(new content::TestBrowserThread(BrowserThread::IO));
165 ASSERT_TRUE(io_thread_->Start()); 169 ASSERT_TRUE(io_thread_->Start());
166 170
167 TabContentsWrapperTestHarness::SetUp(); 171 TabContentsWrapperTestHarness::SetUp();
168 172
169 // Inject service classes. 173 // Inject service classes.
170 csd_service_.reset(new StrictMock<MockClientSideDetectionService>()); 174 csd_service_.reset(new StrictMock<MockClientSideDetectionService>());
171 sb_service_ = new StrictMock<MockSafeBrowsingService>(); 175 sb_service_ = new StrictMock<MockSafeBrowsingService>();
172 csd_host_.reset(safe_browsing::ClientSideDetectionHost::Create( 176 csd_host_.reset(safe_browsing::ClientSideDetectionHost::Create(
173 contents_wrapper()->web_contents())); 177 contents_wrapper()->web_contents()));
174 csd_host_->set_client_side_detection_service(csd_service_.get()); 178 csd_host_->set_client_side_detection_service(csd_service_.get());
175 csd_host_->set_safe_browsing_service(sb_service_.get()); 179 csd_host_->set_safe_browsing_service(sb_service_.get());
176 // We need to create this here since we don't call 180 // We need to create this here since we don't call
177 // DidNavigateMainFramePostCommit in this test. 181 // DidNavigateMainFramePostCommit in this test.
178 csd_host_->browse_info_.reset(new BrowseInfo); 182 csd_host_->browse_info_.reset(new BrowseInfo);
179 } 183 }
180 184
185 static void RunAllPendingOnIO(base::WaitableEvent* event) {
186 MessageLoop::current()->RunAllPending();
187 event->Signal();
188 }
189
181 virtual void TearDown() { 190 virtual void TearDown() {
182 // Delete the host object on the UI thread and release the 191 // Delete the host object on the UI thread and release the
183 // SafeBrowsingService. 192 // SafeBrowsingService.
184 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, 193 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE,
185 csd_host_.release()); 194 csd_host_.release());
186 sb_service_ = NULL; 195 sb_service_ = NULL;
187 message_loop_.RunAllPending(); 196 message_loop_.RunAllPending();
188 TabContentsWrapperTestHarness::TearDown(); 197 TabContentsWrapperTestHarness::TearDown();
198
199 // Let the tasks on the IO thread run to avoid memory leaks.
200 base::WaitableEvent done(false, false);
201 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
202 base::Bind(RunAllPendingOnIO, &done));
203 done.Wait();
189 io_thread_.reset(); 204 io_thread_.reset();
205 message_loop_.RunAllPending();
206 file_user_blocking_thread_.reset();
190 ui_thread_.reset(); 207 ui_thread_.reset();
191 } 208 }
192 209
193 void OnPhishingDetectionDone(const std::string& verdict_str) { 210 void OnPhishingDetectionDone(const std::string& verdict_str) {
194 csd_host_->OnPhishingDetectionDone(verdict_str); 211 csd_host_->OnPhishingDetectionDone(verdict_str);
195 } 212 }
196 213
197 void FlushIOMessageLoop() { 214 void FlushIOMessageLoop() {
198 // If there was a message posted on the IO thread to display the 215 // If there was a message posted on the IO thread to display the
199 // interstitial page we know that it would have been posted before 216 // interstitial page we know that it would have been posted before
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 } 300 }
284 301
285 protected: 302 protected:
286 scoped_ptr<ClientSideDetectionHost> csd_host_; 303 scoped_ptr<ClientSideDetectionHost> csd_host_;
287 scoped_ptr<StrictMock<MockClientSideDetectionService> > csd_service_; 304 scoped_ptr<StrictMock<MockClientSideDetectionService> > csd_service_;
288 scoped_refptr<StrictMock<MockSafeBrowsingService> > sb_service_; 305 scoped_refptr<StrictMock<MockSafeBrowsingService> > sb_service_;
289 MockTestingProfile* mock_profile_; // We don't own this object 306 MockTestingProfile* mock_profile_; // We don't own this object
290 307
291 private: 308 private:
292 scoped_ptr<content::TestBrowserThread> ui_thread_; 309 scoped_ptr<content::TestBrowserThread> ui_thread_;
310 scoped_ptr<content::TestBrowserThread> file_user_blocking_thread_;
293 scoped_ptr<content::TestBrowserThread> io_thread_; 311 scoped_ptr<content::TestBrowserThread> io_thread_;
294 }; 312 };
295 313
296 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneInvalidVerdict) { 314 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneInvalidVerdict) {
297 // Case 0: renderer sends an invalid verdict string that we're unable to 315 // Case 0: renderer sends an invalid verdict string that we're unable to
298 // parse. 316 // parse.
299 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 317 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
300 contents(), 318 contents(),
301 csd_service_.get()); 319 csd_service_.get());
302 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 320 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get())); 748 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get()));
731 EXPECT_EQ(url, resource.url); 749 EXPECT_EQ(url, resource.url);
732 EXPECT_EQ(url, resource.original_url); 750 EXPECT_EQ(url, resource.original_url);
733 resource.callback.Reset(); 751 resource.callback.Reset();
734 msg = process()->sink().GetFirstMessageMatching( 752 msg = process()->sink().GetFirstMessageMatching(
735 SafeBrowsingMsg_StartPhishingDetection::ID); 753 SafeBrowsingMsg_StartPhishingDetection::ID);
736 ASSERT_FALSE(msg); 754 ASSERT_FALSE(msg);
737 } 755 }
738 756
739 } // namespace safe_browsing 757 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_io_data.cc ('k') | chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698