diff options
author | estade <estade@chromium.org> | 2016-01-25 13:07:29 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-25 21:09:04 +0000 |
commit | 63a6923752c66e597b8a10eddeada4f2ef1e82c9 (patch) | |
tree | 95395fba20a0c5145e7f8ae24ca3db305cb4ada5 /extensions/common/manifest_handlers | |
parent | 70a919c39f5d644c7676f9c76686166826dccc8d (diff) | |
download | chromium_src-63a6923752c66e597b8a10eddeada4f2ef1e82c9.zip chromium_src-63a6923752c66e597b8a10eddeada4f2ef1e82c9.tar.gz chromium_src-63a6923752c66e597b8a10eddeada4f2ef1e82c9.tar.bz2 |
Extensions - Check for too big or too small manifest icons.
both product and browser action icons are affected by this check
BUG=none
Review URL: https://codereview.chromium.org/1618073002
Cr-Commit-Position: refs/heads/master@{#371311}
Diffstat (limited to 'extensions/common/manifest_handlers')
-rw-r--r-- | extensions/common/manifest_handlers/icons_handler_unittest.cc | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/extensions/common/manifest_handlers/icons_handler_unittest.cc b/extensions/common/manifest_handlers/icons_handler_unittest.cc new file mode 100644 index 0000000..fa644a9 --- /dev/null +++ b/extensions/common/manifest_handlers/icons_handler_unittest.cc @@ -0,0 +1,69 @@ +// Copyright 2016 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 "base/test/values_test_util.h" +#include "extensions/common/manifest_handlers/icons_handler.h" +#include "extensions/common/manifest_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace extensions { + +class ProductIconManifestTest : public ManifestTest { + public: + ProductIconManifestTest() {} + + protected: + scoped_ptr<base::DictionaryValue> CreateManifest( + const std::string& extra_icons) { + scoped_ptr<base::DictionaryValue> manifest = base::DictionaryValue::From( + base::test::ParseJson("{ \n" + " \"name\": \"test\", \n" + " \"version\": \"0.1\", \n" + " \"manifest_version\": 2, \n" + " \"icons\": { \n" + + extra_icons + " \"16\": \"icon1.png\", \n" + " \"32\": \"icon2.png\" \n" + " } \n" + "} \n")); + EXPECT_TRUE(manifest); + return manifest; + } + + private: + DISALLOW_COPY_AND_ASSIGN(ProductIconManifestTest); +}; + +TEST_F(ProductIconManifestTest, Sizes) { + // Too big. + { + scoped_ptr<base::DictionaryValue> ext_manifest = + CreateManifest("\"100000\": \"icon3.png\", \n"); + ManifestData manifest(std::move(ext_manifest), "test"); + LoadAndExpectError(manifest, "Invalid key in icons: \"100000\"."); + } + // Too small. + { + scoped_ptr<base::DictionaryValue> ext_manifest = + CreateManifest("\"0\": \"icon3.png\", \n"); + ManifestData manifest(std::move(ext_manifest), "test"); + LoadAndExpectError(manifest, "Invalid key in icons: \"0\"."); + } + // NaN. + { + scoped_ptr<base::DictionaryValue> ext_manifest = + CreateManifest("\"sixteen\": \"icon3.png\", \n"); + ManifestData manifest(std::move(ext_manifest), "test"); + LoadAndExpectError(manifest, "Invalid key in icons: \"sixteen\"."); + } + // Just right. + { + scoped_ptr<base::DictionaryValue> ext_manifest = + CreateManifest("\"512\": \"icon3.png\", \n"); + ManifestData manifest(std::move(ext_manifest), "test"); + scoped_refptr<extensions::Extension> extension = + LoadAndExpectSuccess(manifest); + } +} + +} // namespace extensions |