Backed out changeset 69471d6c631a for missing reviewer name in the commit message.
authorShian-Yow Wu <swu@mozilla.com>
Thu, 21 Aug 2014 09:45:40 +0800
changeset 200743 71cbfd25a3076aa268597ab67f847e634af24232
parent 200742 1aa229f110adc628dfb8314acd2099b225f07069
child 200744 11664677d35ec9c4606dec917f8f0425a3907319
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
milestone34.0a1
backs out69471d6c631a716ba07c8b65846e23451ed570c4
Backed out changeset 69471d6c631a for missing reviewer name in the commit message.
modules/libjar/nsIJARChannel.idl
netwerk/ipc/RemoteOpenFileChild.h
--- a/modules/libjar/nsIJARChannel.idl
+++ b/modules/libjar/nsIJARChannel.idl
@@ -34,18 +34,11 @@ interface nsIJARChannel : nsIChannel
      * This will work even without opening the channel.
      */
     readonly attribute nsIZipEntry zipEntry;
 
     /**
      * For child process, set this to make sure that a valid file descriptor of
      * JAR file is always provided when calling NSPRFileDesc().
      * Must be set before Open() or AsyncOpen() to be effective.
-     *
-     * Note that the file descriptor returned by NSPRFileDesc() is duplicated
-     * from the original, which shares its file offset with the original.  If
-     * the file offset is modified (ex: by lseek/read/write) on one of the
-     * shared descriptors, the offset is also changed for the other.
-     * It can be safely used only with operations that take absolute offsets,
-     * such as mmap/pread/pwrite.
      */
     void ensureChildFd();
 };
--- a/netwerk/ipc/RemoteOpenFileChild.h
+++ b/netwerk/ipc/RemoteOpenFileChild.h
@@ -27,25 +27,23 @@ namespace net {
 /**
  * RemoteOpenFileChild: a thin wrapper around regular nsIFile classes that does
  * IPC to open a file handle on parent instead of child.  Used when we can't
  * open file handle on child (don't have permission), but we don't want the
  * overhead of shipping all I/O traffic across IPDL.  Example: JAR files.
  *
  * To open a file handle with this class, AsyncRemoteFileOpen() must be called
  * first.  After the listener's OnRemoteFileOpenComplete() is called, if the
- * result is NS_OK, nsIFile.OpenNSPRFileDesc() may be called to get a
- * duplicated file descriptor.
+ * result is NS_OK, nsIFile.OpenNSPRFileDesc() may be called--once--to get the
+ * file handle.
  *
- * Note that the file descriptor returned by NSPRFileDesc() is duplicated from
- * the original, which shares its file offset with the original.  If the file
- * offset is modified (ex: by lseek/read/write) on one of the shared
- * descriptors, the offset is also changed for the other.   It can be safely
- * used only with operations that take absolute offsets, such as
- * mmap/pread/pwrite.
+ * Note that calling Clone() on this class results in the filehandle ownership
+ * being passed on to the new RemoteOpenFileChild. I.e. if
+ * OnRemoteFileOpenComplete is called and then Clone(), OpenNSPRFileDesc() will
+ * work in the cloned object, but not in the original.
  *
  * This class should only be instantiated in a child process.
  *
  */
 class RemoteOpenFileChild MOZ_FINAL
   : public PRemoteOpenFileChild
   , public nsIFile
   , public nsIHashable