blob: d13920c22702fd0f9bbfc39f9cb0d3a2a60b9933 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_MEDIA_GALLERIES_LINUX_MTP_DEVICE_TASK_HELPER_MAP_SERVICE_H_
#define CHROME_BROWSER_MEDIA_GALLERIES_LINUX_MTP_DEVICE_TASK_HELPER_MAP_SERVICE_H_
#include <map>
#include <string>
#include "base/lazy_instance.h"
class MTPDeviceTaskHelper;
// MTPDeviceTaskHelperMapService manages MTPDeviceTaskHelper objects.
// MTPDeviceTaskHelperMapService lives on the UI thread.
class MTPDeviceTaskHelperMapService {
public:
static MTPDeviceTaskHelperMapService* GetInstance();
// Creates and returns the MTPDeviceTaskHelper object for the storage device
// specified by the |storage_name|.
MTPDeviceTaskHelper* CreateDeviceTaskHelper(const std::string& storage_name);
// Destroys the MTPDeviceTaskHelper object created by
// CreateDeviceTaskHelper().
// |storage_name| specifies the name of the storage device.
void DestroyDeviceTaskHelper(const std::string& storage_name);
// Gets the MTPDeviceTaskHelper object associated with the device storage.
// |storage_name| specifies the name of the storage device.
// Return NULL if the |storage_name| is no longer valid (e.g. because the
// corresponding storage device is detached, etc).
MTPDeviceTaskHelper* GetDeviceTaskHelper(const std::string& storage_name);
private:
friend struct base::DefaultLazyInstanceTraits<MTPDeviceTaskHelperMapService>;
// Key: Storage name.
// Value: MTPDeviceTaskHelper object.
typedef std::map<std::string, MTPDeviceTaskHelper*> TaskHelperMap;
// Get access to this class using GetInstance() method.
MTPDeviceTaskHelperMapService();
~MTPDeviceTaskHelperMapService();
// Mapping of |storage_name| and MTPDeviceTaskHelper*.
// TaskHelperMap owns MTPDeviceTaskHelper objects.
TaskHelperMap task_helper_map_;
DISALLOW_COPY_AND_ASSIGN(MTPDeviceTaskHelperMapService);
};
#endif // CHROME_BROWSER_MEDIA_GALLERIES_LINUX_MTP_DEVICE_TASK_HELPER_MAP_SERVICE_H_