зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1321261 - create dom/file for File APIs, r=qdot
--HG-- rename : dom/base/BlobSet.cpp => dom/file/BlobSet.cpp rename : dom/base/BlobSet.h => dom/file/BlobSet.h rename : dom/base/File.cpp => dom/file/File.cpp rename : dom/base/File.h => dom/file/File.h rename : dom/base/FileList.cpp => dom/file/FileList.cpp rename : dom/base/FileList.h => dom/file/FileList.h rename : dom/base/FileReader.cpp => dom/file/FileReader.cpp rename : dom/base/FileReader.h => dom/file/FileReader.h rename : dom/base/MultipartBlobImpl.cpp => dom/file/MultipartBlobImpl.cpp rename : dom/base/MultipartBlobImpl.h => dom/file/MultipartBlobImpl.h rename : dom/base/MutableBlobStorage.cpp => dom/file/MutableBlobStorage.cpp rename : dom/base/MutableBlobStorage.h => dom/file/MutableBlobStorage.h rename : dom/base/MutableBlobStreamListener.cpp => dom/file/MutableBlobStreamListener.cpp rename : dom/base/MutableBlobStreamListener.h => dom/file/MutableBlobStreamListener.h rename : dom/ipc/Blob.cpp => dom/file/ipc/Blob.cpp rename : dom/ipc/BlobChild.h => dom/file/ipc/BlobChild.h rename : dom/ipc/BlobParent.h => dom/file/ipc/BlobParent.h rename : dom/ipc/BlobTypes.ipdlh => dom/file/ipc/BlobTypes.ipdlh rename : dom/ipc/PBlob.ipdl => dom/file/ipc/PBlob.ipdl rename : dom/ipc/PBlobStream.ipdl => dom/file/ipc/PBlobStream.ipdl rename : dom/ipc/nsIRemoteBlob.h => dom/file/ipc/nsIRemoteBlob.h rename : dom/base/nsHostObjectProtocolHandler.cpp => dom/file/nsHostObjectProtocolHandler.cpp rename : dom/base/nsHostObjectProtocolHandler.h => dom/file/nsHostObjectProtocolHandler.h rename : dom/base/nsHostObjectURI.cpp => dom/file/nsHostObjectURI.cpp rename : dom/base/nsHostObjectURI.h => dom/file/nsHostObjectURI.h rename : dom/base/nsIDOMBlob.idl => dom/file/nsIDOMBlob.idl rename : dom/base/nsIDOMFileList.idl => dom/file/nsIDOMFileList.idl rename : dom/base/test/create_file_objects.js => dom/file/tests/create_file_objects.js rename : dom/base/test/file_blobURL_expiring.html => dom/file/tests/file_blobURL_expiring.html rename : dom/base/test/file_mozfiledataurl_audio.ogg => dom/file/tests/file_mozfiledataurl_audio.ogg rename : dom/base/test/file_mozfiledataurl_doc.html => dom/file/tests/file_mozfiledataurl_doc.html rename : dom/base/test/file_mozfiledataurl_img.jpg => dom/file/tests/file_mozfiledataurl_img.jpg rename : dom/base/test/file_mozfiledataurl_inner.html => dom/file/tests/file_mozfiledataurl_inner.html rename : dom/base/test/file_mozfiledataurl_text.txt => dom/file/tests/file_mozfiledataurl_text.txt rename : dom/base/test/file_nonascii_blob_url.html => dom/file/tests/file_nonascii_blob_url.html rename : dom/base/test/fileapi_chromeScript.js => dom/file/tests/fileapi_chromeScript.js rename : dom/base/test/fileutils.js => dom/file/tests/fileutils.js rename : dom/base/test/test_blobURL_expiring.html => dom/file/tests/test_blobURL_expiring.html rename : dom/base/test/test_blob_fragment_and_query.html => dom/file/tests/test_blob_fragment_and_query.html rename : dom/base/test/test_blobconstructor.html => dom/file/tests/test_blobconstructor.html rename : dom/base/test/test_file_from_blob.html => dom/file/tests/test_file_from_blob.html rename : dom/base/test/test_file_negative_date.html => dom/file/tests/test_file_negative_date.html rename : dom/base/test/test_fileapi.html => dom/file/tests/test_fileapi.html rename : dom/base/test/test_fileapi_slice.html => dom/file/tests/test_fileapi_slice.html rename : dom/base/test/test_ipc_messagemanager_blob.html => dom/file/tests/test_ipc_messagemanager_blob.html rename : dom/base/test/test_mozfiledataurl.html => dom/file/tests/test_mozfiledataurl.html rename : dom/base/test/test_nonascii_blob_url.html => dom/file/tests/test_nonascii_blob_url.html
This commit is contained in:
Родитель
8b8c8ed1c7
Коммит
8bbeee69cf
|
@ -150,6 +150,7 @@
|
|||
@RESPATH@/components/dom_activities.xpt
|
||||
@RESPATH@/components/dom_audiochannel.xpt
|
||||
@RESPATH@/components/dom_base.xpt
|
||||
@RESPATH@/components/dom_file.xpt
|
||||
@RESPATH@/components/dom_system.xpt
|
||||
@RESPATH@/components/dom_workers.xpt
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
|
|
|
@ -190,6 +190,7 @@
|
|||
@RESPATH@/components/docshell.xpt
|
||||
@RESPATH@/components/dom.xpt
|
||||
@RESPATH@/components/dom_base.xpt
|
||||
@RESPATH@/components/dom_file.xpt
|
||||
@RESPATH@/components/dom_system.xpt
|
||||
@RESPATH@/components/dom_canvas.xpt
|
||||
@RESPATH@/components/dom_core.xpt
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "mozilla/dom/ImageData.h"
|
||||
#include "mozilla/dom/ImageDataBinding.h"
|
||||
#include "mozilla/dom/ipc/BlobChild.h"
|
||||
#include "mozilla/dom/ipc/nsIRemoteBlob.h"
|
||||
#include "mozilla/dom/StructuredClone.h"
|
||||
#include "mozilla/dom/MessagePort.h"
|
||||
#include "mozilla/dom/MessagePortBinding.h"
|
||||
|
@ -38,7 +39,6 @@
|
|||
#include "mozilla/ipc/BackgroundUtils.h"
|
||||
#include "mozilla/ipc/PBackgroundSharedTypes.h"
|
||||
#include "MultipartBlobImpl.h"
|
||||
#include "nsIRemoteBlob.h"
|
||||
#include "nsQueryObject.h"
|
||||
|
||||
#ifdef MOZ_WEBRTC
|
||||
|
|
|
@ -11,11 +11,9 @@ XPIDL_SOURCES += [
|
|||
'nsIContentPolicy.idl',
|
||||
'nsIContentPolicyBase.idl',
|
||||
'nsIDocumentEncoder.idl',
|
||||
'nsIDOMBlob.idl',
|
||||
'nsIDOMDataChannel.idl',
|
||||
'nsIDOMDOMCursor.idl',
|
||||
'nsIDOMDOMRequest.idl',
|
||||
'nsIDOMFileList.idl',
|
||||
'nsIDOMFormData.idl',
|
||||
'nsIDOMParser.idl',
|
||||
'nsIDOMSerializer.idl',
|
||||
|
@ -78,8 +76,6 @@ EXPORTS += [
|
|||
'nsGenericDOMDataNode.h',
|
||||
'nsGkAtomList.h',
|
||||
'nsGkAtoms.h',
|
||||
'nsHostObjectProtocolHandler.h',
|
||||
'nsHostObjectURI.h',
|
||||
'nsIAnimationObserver.h',
|
||||
'nsIAttribute.h',
|
||||
'nsIContent.h',
|
||||
|
@ -151,7 +147,6 @@ EXPORTS.mozilla.dom += [
|
|||
'AnonymousContent.h',
|
||||
'Attr.h',
|
||||
'BarProps.h',
|
||||
'BlobSet.h',
|
||||
'BodyUtil.h',
|
||||
'BorrowedAttrInfo.h',
|
||||
'ChildIterator.h',
|
||||
|
@ -180,9 +175,6 @@ EXPORTS.mozilla.dom += [
|
|||
'Element.h',
|
||||
'ElementInlines.h',
|
||||
'EventSource.h',
|
||||
'File.h',
|
||||
'FileList.h',
|
||||
'FileReader.h',
|
||||
'FormData.h',
|
||||
'FragmentOrElement.h',
|
||||
'FromParser.h',
|
||||
|
@ -194,8 +186,6 @@ EXPORTS.mozilla.dom += [
|
|||
'ImportManager.h',
|
||||
'Link.h',
|
||||
'Location.h',
|
||||
'MutableBlobStorage.h',
|
||||
'MutableBlobStreamListener.h',
|
||||
'NameSpaceConstants.h',
|
||||
'Navigator.h',
|
||||
'NodeInfo.h',
|
||||
|
@ -226,7 +216,6 @@ UNIFIED_SOURCES += [
|
|||
'AnonymousContent.cpp',
|
||||
'Attr.cpp',
|
||||
'BarProps.cpp',
|
||||
'BlobSet.cpp',
|
||||
'BodyUtil.cpp',
|
||||
'BorrowedAttrInfo.cpp',
|
||||
'ChildIterator.cpp',
|
||||
|
@ -253,9 +242,6 @@ UNIFIED_SOURCES += [
|
|||
'DOMStringList.cpp',
|
||||
'Element.cpp',
|
||||
'EventSource.cpp',
|
||||
'File.cpp',
|
||||
'FileList.cpp',
|
||||
'FileReader.cpp',
|
||||
'FormData.cpp',
|
||||
'FragmentOrElement.cpp',
|
||||
'GroupedSHistory.cpp',
|
||||
|
@ -266,9 +252,6 @@ UNIFIED_SOURCES += [
|
|||
'ImportManager.cpp',
|
||||
'Link.cpp',
|
||||
'Location.cpp',
|
||||
'MultipartBlobImpl.cpp',
|
||||
'MutableBlobStorage.cpp',
|
||||
'MutableBlobStreamListener.cpp',
|
||||
'Navigator.cpp',
|
||||
'NodeInfo.cpp',
|
||||
'NodeIterator.cpp',
|
||||
|
@ -302,8 +285,6 @@ UNIFIED_SOURCES += [
|
|||
'nsGkAtoms.cpp',
|
||||
'nsGlobalWindowCommands.cpp',
|
||||
'nsHistory.cpp',
|
||||
'nsHostObjectProtocolHandler.cpp',
|
||||
'nsHostObjectURI.cpp',
|
||||
'nsHTMLContentSerializer.cpp',
|
||||
'nsIGlobalObject.cpp',
|
||||
'nsINode.cpp',
|
||||
|
@ -432,6 +413,7 @@ LOCAL_INCLUDES += [
|
|||
'/caps',
|
||||
'/docshell/base',
|
||||
'/dom/base',
|
||||
'/dom/file',
|
||||
'/dom/geolocation',
|
||||
'/dom/html',
|
||||
'/dom/ipc',
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#include "nsPrintfCString.h"
|
||||
#include "mozilla/dom/PerformanceNavigation.h"
|
||||
#include "mozilla/TimeStamp.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
nsDOMNavigationTiming::nsDOMNavigationTiming()
|
||||
{
|
||||
|
@ -52,25 +55,26 @@ nsDOMNavigationTiming::Clear()
|
|||
}
|
||||
|
||||
DOMTimeMilliSec
|
||||
nsDOMNavigationTiming::TimeStampToDOM(mozilla::TimeStamp aStamp) const
|
||||
nsDOMNavigationTiming::TimeStampToDOM(TimeStamp aStamp) const
|
||||
{
|
||||
if (aStamp.IsNull()) {
|
||||
return 0;
|
||||
}
|
||||
mozilla::TimeDuration duration = aStamp - mNavigationStartTimeStamp;
|
||||
|
||||
TimeDuration duration = aStamp - mNavigationStartTimeStamp;
|
||||
return GetNavigationStart() + static_cast<int64_t>(duration.ToMilliseconds());
|
||||
}
|
||||
|
||||
DOMTimeMilliSec nsDOMNavigationTiming::DurationFromStart()
|
||||
{
|
||||
return TimeStampToDOM(mozilla::TimeStamp::Now());
|
||||
return TimeStampToDOM(TimeStamp::Now());
|
||||
}
|
||||
|
||||
void
|
||||
nsDOMNavigationTiming::NotifyNavigationStart(DocShellState aDocShellState)
|
||||
{
|
||||
mNavigationStartHighRes = (double)PR_Now() / PR_USEC_PER_MSEC;
|
||||
mNavigationStartTimeStamp = mozilla::TimeStamp::Now();
|
||||
mNavigationStartTimeStamp = TimeStamp::Now();
|
||||
mDocShellHasBeenActiveSinceNavigationStart = (aDocShellState == DocShellState::eActive);
|
||||
}
|
||||
|
||||
|
@ -127,7 +131,7 @@ nsDOMNavigationTiming::NotifyLoadEventEnd()
|
|||
}
|
||||
|
||||
void
|
||||
nsDOMNavigationTiming::SetDOMLoadingTimeStamp(nsIURI* aURI, mozilla::TimeStamp aValue)
|
||||
nsDOMNavigationTiming::SetDOMLoadingTimeStamp(nsIURI* aURI, TimeStamp aValue)
|
||||
{
|
||||
if (!mDOMLoadingSet) {
|
||||
mLoadedURI = aURI;
|
||||
|
|
|
@ -54,7 +54,6 @@ support-files =
|
|||
bug819051.sjs
|
||||
chrome/bug418986-1.js
|
||||
copypaste.js
|
||||
create_file_objects.js
|
||||
delayedServerEvents.sjs
|
||||
eventsource.resource
|
||||
eventsource.resource^headers^
|
||||
|
@ -151,11 +150,7 @@ support-files =
|
|||
file_htmlserializer_ipv6.html
|
||||
file_htmlserializer_ipv6_out.html
|
||||
file_lock_orientation.html
|
||||
file_mozfiledataurl_audio.ogg
|
||||
file_mozfiledataurl_doc.html
|
||||
file_mozfiledataurl_img.jpg
|
||||
file_mozfiledataurl_inner.html
|
||||
file_mozfiledataurl_text.txt
|
||||
file_record_orientation.html
|
||||
file_restrictedEventSource.sjs
|
||||
file_simplecontentpolicy.js
|
||||
|
@ -189,8 +184,6 @@ support-files =
|
|||
file_xhtmlserializer_2_entw3c.xhtml
|
||||
file_xhtmlserializer_2_latin1.xhtml
|
||||
file_youtube_flash_embed.html
|
||||
fileapi_chromeScript.js
|
||||
fileutils.js
|
||||
forRemoval.resource
|
||||
forRemoval.resource^headers^
|
||||
formReset.html
|
||||
|
@ -208,7 +201,6 @@ support-files =
|
|||
viewport_helpers.js
|
||||
w3element_traversal.svg
|
||||
wholeTexty-helper.xml
|
||||
file_nonascii_blob_url.html
|
||||
referrerHelper.js
|
||||
img_referrer_testserver.sjs
|
||||
file_audioLoop.html
|
||||
|
@ -231,12 +223,9 @@ support-files =
|
|||
mozbrowser_api_utils.js
|
||||
websocket_helpers.js
|
||||
websocket_tests.js
|
||||
!/dom/html/test/form_submit_server.sjs
|
||||
!/dom/security/test/cors/file_CrossSiteXHR_server.sjs
|
||||
!/image/test/mochitest/blue.png
|
||||
!/dom/xhr/tests/file_XHRSendData.sjs
|
||||
script_bug1238440.js
|
||||
file_blobURL_expiring.html
|
||||
intersectionobserver_iframe.html
|
||||
intersectionobserver_window.html
|
||||
|
||||
|
@ -268,9 +257,6 @@ tags = audiochannel
|
|||
[test_audioNotificationWithEarlyPlay.html]
|
||||
tags = audiochannel
|
||||
[test_base.xhtml]
|
||||
[test_blob_fragment_and_query.html]
|
||||
[test_blobconstructor.html]
|
||||
[test_blobURL_expiring.html]
|
||||
[test_bug5141.html]
|
||||
[test_bug28293.html]
|
||||
[test_bug28293.xhtml]
|
||||
|
@ -647,10 +633,6 @@ skip-if = toolkit == 'android' || e10s # showmodaldialog
|
|||
[test_error.html]
|
||||
[test_EventSource_redirects.html]
|
||||
[test_explicit_user_agent.html]
|
||||
[test_file_from_blob.html]
|
||||
[test_file_negative_date.html]
|
||||
[test_fileapi.html]
|
||||
[test_fileapi_slice.html]
|
||||
skip-if = (toolkit == 'android') # Android: Bug 775227
|
||||
[test_getAttribute_after_createAttribute.html]
|
||||
[test_getElementById.html]
|
||||
|
@ -674,7 +656,6 @@ skip-if = (toolkit == 'android') # Android: Bug 775227
|
|||
[test_integer_attr_with_leading_zero.html]
|
||||
[test_intersectionobservers.html]
|
||||
skip-if = true # Track Bug 1320704
|
||||
[test_ipc_messagemanager_blob.html]
|
||||
[test_link_prefetch.html]
|
||||
skip-if = !e10s # Track Bug 1281415
|
||||
[test_link_stylesheet.html]
|
||||
|
@ -696,8 +677,6 @@ skip-if = (os != 'android') # meta-viewport tag support is mobile-only
|
|||
[test_meta_viewport7.html]
|
||||
skip-if = (os != 'android') # meta-viewport tag support is mobile-only
|
||||
[test_mozbrowser_apis_blocked.html]
|
||||
[test_mozfiledataurl.html]
|
||||
skip-if = toolkit == 'android' #TIMED_OUT
|
||||
[test_mozMatchesSelector.html]
|
||||
[test_mutationobserver_anonymous.html]
|
||||
[test_mutationobservers.html]
|
||||
|
@ -718,7 +697,6 @@ tags = audiochannel
|
|||
[test_NodeIterator_mutations_2.html]
|
||||
[test_NodeIterator_mutations_3.html]
|
||||
[test_nodelist_holes.html]
|
||||
[test_nonascii_blob_url.html]
|
||||
[test_noWebAudioNotification.html]
|
||||
tags = audiochannel
|
||||
[test_open_null_features.html]
|
||||
|
|
|
@ -7,7 +7,10 @@
|
|||
#ifndef mozilla_dom_BlobSet_h
|
||||
#define mozilla_dom_BlobSet_h
|
||||
|
||||
#include "jsapi.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "nsString.h"
|
||||
#include "nsTArray.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include "mozilla/dom/File.h"
|
||||
|
||||
#include "ipc/nsIRemoteBlob.h"
|
||||
#include "MultipartBlobImpl.h"
|
||||
#include "nsCExternalHandlerService.h"
|
||||
#include "nsContentCID.h"
|
||||
|
@ -21,7 +22,6 @@
|
|||
#include "nsISeekableStream.h"
|
||||
#include "nsIUnicharInputStream.h"
|
||||
#include "nsIUnicodeDecoder.h"
|
||||
#include "nsIRemoteBlob.h"
|
||||
#include "nsNetCID.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsIUUIDGenerator.h"
|
|
@ -9,6 +9,7 @@
|
|||
#include "mozilla/dom/File.h"
|
||||
#include "nsAnonymousTemporaryFile.h"
|
||||
#include "nsNetCID.h"
|
||||
#include "nsProxyRelease.h"
|
||||
#include "WorkerPrivate.h"
|
||||
|
||||
#define BLOB_MEMORY_TEMPORARY_FILE 1048576
|
|
@ -389,20 +389,6 @@ OptionalFileDescriptorSetToFDs(OptionalFileDescriptorSet& aOptionalSet,
|
|||
MOZ_CRASH("Should never get here!");
|
||||
}
|
||||
|
||||
class NS_NO_VTABLE IPrivateRemoteInputStream
|
||||
: public nsISupports
|
||||
{
|
||||
public:
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(PRIVATE_REMOTE_INPUT_STREAM_IID)
|
||||
|
||||
// This will return the underlying stream.
|
||||
virtual nsIInputStream*
|
||||
BlockAndGetInternalStream() = 0;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(IPrivateRemoteInputStream,
|
||||
PRIVATE_REMOTE_INPUT_STREAM_IID)
|
||||
|
||||
// This class exists to keep a blob alive at least as long as its internal
|
||||
// stream.
|
||||
class BlobInputStreamTether final
|
||||
|
@ -484,6 +470,22 @@ NS_INTERFACE_MAP_BEGIN(BlobInputStreamTether)
|
|||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIInputStream)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
} // namespace
|
||||
|
||||
class NS_NO_VTABLE IPrivateRemoteInputStream
|
||||
: public nsISupports
|
||||
{
|
||||
public:
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(PRIVATE_REMOTE_INPUT_STREAM_IID)
|
||||
|
||||
// This will return the underlying stream.
|
||||
virtual nsIInputStream*
|
||||
BlockAndGetInternalStream() = 0;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(IPrivateRemoteInputStream,
|
||||
PRIVATE_REMOTE_INPUT_STREAM_IID)
|
||||
|
||||
class RemoteInputStream final
|
||||
: public nsIInputStream
|
||||
, public nsISeekableStream
|
||||
|
@ -558,6 +560,8 @@ private:
|
|||
BlockAndGetInternalStream() override;
|
||||
};
|
||||
|
||||
namespace {
|
||||
|
||||
class InputStreamChild final
|
||||
: public PBlobStreamChild
|
||||
{
|
||||
|
@ -584,101 +588,6 @@ private:
|
|||
const OptionalFileDescriptorSet& aFDs) override;
|
||||
};
|
||||
|
||||
class InputStreamParent final
|
||||
: public PBlobStreamParent
|
||||
{
|
||||
typedef mozilla::ipc::InputStreamParams InputStreamParams;
|
||||
typedef mozilla::dom::OptionalFileDescriptorSet OptionalFileDescriptorSet;
|
||||
|
||||
bool* mSyncLoopGuard;
|
||||
InputStreamParams* mParams;
|
||||
OptionalFileDescriptorSet* mFDs;
|
||||
|
||||
#ifdef DEBUG
|
||||
PRThread* mOwningThread;
|
||||
#endif
|
||||
|
||||
public:
|
||||
InputStreamParent()
|
||||
: mSyncLoopGuard(nullptr)
|
||||
, mParams(nullptr)
|
||||
, mFDs(nullptr)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
mOwningThread = PR_GetCurrentThread();
|
||||
#endif
|
||||
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
MOZ_COUNT_CTOR(InputStreamParent);
|
||||
}
|
||||
|
||||
InputStreamParent(bool* aSyncLoopGuard,
|
||||
InputStreamParams* aParams,
|
||||
OptionalFileDescriptorSet* aFDs)
|
||||
: mSyncLoopGuard(aSyncLoopGuard)
|
||||
, mParams(aParams)
|
||||
, mFDs(aFDs)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
mOwningThread = PR_GetCurrentThread();
|
||||
#endif
|
||||
|
||||
AssertIsOnOwningThread();
|
||||
MOZ_ASSERT(aSyncLoopGuard);
|
||||
MOZ_ASSERT(!*aSyncLoopGuard);
|
||||
MOZ_ASSERT(aParams);
|
||||
MOZ_ASSERT(aFDs);
|
||||
|
||||
MOZ_COUNT_CTOR(InputStreamParent);
|
||||
}
|
||||
|
||||
~InputStreamParent() override
|
||||
{
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
MOZ_COUNT_DTOR(InputStreamParent);
|
||||
}
|
||||
|
||||
void
|
||||
AssertIsOnOwningThread() const
|
||||
{
|
||||
#ifdef DEBUG
|
||||
MOZ_ASSERT(PR_GetCurrentThread() == mOwningThread);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
Destroy(const InputStreamParams& aParams,
|
||||
const OptionalFileDescriptorSet& aFDs)
|
||||
{
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
if (mSyncLoopGuard) {
|
||||
MOZ_ASSERT(!*mSyncLoopGuard);
|
||||
|
||||
*mSyncLoopGuard = true;
|
||||
*mParams = aParams;
|
||||
*mFDs = aFDs;
|
||||
|
||||
// We're not a live actor so manage the memory ourselves.
|
||||
delete this;
|
||||
return true;
|
||||
}
|
||||
|
||||
// This will be destroyed by BlobParent::DeallocPBlobStreamParent.
|
||||
return PBlobStreamParent::Send__delete__(this, aParams, aFDs);
|
||||
}
|
||||
|
||||
private:
|
||||
// This method is only called by the IPDL message machinery.
|
||||
void
|
||||
ActorDestroy(ActorDestroyReason aWhy) override
|
||||
{
|
||||
// Nothing needs to be done here.
|
||||
}
|
||||
};
|
||||
|
||||
struct MOZ_STACK_CLASS CreateBlobImplMetadata final
|
||||
{
|
||||
nsString mContentType;
|
||||
|
@ -709,6 +618,8 @@ struct MOZ_STACK_CLASS CreateBlobImplMetadata final
|
|||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
already_AddRefed<BlobImpl>
|
||||
CreateBlobImpl(const nsID& aKnownBlobIDData,
|
||||
const CreateBlobImplMetadata& aMetadata)
|
||||
|
@ -1435,8 +1346,100 @@ RemoteInputStream::BlockAndGetInternalStream()
|
|||
return mStream;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
class InputStreamParent final
|
||||
: public PBlobStreamParent
|
||||
{
|
||||
typedef mozilla::ipc::InputStreamParams InputStreamParams;
|
||||
typedef mozilla::dom::OptionalFileDescriptorSet OptionalFileDescriptorSet;
|
||||
|
||||
bool* mSyncLoopGuard;
|
||||
InputStreamParams* mParams;
|
||||
OptionalFileDescriptorSet* mFDs;
|
||||
|
||||
#ifdef DEBUG
|
||||
PRThread* mOwningThread;
|
||||
#endif
|
||||
|
||||
public:
|
||||
InputStreamParent()
|
||||
: mSyncLoopGuard(nullptr)
|
||||
, mParams(nullptr)
|
||||
, mFDs(nullptr)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
mOwningThread = PR_GetCurrentThread();
|
||||
#endif
|
||||
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
MOZ_COUNT_CTOR(InputStreamParent);
|
||||
}
|
||||
|
||||
InputStreamParent(bool* aSyncLoopGuard,
|
||||
InputStreamParams* aParams,
|
||||
OptionalFileDescriptorSet* aFDs)
|
||||
: mSyncLoopGuard(aSyncLoopGuard)
|
||||
, mParams(aParams)
|
||||
, mFDs(aFDs)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
mOwningThread = PR_GetCurrentThread();
|
||||
#endif
|
||||
|
||||
AssertIsOnOwningThread();
|
||||
MOZ_ASSERT(aSyncLoopGuard);
|
||||
MOZ_ASSERT(!*aSyncLoopGuard);
|
||||
MOZ_ASSERT(aParams);
|
||||
MOZ_ASSERT(aFDs);
|
||||
|
||||
MOZ_COUNT_CTOR(InputStreamParent);
|
||||
}
|
||||
|
||||
~InputStreamParent() override
|
||||
{
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
MOZ_COUNT_DTOR(InputStreamParent);
|
||||
}
|
||||
|
||||
void
|
||||
AssertIsOnOwningThread() const
|
||||
{
|
||||
#ifdef DEBUG
|
||||
MOZ_ASSERT(PR_GetCurrentThread() == mOwningThread);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
Destroy(const InputStreamParams& aParams,
|
||||
const OptionalFileDescriptorSet& aFDs)
|
||||
{
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
if (mSyncLoopGuard) {
|
||||
MOZ_ASSERT(!*mSyncLoopGuard);
|
||||
|
||||
*mSyncLoopGuard = true;
|
||||
*mParams = aParams;
|
||||
*mFDs = aFDs;
|
||||
|
||||
// We're not a live actor so manage the memory ourselves.
|
||||
delete this;
|
||||
return true;
|
||||
}
|
||||
|
||||
// This will be destroyed by BlobParent::DeallocPBlobStreamParent.
|
||||
return PBlobStreamParent::Send__delete__(this, aParams, aFDs);
|
||||
}
|
||||
|
||||
private:
|
||||
// This method is only called by the IPDL message machinery.
|
||||
void
|
||||
ActorDestroy(ActorDestroyReason aWhy) override
|
||||
{
|
||||
// Nothing needs to be done here.
|
||||
}
|
||||
};
|
||||
StaticAutoPtr<BlobParent::IDTable> BlobParent::sIDTable;
|
||||
StaticAutoPtr<Mutex> BlobParent::sIDTableMutex;
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
EXPORTS.mozilla.dom.ipc += [
|
||||
'BlobChild.h',
|
||||
'BlobParent.h',
|
||||
'nsIRemoteBlob.h',
|
||||
]
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
'Blob.cpp',
|
||||
]
|
||||
|
||||
IPDL_SOURCES += [
|
||||
'BlobTypes.ipdlh',
|
||||
'PBlob.ipdl',
|
||||
'PBlobStream.ipdl',
|
||||
]
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'/dom/file',
|
||||
'/dom/ipc',
|
||||
'/dom/workers',
|
||||
]
|
||||
|
||||
include('/ipc/chromium/chromium-config.mozbuild')
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
|
||||
CXXFLAGS += CONFIG['TK_CFLAGS']
|
||||
|
||||
if CONFIG['GNU_CXX']:
|
||||
CXXFLAGS += ['-Wno-error=shadow']
|
|
@ -0,0 +1,50 @@
|
|||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
DIRS += ['ipc']
|
||||
|
||||
XPIDL_SOURCES += [
|
||||
'nsIDOMBlob.idl',
|
||||
'nsIDOMFileList.idl',
|
||||
]
|
||||
|
||||
XPIDL_MODULE = 'dom_file'
|
||||
|
||||
EXPORTS += [
|
||||
'nsHostObjectProtocolHandler.h',
|
||||
'nsHostObjectURI.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.dom += [
|
||||
'BlobSet.h',
|
||||
'File.h',
|
||||
'FileList.h',
|
||||
'FileReader.h',
|
||||
'MutableBlobStorage.h',
|
||||
'MutableBlobStreamListener.h',
|
||||
]
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
'BlobSet.cpp',
|
||||
'File.cpp',
|
||||
'FileList.cpp',
|
||||
'FileReader.cpp',
|
||||
'MultipartBlobImpl.cpp',
|
||||
'MutableBlobStorage.cpp',
|
||||
'MutableBlobStreamListener.cpp',
|
||||
'nsHostObjectProtocolHandler.cpp',
|
||||
'nsHostObjectURI.cpp',
|
||||
]
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'/dom/workers',
|
||||
]
|
||||
|
||||
MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
|
||||
|
||||
include('/ipc/chromium/chromium-config.mozbuild')
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 2.6 KiB |
|
@ -0,0 +1,27 @@
|
|||
[DEFAULT]
|
||||
support-files =
|
||||
create_file_objects.js
|
||||
file_blobURL_expiring.html
|
||||
file_mozfiledataurl_img.jpg
|
||||
file_mozfiledataurl_audio.ogg
|
||||
file_mozfiledataurl_doc.html
|
||||
file_mozfiledataurl_text.txt
|
||||
file_mozfiledataurl_inner.html
|
||||
file_nonascii_blob_url.html
|
||||
fileutils.js
|
||||
fileapi_chromeScript.js
|
||||
!/dom/html/test/form_submit_server.sjs
|
||||
!/dom/xhr/tests/file_XHRSendData.sjs
|
||||
|
||||
[test_blob_fragment_and_query.html]
|
||||
[test_blobconstructor.html]
|
||||
[test_blobURL_expiring.html]
|
||||
[test_file_from_blob.html]
|
||||
[test_ipc_messagemanager_blob.html]
|
||||
[test_nonascii_blob_url.html]
|
||||
[test_file_negative_date.html]
|
||||
[test_fileapi.html]
|
||||
[test_fileapi_slice.html]
|
||||
skip-if = (toolkit == 'android') # Android: Bug 775227
|
||||
[test_mozfiledataurl.html]
|
||||
skip-if = toolkit == 'android' #TIMED_OUT
|
|
@ -28,7 +28,7 @@ window.addEventListener("message", function(e) {
|
|||
}, false);
|
||||
|
||||
const innerSameSiteURI = "file_mozfiledataurl_inner.html";
|
||||
const innerCrossSiteURI = "http://example.com/tests/dom/base/test/file_mozfiledataurl_inner.html"
|
||||
const innerCrossSiteURI = "http://example.com/tests/dom/file/tests/file_mozfiledataurl_inner.html"
|
||||
|
||||
var fileNames = ["file_mozfiledataurl_img.jpg",
|
||||
"file_mozfiledataurl_audio.ogg",
|
|
@ -12,7 +12,7 @@
|
|||
<script class="testbody" type="text/javascript;version=1.7">
|
||||
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.src = 'http://xn--exmple-cua.test/tests/dom/base/test/file_nonascii_blob_url.html';
|
||||
iframe.src = 'http://xn--exmple-cua.test/tests/dom/file/tests/file_nonascii_blob_url.html';
|
||||
iframe.onload = function() {
|
||||
iframe.contentWindow.postMessage('hello world', '*');
|
||||
onmessage = function(e) {
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
#include "ContentChild.h"
|
||||
|
||||
#include "BlobChild.h"
|
||||
#include "CrashReporterChild.h"
|
||||
#include "GeckoProfiler.h"
|
||||
#include "TabChild.h"
|
||||
|
@ -38,6 +37,7 @@
|
|||
#include "mozilla/dom/workers/ServiceWorkerManager.h"
|
||||
#include "mozilla/dom/nsIContentChild.h"
|
||||
#include "mozilla/dom/URLClassifierChild.h"
|
||||
#include "mozilla/dom/ipc/BlobChild.h"
|
||||
#include "mozilla/gfx/gfxVars.h"
|
||||
#include "mozilla/psm/PSMContentListener.h"
|
||||
#include "mozilla/hal_sandbox/PHalChild.h"
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
|
||||
#include "mozilla/a11y/PDocAccessible.h"
|
||||
#include "AudioChannelService.h"
|
||||
#include "BlobParent.h"
|
||||
#include "CrashReporterParent.h"
|
||||
#include "DeviceStorageStatics.h"
|
||||
#include "GMPServiceParent.h"
|
||||
|
@ -64,6 +63,7 @@
|
|||
#include "mozilla/dom/quota/QuotaManagerService.h"
|
||||
#include "mozilla/dom/time/DateCacheCleaner.h"
|
||||
#include "mozilla/dom/URLClassifierParent.h"
|
||||
#include "mozilla/dom/ipc/BlobParent.h"
|
||||
#include "mozilla/embedding/printingui/PrintingParent.h"
|
||||
#include "mozilla/gfx/gfxVars.h"
|
||||
#include "mozilla/gfx/GPUProcessManager.h"
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "mozilla/dom/DataTransfer.h"
|
||||
#include "mozilla/dom/Event.h"
|
||||
#include "mozilla/dom/indexedDB/ActorsParent.h"
|
||||
#include "mozilla/dom/ipc/BlobParent.h"
|
||||
#include "mozilla/plugins/PluginWidgetParent.h"
|
||||
#include "mozilla/EventStateManager.h"
|
||||
#include "mozilla/gfx/2D.h"
|
||||
|
@ -40,7 +41,6 @@
|
|||
#include "mozilla/TouchEvents.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/Unused.h"
|
||||
#include "BlobParent.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsContentAreaDragDrop.h"
|
||||
#include "nsContentUtils.h"
|
||||
|
|
|
@ -11,10 +11,7 @@ XPIDL_SOURCES += [
|
|||
XPIDL_MODULE = 'dom'
|
||||
|
||||
EXPORTS.mozilla.dom.ipc += [
|
||||
'BlobChild.h',
|
||||
'BlobParent.h',
|
||||
'IdType.h',
|
||||
'nsIRemoteBlob.h',
|
||||
'StructuredCloneData.h',
|
||||
]
|
||||
|
||||
|
@ -70,22 +67,17 @@ UNIFIED_SOURCES += [
|
|||
'URLClassifierParent.cpp',
|
||||
]
|
||||
|
||||
# Blob.cpp cannot be compiled in unified mode because it triggers a fatal gcc warning.
|
||||
# CrashReporterChild.cpp cannot be compiled in unified mode because of name clashes
|
||||
# in OS X headers.
|
||||
# ContentChild.cpp cannot be compiled in unified mode on linux due to Time conflict
|
||||
SOURCES += [
|
||||
'Blob.cpp',
|
||||
'ContentChild.cpp',
|
||||
'CrashReporterChild.cpp',
|
||||
'ProcessHangMonitor.cpp',
|
||||
]
|
||||
|
||||
IPDL_SOURCES += [
|
||||
'BlobTypes.ipdlh',
|
||||
'DOMTypes.ipdlh',
|
||||
'PBlob.ipdl',
|
||||
'PBlobStream.ipdl',
|
||||
'PBrowser.ipdl',
|
||||
'PBrowserOrId.ipdlh',
|
||||
'PColorPicker.ipdl',
|
||||
|
|
|
@ -48,6 +48,7 @@ DIRS += [
|
|||
'encoding',
|
||||
'events',
|
||||
'fetch',
|
||||
'file',
|
||||
'filehandle',
|
||||
'filesystem',
|
||||
'flyweb',
|
||||
|
|
|
@ -29,6 +29,7 @@ UNIFIED_SOURCES += [
|
|||
|
||||
LOCAL_INCLUDES += [
|
||||
'/dom/base',
|
||||
'/dom/file',
|
||||
'/dom/workers',
|
||||
'/netwerk/base',
|
||||
]
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
#include "ImageCacheKey.h"
|
||||
|
||||
#include "mozilla/Move.h"
|
||||
#include "File.h"
|
||||
#include "ImageURL.h"
|
||||
#include "nsHostObjectProtocolHandler.h"
|
||||
#include "nsString.h"
|
||||
#include "mozilla/dom/File.h"
|
||||
#include "mozilla/dom/workers/ServiceWorkerManager.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsPrintfCString.h"
|
||||
|
|
|
@ -118,6 +118,7 @@
|
|||
@BINPATH@/components/dom_core.xpt
|
||||
@BINPATH@/components/dom_css.xpt
|
||||
@BINPATH@/components/dom_events.xpt
|
||||
@BINPATH@/components/dom_file.xpt
|
||||
@BINPATH@/components/dom_geolocation.xpt
|
||||
@BINPATH@/components/dom_media.xpt
|
||||
@BINPATH@/components/dom_network.xpt
|
||||
|
|
Загрузка…
Ссылка в новой задаче