// Copyright 2015 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 "extensions/browser/extension_util.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/incognito_info.h"
#include "extensions/common/manifest_test.h"

namespace extensions {

using IncognitoManifestTest = ManifestTest;

TEST_F(IncognitoManifestTest, IncognitoNotAllowed) {
  scoped_refptr<Extension> extension(
      LoadAndExpectSuccess("incognito_not_allowed.json"));
  EXPECT_FALSE(IncognitoInfo::IsIncognitoAllowed(extension.get()));
  EXPECT_FALSE(IncognitoInfo::IsSplitMode(extension.get()));
  EXPECT_FALSE(util::CanBeIncognitoEnabled(extension.get()));
}

TEST_F(IncognitoManifestTest, IncognitoSpanning) {
  scoped_refptr<Extension> extension(
      LoadAndExpectSuccess("incognito_spanning.json"));
  EXPECT_TRUE(IncognitoInfo::IsIncognitoAllowed(extension.get()));
  EXPECT_FALSE(IncognitoInfo::IsSplitMode(extension.get()));
  EXPECT_TRUE(util::CanBeIncognitoEnabled(extension.get()));
}

TEST_F(IncognitoManifestTest, IncognitoSplit) {
  scoped_refptr<Extension> extension(
      LoadAndExpectSuccess("incognito_split.json"));
  EXPECT_TRUE(IncognitoInfo::IsIncognitoAllowed(extension.get()));
  EXPECT_TRUE(IncognitoInfo::IsSplitMode(extension.get()));
  EXPECT_TRUE(util::CanBeIncognitoEnabled(extension.get()));
}

TEST_F(IncognitoManifestTest, IncognitoUnspecified) {
  scoped_refptr<Extension> extension(LoadAndExpectSuccess("minimal.json"));
  EXPECT_TRUE(IncognitoInfo::IsIncognitoAllowed(extension.get()));
  EXPECT_FALSE(IncognitoInfo::IsSplitMode(extension.get()));
  EXPECT_TRUE(util::CanBeIncognitoEnabled(extension.get()));
}

}  // namespace extensions