Home | History | Annotate | Download | only in manifest_tests
      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