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:
Andrea Marchesini 2016-12-01 15:12:42 +01:00
Родитель 8b8c8ed1c7
Коммит 8bbeee69cf
64 изменённых файлов: 253 добавлений и 172 удалений

Просмотреть файл

@ -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;

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

36
dom/file/ipc/moz.build Normal file
Просмотреть файл

@ -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']

Просмотреть файл

50
dom/file/moz.build Normal file
Просмотреть файл

@ -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'

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Двоичные данные
dom/file/tests/file_mozfiledataurl_img.jpg Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 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