158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/chromeos/file_manager/volume_manager_factory.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/basictypes.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/singleton.h" 9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "chrome/browser/chromeos/drive/drive_integration_service.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/chromeos/file_manager/volume_manager.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/chromeos/file_system_provider/service_factory.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/profiles/incognito_helpers.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chromeos/disks/disk_mount_manager.h" 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace file_manager { 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)VolumeManager* VolumeManagerFactory::Get(content::BrowserContext* context) { 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return static_cast<VolumeManager*>( 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GetInstance()->GetServiceForBrowserContext(context, true)); 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)VolumeManagerFactory* VolumeManagerFactory::GetInstance() { 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return Singleton<VolumeManagerFactory>::get(); 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)content::BrowserContext* VolumeManagerFactory::GetBrowserContextToUse( 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::BrowserContext* context) const { 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Explicitly allow this manager in guest login mode. 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return chrome::GetBrowserContextOwnInstanceInIncognito(context); 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool VolumeManagerFactory::ServiceIsCreatedWithBrowserContext() const { 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return true; 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool VolumeManagerFactory::ServiceIsNULLWhileTesting() const { 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return true; 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* VolumeManagerFactory::BuildServiceInstanceFor( 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch content::BrowserContext* context) const { 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Profile* const profile = Profile::FromBrowserContext(context); 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) VolumeManager* instance = new VolumeManager( 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch profile, 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch drive::DriveIntegrationServiceFactory::GetForProfile(profile), 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chromeos::DBusThreadManager::Get()->GetPowerManagerClient(), 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch chromeos::disks::DiskMountManager::GetInstance(), 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chromeos::file_system_provider::ServiceFactory::Get(context)); 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) instance->Initialize(); 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return instance; 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)VolumeManagerFactory::VolumeManagerFactory() 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) "VolumeManagerFactory", 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserContextDependencyManager::GetInstance()) { 60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) DependsOn(drive::DriveIntegrationServiceFactory::GetInstance()); 61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch DependsOn(chromeos::file_system_provider::ServiceFactory::GetInstance()); 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)VolumeManagerFactory::~VolumeManagerFactory() { 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace file_manager 68