| Index: extensions/common/manifest_handlers/incognito_info.cc
|
| diff --git a/extensions/common/manifest_handlers/incognito_info.cc b/extensions/common/manifest_handlers/incognito_info.cc
|
| index 02c3b28a52df4bea8f57c5d025f2af0430785e45..b7dc8b28138c3aa6b91fd47bb213d209a2575a6a 100644
|
| --- a/extensions/common/manifest_handlers/incognito_info.cc
|
| +++ b/extensions/common/manifest_handlers/incognito_info.cc
|
| @@ -14,9 +14,7 @@ namespace extensions {
|
|
|
| namespace keys = manifest_keys;
|
|
|
| -IncognitoInfo::IncognitoInfo(bool incognito_split_mode)
|
| - : split_mode(incognito_split_mode) {
|
| -}
|
| +IncognitoInfo::IncognitoInfo(Mode mode) : mode(mode) {}
|
|
|
| IncognitoInfo::~IncognitoInfo() {
|
| }
|
| @@ -25,7 +23,14 @@ IncognitoInfo::~IncognitoInfo() {
|
| bool IncognitoInfo::IsSplitMode(const Extension* extension) {
|
| IncognitoInfo* info = static_cast<IncognitoInfo*>(
|
| extension->GetManifestData(keys::kIncognito));
|
| - return info ? info->split_mode : false;
|
| + return info ? info->mode == Mode::SPLIT : false;
|
| +}
|
| +
|
| +// static
|
| +bool IncognitoInfo::IsIncognitoAllowed(const Extension* extension) {
|
| + IncognitoInfo* info =
|
| + static_cast<IncognitoInfo*>(extension->GetManifestData(keys::kIncognito));
|
| + return info ? info->mode != Mode::NOT_ALLOWED : true;
|
| }
|
|
|
| IncognitoHandler::IncognitoHandler() {
|
| @@ -35,33 +40,35 @@ IncognitoHandler::~IncognitoHandler() {
|
| }
|
|
|
| bool IncognitoHandler::Parse(Extension* extension, base::string16* error) {
|
| + // Extensions and Chrome apps default to spanning mode.
|
| + // Hosted and legacy packaged apps default to split mode.
|
| + IncognitoInfo::Mode mode =
|
| + extension->is_hosted_app() || extension->is_legacy_packaged_app()
|
| + ? IncognitoInfo::Mode::SPLIT
|
| + : IncognitoInfo::Mode::SPANNING;
|
| if (!extension->manifest()->HasKey(keys::kIncognito)) {
|
| - // Extensions and Chrome apps default to spanning mode.
|
| - // Hosted and legacy packaged apps default to split mode.
|
| - extension->SetManifestData(
|
| - keys::kIncognito,
|
| - new IncognitoInfo(extension->is_hosted_app() ||
|
| - extension->is_legacy_packaged_app()));
|
| + extension->SetManifestData(keys::kIncognito, new IncognitoInfo(mode));
|
| return true;
|
| }
|
|
|
| - bool split_mode = false;
|
| std::string incognito_string;
|
| if (!extension->manifest()->GetString(keys::kIncognito, &incognito_string)) {
|
| *error = base::ASCIIToUTF16(manifest_errors::kInvalidIncognitoBehavior);
|
| return false;
|
| }
|
|
|
| - if (incognito_string == manifest_values::kIncognitoSplit)
|
| - split_mode = true;
|
| - else if (incognito_string != manifest_values::kIncognitoSpanning) {
|
| - // If incognito_string == kIncognitoSpanning, it is valid and
|
| - // split_mode remains false.
|
| + if (incognito_string == manifest_values::kIncognitoSplit) {
|
| + mode = IncognitoInfo::Mode::SPLIT;
|
| + } else if (incognito_string == manifest_values::kIncognitoSpanning) {
|
| + mode = IncognitoInfo::Mode::SPANNING;
|
| + } else if (incognito_string == manifest_values::kIncognitoNotAllowed) {
|
| + mode = IncognitoInfo::Mode::NOT_ALLOWED;
|
| + } else {
|
| *error = base::ASCIIToUTF16(manifest_errors::kInvalidIncognitoBehavior);
|
| return false;
|
| }
|
|
|
| - extension->SetManifestData(keys::kIncognito, new IncognitoInfo(split_mode));
|
| + extension->SetManifestData(keys::kIncognito, new IncognitoInfo(mode));
|
| return true;
|
| }
|
|
|
|
|