1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" 6 7 #include "testing/gtest/include/gtest/gtest.h" 8 #include "chrome/common/extensions/extension_manifest_constants.h" 9 10 namespace keys = extension_manifest_keys; 11 12 TEST_F(ExtensionManifestTest, StorageAPIManifestVersionAvailability) { 13 base::DictionaryValue base_manifest; 14 { 15 base_manifest.SetString(keys::kName, "test"); 16 base_manifest.SetString(keys::kVersion, "0.1"); 17 base::ListValue* permissions = new base::ListValue(); 18 permissions->Append(new base::StringValue("storage")); 19 base_manifest.Set(keys::kPermissions, permissions); 20 } 21 22 std::string kManifestVersionError = 23 "'storage' requires manifest version of at least 2."; 24 25 // Extension with no manifest version cannot use storage API. 26 { 27 Manifest manifest(&base_manifest, "test"); 28 LoadAndExpectWarning(manifest, kManifestVersionError); 29 } 30 31 // Extension with manifest version 1 cannot use storage API. 32 { 33 base::DictionaryValue manifest_with_version; 34 manifest_with_version.SetInteger(keys::kManifestVersion, 1); 35 manifest_with_version.MergeDictionary(&base_manifest); 36 37 Manifest manifest(&manifest_with_version, "test"); 38 LoadAndExpectWarning(manifest, kManifestVersionError); 39 } 40 41 // Extension with manifest version 2 *can* use storage API. 42 { 43 base::DictionaryValue manifest_with_version; 44 manifest_with_version.SetInteger(keys::kManifestVersion, 2); 45 manifest_with_version.MergeDictionary(&base_manifest); 46 47 Manifest manifest(&manifest_with_version, "test"); 48 scoped_refptr<extensions::Extension> extension = 49 LoadAndExpectSuccess(manifest); 50 EXPECT_TRUE(extension->install_warnings().empty()); 51 } 52 } 53