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 16namespace drive { 17 18namespace{ 19const char kTestProfileName[] = "test-profile"; 20} 21 22class 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 40TEST_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 54TEST_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