1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_GET_METADATA_H_
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_GET_METADATA_H_
7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/files/file.h"
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/chromeos/file_system_provider/operations/operation.h"
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/chromeos/file_system_provider/request_value.h"
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace base {
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class FilePath;
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace base
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace extensions {
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class EventRouter;
21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace extensions
22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace chromeos {
24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace file_system_provider {
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace operations {
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Bridge between fileapi get metadata operation and providing extension's get
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// metadata request. Created per request.
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class GetMetadata : public Operation {
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public:
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  GetMetadata(extensions::EventRouter* event_router,
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)              const ProvidedFileSystemInfo& file_system_info,
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci              const base::FilePath& entry_path,
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci              ProvidedFileSystemInterface::MetadataFieldMask fields,
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              const ProvidedFileSystemInterface::GetMetadataCallback& callback);
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual ~GetMetadata();
37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Operation overrides.
39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual bool Execute(int request_id) OVERRIDE;
40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual void OnSuccess(int request_id,
41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                         scoped_ptr<RequestValue> result,
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                         bool has_more) OVERRIDE;
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void OnError(int request_id,
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                       scoped_ptr<RequestValue> result,
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                       base::File::Error error) OVERRIDE;
46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) private:
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  base::FilePath entry_path_;
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ProvidedFileSystemInterface::MetadataFieldMask fields_;
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  const ProvidedFileSystemInterface::GetMetadataCallback callback_;
51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
52010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GetMetadata);
53010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)};
54010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace operations
56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace file_system_provider
57010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace chromeos
58010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_GET_METADATA_H_
60