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 222369 71cbfd25a3076aa268597ab67f847e634af24232
parent 222368 1aa229f110adc628dfb8314acd2099b225f07069
child 222370 11664677d35ec9c4606dec917f8f0425a3907319
push id3979
push userraliiev@mozilla.com
push dateMon, 13 Oct 2014 16:35:44 +0000
treeherdermozilla-beta@30f2cc610691 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone34.0a1
backs out69471d6c631a716ba07c8b65846e23451ed570c4
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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