DropBoxManager: Allow adding a file using an fd

This patch adds an overload to DropBoxManager::addFile() which accepts
an already-opened file as a file descriptor. This avoids the need for
clients to create a filesystem-visible file when uploading data to
DropBox.

Test: Tested with perfetto using https://android-review.googlesource.com/c/platform/external/perfetto/+/587674
Change-Id: I076bfd3180fb9b4baff7e1bae2e611419061b2a7
Merged-In: I076bfd3180fb9b4baff7e1bae2e611419061b2a7
This commit is contained in:
Primiano Tucci
2018-01-26 14:25:18 +00:00
parent 9f82b6bab5
commit 5490b610b3
2 changed files with 10 additions and 1 deletions

View File

@@ -57,7 +57,11 @@ public:
// and a handle will be passed to the system process, so no additional permissions
// are required from the system process. Returns NULL if the file can't be opened.
Status addFile(const String16& tag, const string& filename, int flags);
// Create a new Entry from an already opened file. Takes ownership of the
// file descriptor.
Status addFile(const String16& tag, int fd, int flags);
class Entry : public virtual RefBase, public Parcelable {
public:
Entry();

View File

@@ -179,7 +179,12 @@ DropBoxManager::addFile(const String16& tag, const string& filename, int flags)
ALOGW("DropboxManager: %s", message.c_str());
return Status::fromExceptionCode(Status::EX_ILLEGAL_STATE, message.c_str());
}
return addFile(tag, fd, flags);
}
Status
DropBoxManager::addFile(const String16& tag, int fd, int flags)
{
Entry entry(tag, flags, fd);
return add(entry);
}