1 // Copyright 2014 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 "extensions/common/manifest_constants.h" 6 #include "extensions/common/manifest_handlers/file_handler_info.h" 7 #include "extensions/common/manifest_test.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 10 namespace extensions { 11 12 namespace errors = manifest_errors; 13 14 typedef ManifestTest FileHandlersManifestTest; 15 16 TEST_F(FileHandlersManifestTest, InvalidFileHandlers) { 17 Testcase testcases[] = { 18 Testcase("file_handlers_invalid_handlers.json", 19 errors::kInvalidFileHandlers), 20 Testcase("file_handlers_invalid_type.json", 21 errors::kInvalidFileHandlerType), 22 Testcase("file_handlers_invalid_extension.json", 23 errors::kInvalidFileHandlerExtension), 24 Testcase("file_handlers_invalid_no_type_or_extension.json", 25 errors::kInvalidFileHandlerNoTypeOrExtension), 26 Testcase("file_handlers_invalid_type_element.json", 27 errors::kInvalidFileHandlerTypeElement), 28 Testcase("file_handlers_invalid_extension_element.json", 29 errors::kInvalidFileHandlerExtensionElement), 30 Testcase("file_handlers_invalid_too_many.json", 31 errors::kInvalidFileHandlersTooManyTypesAndExtensions), 32 }; 33 RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR); 34 } 35 36 TEST_F(FileHandlersManifestTest, ValidFileHandlers) { 37 scoped_refptr<const Extension> extension = 38 LoadAndExpectSuccess("file_handlers_valid.json"); 39 40 ASSERT_TRUE(extension.get()); 41 const FileHandlersInfo* handlers = 42 FileHandlers::GetFileHandlers(extension.get()); 43 ASSERT_TRUE(handlers != NULL); 44 ASSERT_EQ(2U, handlers->size()); 45 46 FileHandlerInfo handler = handlers->at(0); 47 EXPECT_EQ("image", handler.id); 48 EXPECT_EQ(1U, handler.types.size()); 49 EXPECT_EQ(1U, handler.types.count("image/*")); 50 EXPECT_EQ(2U, handler.extensions.size()); 51 EXPECT_EQ(1U, handler.extensions.count(".png")); 52 EXPECT_EQ(1U, handler.extensions.count(".gif")); 53 54 handler = handlers->at(1); 55 EXPECT_EQ("text", handler.id); 56 EXPECT_EQ(1U, handler.types.size()); 57 EXPECT_EQ(1U, handler.types.count("text/*")); 58 EXPECT_EQ(0U, handler.extensions.size()); 59 } 60 61 TEST_F(FileHandlersManifestTest, NotPlatformApp) { 62 // This should load successfully but have the file handlers ignored. 63 scoped_refptr<const Extension> extension = 64 LoadAndExpectSuccess("file_handlers_invalid_not_app.json"); 65 66 ASSERT_TRUE(extension.get()); 67 const FileHandlersInfo* handlers = 68 FileHandlers::GetFileHandlers(extension.get()); 69 ASSERT_TRUE(handlers == NULL); 70 } 71 72 } // namespace extensions 73