Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Side by Side Diff: extensions/browser/api/file_handlers/mime_util_unittest.cc

Issue 2685883008: Revert of Move file_handlers API from //chrome to //extensions (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « extensions/browser/api/file_handlers/mime_util.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 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/browser/api/file_handlers/mime_util.h"
6
7 #include <memory>
8 #include <string>
9 #include <vector>
10
11 #include "base/files/file_path.h"
12 #include "base/files/file_util.h"
13 #include "base/run_loop.h"
14 #include "content/public/browser/browser_context.h"
15 #include "content/public/test/test_browser_thread_bundle.h"
16 #include "content/public/test/test_file_system_context.h"
17 #include "content/public/test/test_utils.h"
18 #include "extensions/browser/api/extensions_api_client.h"
19 #include "extensions/browser/extensions_test.h"
20 #include "testing/gtest/include/gtest/gtest.h"
21
22 namespace extensions {
23 namespace app_file_handler_util {
24 namespace {
25
26 const char kOrigin[] = "chrome-extension://cmalghjoncmjoeakimpfhojhpgemgaje";
27 const char kJPEGExtensionFilePath[] = "/fake/path/foo.jpg";
28 const char kJPEGExtensionUpperCaseFilePath[] = "/fake/path/FOO.JPG";
29
30 // Saves the returned mime type to a variable.
31 void OnMimeTypeResult(std::string* output, const std::string& mime_type) {
32 *output = mime_type;
33 }
34
35 // Saves returned mime types to a vector.
36 void OnMimeTypesCollected(
37 std::vector<std::string>* output,
38 std::unique_ptr<std::vector<std::string>> mime_types) {
39 *output = *mime_types;
40 }
41
42 // Creates a native local file system URL for a local path.
43 storage::FileSystemURL CreateNativeLocalFileSystemURL(
44 storage::FileSystemContext* context,
45 const base::FilePath local_path) {
46 return context->CreateCrackedFileSystemURL(
47 GURL(kOrigin), storage::kFileSystemTypeNativeLocal, local_path);
48 }
49
50 } // namespace
51
52 class FileHandlersMimeUtilTest : public ExtensionsTest {
53 protected:
54 FileHandlersMimeUtilTest() {}
55 ~FileHandlersMimeUtilTest() override {}
56
57 void SetUp() override {
58 file_system_context_ = content::CreateFileSystemContextForTesting(
59 NULL, browser_context()->GetPath());
60
61 EXPECT_TRUE(base::CreateTemporaryFile(&html_mime_file_path_));
62 const std::string kSampleContent = "<html><body></body></html>";
63 EXPECT_TRUE(base::WriteFile(html_mime_file_path_, kSampleContent.c_str(),
64 kSampleContent.size()));
65 }
66
67 content::TestBrowserThreadBundle thread_bundle_;
68 ExtensionsAPIClient extensions_api_client_;
69 scoped_refptr<storage::FileSystemContext> file_system_context_;
70 base::FilePath html_mime_file_path_;
71 };
72
73 TEST_F(FileHandlersMimeUtilTest, GetMimeTypeForLocalPath) {
74 {
75 std::string result;
76 GetMimeTypeForLocalPath(browser_context(), base::FilePath::FromUTF8Unsafe(
77 kJPEGExtensionFilePath),
78 base::Bind(&OnMimeTypeResult, &result));
79 content::RunAllBlockingPoolTasksUntilIdle();
80 EXPECT_EQ("image/jpeg", result);
81 }
82
83 {
84 std::string result;
85 GetMimeTypeForLocalPath(
86 browser_context(),
87 base::FilePath::FromUTF8Unsafe(kJPEGExtensionUpperCaseFilePath),
88 base::Bind(&OnMimeTypeResult, &result));
89 content::RunAllBlockingPoolTasksUntilIdle();
90 EXPECT_EQ("image/jpeg", result);
91 }
92
93 {
94 std::string result;
95 GetMimeTypeForLocalPath(browser_context(), html_mime_file_path_,
96 base::Bind(&OnMimeTypeResult, &result));
97 content::RunAllBlockingPoolTasksUntilIdle();
98 EXPECT_EQ("text/html", result);
99 }
100 }
101
102 TEST_F(FileHandlersMimeUtilTest, MimeTypeCollector_ForURLs) {
103 MimeTypeCollector collector(browser_context());
104
105 std::vector<storage::FileSystemURL> urls;
106 urls.push_back(CreateNativeLocalFileSystemURL(
107 file_system_context_.get(),
108 base::FilePath::FromUTF8Unsafe(kJPEGExtensionFilePath)));
109 urls.push_back(CreateNativeLocalFileSystemURL(
110 file_system_context_.get(),
111 base::FilePath::FromUTF8Unsafe(kJPEGExtensionUpperCaseFilePath)));
112 urls.push_back(CreateNativeLocalFileSystemURL(file_system_context_.get(),
113 html_mime_file_path_));
114
115 std::vector<std::string> result;
116 collector.CollectForURLs(urls, base::Bind(&OnMimeTypesCollected, &result));
117 content::RunAllBlockingPoolTasksUntilIdle();
118
119 ASSERT_EQ(3u, result.size());
120 EXPECT_EQ("image/jpeg", result[0]);
121 EXPECT_EQ("image/jpeg", result[1]);
122 EXPECT_EQ("text/html", result[2]);
123 }
124
125 TEST_F(FileHandlersMimeUtilTest, MimeTypeCollector_ForLocalPaths) {
126 MimeTypeCollector collector(browser_context());
127
128 std::vector<base::FilePath> local_paths;
129 local_paths.push_back(base::FilePath::FromUTF8Unsafe(kJPEGExtensionFilePath));
130 local_paths.push_back(
131 base::FilePath::FromUTF8Unsafe(kJPEGExtensionUpperCaseFilePath));
132 local_paths.push_back(html_mime_file_path_);
133
134 std::vector<std::string> result;
135 collector.CollectForLocalPaths(local_paths,
136 base::Bind(&OnMimeTypesCollected, &result));
137 content::RunAllBlockingPoolTasksUntilIdle();
138
139 ASSERT_EQ(3u, result.size());
140 EXPECT_EQ("image/jpeg", result[0]);
141 EXPECT_EQ("image/jpeg", result[1]);
142 EXPECT_EQ("text/html", result[2]);
143 }
144
145 } // namespace app_file_handler_util
146 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/file_handlers/mime_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698