shared_module_apitest.cc revision 010d83a9304c5a91596085d917d248abff47903a
1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/extension_apitest.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using extensions::Extension; 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// NB: We use LoadExtension instead of InstallExtension for shared modules so 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// the public-keys in their manifests are used to generate the extension ID, so 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// it can be imported correctly. We use InstallExtension otherwise so the loads 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// happen through the CRX installer which validates imports. 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(ExtensionApiTest, SharedModule) { 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // import_pass depends on this shared module. 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(LoadExtension( 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_data_dir_.AppendASCII("shared_module").AppendASCII("shared"))); 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(RunExtensionTest("shared_module/import_pass")); 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(InstallExtension( 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_data_dir_.AppendASCII("shared_module") 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) .AppendASCII("import_wrong_version"), 0)); 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(InstallExtension( 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_data_dir_.AppendASCII("shared_module") 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) .AppendASCII("import_non_existent"), 0)); 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(ExtensionApiTest, SharedModuleWhitelist) { 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(LoadExtension( 31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) test_data_dir_.AppendASCII("shared_module") 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) .AppendASCII("shared_whitelist"))); 33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(InstallExtension( 35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) test_data_dir_.AppendASCII("shared_module") 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) .AppendASCII("import_not_in_whitelist"), 0)); 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 38