blob: 6f681792dab169b7cd544ed187af061ce4d4bea5 [file] [log] [blame]
// Copyright 2020 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 <memory>
#include <utility>
#include "extensions/common/manifest_test.h"
#include "extensions/common/mojom/manifest.mojom-shared.h"
#include "testing/gtest/include/gtest/gtest.h"
using extensions::mojom::ManifestLocation;
namespace extensions {
using ManifestV3PermissionsTest = ManifestTest;
TEST_F(ManifestV3PermissionsTest, WebRequestBlockingPermissionsTest) {
const std::string kPermissionRequiresV2OrLower =
"'webRequestBlocking' requires manifest version of 2 or lower.";
{
// Manifest V3 extension that is not policy installed. This should trigger a
// warning that manifest V3 is not currently supported and that the
// webRequestBlocking permission requires a lower manifest version.
scoped_refptr<Extension> extension(LoadAndExpectWarning(
"web_request_blocking_v3.json", kPermissionRequiresV2OrLower,
ManifestLocation::kUnpacked));
ASSERT_TRUE(extension);
}
{
// Manifest V3 extension that is policy extension. This should only trigger
// a warning that manifest V3 is not supported currently.
scoped_refptr<Extension> extension(LoadAndExpectSuccess(
"web_request_blocking_v3.json", ManifestLocation::kExternalPolicy));
ASSERT_TRUE(extension);
}
{
// Manifest V2 extension that is not policy installed. This should not
// trigger any warnings.
scoped_refptr<Extension> extension(LoadAndExpectSuccess(
"web_request_blocking_v2.json", ManifestLocation::kUnpacked));
ASSERT_TRUE(extension);
}
}
TEST_F(ManifestV3PermissionsTest, DisallowNaClTest) {
const std::string kPermissionRequiresV2OrLower =
"'nacl_modules' requires manifest version of 2 or lower.";
{
// Unpacked Manifest V3 extension should trigger a warning that
// manifest V3 is not currently supported and that 'nacl_modules' requires a
// lower manifest version.
scoped_refptr<Extension> extension(LoadAndExpectWarning(
"nacl_module_v3.json", kPermissionRequiresV2OrLower,
ManifestLocation::kUnpacked));
ASSERT_TRUE(extension);
}
{
// Unpacked Manifest V2 extension should not trigger any warnings.
scoped_refptr<Extension> extension(LoadAndExpectSuccess(
"nacl_module_v2.json", ManifestLocation::kUnpacked));
ASSERT_TRUE(extension);
}
}
} // namespace extensions