1// Copyright 2014 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#ifndef CHROME_BROWSER_APPS_DRIVE_DRIVE_APP_MAPPING_H_
6#define CHROME_BROWSER_APPS_DRIVE_DRIVE_APP_MAPPING_H_
7
8#include <set>
9#include <string>
10
11#include "base/macros.h"
12
13namespace user_prefs {
14class PrefRegistrySyncable;
15}
16
17class PrefService;
18
19// DriveAppMapping tracks the mapping between Drive apps and corresponding
20// Chrome apps. The data is backed by kAppLauncherDriveAppMapping pref.
21class DriveAppMapping {
22 public:
23  explicit DriveAppMapping(PrefService* prefs);
24  ~DriveAppMapping();
25
26  static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
27
28  // Adds a mapping from |drive_app_id| to |chrome_app_id|. |generated|
29  // represents whether the corresponding Chrome app is generated.
30  void Add(const std::string& drive_app_id,
31           const std::string& chrome_app_id,
32           bool generated);
33  void Remove(const std::string& drive_app_id);
34
35  std::string GetChromeApp(const std::string& drive_app_id) const;
36  std::string GetDriveApp(const std::string& chrome_app_id) const;
37  bool IsChromeAppGenerated(const std::string& chrome_app_id) const;
38
39  std::set<std::string> GetDriveAppIds() const;
40
41 private:
42  PrefService* prefs_;
43
44  DISALLOW_COPY_AND_ASSIGN(DriveAppMapping);
45};
46
47#endif  // CHROME_BROWSER_APPS_DRIVE_DRIVE_APP_MAPPING_H_
48