gecko-dev/netwerk/cache2
Andrea Marchesini 4ebf5b4364 Bug 1496581 - Split nsISeekableStream in 2 classes: nsISeekableStream and nsITellableStream, f=mayhemer, r=froydnj
In the current code there are 3 main issues:

1. nsFileStream is not really thread-safe. There is nothing to protect the
internal members and we see crashes.

2. nsPipeInputStream doesn't implement ::Seek() method and that caused issues
in devtools when a nsHttpChannel sends POST data using a pipe. In order to fix
this, bug 1494176 added a check in nsHttpChannel: if the stream doesn't
implement ::Seek(), let's clone it. This was an hack around nsPipeInputStream,
and it's bad.

3. When nsHttpChannel sends POST data using a file stream, nsFileStream does
I/O on main-thread because of the issue 2. Plus, ::Seek() is called on the
main-thread causing issue 1.

Note that nsPipeInputStream implements only ::Tell(), of the nsISeekableStream
methods. It doesn't implement ::Seek() and it doesn't implement ::SetEOF().

With this patch I want to fix point 2 and point 3 (and consequentially issue 1
- but we need a separate fix for it - follow up). The patch does:

1. it splits nsISeekableStream in 2 interfaces: nsITellableStream and
nsISeekableStream.
2. nsPipeInputStream implements only nsITellableStream.  Doing this, we don't
need the ::Seek() check for point 2 in nsHttpChannel: a simple QI check is
enough.
3. Because we don't call ::Seek() in nsHttpChannel, nsFileStream doesn't do I/O
on the main-thread, and we don't crash doing so.
2018-10-18 13:35:35 +02:00
..
AppCacheStorage.cpp
AppCacheStorage.h
CacheEntry.cpp Backed out 2 changesets (bug 1487100) for XPCShell failures in netwerk/test/unit_ipc/test_alt-data_simple_wrap.js 2018-10-18 05:51:42 +03:00
CacheEntry.h Backed out 2 changesets (bug 1487100) for XPCShell failures in netwerk/test/unit_ipc/test_alt-data_simple_wrap.js 2018-10-18 05:51:42 +03:00
CacheFile.cpp Backed out 2 changesets (bug 1487100) for XPCShell failures in netwerk/test/unit_ipc/test_alt-data_simple_wrap.js 2018-10-18 05:51:42 +03:00
CacheFile.h Backed out 2 changesets (bug 1487100) for XPCShell failures in netwerk/test/unit_ipc/test_alt-data_simple_wrap.js 2018-10-18 05:51:42 +03:00
CacheFileChunk.cpp
CacheFileChunk.h
CacheFileContextEvictor.cpp
CacheFileContextEvictor.h
CacheFileIOManager.cpp
CacheFileIOManager.h
CacheFileInputStream.cpp Bug 1496581 - Split nsISeekableStream in 2 classes: nsISeekableStream and nsITellableStream, f=mayhemer, r=froydnj 2018-10-18 13:35:35 +02:00
CacheFileInputStream.h Bug 1496581 - Split nsISeekableStream in 2 classes: nsISeekableStream and nsITellableStream, f=mayhemer, r=froydnj 2018-10-18 13:35:35 +02:00
CacheFileMetadata.cpp
CacheFileMetadata.h
CacheFileOutputStream.cpp Bug 1496581 - Split nsISeekableStream in 2 classes: nsISeekableStream and nsITellableStream, f=mayhemer, r=froydnj 2018-10-18 13:35:35 +02:00
CacheFileOutputStream.h Bug 1496581 - Split nsISeekableStream in 2 classes: nsISeekableStream and nsITellableStream, f=mayhemer, r=froydnj 2018-10-18 13:35:35 +02:00
CacheFileUtils.cpp
CacheFileUtils.h
CacheHashUtils.cpp
CacheHashUtils.h
CacheIOThread.cpp
CacheIOThread.h
CacheIndex.cpp
CacheIndex.h
CacheIndexContextIterator.cpp
CacheIndexContextIterator.h
CacheIndexIterator.cpp
CacheIndexIterator.h
CacheLog.cpp
CacheLog.h
CacheObserver.cpp
CacheObserver.h
CacheStorage.cpp
CacheStorage.h
CacheStorageService.cpp
CacheStorageService.h
OldWrappers.cpp Backed out 2 changesets (bug 1487100) for XPCShell failures in netwerk/test/unit_ipc/test_alt-data_simple_wrap.js 2018-10-18 05:51:42 +03:00
OldWrappers.h Backed out 2 changesets (bug 1487100) for XPCShell failures in netwerk/test/unit_ipc/test_alt-data_simple_wrap.js 2018-10-18 05:51:42 +03:00
moz.build
nsICacheEntry.idl Backed out 2 changesets (bug 1487100) for XPCShell failures in netwerk/test/unit_ipc/test_alt-data_simple_wrap.js 2018-10-18 05:51:42 +03:00
nsICacheEntryDoomCallback.idl
nsICacheEntryOpenCallback.idl
nsICacheStorage.idl
nsICacheStorageService.idl
nsICacheStorageVisitor.idl
nsICacheTesting.idl