close_file.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2014 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#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_CLOSE_FILE_H_
6#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_CLOSE_FILE_H_
7
8#include "base/files/file.h"
9#include "base/memory/scoped_ptr.h"
10#include "chrome/browser/chromeos/file_system_provider/operations/operation.h"
11#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
12#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
13#include "chrome/browser/chromeos/file_system_provider/request_value.h"
14#include "storage/browser/fileapi/async_file_util.h"
15
16namespace base {
17class FilePath;
18}  // namespace base
19
20namespace extensions {
21class EventRouter;
22}  // namespace extensions
23
24namespace chromeos {
25namespace file_system_provider {
26namespace operations {
27
28// Opens a file for either read or write, with optionally creating the file
29// first. Note, that this is part of storage::CreateOrOpen file, but it does
30// not download the file locally. Created per request.
31class CloseFile : public Operation {
32 public:
33  CloseFile(extensions::EventRouter* event_router,
34            const ProvidedFileSystemInfo& file_system_info,
35            int open_request_id,
36            const storage::AsyncFileUtil::StatusCallback& callback);
37  virtual ~CloseFile();
38
39  // Operation overrides.
40  virtual bool Execute(int request_id) OVERRIDE;
41  virtual void OnSuccess(int request_id,
42                         scoped_ptr<RequestValue> result,
43                         bool has_more) OVERRIDE;
44  virtual void OnError(int request_id,
45                       scoped_ptr<RequestValue> result,
46                       base::File::Error error) OVERRIDE;
47
48 private:
49  int open_request_id_;
50  const storage::AsyncFileUtil::StatusCallback callback_;
51
52  DISALLOW_COPY_AND_ASSIGN(CloseFile);
53};
54
55}  // namespace operations
56}  // namespace file_system_provider
57}  // namespace chromeos
58
59#endif  // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_CLOSE_FILE_H_
60