15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "extensions/common/manifest_constants.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace keys = extensions::manifest_keys; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(ChromeManifestTest, StorageAPIManifestVersionAvailability) { 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::DictionaryValue base_manifest; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_manifest.SetString(keys::kName, "test"); 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_manifest.SetString(keys::kVersion, "0.1"); 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ListValue* permissions = new base::ListValue(); 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) permissions->Append(new base::StringValue("storage")); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_manifest.Set(keys::kPermissions, permissions); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string kManifestVersionError = 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "'storage' requires manifest version of at least 2."; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Extension with no manifest version cannot use storage API. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ManifestData manifest(&base_manifest, "test"); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectWarning(manifest, kManifestVersionError); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Extension with manifest version 1 cannot use storage API. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::DictionaryValue manifest_with_version; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manifest_with_version.SetInteger(keys::kManifestVersion, 1); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manifest_with_version.MergeDictionary(&base_manifest); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ManifestData manifest(&manifest_with_version, "test"); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectWarning(manifest, kManifestVersionError); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Extension with manifest version 2 *can* use storage API. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::DictionaryValue manifest_with_version; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manifest_with_version.SetInteger(keys::kManifestVersion, 2); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manifest_with_version.MergeDictionary(&base_manifest); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ManifestData manifest(&manifest_with_version, "test"); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<extensions::Extension> extension = 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectSuccess(manifest); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(extension->install_warnings().empty()); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 53