mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
Bug 1610020 - BroadcastChannel + wasm - part 2 - Move SharedMessagePortMessage into dom/ipc, r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D60318 --HG-- rename : dom/messagechannel/SharedMessagePortMessage.cpp => dom/ipc/SharedMessageBody.cpp rename : dom/messagechannel/SharedMessagePortMessage.h => dom/ipc/SharedMessageBody.h extra : moz-landing-system : lando
This commit is contained in:
parent
1d307811b9
commit
f5408828e0
@ -4,11 +4,9 @@
|
||||
* 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/. */
|
||||
|
||||
#include "SharedMessagePortMessage.h"
|
||||
#include "MessagePort.h"
|
||||
#include "MessagePortChild.h"
|
||||
#include "MessagePortParent.h"
|
||||
#include "SharedMessageBody.h"
|
||||
#include "mozilla/dom/File.h"
|
||||
#include "mozilla/dom/MessagePort.h"
|
||||
#include "mozilla/dom/RefMessageBodyService.h"
|
||||
#include "mozilla/dom/PMessagePort.h"
|
||||
#include "mozilla/ipc/BackgroundChild.h"
|
||||
@ -20,12 +18,12 @@ using namespace ipc;
|
||||
|
||||
namespace dom {
|
||||
|
||||
SharedMessagePortMessage::SharedMessagePortMessage() : mRefDataId({}) {}
|
||||
SharedMessageBody::SharedMessageBody() : mRefDataId({}) {}
|
||||
|
||||
void SharedMessagePortMessage::Write(
|
||||
JSContext* aCx, JS::Handle<JS::Value> aValue,
|
||||
JS::Handle<JS::Value> aTransfers, nsID& aPortID,
|
||||
RefMessageBodyService* aRefMessageBodyService, ErrorResult& aRv) {
|
||||
void SharedMessageBody::Write(JSContext* aCx, JS::Handle<JS::Value> aValue,
|
||||
JS::Handle<JS::Value> aTransfers, nsID& aPortID,
|
||||
RefMessageBodyService* aRefMessageBodyService,
|
||||
ErrorResult& aRv) {
|
||||
MOZ_ASSERT(!mCloneData && !mRefData);
|
||||
MOZ_ASSERT(aRefMessageBodyService);
|
||||
|
||||
@ -47,9 +45,10 @@ void SharedMessagePortMessage::Write(
|
||||
mRefDataId = aRefMessageBodyService->Register(refData.forget(), aRv);
|
||||
}
|
||||
|
||||
void SharedMessagePortMessage::Read(
|
||||
JSContext* aCx, JS::MutableHandle<JS::Value> aValue,
|
||||
RefMessageBodyService* aRefMessageBodyService, ErrorResult& aRv) {
|
||||
void SharedMessageBody::Read(JSContext* aCx,
|
||||
JS::MutableHandle<JS::Value> aValue,
|
||||
RefMessageBodyService* aRefMessageBodyService,
|
||||
ErrorResult& aRv) {
|
||||
MOZ_ASSERT(aRefMessageBodyService);
|
||||
|
||||
if (mCloneData) {
|
||||
@ -66,7 +65,7 @@ void SharedMessagePortMessage::Read(
|
||||
mRefData->CloneData()->Read(aCx, aValue, aRv);
|
||||
}
|
||||
|
||||
bool SharedMessagePortMessage::TakeTransferredPortsAsSequence(
|
||||
bool SharedMessageBody::TakeTransferredPortsAsSequence(
|
||||
Sequence<OwningNonNull<mozilla::dom::MessagePort>>& aPorts) {
|
||||
if (mCloneData) {
|
||||
return mCloneData->TakeTransferredPortsAsSequence(aPorts);
|
||||
@ -77,24 +76,21 @@ bool SharedMessagePortMessage::TakeTransferredPortsAsSequence(
|
||||
}
|
||||
|
||||
/* static */
|
||||
void SharedMessagePortMessage::FromSharedToMessagesChild(
|
||||
MessagePortChild* aActor,
|
||||
const nsTArray<RefPtr<SharedMessagePortMessage>>& aData,
|
||||
void SharedMessageBody::FromSharedToMessagesChild(
|
||||
PBackgroundChild* aManager,
|
||||
const nsTArray<RefPtr<SharedMessageBody>>& aData,
|
||||
nsTArray<MessageData>& aArray) {
|
||||
MOZ_ASSERT(aActor);
|
||||
MOZ_ASSERT(aManager);
|
||||
MOZ_ASSERT(aArray.IsEmpty());
|
||||
aArray.SetCapacity(aData.Length());
|
||||
|
||||
PBackgroundChild* backgroundManager = aActor->Manager();
|
||||
MOZ_ASSERT(backgroundManager);
|
||||
|
||||
for (auto& data : aData) {
|
||||
MessageData* message = aArray.AppendElement();
|
||||
|
||||
if (data->mCloneData) {
|
||||
ClonedMessageData clonedData;
|
||||
data->mCloneData->BuildClonedMessageDataForBackgroundChild(
|
||||
backgroundManager, clonedData);
|
||||
data->mCloneData->BuildClonedMessageDataForBackgroundChild(aManager,
|
||||
clonedData);
|
||||
*message = clonedData;
|
||||
continue;
|
||||
}
|
||||
@ -104,9 +100,9 @@ void SharedMessagePortMessage::FromSharedToMessagesChild(
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool SharedMessagePortMessage::FromMessagesToSharedChild(
|
||||
bool SharedMessageBody::FromMessagesToSharedChild(
|
||||
nsTArray<MessageData>& aArray,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aData) {
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aData) {
|
||||
MOZ_ASSERT(aData.IsEmpty());
|
||||
|
||||
if (NS_WARN_IF(!aData.SetCapacity(aArray.Length(), mozilla::fallible))) {
|
||||
@ -114,7 +110,7 @@ bool SharedMessagePortMessage::FromMessagesToSharedChild(
|
||||
}
|
||||
|
||||
for (auto& message : aArray) {
|
||||
RefPtr<SharedMessagePortMessage> data = new SharedMessagePortMessage();
|
||||
RefPtr<SharedMessageBody> data = new SharedMessageBody();
|
||||
|
||||
if (message.type() == MessageData::TClonedMessageData) {
|
||||
data->mCloneData = MakeUnique<ipc::StructuredCloneData>(
|
||||
@ -134,26 +130,24 @@ bool SharedMessagePortMessage::FromMessagesToSharedChild(
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool SharedMessagePortMessage::FromSharedToMessagesParent(
|
||||
MessagePortParent* aActor,
|
||||
const nsTArray<RefPtr<SharedMessagePortMessage>>& aData,
|
||||
bool SharedMessageBody::FromSharedToMessagesParent(
|
||||
PBackgroundParent* aManager,
|
||||
const nsTArray<RefPtr<SharedMessageBody>>& aData,
|
||||
FallibleTArray<MessageData>& aArray) {
|
||||
MOZ_ASSERT(aManager);
|
||||
MOZ_ASSERT(aArray.IsEmpty());
|
||||
|
||||
if (NS_WARN_IF(!aArray.SetCapacity(aData.Length(), mozilla::fallible))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
PBackgroundParent* backgroundManager = aActor->Manager();
|
||||
MOZ_ASSERT(backgroundManager);
|
||||
|
||||
for (auto& data : aData) {
|
||||
MessageData* message = aArray.AppendElement(mozilla::fallible);
|
||||
|
||||
if (data->mCloneData) {
|
||||
ClonedMessageData clonedData;
|
||||
data->mCloneData->BuildClonedMessageDataForBackgroundParent(
|
||||
backgroundManager, clonedData);
|
||||
data->mCloneData->BuildClonedMessageDataForBackgroundParent(aManager,
|
||||
clonedData);
|
||||
*message = clonedData;
|
||||
continue;
|
||||
}
|
||||
@ -165,9 +159,9 @@ bool SharedMessagePortMessage::FromSharedToMessagesParent(
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool SharedMessagePortMessage::FromMessagesToSharedParent(
|
||||
bool SharedMessageBody::FromMessagesToSharedParent(
|
||||
nsTArray<MessageData>& aArray,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aData) {
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aData) {
|
||||
MOZ_ASSERT(aData.IsEmpty());
|
||||
|
||||
if (NS_WARN_IF(!aData.SetCapacity(aArray.Length(), mozilla::fallible))) {
|
||||
@ -175,7 +169,7 @@ bool SharedMessagePortMessage::FromMessagesToSharedParent(
|
||||
}
|
||||
|
||||
for (auto& message : aArray) {
|
||||
RefPtr<SharedMessagePortMessage> data = new SharedMessagePortMessage();
|
||||
RefPtr<SharedMessageBody> data = new SharedMessageBody();
|
||||
|
||||
if (message.type() == MessageData::TClonedMessageData) {
|
||||
data->mCloneData = MakeUnique<ipc::StructuredCloneData>(
|
@ -4,51 +4,54 @@
|
||||
* 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/. */
|
||||
|
||||
#ifndef mozilla_dom_SharedMessagePortMessage_h
|
||||
#define mozilla_dom_SharedMessagePortMessage_h
|
||||
#ifndef mozilla_dom_SharedMessageBody_h
|
||||
#define mozilla_dom_SharedMessageBody_h
|
||||
|
||||
#include "mozilla/dom/ipc/StructuredCloneData.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
namespace ipc {
|
||||
class PBackgroundChild;
|
||||
}
|
||||
|
||||
namespace dom {
|
||||
|
||||
class MessagePortChild;
|
||||
class MessagePortMessage;
|
||||
class MessagePortParent;
|
||||
class MessagePort;
|
||||
class RefMessageBody;
|
||||
class RefMessageBodyService;
|
||||
|
||||
class SharedMessagePortMessage final {
|
||||
class SharedMessageBody final {
|
||||
public:
|
||||
NS_INLINE_DECL_REFCOUNTING(SharedMessagePortMessage)
|
||||
NS_INLINE_DECL_REFCOUNTING(SharedMessageBody)
|
||||
|
||||
SharedMessagePortMessage();
|
||||
SharedMessageBody();
|
||||
|
||||
// Note that the populated MessageData borrows the underlying
|
||||
// JSStructuredCloneData from the SharedMessagePortMessage, so the caller is
|
||||
// JSStructuredCloneData from the SharedMessageBody, so the caller is
|
||||
// required to ensure that the MessageData instances are destroyed prior to
|
||||
// the SharedMessagePortMessage instances.
|
||||
// the SharedMessageBody instances.
|
||||
static void FromSharedToMessagesChild(
|
||||
MessagePortChild* aActor,
|
||||
const nsTArray<RefPtr<SharedMessagePortMessage>>& aData,
|
||||
mozilla::ipc::PBackgroundChild* aBackgroundManager,
|
||||
const nsTArray<RefPtr<SharedMessageBody>>& aData,
|
||||
nsTArray<MessageData>& aArray);
|
||||
|
||||
static bool FromMessagesToSharedChild(
|
||||
nsTArray<MessageData>& aArray,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aData);
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aData);
|
||||
|
||||
// Note that the populated MessageData borrows the underlying
|
||||
// JSStructuredCloneData from the SharedMessagePortMessage, so the caller is
|
||||
// JSStructuredCloneData from the SharedMessageBody, so the caller is
|
||||
// required to ensure that the MessageData instances are destroyed prior to
|
||||
// the SharedMessagePortMessage instances.
|
||||
// the SharedMessageBody instances.
|
||||
static bool FromSharedToMessagesParent(
|
||||
MessagePortParent* aActor,
|
||||
const nsTArray<RefPtr<SharedMessagePortMessage>>& aData,
|
||||
mozilla::ipc::PBackgroundParent* aManager,
|
||||
const nsTArray<RefPtr<SharedMessageBody>>& aData,
|
||||
FallibleTArray<MessageData>& aArray);
|
||||
|
||||
static bool FromMessagesToSharedParent(
|
||||
nsTArray<MessageData>& aArray,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aData);
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aData);
|
||||
|
||||
void Read(JSContext* aCx, JS::MutableHandle<JS::Value> aValue,
|
||||
RefMessageBodyService* aRefMessageBodyService, ErrorResult& aRv);
|
||||
@ -61,7 +64,7 @@ class SharedMessagePortMessage final {
|
||||
Sequence<OwningNonNull<mozilla::dom::MessagePort>>& aPorts);
|
||||
|
||||
private:
|
||||
~SharedMessagePortMessage() = default;
|
||||
~SharedMessageBody() = default;
|
||||
|
||||
UniquePtr<ipc::StructuredCloneData> mCloneData;
|
||||
|
||||
@ -72,4 +75,4 @@ class SharedMessagePortMessage final {
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_dom_SharedMessagePortMessage_h
|
||||
#endif // mozilla_dom_SharedMessageBody_h
|
@ -65,6 +65,7 @@ EXPORTS.mozilla.dom += [
|
||||
'RemoteBrowser.h',
|
||||
'RemoteWebProgress.h',
|
||||
'RemoteWebProgressRequest.h',
|
||||
'SharedMessageBody.h',
|
||||
'TabContext.h',
|
||||
'TabMessageUtils.h',
|
||||
'URLClassifierChild.h',
|
||||
@ -120,6 +121,7 @@ UNIFIED_SOURCES += [
|
||||
'RemoteWebProgress.cpp',
|
||||
'RemoteWebProgressRequest.cpp',
|
||||
'SharedMap.cpp',
|
||||
'SharedMessageBody.cpp',
|
||||
'SharedStringMap.cpp',
|
||||
'StructuredCloneData.cpp',
|
||||
'TabContext.cpp',
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "mozilla/dom/WorkerScope.h"
|
||||
#include "mozilla/ipc/BackgroundChild.h"
|
||||
#include "mozilla/dom/RefMessageBodyService.h"
|
||||
#include "mozilla/dom/SharedMessageBody.h"
|
||||
#include "mozilla/ipc/PBackgroundChild.h"
|
||||
#include "mozilla/MessagePortTimelineMarker.h"
|
||||
#include "mozilla/ScopeExit.h"
|
||||
@ -31,7 +32,6 @@
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsGlobalWindow.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "SharedMessagePortMessage.h"
|
||||
|
||||
#include "nsIBFCacheEntry.h"
|
||||
#include "mozilla/dom/Document.h"
|
||||
@ -55,7 +55,7 @@ class PostMessageRunnable final : public CancelableRunnable {
|
||||
friend class MessagePort;
|
||||
|
||||
public:
|
||||
PostMessageRunnable(MessagePort* aPort, SharedMessagePortMessage* aData)
|
||||
PostMessageRunnable(MessagePort* aPort, SharedMessageBody* aData)
|
||||
: CancelableRunnable("dom::PostMessageRunnable"),
|
||||
mPort(aPort),
|
||||
mData(aData) {
|
||||
@ -164,7 +164,7 @@ class PostMessageRunnable final : public CancelableRunnable {
|
||||
~PostMessageRunnable() {}
|
||||
|
||||
RefPtr<MessagePort> mPort;
|
||||
RefPtr<SharedMessagePortMessage> mData;
|
||||
RefPtr<SharedMessageBody> mData;
|
||||
};
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CLASS(MessagePort)
|
||||
@ -329,7 +329,7 @@ void MessagePort::PostMessage(JSContext* aCx, JS::Handle<JS::Value> aMessage,
|
||||
return;
|
||||
}
|
||||
|
||||
RefPtr<SharedMessagePortMessage> data = new SharedMessagePortMessage();
|
||||
RefPtr<SharedMessageBody> data = new SharedMessageBody();
|
||||
|
||||
UniquePtr<AbstractTimelineMarker> start;
|
||||
UniquePtr<AbstractTimelineMarker> end;
|
||||
@ -387,14 +387,15 @@ void MessagePort::PostMessage(JSContext* aCx, JS::Handle<JS::Value> aMessage,
|
||||
MOZ_ASSERT(mActor);
|
||||
MOZ_ASSERT(mMessagesForTheOtherPort.IsEmpty());
|
||||
|
||||
AutoTArray<RefPtr<SharedMessagePortMessage>, 1> array;
|
||||
AutoTArray<RefPtr<SharedMessageBody>, 1> array;
|
||||
array.AppendElement(data);
|
||||
|
||||
AutoTArray<MessageData, 1> messages;
|
||||
// note: `messages` will borrow the underlying buffer, but this is okay
|
||||
// because reverse destruction order means `messages` will be destroyed prior
|
||||
// to `array`/`data`.
|
||||
SharedMessagePortMessage::FromSharedToMessagesChild(mActor, array, messages);
|
||||
SharedMessageBody::FromSharedToMessagesChild(mActor->Manager(), array,
|
||||
messages);
|
||||
mActor->SendPostMessages(messages);
|
||||
}
|
||||
|
||||
@ -463,7 +464,7 @@ void MessagePort::Dispatch() {
|
||||
break;
|
||||
}
|
||||
|
||||
RefPtr<SharedMessagePortMessage> data = mMessages.ElementAt(0);
|
||||
RefPtr<SharedMessageBody> data = mMessages.ElementAt(0);
|
||||
mMessages.RemoveElementAt(0);
|
||||
|
||||
mPostMessageRunnable = new PostMessageRunnable(this, data);
|
||||
@ -572,8 +573,8 @@ void MessagePort::Entangled(nsTArray<MessageData>& aMessages) {
|
||||
if (!mMessagesForTheOtherPort.IsEmpty()) {
|
||||
{
|
||||
nsTArray<MessageData> messages;
|
||||
SharedMessagePortMessage::FromSharedToMessagesChild(
|
||||
mActor, mMessagesForTheOtherPort, messages);
|
||||
SharedMessageBody::FromSharedToMessagesChild(
|
||||
mActor->Manager(), mMessagesForTheOtherPort, messages);
|
||||
mActor->SendPostMessages(messages);
|
||||
}
|
||||
// Because `messages` borrow the underlying JSStructuredCloneData buffers,
|
||||
@ -581,10 +582,10 @@ void MessagePort::Entangled(nsTArray<MessageData>& aMessages) {
|
||||
mMessagesForTheOtherPort.Clear();
|
||||
}
|
||||
|
||||
// We must convert the messages into SharedMessagePortMessages to avoid leaks.
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>> data;
|
||||
if (NS_WARN_IF(!SharedMessagePortMessage::FromMessagesToSharedChild(aMessages,
|
||||
data))) {
|
||||
// We must convert the messages into SharedMessageBodys to avoid leaks.
|
||||
FallibleTArray<RefPtr<SharedMessageBody>> data;
|
||||
if (NS_WARN_IF(
|
||||
!SharedMessageBody::FromMessagesToSharedChild(aMessages, data))) {
|
||||
DispatchError();
|
||||
return;
|
||||
}
|
||||
@ -631,9 +632,9 @@ void MessagePort::MessagesReceived(nsTArray<MessageData>& aMessages) {
|
||||
|
||||
RemoveDocFromBFCache();
|
||||
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>> data;
|
||||
if (NS_WARN_IF(!SharedMessagePortMessage::FromMessagesToSharedChild(aMessages,
|
||||
data))) {
|
||||
FallibleTArray<RefPtr<SharedMessageBody>> data;
|
||||
if (NS_WARN_IF(
|
||||
!SharedMessageBody::FromMessagesToSharedChild(aMessages, data))) {
|
||||
DispatchError();
|
||||
return;
|
||||
}
|
||||
@ -660,8 +661,8 @@ void MessagePort::Disentangle() {
|
||||
|
||||
{
|
||||
nsTArray<MessageData> messages;
|
||||
SharedMessagePortMessage::FromSharedToMessagesChild(mActor, mMessages,
|
||||
messages);
|
||||
SharedMessageBody::FromSharedToMessagesChild(mActor->Manager(), mMessages,
|
||||
messages);
|
||||
mActor->SendDisentangle(messages);
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ class MessageData;
|
||||
class MessagePortChild;
|
||||
struct PostMessageOptions;
|
||||
class PostMessageRunnable;
|
||||
class SharedMessagePortMessage;
|
||||
class SharedMessageBody;
|
||||
class RefMessageBodyService;
|
||||
class StrongWorkerRef;
|
||||
|
||||
@ -210,8 +210,8 @@ class MessagePort final : public DOMEventTargetHelper {
|
||||
|
||||
RefPtr<RefMessageBodyService> mRefMessageBodyService;
|
||||
|
||||
nsTArray<RefPtr<SharedMessagePortMessage>> mMessages;
|
||||
nsTArray<RefPtr<SharedMessagePortMessage>> mMessagesForTheOtherPort;
|
||||
nsTArray<RefPtr<SharedMessageBody>> mMessages;
|
||||
nsTArray<RefPtr<SharedMessageBody>> mMessagesForTheOtherPort;
|
||||
|
||||
nsAutoPtr<MessagePortIdentifier> mIdentifier;
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
#include "MessagePortParent.h"
|
||||
#include "MessagePortService.h"
|
||||
#include "SharedMessagePortMessage.h"
|
||||
#include "mozilla/dom/SharedMessageBody.h"
|
||||
#include "mozilla/Unused.h"
|
||||
|
||||
namespace mozilla {
|
||||
@ -40,9 +40,9 @@ bool MessagePortParent::Entangle(const nsID& aDestinationUUID,
|
||||
mozilla::ipc::IPCResult MessagePortParent::RecvPostMessages(
|
||||
nsTArray<MessageData>&& aMessages) {
|
||||
// This converts the object in a data struct where we have BlobImpls.
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>> messages;
|
||||
if (NS_WARN_IF(!SharedMessagePortMessage::FromMessagesToSharedParent(
|
||||
aMessages, messages))) {
|
||||
FallibleTArray<RefPtr<SharedMessageBody>> messages;
|
||||
if (NS_WARN_IF(!SharedMessageBody::FromMessagesToSharedParent(aMessages,
|
||||
messages))) {
|
||||
return IPC_FAIL_NO_REASON(this);
|
||||
}
|
||||
|
||||
@ -68,9 +68,9 @@ mozilla::ipc::IPCResult MessagePortParent::RecvPostMessages(
|
||||
mozilla::ipc::IPCResult MessagePortParent::RecvDisentangle(
|
||||
nsTArray<MessageData>&& aMessages) {
|
||||
// This converts the object in a data struct where we have BlobImpls.
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>> messages;
|
||||
if (NS_WARN_IF(!SharedMessagePortMessage::FromMessagesToSharedParent(
|
||||
aMessages, messages))) {
|
||||
FallibleTArray<RefPtr<SharedMessageBody>> messages;
|
||||
if (NS_WARN_IF(!SharedMessageBody::FromMessagesToSharedParent(aMessages,
|
||||
messages))) {
|
||||
return IPC_FAIL_NO_REASON(this);
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
#include "MessagePortService.h"
|
||||
#include "MessagePortParent.h"
|
||||
#include "SharedMessagePortMessage.h"
|
||||
#include "mozilla/dom/SharedMessageBody.h"
|
||||
#include "mozilla/dom/quota/CheckedUnsafePtr.h"
|
||||
#include "mozilla/ipc/BackgroundParent.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
@ -69,7 +69,7 @@ class MessagePortService::MessagePortServiceData final {
|
||||
CheckedUnsafePtr<MessagePortParent> mParent;
|
||||
|
||||
FallibleTArray<NextParent> mNextParents;
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>> mMessages;
|
||||
FallibleTArray<RefPtr<SharedMessageBody>> mMessages;
|
||||
|
||||
bool mWaitingForNewParent;
|
||||
bool mNextStepCloseAll;
|
||||
@ -146,11 +146,11 @@ bool MessagePortService::RequestEntangling(MessagePortParent* aParent,
|
||||
// are destroyed because of JSStructuredCloneData borrowing. So we use
|
||||
// Move to initialize things swapped and do it before we declare `array` so
|
||||
// that reverse destruction order works for us.
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>> messages(
|
||||
FallibleTArray<RefPtr<SharedMessageBody>> messages(
|
||||
std::move(data->mMessages));
|
||||
FallibleTArray<MessageData> array;
|
||||
if (!SharedMessagePortMessage::FromSharedToMessagesParent(aParent, messages,
|
||||
array)) {
|
||||
if (!SharedMessageBody::FromSharedToMessagesParent(aParent->Manager(),
|
||||
messages, array)) {
|
||||
CloseAll(aParent->ID());
|
||||
return false;
|
||||
}
|
||||
@ -186,7 +186,7 @@ bool MessagePortService::RequestEntangling(MessagePortParent* aParent,
|
||||
|
||||
bool MessagePortService::DisentanglePort(
|
||||
MessagePortParent* aParent,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aMessages) {
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aMessages) {
|
||||
MessagePortServiceData* data;
|
||||
if (!mPorts.Get(aParent->ID(), &data)) {
|
||||
MOZ_ASSERT(false, "Unknown MessagePortParent should not happen.");
|
||||
@ -232,8 +232,8 @@ bool MessagePortService::DisentanglePort(
|
||||
data->mNextParents.RemoveElementAt(index);
|
||||
|
||||
FallibleTArray<MessageData> array;
|
||||
if (!SharedMessagePortMessage::FromSharedToMessagesParent(data->mParent,
|
||||
aMessages, array)) {
|
||||
if (!SharedMessageBody::FromSharedToMessagesParent(data->mParent->Manager(),
|
||||
aMessages, array)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -326,7 +326,7 @@ void MessagePortService::MaybeShutdown() {
|
||||
|
||||
bool MessagePortService::PostMessages(
|
||||
MessagePortParent* aParent,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aMessages) {
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aMessages) {
|
||||
MessagePortServiceData* data;
|
||||
if (!mPorts.Get(aParent->ID(), &data)) {
|
||||
MOZ_ASSERT(false, "Unknown MessagePortParent should not happend.");
|
||||
@ -349,8 +349,8 @@ bool MessagePortService::PostMessages(
|
||||
if (data->mParent && data->mParent->CanSendData()) {
|
||||
{
|
||||
FallibleTArray<MessageData> messages;
|
||||
if (!SharedMessagePortMessage::FromSharedToMessagesParent(
|
||||
data->mParent, data->mMessages, messages)) {
|
||||
if (!SharedMessageBody::FromSharedToMessagesParent(
|
||||
data->mParent->Manager(), data->mMessages, messages)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
class MessagePortParent;
|
||||
class SharedMessagePortMessage;
|
||||
class SharedMessageBody;
|
||||
|
||||
class MessagePortService final {
|
||||
public:
|
||||
@ -31,15 +31,13 @@ class MessagePortService final {
|
||||
const nsID& aDestinationUUID,
|
||||
const uint32_t& aSequenceID);
|
||||
|
||||
bool DisentanglePort(
|
||||
MessagePortParent* aParent,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aMessages);
|
||||
bool DisentanglePort(MessagePortParent* aParent,
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aMessages);
|
||||
|
||||
bool ClosePort(MessagePortParent* aParent);
|
||||
|
||||
bool PostMessages(
|
||||
MessagePortParent* aParent,
|
||||
FallibleTArray<RefPtr<SharedMessagePortMessage>>& aMessages);
|
||||
bool PostMessages(MessagePortParent* aParent,
|
||||
FallibleTArray<RefPtr<SharedMessageBody>>& aMessages);
|
||||
|
||||
void ParentDestroy(MessagePortParent* aParent);
|
||||
|
||||
|
@ -22,7 +22,6 @@ UNIFIED_SOURCES += [
|
||||
'MessagePortChild.cpp',
|
||||
'MessagePortParent.cpp',
|
||||
'MessagePortService.cpp',
|
||||
'SharedMessagePortMessage.cpp',
|
||||
]
|
||||
|
||||
IPDL_SOURCES += [
|
||||
|
Loading…
Reference in New Issue
Block a user