| Index: chrome/browser/extensions/extension_management_internal.cc
|
| diff --git a/chrome/browser/extensions/extension_management_internal.cc b/chrome/browser/extensions/extension_management_internal.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..73bd132fbf831a7ee68bcbe04a9957153a721472
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/extension_management_internal.cc
|
| @@ -0,0 +1,94 @@
|
| +// 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/extensions/extension_management_internal.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "base/values.h"
|
| +#include "chrome/browser/extensions/extension_management_constants.h"
|
| +#include "extensions/common/url_pattern_set.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace extensions {
|
| +
|
| +namespace internal {
|
| +
|
| +namespace {
|
| +const char kMalformedPreferenceWarning[] =
|
| + "Malformed extension management preference.";
|
| +} // namespace
|
| +
|
| +IndividualSettings::IndividualSettings() {
|
| + Reset();
|
| +}
|
| +
|
| +IndividualSettings::~IndividualSettings() {
|
| +}
|
| +
|
| +bool IndividualSettings::Parse(const base::DictionaryValue* dict,
|
| + ParsingScope scope) {
|
| + std::string installation_mode_str;
|
| + if (dict->GetStringWithoutPathExpansion(schema_constants::kInstallationMode,
|
| + &installation_mode_str)) {
|
| + if (installation_mode_str == schema_constants::kAllowed) {
|
| + installation_mode = ExtensionManagement::INSTALLATION_ALLOWED;
|
| + } else if (installation_mode_str == schema_constants::kBlocked) {
|
| + installation_mode = ExtensionManagement::INSTALLATION_BLOCKED;
|
| + } else if (installation_mode_str == schema_constants::kForceInstalled) {
|
| + installation_mode = ExtensionManagement::INSTALLATION_FORCED;
|
| + } else if (installation_mode_str == schema_constants::kNormalInstalled) {
|
| + installation_mode = ExtensionManagement::INSTALLATION_RECOMMENDED;
|
| + } else {
|
| + // Invalid value for 'installation_mode'.
|
| + LOG(WARNING) << kMalformedPreferenceWarning;
|
| + return false;
|
| + }
|
| +
|
| + // Only proceed to fetch update url if force or recommended install mode
|
| + // is set.
|
| + if (installation_mode == ExtensionManagement::INSTALLATION_FORCED ||
|
| + installation_mode == ExtensionManagement::INSTALLATION_RECOMMENDED) {
|
| + if (scope != SCOPE_INDIVIDUAL) {
|
| + // Only individual extensions are allowed to be automatically installed.
|
| + LOG(WARNING) << kMalformedPreferenceWarning;
|
| + return false;
|
| + }
|
| + std::string update_url_str;
|
| + if (dict->GetStringWithoutPathExpansion(schema_constants::kUpdateUrl,
|
| + &update_url_str) &&
|
| + GURL(update_url_str).is_valid()) {
|
| + update_url = update_url_str;
|
| + } else {
|
| + // No valid update URL for extension.
|
| + LOG(WARNING) << kMalformedPreferenceWarning;
|
| + return false;
|
| + }
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +void IndividualSettings::Reset() {
|
| + installation_mode = ExtensionManagement::INSTALLATION_ALLOWED;
|
| + update_url.clear();
|
| +}
|
| +
|
| +GlobalSettings::GlobalSettings() {
|
| + Reset();
|
| +}
|
| +
|
| +GlobalSettings::~GlobalSettings() {
|
| +}
|
| +
|
| +void GlobalSettings::Reset() {
|
| + has_restricted_install_sources = false;
|
| + install_sources.ClearPatterns();
|
| + has_restricted_allowed_types = false;
|
| + allowed_types.clear();
|
| +}
|
| +
|
| +} // namespace internal
|
| +
|
| +} // namespace extensions
|
|
|