зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 7cdd5e64521e (bug 1456626) for build crash on nsJARChannel::OpenLocalFile CLOSED TREE
This commit is contained in:
Родитель
dcc0980530
Коммит
a55b39863b
|
@ -200,6 +200,11 @@ nsresult nsJARChannel::Init(nsIURI* uri) {
|
|||
LOG(("nsJARChannel::Init [this=%p]\n", this));
|
||||
nsresult rv;
|
||||
|
||||
mWorker = do_GetService(NS_STREAMTRANSPORTSERVICE_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
mJarURI = do_QueryInterface(uri, &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
|
@ -365,6 +370,7 @@ nsresult nsJARChannel::OpenLocalFile() {
|
|||
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
MOZ_ASSERT(mWorker);
|
||||
MOZ_ASSERT(mIsPending);
|
||||
MOZ_ASSERT(mJarFile);
|
||||
|
||||
|
@ -403,15 +409,13 @@ nsresult nsJARChannel::OpenLocalFile() {
|
|||
nsAutoCString innerJarEntry(mInnerJarEntry);
|
||||
|
||||
RefPtr<nsJARChannel> self = this;
|
||||
return NS_DispatchBackgroundTask(
|
||||
NS_NewRunnableFunction(
|
||||
"nsJARChannel::OpenLocalFile",
|
||||
[self, jarCache, clonedFile, localJARURI, jarEntry,
|
||||
innerJarEntry]() mutable {
|
||||
return mWorker->Dispatch(NS_NewRunnableFunction(
|
||||
"nsJARChannel::OpenLocalFile", [self, jarCache, clonedFile, localJARURI,
|
||||
jarEntry, innerJarEntry]() mutable {
|
||||
RefPtr<nsJARInputThunk> input;
|
||||
nsresult rv = CreateLocalJarInput(jarCache, clonedFile,
|
||||
innerJarEntry, localJARURI,
|
||||
jarEntry, getter_AddRefs(input));
|
||||
nsresult rv =
|
||||
CreateLocalJarInput(jarCache, clonedFile, innerJarEntry,
|
||||
localJARURI, jarEntry, getter_AddRefs(input));
|
||||
|
||||
nsCOMPtr<nsIRunnable> target;
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
|
@ -429,8 +433,7 @@ nsresult nsJARChannel::OpenLocalFile() {
|
|||
self = nullptr;
|
||||
|
||||
NS_DispatchToMainThread(target.forget());
|
||||
}),
|
||||
NS_DISPATCH_EVENT_MAY_BLOCK);
|
||||
}));
|
||||
}
|
||||
|
||||
nsresult nsJARChannel::ContinueOpenLocalFile(nsJARInputThunk* aInput,
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "mozilla/net/MemoryDownloader.h"
|
||||
#include "nsIJARChannel.h"
|
||||
#include "nsIJARURI.h"
|
||||
#include "nsIEventTarget.h"
|
||||
#include "nsIInputStreamPump.h"
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
#include "nsIProgressEventSink.h"
|
||||
|
@ -103,6 +104,9 @@ class nsJARChannel final : public nsIJARChannel,
|
|||
nsCOMPtr<nsIURI> mJarBaseURI;
|
||||
nsCString mJarEntry;
|
||||
nsCString mInnerJarEntry;
|
||||
|
||||
// use StreamTransportService as background thread
|
||||
nsCOMPtr<nsIEventTarget> mWorker;
|
||||
};
|
||||
|
||||
#endif // nsJARChannel_h__
|
||||
|
|
Загрузка…
Ссылка в новой задаче