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

Side by Side Diff: win8/metro_driver/file_picker_ash.cc

Issue 12217101: Replace FilePath with base::FilePath in some more top level directories. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
« no previous file with comments | « win8/metro_driver/file_picker.cc ('k') | win8/metro_driver/secondary_tile.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "stdafx.h" 5 #include "stdafx.h"
6 #include "win8/metro_driver/file_picker_ash.h" 6 #include "win8/metro_driver/file_picker_ash.h"
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 hr = ComposeMultiFileResult(files.Get(), &result); 170 hr = ComposeMultiFileResult(files.Get(), &result);
171 171
172 if (SUCCEEDED(hr)) { 172 if (SUCCEEDED(hr)) {
173 success_ = true; 173 success_ = true;
174 // The code below has been copied from the 174 // The code below has been copied from the
175 // SelectFileDialogImpl::RunOpenMultiFileDialog function in 175 // SelectFileDialogImpl::RunOpenMultiFileDialog function in
176 // select_file_dialog_win.cc. 176 // select_file_dialog_win.cc.
177 // TODO(ananta) 177 // TODO(ananta)
178 // Consolidate this into a common place. 178 // Consolidate this into a common place.
179 const wchar_t* selection = result.c_str(); 179 const wchar_t* selection = result.c_str();
180 std::vector<FilePath> files; 180 std::vector<base::FilePath> files;
181 181
182 while (*selection) { // Empty string indicates end of list. 182 while (*selection) { // Empty string indicates end of list.
183 files.push_back(FilePath(selection)); 183 files.push_back(base::FilePath(selection));
184 // Skip over filename and null-terminator. 184 // Skip over filename and null-terminator.
185 selection += files.back().value().length() + 1; 185 selection += files.back().value().length() + 1;
186 } 186 }
187 if (files.empty()) { 187 if (files.empty()) {
188 success_ = false; 188 success_ = false;
189 } else if (files.size() == 1) { 189 } else if (files.size() == 1) {
190 // When there is one file, it contains the path and filename. 190 // When there is one file, it contains the path and filename.
191 filenames_ = files; 191 filenames_ = files;
192 } else if (files.size() > 1) { 192 } else if (files.size() > 1) {
193 // Otherwise, the first string is the path, and the remainder are 193 // Otherwise, the first string is the path, and the remainder are
194 // filenames. 194 // filenames.
195 std::vector<FilePath>::iterator path = files.begin(); 195 std::vector<base::FilePath>::iterator path = files.begin();
196 for (std::vector<FilePath>::iterator file = path + 1; 196 for (std::vector<base::FilePath>::iterator file = path + 1;
197 file != files.end(); ++file) { 197 file != files.end(); ++file) {
198 filenames_.push_back(path->Append(*file)); 198 filenames_.push_back(path->Append(*file));
199 } 199 }
200 } 200 }
201 } 201 }
202 } else { 202 } else {
203 LOG(ERROR) << "NULL StorageFileVectorCollection"; 203 LOG(ERROR) << "NULL StorageFileVectorCollection";
204 } 204 }
205 } else { 205 } else {
206 LOG(ERROR) << "Unexpected async status " << status; 206 LOG(ERROR) << "Unexpected async status " << status;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 // Metro wants suffixes only, not patterns. 250 // Metro wants suffixes only, not patterns.
251 mswrw::HString extension; 251 mswrw::HString extension;
252 std::vector<string16> extensions; 252 std::vector<string16> extensions;
253 for (size_t i = 0; i < extensions_win32_style.size(); ++i) { 253 for (size_t i = 0; i < extensions_win32_style.size(); ++i) {
254 if (extensions_win32_style[i] == L"*.*") { 254 if (extensions_win32_style[i] == L"*.*") {
255 // The wildcard filter is "*" for Metro. The string "*.*" produces 255 // The wildcard filter is "*" for Metro. The string "*.*" produces
256 // an "invalid parameter" error. 256 // an "invalid parameter" error.
257 hr = extension.Set(L"*"); 257 hr = extension.Set(L"*");
258 } else { 258 } else {
259 // Metro wants suffixes only, not patterns. 259 // Metro wants suffixes only, not patterns.
260 string16 ext = FilePath(extensions_win32_style[i]).Extension(); 260 string16 ext = base::FilePath(extensions_win32_style[i]).Extension();
261 if ((ext.size() < 2) || 261 if ((ext.size() < 2) ||
262 (ext.find_first_of(L"*?") != string16::npos)) { 262 (ext.find_first_of(L"*?") != string16::npos)) {
263 continue; 263 continue;
264 } 264 }
265 hr = extension.Set(ext.c_str()); 265 hr = extension.Set(ext.c_str());
266 } 266 }
267 if (SUCCEEDED(hr)) 267 if (SUCCEEDED(hr))
268 hr = filter->Append(extension.Get()); 268 hr = filter->Append(extension.Get());
269 if (FAILED(hr)) 269 if (FAILED(hr))
270 return hr; 270 return hr;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 if (FAILED(hr)) 322 if (FAILED(hr))
323 return hr; 323 return hr;
324 324
325 // Make sure we return an error on an empty collection. 325 // Make sure we return an error on an empty collection.
326 if (num_files == 0) { 326 if (num_files == 0) {
327 DLOG(ERROR) << "Empty collection on input."; 327 DLOG(ERROR) << "Empty collection on input.";
328 return E_UNEXPECTED; 328 return E_UNEXPECTED;
329 } 329 }
330 330
331 // This stores the base path that should be the parent of all the files. 331 // This stores the base path that should be the parent of all the files.
332 FilePath base_path; 332 base::FilePath base_path;
333 333
334 // Iterate through the collection and append the file paths to the result. 334 // Iterate through the collection and append the file paths to the result.
335 for (unsigned int i = 0; i < num_files; ++i) { 335 for (unsigned int i = 0; i < num_files; ++i) {
336 mswr::ComPtr<winstorage::IStorageFile> file; 336 mswr::ComPtr<winstorage::IStorageFile> file;
337 hr = files->GetAt(i, file.GetAddressOf()); 337 hr = files->GetAt(i, file.GetAddressOf());
338 if (FAILED(hr)) 338 if (FAILED(hr))
339 return hr; 339 return hr;
340 340
341 mswr::ComPtr<winstorage::IStorageItem> storage_item; 341 mswr::ComPtr<winstorage::IStorageItem> storage_item;
342 hr = file.As(&storage_item); 342 hr = file.As(&storage_item);
343 if (FAILED(hr)) 343 if (FAILED(hr))
344 return hr; 344 return hr;
345 345
346 mswrw::HString file_path_str; 346 mswrw::HString file_path_str;
347 hr = storage_item->get_Path(file_path_str.GetAddressOf()); 347 hr = storage_item->get_Path(file_path_str.GetAddressOf());
348 if (FAILED(hr)) 348 if (FAILED(hr))
349 return hr; 349 return hr;
350 350
351 FilePath file_path(MakeStdWString(file_path_str.Get())); 351 base::FilePath file_path(MakeStdWString(file_path_str.Get()));
352 if (base_path.empty()) { 352 if (base_path.empty()) {
353 DCHECK(result->empty()); 353 DCHECK(result->empty());
354 base_path = file_path.DirName(); 354 base_path = file_path.DirName();
355 355
356 // Append the path, including the terminating zero. 356 // Append the path, including the terminating zero.
357 // We do this only for the first file. 357 // We do this only for the first file.
358 result->append(base_path.value().c_str(), base_path.value().size() + 1); 358 result->append(base_path.value().c_str(), base_path.value().size() + 1);
359 } 359 }
360 DCHECK(!result->empty()); 360 DCHECK(!result->empty());
361 DCHECK(!base_path.empty()); 361 DCHECK(!base_path.empty());
362 DCHECK(base_path == file_path.DirName()); 362 DCHECK(base_path == file_path.DirName());
363 363
364 // Append the base name, including the terminating zero. 364 // Append the base name, including the terminating zero.
365 FilePath base_name = file_path.BaseName(); 365 base::FilePath base_name = file_path.BaseName();
366 result->append(base_name.value().c_str(), base_name.value().size() + 1); 366 result->append(base_name.value().c_str(), base_name.value().size() + 1);
367 } 367 }
368 368
369 DCHECK(!result->empty()); 369 DCHECK(!result->empty());
370 370
371 return S_OK; 371 return S_OK;
372 } 372 }
373 373
374 SaveFilePickerSession::SaveFilePickerSession( 374 SaveFilePickerSession::SaveFilePickerSession(
375 ChromeAppViewAsh* app_view, 375 ChromeAppViewAsh* app_view,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 426
427 // There can be a single extension, or a list of semicolon-separated ones. 427 // There can be a single extension, or a list of semicolon-separated ones.
428 std::vector<string16> extensions_win32_style; 428 std::vector<string16> extensions_win32_style;
429 size_t extension_count = Tokenize(walk, L";", &extensions_win32_style); 429 size_t extension_count = Tokenize(walk, L";", &extensions_win32_style);
430 DCHECK_EQ(extension_count, extensions_win32_style.size()); 430 DCHECK_EQ(extension_count, extensions_win32_style.size());
431 431
432 // Metro wants suffixes only, not patterns. Also, metro does not support 432 // Metro wants suffixes only, not patterns. Also, metro does not support
433 // the all files ("*") pattern in the save picker. 433 // the all files ("*") pattern in the save picker.
434 std::vector<string16> extensions; 434 std::vector<string16> extensions;
435 for (size_t i = 0; i < extensions_win32_style.size(); ++i) { 435 for (size_t i = 0; i < extensions_win32_style.size(); ++i) {
436 string16 ext = FilePath(extensions_win32_style[i]).Extension(); 436 string16 ext = base::FilePath(extensions_win32_style[i]).Extension();
437 if ((ext.size() < 2) || 437 if ((ext.size() < 2) ||
438 (ext.find_first_of(L"*?") != string16::npos)) 438 (ext.find_first_of(L"*?") != string16::npos))
439 continue; 439 continue;
440 extensions.push_back(ext); 440 extensions.push_back(ext);
441 } 441 }
442 442
443 if (!extensions.empty()) { 443 if (!extensions.empty()) {
444 // Convert to a Metro collection class. 444 // Convert to a Metro collection class.
445 mswr::ComPtr<StringVectorItf> list; 445 mswr::ComPtr<StringVectorItf> list;
446 hr = mswr::MakeAndInitialize<StringVectorImpl>( 446 hr = mswr::MakeAndInitialize<StringVectorImpl>(
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 } else { 537 } else {
538 LOG(ERROR) << "NULL IStorageItem"; 538 LOG(ERROR) << "NULL IStorageItem";
539 } 539 }
540 } else { 540 } else {
541 LOG(ERROR) << "Unexpected async status " << status; 541 LOG(ERROR) << "Unexpected async status " << status;
542 } 542 }
543 app_view_->OnSaveFileCompleted(this, success_); 543 app_view_->OnSaveFileCompleted(this, success_);
544 return S_OK; 544 return S_OK;
545 } 545 }
546 546
OLDNEW
« no previous file with comments | « win8/metro_driver/file_picker.cc ('k') | win8/metro_driver/secondary_tile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698