12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/chromeos/drive/drive_integration_service.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/chromeos/drive/dummy_file_system.h" 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/drive/dummy_drive_service.h" 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "chrome/test/base/testing_browser_process.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_profile.h" 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "chrome/test/base/testing_profile_manager.h" 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "content/public/test/test_browser_thread_bundle.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/test/test_utils.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace drive { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace{ 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochconst char kTestProfileName[] = "test-profile"; 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class DriveIntegrationServiceTest : public testing::Test { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DriveIntegrationServiceTest() 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch : profile_manager_(TestingBrowserProcess::GetGlobal()) {} 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() OVERRIDE { 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(profile_manager_.SetUp()); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) content::TestBrowserThreadBundle thread_bundle_; 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // DriveIntegrationService depends on DriveNotificationManager which depends 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // on InvalidationService. On Chrome OS, the InvalidationServiceFactory 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // uses chromeos::ProfileHelper, which needs the ProfileManager or a 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // TestProfileManager to be running. 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch TestingProfileManager profile_manager_; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST_F(DriveIntegrationServiceTest, InitializeAndShutdown) { 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<DriveIntegrationService> integration_service( 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) new DriveIntegrationService( 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) profile_manager_.CreateTestingProfile(kTestProfileName), 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) NULL, 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) new DummyDriveService, 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string(), 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::FilePath(), 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) new DummyFileSystem)); 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) integration_service->SetEnabled(true); 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch content::RunAllBlockingPoolTasksUntilIdle(); 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) integration_service->Shutdown(); 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_F(DriveIntegrationServiceTest, ServiceInstanceIdentity) { 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) TestingProfile* user1 = profile_manager_.CreateTestingProfile("user1"); 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Integration Service is created as a profile keyed service. 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(DriveIntegrationServiceFactory::GetForProfile(user1)); 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Shares the same instance with the incognito mode profile. 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile* user1_incognito = user1->GetOffTheRecordProfile(); 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(DriveIntegrationServiceFactory::GetForProfile(user1), 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DriveIntegrationServiceFactory::GetForProfile(user1_incognito)); 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // For different profiles, different services are running. 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) TestingProfile* user2 = profile_manager_.CreateTestingProfile("user2"); 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_NE(DriveIntegrationServiceFactory::GetForProfile(user1), 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DriveIntegrationServiceFactory::GetForProfile(user2)); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace drive 72