Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1147)

Unified Diff: chrome/browser/apps/drive/drive_app_mapping.cc

Issue 308003005: app_list: Drive app integration. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/apps/drive/drive_app_mapping.cc
diff --git a/chrome/browser/apps/drive/drive_app_mapping.cc b/chrome/browser/apps/drive/drive_app_mapping.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ae9531014ab83aa6409fa40754cb1c09b85a6a66
--- /dev/null
+++ b/chrome/browser/apps/drive/drive_app_mapping.cc
@@ -0,0 +1,127 @@
+// Copyright 2014 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.
+
+#include "chrome/browser/apps/drive/drive_app_mapping.h"
+
+#include "base/prefs/pref_service.h"
+#include "base/prefs/scoped_user_pref_update.h"
+#include "base/values.h"
+#include "chrome/common/pref_names.h"
+#include "components/pref_registry/pref_registry_syncable.h"
+
+namespace {
+
+// Key for a string value that holds the mapped chrome app id.
+const char kKeyChromeApp[] = "chrome_app";
+
+// Key for a boolean value of whether the mapped chrome app is auto generated.
+// Default is false.
+const char kKeyGenerated[] = "generated";
+
+scoped_ptr<base::DictionaryValue> CreateInfoDict(
+ const std::string& chrome_app_id,
+ bool generated) {
+ scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
+ dict->SetStringWithoutPathExpansion(kKeyChromeApp, chrome_app_id);
+
+ // Only writes non-default value.
+ if (generated)
+ dict->SetBooleanWithoutPathExpansion(kKeyGenerated, true);
+ return dict.Pass();
+}
+
+} // namespace
+
+DriveAppMapping::DriveAppMapping(PrefService* prefs) : prefs_(prefs) {
+}
+
+DriveAppMapping::~DriveAppMapping() {
+}
+
+// static
+void DriveAppMapping::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+ registry->RegisterDictionaryPref(
+ prefs::kAppLauncherDriveAppMapping,
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
+}
+
+void DriveAppMapping::Add(const std::string& drive_app_id,
+ const std::string& chrome_app_id,
+ bool generated) {
+ DictionaryPrefUpdate update(prefs_, prefs::kAppLauncherDriveAppMapping);
+ update->SetWithoutPathExpansion(
+ drive_app_id, CreateInfoDict(chrome_app_id, generated).release());
+}
+
+void DriveAppMapping::Remove(const std::string& drive_app_id) {
+ DictionaryPrefUpdate update(prefs_, prefs::kAppLauncherDriveAppMapping);
+ update->RemoveWithoutPathExpansion(drive_app_id, NULL);
+}
+
+std::string DriveAppMapping::GetChromeApp(
+ const std::string& drive_app_id) const {
+ const base::DictionaryValue* mapping =
+ prefs_->GetDictionary(prefs::kAppLauncherDriveAppMapping);
+ const base::DictionaryValue* info_dict;
+ std::string chrome_app_id;
+ if (mapping->GetDictionaryWithoutPathExpansion(drive_app_id, &info_dict) &&
+ info_dict->GetStringWithoutPathExpansion(kKeyChromeApp, &chrome_app_id)) {
+ return chrome_app_id;
+ }
+
+ return std::string();
+}
+
+std::string DriveAppMapping::GetDriveApp(
+ const std::string& chrome_app_id) const {
+ const base::DictionaryValue* mapping =
+ prefs_->GetDictionary(prefs::kAppLauncherDriveAppMapping);
+ for (base::DictionaryValue::Iterator it(*mapping); !it.IsAtEnd();
+ it.Advance()) {
+ const base::DictionaryValue* info_dict;
+ std::string value_string;
+ DCHECK(it.value().IsType(base::Value::TYPE_DICTIONARY));
+ if (it.value().GetAsDictionary(&info_dict) &&
+ info_dict->GetStringWithoutPathExpansion(kKeyChromeApp,
+ &value_string) &&
+ value_string == chrome_app_id) {
+ return it.key();
+ }
+ }
+ return std::string();
+}
+
+bool DriveAppMapping::IsChromeAppGenerated(
+ const std::string& chrome_app_id) const {
+ const base::DictionaryValue* mapping =
+ prefs_->GetDictionary(prefs::kAppLauncherDriveAppMapping);
+ for (base::DictionaryValue::Iterator it(*mapping); !it.IsAtEnd();
+ it.Advance()) {
+ const base::DictionaryValue* info_dict;
+ std::string value_string;
+ bool generated;
+ DCHECK(it.value().IsType(base::Value::TYPE_DICTIONARY));
+ if (it.value().GetAsDictionary(&info_dict) &&
+ info_dict->GetStringWithoutPathExpansion(kKeyChromeApp,
+ &value_string) &&
+ value_string == chrome_app_id &&
+ info_dict->GetBooleanWithoutPathExpansion(kKeyGenerated, &generated)) {
+ return generated;
+ }
+ }
+
+ return false;
+}
+
+std::set<std::string> DriveAppMapping::GetDriveAppIds() const {
+ const base::DictionaryValue* mapping =
+ prefs_->GetDictionary(prefs::kAppLauncherDriveAppMapping);
+ std::set<std::string> keys;
+ for (base::DictionaryValue::Iterator it(*mapping); !it.IsAtEnd();
+ it.Advance()) {
+ keys.insert(it.key());
+ }
+ return keys;
+}
« no previous file with comments | « chrome/browser/apps/drive/drive_app_mapping.h ('k') | chrome/browser/apps/drive/drive_app_mapping_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698