12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/common/extensions/extension_constants.h" 7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/common/extensions/manifest_handlers/mime_types_handler.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/manifest_url_handler.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/error_utils.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension_builder.h" 12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "extensions/common/manifest_constants.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/value_builder.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)namespace errors = extensions::manifest_errors; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::DictionaryBuilder; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::Extension; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::ExtensionBuilder; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::ListBuilder; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass StreamsPrivateManifestTest : public ChromeManifestTest { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(StreamsPrivateManifestTest, ValidMimeTypesHandlerMIMETypes) { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<const Extension> extension = 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExtensionBuilder() 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .SetID(extension_misc::kQuickOfficeExtensionId) 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .SetManifest( 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DictionaryBuilder() 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .Set("name", "MIME type handler test") 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .Set("version", "1.0.0") 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .Set("manifest_version", 2) 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Set("mime_types", ListBuilder().Append("text/plain"))) 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Build(); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(extension.get()); 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension.get()); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(handler != NULL); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(handler->CanHandleMIMEType("text/html")); 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(handler->CanHandleMIMEType("text/plain")); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(StreamsPrivateManifestTest, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MimeTypesHandlerMIMETypesNotWhitelisted) { 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<const Extension> extension = 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExtensionBuilder() 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .SetManifest( 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DictionaryBuilder() 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .Set("name", "MIME types test") 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .Set("version", "1.0.0") 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) .Set("manifest_version", 2) 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Set("mime_types", ListBuilder().Append("text/plain"))) 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Build(); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(extension.get()); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension.get()); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(handler == NULL); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 67