diff options
Diffstat (limited to 'chrome/common/extensions/manifest_handlers')
4 files changed, 144 insertions, 102 deletions
diff --git a/chrome/common/extensions/manifest_handlers/kiosk_enabled_info.cc b/chrome/common/extensions/manifest_handlers/kiosk_enabled_info.cc deleted file mode 100644 index 4c50de5..0000000 --- a/chrome/common/extensions/manifest_handlers/kiosk_enabled_info.cc +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2013 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/common/extensions/manifest_handlers/kiosk_enabled_info.h" - -#include "base/memory/scoped_ptr.h" -#include "base/strings/string16.h" -#include "base/strings/string_util.h" -#include "base/strings/utf_string_conversions.h" -#include "base/values.h" -#include "extensions/common/manifest_constants.h" - -namespace extensions { - -namespace keys = manifest_keys; - -KioskEnabledInfo::KioskEnabledInfo(bool is_kiosk_enabled) - : kiosk_enabled(is_kiosk_enabled) { -} - -KioskEnabledInfo::~KioskEnabledInfo() { -} - -// static -bool KioskEnabledInfo::IsKioskEnabled(const Extension* extension) { - KioskEnabledInfo* info = static_cast<KioskEnabledInfo*>( - extension->GetManifestData(keys::kKioskEnabled)); - return info ? info->kiosk_enabled : false; -} - -KioskEnabledHandler::KioskEnabledHandler() { -} - -KioskEnabledHandler::~KioskEnabledHandler() { -} - -bool KioskEnabledHandler::Parse(Extension* extension, string16* error) { - DCHECK(extension->manifest()->HasKey(keys::kKioskEnabled)); - - bool kiosk_enabled = false; - if (!extension->manifest()->GetBoolean(keys::kKioskEnabled, &kiosk_enabled)) { - *error = ASCIIToUTF16(manifest_errors::kInvalidKioskEnabled); - return false; - } - - // All other use cases should be already filtered out by manifest feature - // checks. - DCHECK(extension->is_platform_app()); - - extension->SetManifestData(keys::kKioskEnabled, - new KioskEnabledInfo(kiosk_enabled)); - return true; -} - -const std::vector<std::string> KioskEnabledHandler::Keys() const { - return SingleKey(keys::kKioskEnabled); -} - -} // namespace extensions diff --git a/chrome/common/extensions/manifest_handlers/kiosk_enabled_info.h b/chrome/common/extensions/manifest_handlers/kiosk_enabled_info.h deleted file mode 100644 index 3c61b08..0000000 --- a/chrome/common/extensions/manifest_handlers/kiosk_enabled_info.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2013 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. - -#ifndef CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_KIOSK_ENABLED_INFO_H_ -#define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_KIOSK_ENABLED_INFO_H_ - -#include <string> -#include <vector> - -#include "chrome/common/extensions/extension.h" -#include "chrome/common/extensions/manifest_handler.h" -#include "extensions/common/manifest.h" - -namespace extensions { - -struct KioskEnabledInfo : public Extension::ManifestData { - explicit KioskEnabledInfo(bool is_kiosk_enabled); - virtual ~KioskEnabledInfo(); - - bool kiosk_enabled; - - // Whether the extension or app should be enabled in app kiosk mode. - static bool IsKioskEnabled(const Extension* extension); -}; - -// Parses the "kiosk_enabled" manifest key. -class KioskEnabledHandler : public ManifestHandler { - public: - KioskEnabledHandler(); - virtual ~KioskEnabledHandler(); - - virtual bool Parse(Extension* extension, string16* error) OVERRIDE; - private: - virtual const std::vector<std::string> Keys() const OVERRIDE; - - DISALLOW_COPY_AND_ASSIGN(KioskEnabledHandler); -}; - -} // namespace extensions - -#endif // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_KIOSK_ENABLED_INFO_H_ diff --git a/chrome/common/extensions/manifest_handlers/kiosk_mode_info.cc b/chrome/common/extensions/manifest_handlers/kiosk_mode_info.cc new file mode 100644 index 0000000..e610490 --- /dev/null +++ b/chrome/common/extensions/manifest_handlers/kiosk_mode_info.cc @@ -0,0 +1,89 @@ +// Copyright 2013 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/common/extensions/manifest_handlers/kiosk_mode_info.h" + +#include "base/memory/scoped_ptr.h" +#include "base/strings/string16.h" +#include "base/strings/string_util.h" +#include "base/strings/utf_string_conversions.h" +#include "base/values.h" +#include "extensions/common/manifest_constants.h" + +namespace extensions { + +namespace keys = manifest_keys; + +KioskModeInfo::KioskModeInfo(KioskStatus kiosk_status) + : kiosk_status(kiosk_status) { +} + +KioskModeInfo::~KioskModeInfo() { +} + +// static +bool KioskModeInfo::IsKioskEnabled(const Extension* extension) { + KioskModeInfo* info = static_cast<KioskModeInfo*>( + extension->GetManifestData(keys::kKioskMode)); + return info ? info->kiosk_status != NONE : false; +} + +// static +bool KioskModeInfo::IsKioskOnly(const Extension* extension) { + KioskModeInfo* info = static_cast<KioskModeInfo*>( + extension->GetManifestData(keys::kKioskMode)); + return info ? info->kiosk_status == ONLY : false; +} + +KioskModeHandler::KioskModeHandler() { + supported_keys_.push_back(keys::kKioskEnabled); + supported_keys_.push_back(keys::kKioskOnly); +} + +KioskModeHandler::~KioskModeHandler() { +} + +bool KioskModeHandler::Parse(Extension* extension, string16* error) { + const Manifest* manifest = extension->manifest(); + DCHECK(manifest->HasKey(keys::kKioskEnabled) || + manifest->HasKey(keys::kKioskOnly)); + + bool kiosk_enabled = false; + if (manifest->HasKey(keys::kKioskEnabled) && + !manifest->GetBoolean(keys::kKioskEnabled, &kiosk_enabled)) { + *error = ASCIIToUTF16(manifest_errors::kInvalidKioskEnabled); + return false; + } + + bool kiosk_only = false; + if (manifest->HasKey(keys::kKioskOnly) && + !manifest->GetBoolean(keys::kKioskOnly, &kiosk_only)) { + *error = ASCIIToUTF16(manifest_errors::kInvalidKioskOnly); + return false; + } + + if (kiosk_only && !kiosk_enabled) { + *error = ASCIIToUTF16(manifest_errors::kInvalidKioskOnlyButNotEnabled); + return false; + } + + // All other use cases should be already filtered out by manifest feature + // checks. + DCHECK(extension->is_platform_app()); + + KioskModeInfo::KioskStatus kiosk_status = KioskModeInfo::NONE; + if (kiosk_enabled) + kiosk_status = kiosk_only ? KioskModeInfo::ONLY : KioskModeInfo::ENABLED; + + extension->SetManifestData(keys::kKioskMode, + new KioskModeInfo(kiosk_status)); + + return true; +} + +const std::vector<std::string> KioskModeHandler::Keys() const { + return supported_keys_; +} + +} // namespace extensions diff --git a/chrome/common/extensions/manifest_handlers/kiosk_mode_info.h b/chrome/common/extensions/manifest_handlers/kiosk_mode_info.h new file mode 100644 index 0000000..05a553a --- /dev/null +++ b/chrome/common/extensions/manifest_handlers/kiosk_mode_info.h @@ -0,0 +1,55 @@ +// Copyright 2013 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. + +#ifndef CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_KIOSK_MODE_INFO_H_ +#define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_KIOSK_MODE_INFO_H_ + +#include <string> +#include <vector> + +#include "chrome/common/extensions/extension.h" +#include "chrome/common/extensions/manifest_handler.h" +#include "extensions/common/manifest.h" + +namespace extensions { + +struct KioskModeInfo : public Extension::ManifestData { + public: + enum KioskStatus { + NONE, + ENABLED, + ONLY + }; + + explicit KioskModeInfo(KioskStatus kiosk_status); + virtual ~KioskModeInfo(); + + KioskStatus kiosk_status; + + // Whether the extension or app is enabled for app kiosk mode. + static bool IsKioskEnabled(const Extension* extension); + + // Whether the extension or app should only be available in kiosk mode. + static bool IsKioskOnly(const Extension* extension); +}; + +// Parses the "kiosk_enabled" and "kiosk_only" manifest keys. +class KioskModeHandler : public ManifestHandler { + public: + KioskModeHandler(); + virtual ~KioskModeHandler(); + + virtual bool Parse(Extension* extension, string16* error) OVERRIDE; + + private: + virtual const std::vector<std::string> Keys() const OVERRIDE; + + std::vector<std::string> supported_keys_; + + DISALLOW_COPY_AND_ASSIGN(KioskModeHandler); +}; + +} // namespace extensions + +#endif // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_KIOSK_MODE_INFO_H_ |