copy_entry.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
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_COPY_ENTRY_H_
6#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_COPY_ENTRY_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 "webkit/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// Copies an entry (recursively if a directory). Created per request.
29class CopyEntry : public Operation {
30 public:
31  CopyEntry(extensions::EventRouter* event_router,
32            const ProvidedFileSystemInfo& file_system_info,
33            const base::FilePath& source_path,
34            const base::FilePath& target_path,
35            const storage::AsyncFileUtil::StatusCallback& callback);
36  virtual ~CopyEntry();
37
38  // Operation overrides.
39  virtual bool Execute(int request_id) OVERRIDE;
40  virtual void OnSuccess(int request_id,
41                         scoped_ptr<RequestValue> result,
42                         bool has_more) OVERRIDE;
43  virtual void OnError(int request_id,
44                       scoped_ptr<RequestValue> result,
45                       base::File::Error error) OVERRIDE;
46
47 private:
48  base::FilePath source_path_;
49  base::FilePath target_path_;
50  const storage::AsyncFileUtil::StatusCallback callback_;
51
52  DISALLOW_COPY_AND_ASSIGN(CopyEntry);
53};
54
55}  // namespace operations
56}  // namespace file_system_provider
57}  // namespace chromeos
58
59#endif  // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_COPY_ENTRY_H_
60