Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / apps / drive / drive_app_mapping.h
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
13 namespace user_prefs {
14 class PrefRegistrySyncable;
15 }
16
17 class PrefService;
18
19 // DriveAppMapping tracks the mapping between Drive apps and corresponding
20 // Chrome apps. The data is backed by kAppLauncherDriveAppMapping pref.
21 class 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   void AddUninstalledDriveApp(const std::string& drive_app_id);
42   void RemoveUninstalledDriveApp(const std::string& drive_app_id);
43   bool IsUninstalledDriveApp(const std::string& drive_app_id) const;
44
45  private:
46   void GetUninstalledIdsFromPref();
47   void UpdateUninstalledList();
48
49   PrefService* prefs_;
50   std::set<std::string> uninstalled_app_ids_;
51
52   DISALLOW_COPY_AND_ASSIGN(DriveAppMapping);
53 };
54
55 #endif  // CHROME_BROWSER_APPS_DRIVE_DRIVE_APP_MAPPING_H_