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

Unified Diff: extensions/common/manifest_handlers/kiosk_mode_info.cc

Issue 1301323005: Implement kiosk multiple apps feature. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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: extensions/common/manifest_handlers/kiosk_mode_info.cc
diff --git a/extensions/common/manifest_handlers/kiosk_mode_info.cc b/extensions/common/manifest_handlers/kiosk_mode_info.cc
index f5d36afbef02fe14536aeb05a4d34987ab2049e0..d265c232787237b35eb09cc1e6c1b7f1c658142a 100644
--- a/extensions/common/manifest_handlers/kiosk_mode_info.cc
+++ b/extensions/common/manifest_handlers/kiosk_mode_info.cc
@@ -9,36 +9,50 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
+#include "extensions/common/api/extensions_manifest_types.h"
#include "extensions/common/manifest_constants.h"
namespace extensions {
namespace keys = manifest_keys;
-KioskModeInfo::KioskModeInfo(KioskStatus kiosk_status)
- : kiosk_status(kiosk_status) {
-}
+using api::extensions_manifest_types::KioskSecondaryAppsType;
+
+KioskModeInfo::KioskModeInfo(KioskStatus kiosk_status,
+ const std::vector<std::string>& secondary_app_ids)
+ : kiosk_status(kiosk_status), secondary_app_ids(secondary_app_ids) {}
KioskModeInfo::~KioskModeInfo() {
}
// static
-bool KioskModeInfo::IsKioskEnabled(const Extension* extension) {
- KioskModeInfo* info = static_cast<KioskModeInfo*>(
+KioskModeInfo* KioskModeInfo::Get(const Extension* extension) {
+ return static_cast<KioskModeInfo*>(
extension->GetManifestData(keys::kKioskMode));
+}
+
+// static
+bool KioskModeInfo::IsKioskEnabled(const Extension* extension) {
+ KioskModeInfo* info = Get(extension);
return info ? info->kiosk_status != NONE : false;
}
// static
bool KioskModeInfo::IsKioskOnly(const Extension* extension) {
- KioskModeInfo* info = static_cast<KioskModeInfo*>(
- extension->GetManifestData(keys::kKioskMode));
+ KioskModeInfo* info = Get(extension);
return info ? info->kiosk_status == ONLY : false;
}
+// static
+bool KioskModeInfo::HasSecondaryApps(const Extension* extension) {
+ KioskModeInfo* info = Get(extension);
+ return info && !info->secondary_app_ids.empty();
+}
+
KioskModeHandler::KioskModeHandler() {
supported_keys_.push_back(keys::kKioskEnabled);
supported_keys_.push_back(keys::kKioskOnly);
+ supported_keys_.push_back(keys::kKioskSecondaryApps);
}
KioskModeHandler::~KioskModeHandler() {
@@ -77,8 +91,32 @@ bool KioskModeHandler::Parse(Extension* extension, base::string16* error) {
if (kiosk_enabled)
kiosk_status = kiosk_only ? KioskModeInfo::ONLY : KioskModeInfo::ENABLED;
+ // Kiosk secondary apps key is optional.
+ std::vector<std::string> ids;
+ if (extension->manifest()->HasKey(keys::kKioskSecondaryApps)) {
+ const base::Value* secondary_apps = nullptr;
+ const base::ListValue* list = nullptr;
+ if (!extension->manifest()->Get(keys::kKioskSecondaryApps,
+ &secondary_apps) ||
+ !secondary_apps->GetAsList(&list)) {
+ *error = base::ASCIIToUTF16(manifest_errors::kInvalidKioskSecondaryApps);
+ return false;
+ }
+
+ for (const base::Value* value : *list) {
+ scoped_ptr<KioskSecondaryAppsType> app =
+ KioskSecondaryAppsType::FromValue(*value, error);
+ if (!app) {
+ *error = base::ASCIIToUTF16(
+ manifest_errors::kInvalidKioskSecondaryAppsBadAppId);
+ return false;
+ }
+ ids.push_back(app->id);
+ }
+ }
+
extension->SetManifestData(keys::kKioskMode,
- new KioskModeInfo(kiosk_status));
+ new KioskModeInfo(kiosk_status, ids));
return true;
}
« no previous file with comments | « extensions/common/manifest_handlers/kiosk_mode_info.h ('k') | extensions/common/manifest_handlers/kiosk_mode_info_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698