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

Side by Side Diff: chrome/browser/extensions/api/file_handlers/mime_util.cc

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/file_handlers/mime_util.h" 5 #include "chrome/browser/extensions/api/file_handlers/mime_util.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 net::FilePathToFileURL(local_path), 45 net::FilePathToFileURL(local_path),
46 std::string(), // type_hint (passes no hint) 46 std::string(), // type_hint (passes no hint)
47 result); 47 result);
48 } 48 }
49 } 49 }
50 50
51 #if defined(OS_CHROMEOS) 51 #if defined(OS_CHROMEOS)
52 // Converts a result passed as a scoped pointer to a dereferenced value passed 52 // Converts a result passed as a scoped pointer to a dereferenced value passed
53 // to |callback|. 53 // to |callback|.
54 void OnGetMimeTypeFromFileForNonNativeLocalPathCompleted( 54 void OnGetMimeTypeFromFileForNonNativeLocalPathCompleted(
55 scoped_ptr<std::string> mime_type, 55 std::unique_ptr<std::string> mime_type,
56 const base::Callback<void(const std::string&)>& callback) { 56 const base::Callback<void(const std::string&)>& callback) {
57 callback.Run(*mime_type); 57 callback.Run(*mime_type);
58 } 58 }
59 59
60 // Called when fetching MIME type for a non-native local path is completed. 60 // Called when fetching MIME type for a non-native local path is completed.
61 // If |success| is false, then tries to guess the MIME type by looking at the 61 // If |success| is false, then tries to guess the MIME type by looking at the
62 // file name. 62 // file name.
63 void OnGetMimeTypeFromMetadataForNonNativeLocalPathCompleted( 63 void OnGetMimeTypeFromMetadataForNonNativeLocalPathCompleted(
64 const base::FilePath& local_path, 64 const base::FilePath& local_path,
65 const base::Callback<void(const std::string&)>& callback, 65 const base::Callback<void(const std::string&)>& callback,
66 bool success, 66 bool success,
67 const std::string& mime_type) { 67 const std::string& mime_type) {
68 if (success) { 68 if (success) {
69 callback.Run(mime_type); 69 callback.Run(mime_type);
70 return; 70 return;
71 } 71 }
72 72
73 // MIME type not available with metadata, hence try to guess it from the 73 // MIME type not available with metadata, hence try to guess it from the
74 // file's extension. 74 // file's extension.
75 scoped_ptr<std::string> mime_type_from_extension(new std::string); 75 std::unique_ptr<std::string> mime_type_from_extension(new std::string);
76 std::string* const mime_type_from_extension_ptr = 76 std::string* const mime_type_from_extension_ptr =
77 mime_type_from_extension.get(); 77 mime_type_from_extension.get();
78 BrowserThread::PostBlockingPoolTaskAndReply( 78 BrowserThread::PostBlockingPoolTaskAndReply(
79 FROM_HERE, 79 FROM_HERE,
80 base::Bind(base::IgnoreResult(&net::GetMimeTypeFromFile), 80 base::Bind(base::IgnoreResult(&net::GetMimeTypeFromFile),
81 local_path, 81 local_path,
82 mime_type_from_extension_ptr), 82 mime_type_from_extension_ptr),
83 base::Bind(&OnGetMimeTypeFromFileForNonNativeLocalPathCompleted, 83 base::Bind(&OnGetMimeTypeFromFileForNonNativeLocalPathCompleted,
84 base::Passed(&mime_type_from_extension), 84 base::Passed(&mime_type_from_extension),
85 callback)); 85 callback));
86 } 86 }
87 #endif 87 #endif
88 88
89 // Called when sniffing for MIME type in the native local file is completed. 89 // Called when sniffing for MIME type in the native local file is completed.
90 void OnSniffMimeTypeForNativeLocalPathCompleted( 90 void OnSniffMimeTypeForNativeLocalPathCompleted(
91 scoped_ptr<std::string> mime_type, 91 std::unique_ptr<std::string> mime_type,
92 const base::Callback<void(const std::string&)>& callback) { 92 const base::Callback<void(const std::string&)>& callback) {
93 // Do not return application/zip as sniffed result. If the file has .zip 93 // Do not return application/zip as sniffed result. If the file has .zip
94 // extension, it should be already returned as application/zip. If the file 94 // extension, it should be already returned as application/zip. If the file
95 // does not have .zip extension and couldn't find mime type from the 95 // does not have .zip extension and couldn't find mime type from the
96 // extension, it might be unknown internally zipped file. 96 // extension, it might be unknown internally zipped file.
97 if (*mime_type == "application/zip") { 97 if (*mime_type == "application/zip") {
98 callback.Run(kMimeTypeApplicationOctetStream); 98 callback.Run(kMimeTypeApplicationOctetStream);
99 return; 99 return;
100 } 100 }
101 101
102 callback.Run(*mime_type); 102 callback.Run(*mime_type);
103 } 103 }
104 104
105 } // namespace 105 } // namespace
106 106
107 // Handles response of net::GetMimeTypeFromFile for native file systems. If 107 // Handles response of net::GetMimeTypeFromFile for native file systems. If
108 // MIME type is available, then forwards it to |callback|. Otherwise, fallbacks 108 // MIME type is available, then forwards it to |callback|. Otherwise, fallbacks
109 // to sniffing. 109 // to sniffing.
110 void OnGetMimeTypeFromFileForNativeLocalPathCompleted( 110 void OnGetMimeTypeFromFileForNativeLocalPathCompleted(
111 const base::FilePath& local_path, 111 const base::FilePath& local_path,
112 scoped_ptr<std::string> mime_type, 112 std::unique_ptr<std::string> mime_type,
113 const base::Callback<void(const std::string&)>& callback) { 113 const base::Callback<void(const std::string&)>& callback) {
114 if (!mime_type->empty()) { 114 if (!mime_type->empty()) {
115 callback.Run(*mime_type); 115 callback.Run(*mime_type);
116 return; 116 return;
117 } 117 }
118 118
119 scoped_ptr<std::string> sniffed_mime_type( 119 std::unique_ptr<std::string> sniffed_mime_type(
120 new std::string(kMimeTypeApplicationOctetStream)); 120 new std::string(kMimeTypeApplicationOctetStream));
121 std::string* const sniffed_mime_type_ptr = sniffed_mime_type.get(); 121 std::string* const sniffed_mime_type_ptr = sniffed_mime_type.get();
122 BrowserThread::PostBlockingPoolTaskAndReply( 122 BrowserThread::PostBlockingPoolTaskAndReply(
123 FROM_HERE, 123 FROM_HERE,
124 base::Bind(&SniffMimeType, local_path, sniffed_mime_type_ptr), 124 base::Bind(&SniffMimeType, local_path, sniffed_mime_type_ptr),
125 base::Bind(&OnSniffMimeTypeForNativeLocalPathCompleted, 125 base::Bind(&OnSniffMimeTypeForNativeLocalPathCompleted,
126 base::Passed(&sniffed_mime_type), 126 base::Passed(&sniffed_mime_type),
127 callback)); 127 callback));
128 } 128 }
129 129
(...skipping 12 matching lines...) Expand all
142 local_path, 142 local_path,
143 base::Bind(&OnGetMimeTypeFromMetadataForNonNativeLocalPathCompleted, 143 base::Bind(&OnGetMimeTypeFromMetadataForNonNativeLocalPathCompleted,
144 local_path, 144 local_path,
145 callback)); 145 callback));
146 return; 146 return;
147 } 147 }
148 #endif 148 #endif
149 149
150 // For native local files, try to guess the mime from the extension. If 150 // For native local files, try to guess the mime from the extension. If
151 // not available, then try to sniff if. 151 // not available, then try to sniff if.
152 scoped_ptr<std::string> mime_type_from_extension(new std::string); 152 std::unique_ptr<std::string> mime_type_from_extension(new std::string);
153 std::string* const mime_type_from_extension_ptr = 153 std::string* const mime_type_from_extension_ptr =
154 mime_type_from_extension.get(); 154 mime_type_from_extension.get();
155 BrowserThread::PostBlockingPoolTaskAndReply( 155 BrowserThread::PostBlockingPoolTaskAndReply(
156 FROM_HERE, 156 FROM_HERE,
157 base::Bind(base::IgnoreResult(&net::GetMimeTypeFromFile), 157 base::Bind(base::IgnoreResult(&net::GetMimeTypeFromFile),
158 local_path, 158 local_path,
159 mime_type_from_extension_ptr), 159 mime_type_from_extension_ptr),
160 base::Bind(&OnGetMimeTypeFromFileForNativeLocalPathCompleted, 160 base::Bind(&OnGetMimeTypeFromFileForNativeLocalPathCompleted,
161 local_path, 161 local_path,
162 base::Passed(&mime_type_from_extension), 162 base::Passed(&mime_type_from_extension),
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 FROM_HERE, base::Bind(callback_, base::Passed(&result_))); 216 FROM_HERE, base::Bind(callback_, base::Passed(&result_)));
217 // Release the callback to avoid a circullar reference in case an instance 217 // Release the callback to avoid a circullar reference in case an instance
218 // of this class is a member of a ref counted class, which instance is bound 218 // of this class is a member of a ref counted class, which instance is bound
219 // to this callback. 219 // to this callback.
220 callback_ = CompletionCallback(); 220 callback_ = CompletionCallback();
221 } 221 }
222 } 222 }
223 223
224 } // namespace app_file_handler_util 224 } // namespace app_file_handler_util
225 } // namespace extensions 225 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698