Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / manifest_tests / extension_manifests_storage_unittest.cc
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/chrome_manifest_test.h"
6
7 #include "extensions/common/manifest_constants.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace keys = extensions::manifest_keys;
11
12 TEST_F(ChromeManifestTest, 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     ManifestData 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     ManifestData 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     ManifestData manifest(&manifest_with_version, "test");
48     scoped_refptr<extensions::Extension> extension =
49         LoadAndExpectSuccess(manifest);
50     EXPECT_TRUE(extension->install_warnings().empty());
51   }
52 }