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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/chromeos/drive/drive_integration_service.h" 6 7 #include "chrome/browser/chromeos/drive/dummy_file_system.h" 8 #include "chrome/browser/drive/dummy_drive_service.h" 9 #include "chrome/test/base/testing_browser_process.h" 10 #include "chrome/test/base/testing_profile.h" 11 #include "chrome/test/base/testing_profile_manager.h" 12 #include "content/public/test/test_browser_thread_bundle.h" 13 #include "content/public/test/test_utils.h" 14 #include "testing/gtest/include/gtest/gtest.h" 15 16 namespace drive { 17 18 namespace{ 19 const char kTestProfileName[] = "test-profile"; 20 } 21 22 class DriveIntegrationServiceTest : public testing::Test { 23 public: 24 DriveIntegrationServiceTest() 25 : profile_manager_(TestingBrowserProcess::GetGlobal()) {} 26 27 virtual void SetUp() OVERRIDE { 28 ASSERT_TRUE(profile_manager_.SetUp()); 29 } 30 31 protected: 32 content::TestBrowserThreadBundle thread_bundle_; 33 // DriveIntegrationService depends on DriveNotificationManager which depends 34 // on InvalidationService. On Chrome OS, the InvalidationServiceFactory 35 // uses chromeos::ProfileHelper, which needs the ProfileManager or a 36 // TestProfileManager to be running. 37 TestingProfileManager profile_manager_; 38 }; 39 40 TEST_F(DriveIntegrationServiceTest, InitializeAndShutdown) { 41 scoped_ptr<DriveIntegrationService> integration_service( 42 new DriveIntegrationService( 43 profile_manager_.CreateTestingProfile(kTestProfileName), 44 NULL, 45 new DummyDriveService, 46 std::string(), 47 base::FilePath(), 48 new DummyFileSystem)); 49 integration_service->SetEnabled(true); 50 content::RunAllBlockingPoolTasksUntilIdle(); 51 integration_service->Shutdown(); 52 } 53 54 TEST_F(DriveIntegrationServiceTest, ServiceInstanceIdentity) { 55 TestingProfile* user1 = profile_manager_.CreateTestingProfile("user1"); 56 57 // Integration Service is created as a profile keyed service. 58 EXPECT_TRUE(DriveIntegrationServiceFactory::GetForProfile(user1)); 59 60 // Shares the same instance with the incognito mode profile. 61 Profile* user1_incognito = user1->GetOffTheRecordProfile(); 62 EXPECT_EQ(DriveIntegrationServiceFactory::GetForProfile(user1), 63 DriveIntegrationServiceFactory::GetForProfile(user1_incognito)); 64 65 // For different profiles, different services are running. 66 TestingProfile* user2 = profile_manager_.CreateTestingProfile("user2"); 67 EXPECT_NE(DriveIntegrationServiceFactory::GetForProfile(user1), 68 DriveIntegrationServiceFactory::GetForProfile(user2)); 69 } 70 71 } // namespace drive 72