X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcontent%2Fpublic%2Fbrowser%2Ffile_descriptor_info.h;h=b0b2bdad7dc0c5baf15f872584e1e0c0cd953192;hb=1afa4dd80ef85af7c90efaea6959db1d92330844;hp=2248eb690f1b942aac9a4901f86ed6e825d65403;hpb=90762837333c13ccf56f2ad88e4481fc71e8d281;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/content/public/browser/file_descriptor_info.h b/src/content/public/browser/file_descriptor_info.h index 2248eb6..b0b2bda 100644 --- a/src/content/public/browser/file_descriptor_info.h +++ b/src/content/public/browser/file_descriptor_info.h @@ -5,23 +5,42 @@ #ifndef CONTENT_PUBLIC_BROWSER_FILE_DESCRIPTOR_INFO_H_ #define CONTENT_PUBLIC_BROWSER_FILE_DESCRIPTOR_INFO_H_ -#include "base/file_descriptor_posix.h" +#include "base/files/file.h" +#include "base/process/launch.h" namespace content { -// This struct is used when passing files that should be mapped in a process -// that is been created and allows to associate that file with a specific ID. -// It also provides a way to know if the actual file descriptor should be -// closed with the FileDescriptor.auto_close field. - -struct FileDescriptorInfo { - FileDescriptorInfo(int id, const base::FileDescriptor& file_descriptor) - : id(id), - fd(file_descriptor) { - } - - int id; - base::FileDescriptor fd; +// FileDescriptorInfo is a collection of file descriptors which is +// needed to launch a process. You should tell FileDescriptorInfo +// which FD should be closed and which shouldn't so that it can take care +// of the lifetime of FDs. +// +// See base/process/launcher.h for more details about launching a +// process. +class FileDescriptorInfo { + public: + virtual ~FileDescriptorInfo() {} + + // Add an FD associated with an ID, without delegating the ownerhip + // of ID. + virtual void Share(int id, base::PlatformFile fd) = 0; + + // Add an FD associated with an ID, passing the FD ownership to + // FileDescriptorInfo. + virtual void Transfer(int id, base::ScopedFD fd) = 0; + + // A vecotr backed map of registered ID-FD pairs. + virtual const base::FileHandleMappingVector& GetMapping() const = 0; + + // A GetMapping() variant what adjusts the ID value by |delta|. + // Some environments need this trick. + virtual base::FileHandleMappingVector GetMappingWithIDAdjustment( + int delta) const = 0; + + // API for iterating registered ID-FD pairs. + virtual base::PlatformFile GetFDAt(size_t i) const = 0; + virtual int GetIDAt(size_t i) const = 0; + virtual size_t GetMappingSize() const = 0; }; }