Index: chrome/browser/background/background_contents_service_unittest.cc |
diff --git a/chrome/browser/background/background_contents_service_unittest.cc b/chrome/browser/background/background_contents_service_unittest.cc |
index a58cfbc3ad1e2514fadd84d5553a371e7e7129ff..f739fda9b6df9f873f17e3a2c620679bfadbbd1a 100644 |
--- a/chrome/browser/background/background_contents_service_unittest.cc |
+++ b/chrome/browser/background/background_contents_service_unittest.cc |
@@ -8,6 +8,7 @@ |
#include "base/command_line.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/prefs/pref_service.h" |
+#include "base/run_loop.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/background/background_contents_service.h" |
#include "chrome/browser/background/background_contents_service_factory.h" |
@@ -16,19 +17,39 @@ |
#include "chrome/browser/tab_contents/background_contents.h" |
#include "chrome/browser/ui/browser_list.h" |
#include "chrome/common/pref_names.h" |
+#include "chrome/test/base/scoped_testing_local_state.h" |
#include "chrome/test/base/testing_browser_process.h" |
#include "chrome/test/base/testing_profile.h" |
+#include "chrome/test/base/testing_profile_manager.h" |
#include "content/public/browser/notification_service.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "testing/platform_test.h" |
+#include "ui/message_center/message_center.h" |
#include "url/gurl.h" |
class BackgroundContentsServiceTest : public testing::Test { |
- public: |
- BackgroundContentsServiceTest() {} |
- virtual ~BackgroundContentsServiceTest() {} |
- virtual void SetUp() { |
- command_line_.reset(new CommandLine(CommandLine::NO_PROGRAM)); |
+ protected: |
+ BackgroundContentsServiceTest() |
+ : command_line_(CommandLine::NO_PROGRAM), |
+ profile_manager_(TestingBrowserProcess::GetGlobal()), |
+ profile_(NULL) { |
+ CHECK(profile_manager_.SetUp()); |
+ profile_ = profile_manager_.CreateTestingProfile("TestProfile"); |
+ service_.reset(new BackgroundContentsService(profile_, &command_line_)); |
+ BackgroundContentsServiceFactory::GetInstance()-> |
+ RegisterUserPrefsOnBrowserContext(profile_); |
+ } |
+ |
+ virtual ~BackgroundContentsServiceTest() { |
+ base::RunLoop().RunUntilIdle(); |
+ } |
+ |
+ static void SetUpTestCase() { |
+ message_center::MessageCenter::Initialize(); |
+ } |
+ static void TearDownTestCase() { |
+ message_center::MessageCenter::Shutdown(); |
} |
const DictionaryValue* GetPrefs(Profile* profile) { |
@@ -47,7 +68,11 @@ class BackgroundContentsServiceTest : public testing::Test { |
return url; |
} |
- scoped_ptr<CommandLine> command_line_; |
+ content::TestBrowserThreadBundle thread_bundle; |
+ CommandLine command_line_; |
+ TestingProfileManager profile_manager_; |
+ TestingProfile* profile_; // Not owned. |
+ scoped_ptr<BackgroundContentsService> service_; |
}; |
class MockBackgroundContents : public BackgroundContents { |
@@ -97,104 +122,87 @@ class MockBackgroundContents : public BackgroundContents { |
private: |
GURL url_; |
- // The ID of our parent application |
+ // The ID of our parent application. |
string16 appid_; |
- // Parent profile |
+ // Parent profile. Not owned. |
Profile* profile_; |
}; |
TEST_F(BackgroundContentsServiceTest, Create) { |
- // Check for creation and leaks. |
- TestingProfile profile; |
- BackgroundContentsService service(&profile, command_line_.get()); |
+ // Check for creation and leaks when the basic objects in the |
+ // fixtures are created/destructed. |
} |
TEST_F(BackgroundContentsServiceTest, BackgroundContentsCreateDestroy) { |
- TestingProfile profile; |
- BackgroundContentsService service(&profile, command_line_.get()); |
- MockBackgroundContents* contents = new MockBackgroundContents(&profile); |
- EXPECT_FALSE(service.IsTracked(contents)); |
- contents->SendOpenedNotification(&service); |
- EXPECT_TRUE(service.IsTracked(contents)); |
+ MockBackgroundContents* contents = new MockBackgroundContents(profile_); |
+ EXPECT_FALSE(service_->IsTracked(contents)); |
+ contents->SendOpenedNotification(service_.get()); |
+ EXPECT_TRUE(service_->IsTracked(contents)); |
delete contents; |
- EXPECT_FALSE(service.IsTracked(contents)); |
+ EXPECT_FALSE(service_->IsTracked(contents)); |
} |
TEST_F(BackgroundContentsServiceTest, BackgroundContentsUrlAdded) { |
- TestingProfile profile; |
- BackgroundContentsService service(&profile, command_line_.get()); |
- BackgroundContentsServiceFactory::GetInstance()-> |
- RegisterUserPrefsOnBrowserContext(&profile); |
GURL orig_url; |
GURL url("http://a/"); |
GURL url2("http://a/"); |
{ |
scoped_ptr<MockBackgroundContents> contents( |
- new MockBackgroundContents(&profile)); |
- EXPECT_EQ(0U, GetPrefs(&profile)->size()); |
- contents->SendOpenedNotification(&service); |
+ new MockBackgroundContents(profile_)); |
+ EXPECT_EQ(0U, GetPrefs(profile_)->size()); |
+ contents->SendOpenedNotification(service_.get()); |
contents->Navigate(url); |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
- EXPECT_EQ(url.spec(), GetPrefURLForApp(&profile, contents->appid())); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
+ EXPECT_EQ(url.spec(), GetPrefURLForApp(profile_, contents->appid())); |
// Navigate the contents to a new url, should not change url. |
contents->Navigate(url2); |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
- EXPECT_EQ(url.spec(), GetPrefURLForApp(&profile, contents->appid())); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
+ EXPECT_EQ(url.spec(), GetPrefURLForApp(profile_, contents->appid())); |
} |
// Contents are deleted, url should persist. |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
} |
TEST_F(BackgroundContentsServiceTest, BackgroundContentsUrlAddedAndClosed) { |
- TestingProfile profile; |
- BackgroundContentsService service(&profile, command_line_.get()); |
- BackgroundContentsServiceFactory::GetInstance()-> |
- RegisterUserPrefsOnBrowserContext(&profile); |
- |
GURL url("http://a/"); |
- MockBackgroundContents* contents = new MockBackgroundContents(&profile); |
- EXPECT_EQ(0U, GetPrefs(&profile)->size()); |
- contents->SendOpenedNotification(&service); |
+ MockBackgroundContents* contents = new MockBackgroundContents(profile_); |
+ EXPECT_EQ(0U, GetPrefs(profile_)->size()); |
+ contents->SendOpenedNotification(service_.get()); |
contents->Navigate(url); |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
- EXPECT_EQ(url.spec(), GetPrefURLForApp(&profile, contents->appid())); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
+ EXPECT_EQ(url.spec(), GetPrefURLForApp(profile_, contents->appid())); |
// Fake a window closed by script. |
- contents->MockClose(&profile); |
- EXPECT_EQ(0U, GetPrefs(&profile)->size()); |
+ contents->MockClose(profile_); |
+ EXPECT_EQ(0U, GetPrefs(profile_)->size()); |
} |
// Test what happens if a BackgroundContents shuts down (say, due to a renderer |
// crash) then is restarted. Should not persist URL twice. |
TEST_F(BackgroundContentsServiceTest, RestartBackgroundContents) { |
- TestingProfile profile; |
- BackgroundContentsService service(&profile, command_line_.get()); |
- BackgroundContentsServiceFactory::GetInstance()-> |
- RegisterUserPrefsOnBrowserContext(&profile); |
- |
GURL url("http://a/"); |
{ |
scoped_ptr<MockBackgroundContents> contents(new MockBackgroundContents( |
- &profile, "appid")); |
- contents->SendOpenedNotification(&service); |
+ profile_, "appid")); |
+ contents->SendOpenedNotification(service_.get()); |
contents->Navigate(url); |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
- EXPECT_EQ(url.spec(), GetPrefURLForApp(&profile, contents->appid())); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
+ EXPECT_EQ(url.spec(), GetPrefURLForApp(profile_, contents->appid())); |
} |
// Contents deleted, url should be persisted. |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
{ |
// Reopen the BackgroundContents to the same URL, we should not register the |
// URL again. |
scoped_ptr<MockBackgroundContents> contents(new MockBackgroundContents( |
- &profile, "appid")); |
- contents->SendOpenedNotification(&service); |
+ profile_, "appid")); |
+ contents->SendOpenedNotification(service_.get()); |
contents->Navigate(url); |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
} |
} |
@@ -202,34 +210,29 @@ TEST_F(BackgroundContentsServiceTest, RestartBackgroundContents) { |
// between a BackgroundContents and its parent extension, including |
// unregistering the BC when the extension is uninstalled. |
TEST_F(BackgroundContentsServiceTest, TestApplicationIDLinkage) { |
- TestingProfile profile; |
- BackgroundContentsService service(&profile, command_line_.get()); |
- BackgroundContentsServiceFactory::GetInstance()-> |
- RegisterUserPrefsOnBrowserContext(&profile); |
- |
- EXPECT_EQ(NULL, service.GetAppBackgroundContents(ASCIIToUTF16("appid"))); |
- MockBackgroundContents* contents = new MockBackgroundContents(&profile, |
+ EXPECT_EQ(NULL, service_->GetAppBackgroundContents(ASCIIToUTF16("appid"))); |
+ MockBackgroundContents* contents = new MockBackgroundContents(profile_, |
"appid"); |
scoped_ptr<MockBackgroundContents> contents2( |
- new MockBackgroundContents(&profile, "appid2")); |
- contents->SendOpenedNotification(&service); |
- EXPECT_EQ(contents, service.GetAppBackgroundContents(contents->appid())); |
- contents2->SendOpenedNotification(&service); |
- EXPECT_EQ(contents2.get(), service.GetAppBackgroundContents( |
+ new MockBackgroundContents(profile_, "appid2")); |
+ contents->SendOpenedNotification(service_.get()); |
+ EXPECT_EQ(contents, service_->GetAppBackgroundContents(contents->appid())); |
+ contents2->SendOpenedNotification(service_.get()); |
+ EXPECT_EQ(contents2.get(), service_->GetAppBackgroundContents( |
contents2->appid())); |
- EXPECT_EQ(0U, GetPrefs(&profile)->size()); |
+ EXPECT_EQ(0U, GetPrefs(profile_)->size()); |
// Navigate the contents, then make sure the one associated with the extension |
// is unregistered. |
GURL url("http://a/"); |
GURL url2("http://b/"); |
contents->Navigate(url); |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
contents2->Navigate(url2); |
- EXPECT_EQ(2U, GetPrefs(&profile)->size()); |
- service.ShutdownAssociatedBackgroundContents(ASCIIToUTF16("appid")); |
- EXPECT_FALSE(service.IsTracked(contents)); |
- EXPECT_EQ(NULL, service.GetAppBackgroundContents(ASCIIToUTF16("appid"))); |
- EXPECT_EQ(1U, GetPrefs(&profile)->size()); |
- EXPECT_EQ(url2.spec(), GetPrefURLForApp(&profile, contents2->appid())); |
+ EXPECT_EQ(2U, GetPrefs(profile_)->size()); |
+ service_->ShutdownAssociatedBackgroundContents(ASCIIToUTF16("appid")); |
+ EXPECT_FALSE(service_->IsTracked(contents)); |
+ EXPECT_EQ(NULL, service_->GetAppBackgroundContents(ASCIIToUTF16("appid"))); |
+ EXPECT_EQ(1U, GetPrefs(profile_)->size()); |
+ EXPECT_EQ(url2.spec(), GetPrefURLForApp(profile_, contents2->appid())); |
} |