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

Side by Side Diff: chrome/browser/browsing_data_remover_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 "chrome/browser/browsing_data_remover.h" 5 #include "chrome/browser/browsing_data_remover.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 // Test Class ---------------------------------------------------------------- 285 // Test Class ----------------------------------------------------------------
286 286
287 class BrowsingDataRemoverTest : public testing::Test, 287 class BrowsingDataRemoverTest : public testing::Test,
288 public content::NotificationObserver { 288 public content::NotificationObserver {
289 public: 289 public:
290 BrowsingDataRemoverTest() 290 BrowsingDataRemoverTest()
291 : ui_thread_(BrowserThread::UI, &message_loop_), 291 : ui_thread_(BrowserThread::UI, &message_loop_),
292 db_thread_(BrowserThread::DB, &message_loop_), 292 db_thread_(BrowserThread::DB, &message_loop_),
293 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &message_loop_), 293 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &message_loop_),
294 file_thread_(BrowserThread::FILE, &message_loop_), 294 file_thread_(BrowserThread::FILE, &message_loop_),
295 file_user_blocking_thread_(
296 BrowserThread::FILE_USER_BLOCKING, &message_loop_),
295 io_thread_(BrowserThread::IO, &message_loop_), 297 io_thread_(BrowserThread::IO, &message_loop_),
296 profile_(new TestingProfile()) { 298 profile_(new TestingProfile()) {
297 registrar_.Add(this, chrome::NOTIFICATION_BROWSING_DATA_REMOVED, 299 registrar_.Add(this, chrome::NOTIFICATION_BROWSING_DATA_REMOVED,
298 content::Source<Profile>(profile_.get())); 300 content::Source<Profile>(profile_.get()));
299 } 301 }
300 302
301 virtual ~BrowsingDataRemoverTest() { 303 virtual ~BrowsingDataRemoverTest() {
302 } 304 }
303 305
304 void TearDown() { 306 void TearDown() {
305 // TestingProfile contains a WebKitContext. WebKitContext's destructor 307 // TestingProfile contains a WebKitContext. WebKitContext's destructor
306 // posts a message to the WEBKIT thread to delete some of its member 308 // posts a message to the WEBKIT thread to delete some of its member
307 // variables. We need to ensure that the profile is destroyed, and that 309 // variables. We need to ensure that the profile is destroyed, and that
308 // the message loop is cleared out, before destroying the threads and loop. 310 // the message loop is cleared out, before destroying the threads and loop.
309 // Otherwise we leak memory. 311 // Otherwise we leak memory.
310 profile_.reset(); 312 profile_.reset();
311 message_loop_.RunAllPending(); 313 message_loop_.RunAllPending();
312 } 314 }
313 315
314 void BlockUntilBrowsingDataRemoved(BrowsingDataRemover::TimePeriod period, 316 void BlockUntilBrowsingDataRemoved(BrowsingDataRemover::TimePeriod period,
315 int remove_mask, 317 int remove_mask,
316 BrowsingDataRemoverTester* tester) { 318 BrowsingDataRemoverTester* tester) {
317 BrowsingDataRemover* remover = new BrowsingDataRemover( 319 BrowsingDataRemover* remover = new BrowsingDataRemover(
318 profile_.get(), period, 320 profile_.get(), period,
319 base::Time::Now() + base::TimeDelta::FromMilliseconds(10)); 321 base::Time::Now() + base::TimeDelta::FromMilliseconds(10));
322 remover->OverrideQuotaManagerForTesting(GetMockManager());
320 remover->AddObserver(tester); 323 remover->AddObserver(tester);
321 324
322 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 325 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
323 326
324 // BrowsingDataRemover deletes itself when it completes. 327 // BrowsingDataRemover deletes itself when it completes.
325 remover->Remove(remove_mask); 328 remover->Remove(remove_mask);
326 tester->BlockUntilNotified(); 329 tester->BlockUntilNotified();
327 } 330 }
328 331
329 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period, 332 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period,
330 int remove_mask, 333 int remove_mask,
331 const GURL& remove_origin, 334 const GURL& remove_origin,
332 BrowsingDataRemoverTester* tester) { 335 BrowsingDataRemoverTester* tester) {
333 BrowsingDataRemover* remover = new BrowsingDataRemover( 336 BrowsingDataRemover* remover = new BrowsingDataRemover(
334 profile_.get(), period, 337 profile_.get(), period,
335 base::Time::Now() + base::TimeDelta::FromMilliseconds(10)); 338 base::Time::Now() + base::TimeDelta::FromMilliseconds(10));
339 remover->OverrideQuotaManagerForTesting(GetMockManager());
336 remover->AddObserver(tester); 340 remover->AddObserver(tester);
337 341
338 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 342 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
339 343
340 // BrowsingDataRemover deletes itself when it completes. 344 // BrowsingDataRemover deletes itself when it completes.
341 remover->RemoveImpl(remove_mask, remove_origin, false); 345 remover->RemoveImpl(remove_mask, remove_origin, false);
342 tester->BlockUntilNotified(); 346 tester->BlockUntilNotified();
343 } 347 }
344 348
345 TestingProfile* GetProfile() { 349 TestingProfile* GetProfile() {
346 return profile_.get(); 350 return profile_.get();
347 } 351 }
348 352
349 base::Time GetBeginTime() { 353 base::Time GetBeginTime() {
350 return called_with_details_->removal_begin; 354 return called_with_details_->removal_begin;
351 } 355 }
352 356
353 int GetRemovalMask() { 357 int GetRemovalMask() {
354 return called_with_details_->removal_mask; 358 return called_with_details_->removal_mask;
355 } 359 }
356 360
357 quota::MockQuotaManager* GetMockManager() { 361 quota::MockQuotaManager* GetMockManager() {
358 if (profile_->GetQuotaManager() == NULL) { 362 if (!quota_manager_) {
359 profile_->SetQuotaManager(new quota::MockQuotaManager( 363 quota_manager_ = new quota::MockQuotaManager(
360 profile_->IsOffTheRecord(), 364 profile_->IsOffTheRecord(),
361 profile_->GetPath(), 365 profile_->GetPath(),
362 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), 366 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
363 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB), 367 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
364 profile_->GetExtensionSpecialStoragePolicy())); 368 profile_->GetExtensionSpecialStoragePolicy());
365 } 369 }
366 return (quota::MockQuotaManager*) profile_->GetQuotaManager(); 370 return quota_manager_;
367 } 371 }
368 372
369 // content::NotificationObserver implementation. 373 // content::NotificationObserver implementation.
370 virtual void Observe(int type, 374 virtual void Observe(int type,
371 const content::NotificationSource& source, 375 const content::NotificationSource& source,
372 const content::NotificationDetails& details) OVERRIDE { 376 const content::NotificationDetails& details) OVERRIDE {
373 DCHECK_EQ(type, chrome::NOTIFICATION_BROWSING_DATA_REMOVED); 377 DCHECK_EQ(type, chrome::NOTIFICATION_BROWSING_DATA_REMOVED);
374 378
375 // We're not taking ownership of the details object, but storing a copy of 379 // We're not taking ownership of the details object, but storing a copy of
376 // it locally. 380 // it locally.
377 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails( 381 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails(
378 *content::Details<BrowsingDataRemover::NotificationDetails>( 382 *content::Details<BrowsingDataRemover::NotificationDetails>(
379 details).ptr())); 383 details).ptr()));
380 384
381 registrar_.RemoveAll(); 385 registrar_.RemoveAll();
382 } 386 }
383 387
384 private: 388 private:
385 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_; 389 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_;
386 content::NotificationRegistrar registrar_; 390 content::NotificationRegistrar registrar_;
387 391
388 // message_loop_, as well as all the threads associated with it must be 392 // message_loop_, as well as all the threads associated with it must be
389 // defined before profile_ to prevent explosions. Oh how I love C++. 393 // defined before profile_ to prevent explosions. Oh how I love C++.
390 MessageLoopForUI message_loop_; 394 MessageLoopForUI message_loop_;
391 content::TestBrowserThread ui_thread_; 395 content::TestBrowserThread ui_thread_;
392 content::TestBrowserThread db_thread_; 396 content::TestBrowserThread db_thread_;
393 content::TestBrowserThread webkit_thread_; 397 content::TestBrowserThread webkit_thread_;
394 content::TestBrowserThread file_thread_; 398 content::TestBrowserThread file_thread_;
399 content::TestBrowserThread file_user_blocking_thread_;
395 content::TestBrowserThread io_thread_; 400 content::TestBrowserThread io_thread_;
396 scoped_ptr<TestingProfile> profile_; 401 scoped_ptr<TestingProfile> profile_;
402 scoped_refptr<quota::MockQuotaManager> quota_manager_;
397 403
398 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest); 404 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest);
399 }; 405 };
400 406
401 // Tests --------------------------------------------------------------------- 407 // Tests ---------------------------------------------------------------------
402 408
403 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) { 409 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) {
404 scoped_ptr<RemoveCookieTester> tester( 410 scoped_ptr<RemoveCookieTester> tester(
405 new RemoveCookieTester(GetProfile())); 411 new RemoveCookieTester(GetProfile()));
406 412
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); 789 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1));
784 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); 790 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2));
785 791
786 BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR, 792 BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR,
787 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get()); 793 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get());
788 794
789 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 795 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask());
790 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1)); 796 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1));
791 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2)); 797 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2));
792 } 798 }
OLDNEW
« no previous file with comments | « chrome/browser/browsing_data_remover.cc ('k') | chrome/browser/chromeos/offline/offline_load_page_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698