1// Copyright (c) 2012 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 "base/strings/string_number_conversions.h"
6#include "chrome/common/extensions/extension_constants.h"
7#include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
8#include "chrome/common/extensions/manifest_url_handler.h"
9#include "chrome/common/extensions/mime_types_handler.h"
10#include "extensions/common/error_utils.h"
11#include "extensions/common/extension_builder.h"
12#include "extensions/common/manifest_constants.h"
13#include "extensions/common/value_builder.h"
14#include "testing/gtest/include/gtest/gtest.h"
15
16namespace errors = extensions::manifest_errors;
17
18using extensions::DictionaryBuilder;
19using extensions::Extension;
20using extensions::ExtensionBuilder;
21using extensions::ListBuilder;
22
23namespace {
24
25class StreamsPrivateManifestTest : public ExtensionManifestTest {
26};
27
28TEST_F(StreamsPrivateManifestTest, ValidMimeTypesHandlerMIMETypes) {
29  scoped_refptr<const Extension> extension =
30      ExtensionBuilder()
31      .SetID(extension_misc::kQuickOfficeExtensionId)
32      .SetManifest(DictionaryBuilder()
33                   .Set("name", "MIME type handler test")
34                   .Set("version", "1.0.0")
35                   .Set("manifest_version", 2)
36                   .Set("mime_types", ListBuilder()
37                       .Append("plain/text")))
38      .Build();
39
40  ASSERT_TRUE(extension.get());
41  MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension.get());
42  ASSERT_TRUE(handler != NULL);
43
44  EXPECT_FALSE(handler->CanHandleMIMEType("plain/html"));
45  EXPECT_TRUE(handler->CanHandleMIMEType("plain/text"));
46}
47
48TEST_F(StreamsPrivateManifestTest,
49       MimeTypesHandlerMIMETypesNotWhitelisted) {
50  scoped_refptr<const Extension> extension =
51      ExtensionBuilder()
52      .SetManifest(DictionaryBuilder()
53                   .Set("name", "MIME types test")
54                   .Set("version", "1.0.0")
55                   .Set("manifest_version", 2)
56                   .Set("mime_types", ListBuilder()
57                        .Append("plain/text")))
58      .Build();
59
60  ASSERT_TRUE(extension.get());
61
62  MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension.get());
63  ASSERT_TRUE(handler == NULL);
64}
65
66}  // namespace
67