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

Side by Side Diff: chrome/browser/chromeos/file_manager/open_util.cc

Issue 352393002: Be explicit about target type in platform_util::OpenItem() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 6 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/chromeos/file_manager/open_util.h" 5 #include "chrome/browser/chromeos/file_manager/open_util.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 } 120 }
121 } 121 }
122 122
123 ExecuteFileTaskForUrl(profile, chosen_task->task_descriptor(), url); 123 ExecuteFileTaskForUrl(profile, chosen_task->task_descriptor(), url);
124 callback.Run(true); 124 callback.Run(true);
125 } 125 }
126 126
127 // Opens the file specified by |url| by finding and executing a file task for 127 // Opens the file specified by |url| by finding and executing a file task for
128 // the file. In case of success, calls |callback| with true. Otherwise the 128 // the file. In case of success, calls |callback| with true. Otherwise the
129 // returned value is false. 129 // returned value is false.
130 void OpenFile(Profile* profile, 130 void OpenFileInternal(Profile* profile,
131 const base::FilePath& path, 131 const base::FilePath& path,
132 const GURL& url, 132 const GURL& url,
133 const base::Callback<void(bool)>& callback) { 133 const base::Callback<void(bool)>& callback) {
134 extensions::app_file_handler_util::GetMimeTypeForLocalPath( 134 extensions::app_file_handler_util::GetMimeTypeForLocalPath(
135 profile, 135 profile,
136 path, 136 path,
137 base::Bind(&OpenFileWithMimeType, profile, path, url, callback)); 137 base::Bind(&OpenFileWithMimeType, profile, path, url, callback));
138 } 138 }
139 139
140 // Called when execution of ContinueOpenItem() is completed. 140 // Called when execution of ContinueOpenItem() is completed.
141 void OnContinueOpenItemCompleted(Profile* profile, 141 void OnContinueOpenFileCompleted(Profile* profile,
142 const base::FilePath& file_path, 142 const base::FilePath& file_path,
143 bool result) { 143 bool result) {
144 if (!result) { 144 if (!result) {
145 int message; 145 int message;
146 if (file_path.Extension() == FILE_PATH_LITERAL(".dmg")) 146 if (file_path.Extension() == FILE_PATH_LITERAL(".dmg"))
147 message = IDS_FILE_BROWSER_ERROR_VIEWING_FILE_FOR_DMG; 147 message = IDS_FILE_BROWSER_ERROR_VIEWING_FILE_FOR_DMG;
148 else if (file_path.Extension() == FILE_PATH_LITERAL(".exe") || 148 else if (file_path.Extension() == FILE_PATH_LITERAL(".exe") ||
149 file_path.Extension() == FILE_PATH_LITERAL(".msi")) 149 file_path.Extension() == FILE_PATH_LITERAL(".msi"))
150 message = IDS_FILE_BROWSER_ERROR_VIEWING_FILE_FOR_EXECUTABLE; 150 message = IDS_FILE_BROWSER_ERROR_VIEWING_FILE_FOR_EXECUTABLE;
151 else 151 else
152 message = IDS_FILE_BROWSER_ERROR_VIEWING_FILE; 152 message = IDS_FILE_BROWSER_ERROR_VIEWING_FILE;
153 ShowWarningMessageBox(profile, file_path, message); 153 ShowWarningMessageBox(profile, file_path, message);
154 } 154 }
155 } 155 }
156 156
157 // Used to implement OpenItem(). 157 void ContinueOpenFile(Profile* profile,
158 void ContinueOpenItem(Profile* profile,
159 const base::FilePath& file_path, 158 const base::FilePath& file_path,
160 const GURL& url, 159 const GURL& url,
161 base::File::Error error) { 160 base::File::Error folder_check_result) {
162 DCHECK_CURRENTLY_ON(BrowserThread::UI); 161 DCHECK_CURRENTLY_ON(BrowserThread::UI);
163 162
164 if (error == base::File::FILE_OK) { 163 if (folder_check_result == base::File::FILE_OK) {
165 // A directory exists at |url|. Open it with the file manager. 164 OnContinueOpenFileCompleted(profile, file_path, false);
166 OpenFileManagerWithInternalActionId(profile, url, "open"); 165 return;
167 } else {
168 // |url| should be a file. Open it.
169 OpenFile(profile,
170 file_path,
171 url,
172 base::Bind(&OnContinueOpenItemCompleted, profile, file_path));
173 } 166 }
167 OpenFileInternal(
168 profile,
169 file_path,
170 url,
171 base::Bind(&OnContinueOpenFileCompleted, profile, file_path));
172 }
173
174 void ContinueOpenFolder(Profile* profile,
175 const GURL& url,
176 base::File::Error folder_check_result) {
177 DCHECK_CURRENTLY_ON(BrowserThread::UI);
178 if (folder_check_result != base::File::FILE_OK)
179 return;
180 OpenFileManagerWithInternalActionId(profile, url, "open");
hashimoto 2014/09/26 06:12:43 Sorry, I should have noticed this before. Does thi
hashimoto 2014/09/26 06:37:20 hirono@ said OpenFileManagerWithInternalActionId()
asanka 2014/09/26 19:35:41 Thanks! Done.
174 } 181 }
175 182
176 // Converts the |given_path| passed from external callers to the form that the 183 // Converts the |given_path| passed from external callers to the form that the
177 // file manager can correctly handle. It first migrates old Drive/Download 184 // file manager can correctly handle. It first migrates old Drive/Download
178 // folder path to the new formats, and then converts path to filesystem URL. 185 // folder path to the new formats, and then converts path to filesystem URL.
179 // 186 //
180 // When conversion fails, it shows a warning dialog UI and returns false. 187 // When conversion fails, it shows a warning dialog UI and returns false.
181 bool ConvertPath(Profile* profile, 188 bool ConvertPath(Profile* profile,
182 const base::FilePath& given_path, 189 const base::FilePath& given_path,
183 base::FilePath* path, 190 base::FilePath* path,
(...skipping 19 matching lines...) Expand all
203 DCHECK_CURRENTLY_ON(BrowserThread::UI); 210 DCHECK_CURRENTLY_ON(BrowserThread::UI);
204 211
205 base::FilePath converted_path; 212 base::FilePath converted_path;
206 GURL url; 213 GURL url;
207 if (!ConvertPath(profile, file_path, &converted_path, &url)) 214 if (!ConvertPath(profile, file_path, &converted_path, &url))
208 return; 215 return;
209 216
210 OpenFileManagerWithInternalActionId(profile, url, "auto-open"); 217 OpenFileManagerWithInternalActionId(profile, url, "auto-open");
211 } 218 }
212 219
213 void OpenItem(Profile* profile, const base::FilePath& file_path) { 220 void OpenFile(Profile* profile, const base::FilePath& file_path) {
214 DCHECK_CURRENTLY_ON(BrowserThread::UI); 221 DCHECK_CURRENTLY_ON(BrowserThread::UI);
215 222
216 base::FilePath converted_path; 223 base::FilePath converted_path;
224 GURL url;
225 if (!ConvertPath(profile, file_path, &converted_path, &url))
226 return;
227
228 CheckIfDirectoryExists(
229 GetFileSystemContextForExtensionId(profile, kFileManagerAppId),
230 url,
231 base::Bind(&ContinueOpenFile, profile, converted_path, url));
232 }
233
234 void OpenFolder(Profile* profile, const base::FilePath& file_path) {
235 DCHECK_CURRENTLY_ON(BrowserThread::UI);
236
237 base::FilePath converted_path;
217 GURL url; 238 GURL url;
218 if (!ConvertPath(profile, file_path, &converted_path, &url)) 239 if (!ConvertPath(profile, file_path, &converted_path, &url))
219 return; 240 return;
220 241
221 CheckIfDirectoryExists( 242 CheckIfDirectoryExists(
222 GetFileSystemContextForExtensionId(profile, kFileManagerAppId), 243 GetFileSystemContextForExtensionId(profile, kFileManagerAppId),
223 url, 244 url,
224 base::Bind(&ContinueOpenItem, profile, converted_path, url)); 245 base::Bind(&ContinueOpenFolder, profile, url));
225 } 246 }
226 247
227 void ShowItemInFolder(Profile* profile, const base::FilePath& file_path) { 248 void ShowItemInFolder(Profile* profile, const base::FilePath& file_path) {
228 DCHECK_CURRENTLY_ON(BrowserThread::UI); 249 DCHECK_CURRENTLY_ON(BrowserThread::UI);
229 250
230 base::FilePath converted_path; 251 base::FilePath converted_path;
231 GURL url; 252 GURL url;
232 if (!ConvertPath(profile, file_path, &converted_path, &url)) 253 if (!ConvertPath(profile, file_path, &converted_path, &url))
233 return; 254 return;
234 255
235 // This action changes the selection so we do not reuse existing tabs. 256 // This action changes the selection so we do not reuse existing tabs.
236 OpenFileManagerWithInternalActionId(profile, url, "select"); 257 OpenFileManagerWithInternalActionId(profile, url, "select");
237 } 258 }
238 259
239 } // namespace util 260 } // namespace util
240 } // namespace file_manager 261 } // namespace file_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698