mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 1283609 - Part 1: Add an IToplevelProtocol::Open overload that takes an nsIEventTarget; r=billm
This commit is contained in:
parent
1b714b3485
commit
72d235da4a
@ -768,7 +768,7 @@ MessageChannel::Open(Transport* aTransport, MessageLoop* aIOLoop, Side aSide)
|
||||
}
|
||||
|
||||
bool
|
||||
MessageChannel::Open(MessageChannel *aTargetChan, MessageLoop *aTargetLoop, Side aSide)
|
||||
MessageChannel::Open(MessageChannel *aTargetChan, nsIEventTarget *aEventTarget, Side aSide)
|
||||
{
|
||||
// Opens a connection to another thread in the same process.
|
||||
|
||||
@ -801,12 +801,12 @@ MessageChannel::Open(MessageChannel *aTargetChan, MessageLoop *aTargetLoop, Side
|
||||
|
||||
MonitorAutoLock lock(*mMonitor);
|
||||
mChannelState = ChannelOpening;
|
||||
aTargetLoop->PostTask(NewNonOwningRunnableMethod<MessageChannel*, Side>(
|
||||
MOZ_ALWAYS_SUCCEEDS(aEventTarget->Dispatch(NewNonOwningRunnableMethod<MessageChannel*, Side>(
|
||||
"ipc::MessageChannel::OnOpenAsSlave",
|
||||
aTargetChan,
|
||||
&MessageChannel::OnOpenAsSlave,
|
||||
this,
|
||||
oppSide));
|
||||
oppSide)));
|
||||
|
||||
while (ChannelOpening == mChannelState)
|
||||
mMonitor->Wait();
|
||||
|
@ -35,6 +35,8 @@
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
|
||||
class nsIEventTarget;
|
||||
|
||||
namespace mozilla {
|
||||
namespace ipc {
|
||||
|
||||
@ -146,7 +148,7 @@ class MessageChannel : HasResultCodes, MessageLoop::DestructionObserver
|
||||
// For more details on the process of opening a channel between
|
||||
// threads, see the extended comment on this function
|
||||
// in MessageChannel.cpp.
|
||||
bool Open(MessageChannel *aTargetChan, MessageLoop *aTargetLoop, Side aSide);
|
||||
bool Open(MessageChannel *aTargetChan, nsIEventTarget *aEventTarget, Side aSide);
|
||||
|
||||
// Close the underlying transport channel.
|
||||
void Close();
|
||||
|
@ -644,7 +644,16 @@ IToplevelProtocol::Open(MessageChannel* aChannel,
|
||||
mozilla::ipc::Side aSide)
|
||||
{
|
||||
SetOtherProcessId(base::GetCurrentProcId());
|
||||
return GetIPCChannel()->Open(aChannel, aMessageLoop, aSide);
|
||||
return GetIPCChannel()->Open(aChannel, aMessageLoop->SerialEventTarget(), aSide);
|
||||
}
|
||||
|
||||
bool
|
||||
IToplevelProtocol::Open(MessageChannel* aChannel,
|
||||
nsIEventTarget* aEventTarget,
|
||||
mozilla::ipc::Side aSide)
|
||||
{
|
||||
SetOtherProcessId(base::GetCurrentProcId());
|
||||
return GetIPCChannel()->Open(aChannel, aEventTarget, aSide);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -294,6 +294,10 @@ public:
|
||||
MessageLoop* aMessageLoop,
|
||||
mozilla::ipc::Side aSide = mozilla::ipc::UnknownSide);
|
||||
|
||||
bool Open(MessageChannel* aChannel,
|
||||
nsIEventTarget* aEventTarget,
|
||||
mozilla::ipc::Side aSide = mozilla::ipc::UnknownSide);
|
||||
|
||||
void Close();
|
||||
|
||||
void SetReplyTimeoutMs(int32_t aTimeoutMs);
|
||||
|
Loading…
Reference in New Issue
Block a user