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

Side by Side Diff: chrome/browser/chromeos/drive/file_write_helper.cc

Issue 19596003: Remove CloseFile from FileSystem. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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/drive/file_write_helper.h" 5 #include "chrome/browser/chromeos/drive/file_write_helper.h"
6 6
7 #include "base/bind.h"
8 #include "base/callback.h"
7 #include "base/threading/sequenced_worker_pool.h" 9 #include "base/threading/sequenced_worker_pool.h"
10 #include "chrome/browser/chromeos/drive/file_system_interface.h"
8 #include "content/public/browser/browser_thread.h" 11 #include "content/public/browser/browser_thread.h"
9 12
10 using content::BrowserThread; 13 using content::BrowserThread;
11 14
12 namespace drive { 15 namespace drive {
13 16
14 namespace {
15
16 // Emits debug log when FileSystem::CloseFile() is complete.
17 void EmitDebugLogForCloseFile(const base::FilePath& file_path,
18 FileError file_error) {
19 if (file_error != FILE_ERROR_OK) {
20 LOG(WARNING) << "CloseFile failed: " << file_path.AsUTF8Unsafe() << ": "
21 << file_error;
22 }
23 }
24
25 } // namespace
26
27 FileWriteHelper::FileWriteHelper(FileSystemInterface* file_system) 17 FileWriteHelper::FileWriteHelper(FileSystemInterface* file_system)
28 : file_system_(file_system), 18 : file_system_(file_system),
29 weak_ptr_factory_(this) { 19 weak_ptr_factory_(this) {
30 // Must be created in DriveIntegrationService. 20 // Must be created in DriveIntegrationService.
31 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 21 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
32 } 22 }
33 23
34 FileWriteHelper::~FileWriteHelper() { 24 FileWriteHelper::~FileWriteHelper() {
35 // Must be destroyed in DriveIntegrationService. 25 // Must be destroyed in DriveIntegrationService.
36 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 26 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
37 } 27 }
38 28
39 void FileWriteHelper::PrepareWritableFileAndRun( 29 void FileWriteHelper::PrepareWritableFileAndRun(
40 const base::FilePath& file_path, 30 const base::FilePath& file_path,
41 const OpenFileCallback& callback) { 31 const OpenFileCallback& callback) {
42 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 32 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
43 DCHECK(!callback.is_null()); 33 DCHECK(!callback.is_null());
44 34
45 file_system_->OpenFile( 35 file_system_->OpenFile(
46 file_path, OPEN_OR_CREATE_FILE, 36 file_path, OPEN_OR_CREATE_FILE,
47 base::Bind(&FileWriteHelper::PrepareWritableFileAndRunAfterOpenFile, 37 base::Bind(&FileWriteHelper::PrepareWritableFileAndRunAfterOpenFile,
48 weak_ptr_factory_.GetWeakPtr(), file_path, callback)); 38 weak_ptr_factory_.GetWeakPtr(), file_path, callback));
49 } 39 }
50 40
51 void FileWriteHelper::PrepareWritableFileAndRunAfterOpenFile( 41 void FileWriteHelper::PrepareWritableFileAndRunAfterOpenFile(
52 const base::FilePath& file_path, 42 const base::FilePath& file_path,
53 const OpenFileCallback& callback, 43 const OpenFileCallback& callback,
54 FileError error, 44 FileError error,
55 const base::FilePath& local_cache_path) { 45 const base::FilePath& local_cache_path,
46 const base::Closure& close_callback) {
56 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 47 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
57 DCHECK(!callback.is_null()); 48 DCHECK(!callback.is_null());
58 49
59 if (error != FILE_ERROR_OK) { 50 if (error != FILE_ERROR_OK) {
60 content::BrowserThread::GetBlockingPool()->PostTask( 51 content::BrowserThread::GetBlockingPool()->PostTask(
61 FROM_HERE, 52 FROM_HERE,
62 base::Bind(callback, error, base::FilePath())); 53 base::Bind(callback, error, base::FilePath()));
63 return; 54 return;
64 } 55 }
65 56
66 content::BrowserThread::GetBlockingPool()->PostTaskAndReply( 57 content::BrowserThread::GetBlockingPool()->PostTaskAndReply(
67 FROM_HERE, 58 FROM_HERE,
68 base::Bind(callback, FILE_ERROR_OK, local_cache_path), 59 base::Bind(callback, FILE_ERROR_OK, local_cache_path),
69 base::Bind(&FileWriteHelper::PrepareWritableFileAndRunAfterCallback, 60 close_callback);
70 weak_ptr_factory_.GetWeakPtr(),
71 file_path));
72 }
73
74 void FileWriteHelper::PrepareWritableFileAndRunAfterCallback(
75 const base::FilePath& file_path) {
76 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
77 file_system_->CloseFile(file_path,
78 base::Bind(&EmitDebugLogForCloseFile, file_path));
79 } 61 }
80 62
81 } // namespace drive 63 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/file_write_helper.h ('k') | chrome/browser/chromeos/drive/file_write_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698