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

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: Remove the special case for disabling external cache for kiosk mode. Created 5 years, 4 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..1863239f95b6e77b29726c3a8574709ae8502278 100644
--- a/extensions/common/manifest_handlers/kiosk_mode_info.cc
+++ b/extensions/common/manifest_handlers/kiosk_mode_info.cc
@@ -9,15 +9,18 @@
#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() {
}
@@ -36,9 +39,23 @@ bool KioskModeInfo::IsKioskOnly(const Extension* extension) {
return info ? info->kiosk_status == ONLY : false;
}
+// static
+bool KioskModeInfo::HasSecondaryApps(const Extension* extension) {
+ KioskModeInfo* info =
+ static_cast<KioskModeInfo*>(extension->GetManifestData(keys::kKioskMode));
not at google - send to devlin 2015/09/01 22:51:10 More concise, just "KioskModeInfo* info = Get(exte
jennyz 2015/09/02 21:42:23 Done.
+ return info && !info->secondary_app_ids.empty();
+}
+
+// static
+KioskModeInfo* KioskModeInfo::Get(const Extension* extension) {
+ return static_cast<KioskModeInfo*>(
+ extension->GetManifestData(keys::kKioskMode));
+}
+
KioskModeHandler::KioskModeHandler() {
supported_keys_.push_back(keys::kKioskEnabled);
supported_keys_.push_back(keys::kKioskOnly);
+ supported_keys_.push_back(keys::kKioskSecondaryApps);
}
KioskModeHandler::~KioskModeHandler() {
@@ -77,8 +94,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;
}

Powered by Google App Engine
This is Rietveld 408576698