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

Side by Side Diff: chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc

Issue 258783006: [fsp] Add the getMetadata operation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed a lot. Created 6 years, 7 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
(Empty)
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 #include "chrome/browser/chromeos/file_system_provider/operations/get_metadata.h "
6
7 #include <string>
8
9 #include "base/memory/linked_ptr.h"
kinaba 2014/04/30 07:55:03 is this used?
mtomasz 2014/04/30 09:18:24 Nope. Done.
10 #include "chrome/common/extensions/api/file_system_provider.h"
11 #include "chrome/common/extensions/api/file_system_provider_internal.h"
12
13 namespace chromeos {
14 namespace file_system_provider {
15 namespace operations {
16 namespace {
17
18 // Convert |value| into |output|. If parsing fails, then returns false.
19 bool ConvertRequestValueToFileInfo(scoped_ptr<RequestValue> value,
20 base::File::Info* output) {
21 using extensions::api::file_system_provider::EntryMetadata;
22 using extensions::api::file_system_provider_internal::
23 GetMetadataRequestedSuccess::Params;
24
25 const Params* params = value->get_metadata_success_params();
26 if (!params)
27 return false;
28
29 output->is_directory = params->metadata.is_directory;
30 output->size = static_cast<int64>(params->metadata.size);
31 output->is_symbolic_link = false; // Not supported.
32
33 std::string input_modification_time;
34 if (!params->metadata.modification_time.additional_properties.GetString(
35 "value", &input_modification_time)) {
36 return false;
37 }
38 if (!base::Time::FromString(input_modification_time.c_str(),
39 &output->last_modified)) {
40 return false;
41 }
42
43 return true;
44 }
45
46 } // namespace
47
48 GetMetadata::GetMetadata(
49 extensions::EventRouter* event_router,
50 const ProvidedFileSystemInfo& file_system_info,
51 const base::FilePath& directory_path,
52 const fileapi::AsyncFileUtil::GetFileInfoCallback& callback)
53 : Operation(event_router, file_system_info),
54 directory_path_(directory_path),
55 callback_(callback) {
56 }
57
58 GetMetadata::~GetMetadata() {
59 }
60
61 bool GetMetadata::Execute(int request_id) {
62 scoped_ptr<base::ListValue> values(new base::ListValue);
63 values->AppendString(directory_path_.AsUTF8Unsafe());
64 return SendEvent(
65 request_id,
66 extensions::api::file_system_provider::OnGetMetadataRequested::kEventName,
67 values.Pass());
68 }
69
70 void GetMetadata::OnSuccess(int /* request_id */,
71 scoped_ptr<RequestValue> result,
72 bool has_next) {
73 base::File::Info file_info;
74 const bool convert_result =
75 ConvertRequestValueToFileInfo(result.Pass(), &file_info);
76 DCHECK(convert_result);
77 callback_.Run(base::File::FILE_OK, file_info);
78 }
79
80 void GetMetadata::OnError(int /* request_id */, base::File::Error error) {
81 callback_.Run(error, base::File::Info());
82 }
83
84 } // namespace operations
85 } // namespace file_system_provider
86 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698