1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright 2014 The Chromium Authors. All rights reserved. 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Use of this source code is governed by a BSD-style license that can be 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// found in the LICENSE file. 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "extensions/common/manifest_constants.h" 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "extensions/common/manifest_handlers/file_handler_info.h" 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "extensions/common/manifest_test.h" 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "testing/gtest/include/gtest/gtest.h" 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chennamespace extensions { 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chennamespace errors = manifest_errors; 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chentypedef ManifestTest FileHandlersManifestTest; 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenTEST_F(FileHandlersManifestTest, InvalidFileHandlers) { 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase testcases[] = { 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase("file_handlers_invalid_handlers.json", 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen errors::kInvalidFileHandlers), 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase("file_handlers_invalid_type.json", 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen errors::kInvalidFileHandlerType), 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase("file_handlers_invalid_extension.json", 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen errors::kInvalidFileHandlerExtension), 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase("file_handlers_invalid_no_type_or_extension.json", 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen errors::kInvalidFileHandlerNoTypeOrExtension), 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase("file_handlers_invalid_type_element.json", 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen errors::kInvalidFileHandlerTypeElement), 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase("file_handlers_invalid_extension_element.json", 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen errors::kInvalidFileHandlerExtensionElement), 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Testcase("file_handlers_invalid_too_many.json", 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen errors::kInvalidFileHandlersTooManyTypesAndExtensions), 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen }; 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR); 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenTEST_F(FileHandlersManifestTest, ValidFileHandlers) { 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen scoped_refptr<const Extension> extension = 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen LoadAndExpectSuccess("file_handlers_valid.json"); 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen ASSERT_TRUE(extension.get()); 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen const FileHandlersInfo* handlers = 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen FileHandlers::GetFileHandlers(extension.get()); 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen ASSERT_TRUE(handlers != NULL); 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen ASSERT_EQ(2U, handlers->size()); 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen FileHandlerInfo handler = handlers->at(0); 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ("image", handler.id); 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(1U, handler.types.size()); 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(1U, handler.types.count("image/*")); 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(2U, handler.extensions.size()); 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(1U, handler.extensions.count(".png")); 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(1U, handler.extensions.count(".gif")); 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen handler = handlers->at(1); 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ("text", handler.id); 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(1U, handler.types.size()); 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(1U, handler.types.count("text/*")); 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen EXPECT_EQ(0U, handler.extensions.size()); 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenTEST_F(FileHandlersManifestTest, NotPlatformApp) { 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen // This should load successfully but have the file handlers ignored. 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 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