Backed out changeset 7393a036ce36 (bug 1215092) for failing on own tests on a CLOSED TREE

This commit is contained in:
Carsten "Tomcat" Book
2015-10-28 14:28:59 +01:00
parent 457126dc02
commit bf3efb4f25
19 changed files with 167 additions and 166 deletions

View File

@@ -28,12 +28,12 @@ var innerId =
.getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID;
ok(innerId, "We have a valid innerWindowID: " + innerId);
var service = Cc["@mozilla.org/websocketevent/service;1"]
.getService(Ci.nsIWebSocketEventService);
ok(!!service, "We have the nsIWebSocketEventService");
var service = Cc["@mozilla.org/websocketframe/service;1"]
.getService(Ci.nsIWebSocketFrameService);
ok(!!service, "We have the nsIWebSocketFrameService");
var listener = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebSocketEventListener]),
QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebSocketFrameListener]),
frameReceived: function(aWebSocketSerialID, aFrame) {
ok(!!aFrame, "We have received a frame");

View File

@@ -231,7 +231,7 @@ static void Shutdown();
#include "mozilla/dom/nsMixedContentBlocker.h"
#include "AudioChannelService.h"
#include "mozilla/net/WebSocketEventService.h"
#include "mozilla/net/WebSocketFrameService.h"
#include "mozilla/dom/DataStoreService.h"
@@ -633,8 +633,8 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(Geolocation, Init)
#define NS_AUDIOCHANNEL_SERVICE_CID \
{ 0xf712e983, 0x048a, 0x443f, { 0x88, 0x02, 0xfc, 0xc3, 0xd9, 0x27, 0xce, 0xac }}
#define NS_WEBSOCKETEVENT_SERVICE_CID \
{ 0x31689828, 0xda66, 0x49a6, { 0x87, 0x0c, 0xdf, 0x62, 0xb8, 0x3f, 0xe7, 0x89 }}
#define NS_WEBSOCKETFRAME_SERVICE_CID \
{ 0x5973dd8f, 0xed2c, 0x41ff, { 0x9e, 0x64, 0x25, 0x1f, 0xf5, 0x5a, 0x67, 0xb9 }}
#define NS_DATASTORE_SERVICE_CID \
{ 0x0d4285fe, 0xf1b3, 0x49fa, { 0xbc, 0x51, 0xa4, 0xa8, 0x3f, 0x0a, 0xaf, 0x85 }}
@@ -643,7 +643,7 @@ NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsGeolocationService, nsGeolocationServ
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(AudioChannelService, AudioChannelService::GetOrCreate)
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(WebSocketEventService, WebSocketEventService::GetOrCreate)
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(WebSocketFrameService, WebSocketFrameService::GetOrCreate)
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(DataStoreService, DataStoreService::GetOrCreate)
@@ -795,7 +795,7 @@ NS_DEFINE_NAMED_CID(NS_TEXTSERVICESDOCUMENT_CID);
NS_DEFINE_NAMED_CID(NS_GEOLOCATION_SERVICE_CID);
NS_DEFINE_NAMED_CID(NS_GEOLOCATION_CID);
NS_DEFINE_NAMED_CID(NS_AUDIOCHANNEL_SERVICE_CID);
NS_DEFINE_NAMED_CID(NS_WEBSOCKETEVENT_SERVICE_CID);
NS_DEFINE_NAMED_CID(NS_WEBSOCKETFRAME_SERVICE_CID);
NS_DEFINE_NAMED_CID(NS_DATASTORE_SERVICE_CID);
NS_DEFINE_NAMED_CID(NS_FOCUSMANAGER_CID);
NS_DEFINE_NAMED_CID(NS_CONTENTSECURITYMANAGER_CID);
@@ -1103,7 +1103,7 @@ static const mozilla::Module::CIDEntry kLayoutCIDs[] = {
{ &kNS_GEOLOCATION_SERVICE_CID, false, nullptr, nsGeolocationServiceConstructor },
{ &kNS_GEOLOCATION_CID, false, nullptr, GeolocationConstructor },
{ &kNS_AUDIOCHANNEL_SERVICE_CID, false, nullptr, AudioChannelServiceConstructor },
{ &kNS_WEBSOCKETEVENT_SERVICE_CID, false, nullptr, WebSocketEventServiceConstructor },
{ &kNS_WEBSOCKETFRAME_SERVICE_CID, false, nullptr, WebSocketFrameServiceConstructor },
{ &kNS_DATASTORE_SERVICE_CID, false, nullptr, DataStoreServiceConstructor },
{ &kNS_FOCUSMANAGER_CID, false, nullptr, CreateFocusManager },
#ifdef MOZ_WEBSPEECH_TEST_BACKEND
@@ -1271,7 +1271,7 @@ static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
{ "@mozilla.org/geolocation/service;1", &kNS_GEOLOCATION_SERVICE_CID },
{ "@mozilla.org/geolocation;1", &kNS_GEOLOCATION_CID },
{ "@mozilla.org/audiochannel/service;1", &kNS_AUDIOCHANNEL_SERVICE_CID },
{ "@mozilla.org/websocketevent/service;1", &kNS_WEBSOCKETEVENT_SERVICE_CID },
{ "@mozilla.org/websocketframe/service;1", &kNS_WEBSOCKETFRAME_SERVICE_CID },
{ "@mozilla.org/datastore-service;1", &kNS_DATASTORE_SERVICE_CID },
{ "@mozilla.org/focus-manager;1", &kNS_FOCUSMANAGER_CID },
#ifdef MOZ_WEBSPEECH_TEST_BACKEND

View File

@@ -15,7 +15,7 @@
#include "mozilla/net/WyciwygChannelChild.h"
#include "mozilla/net/FTPChannelChild.h"
#include "mozilla/net/WebSocketChannelChild.h"
#include "mozilla/net/WebSocketEventListenerChild.h"
#include "mozilla/net/WebSocketFrameListenerChild.h"
#include "mozilla/net/DNSRequestChild.h"
#include "mozilla/net/RemoteOpenFileChild.h"
#include "mozilla/net/ChannelDiverterChild.h"
@@ -159,19 +159,19 @@ NeckoChild::DeallocPWebSocketChild(PWebSocketChild* child)
return true;
}
PWebSocketEventListenerChild*
NeckoChild::AllocPWebSocketEventListenerChild(const uint64_t& aInnerWindowID)
PWebSocketFrameListenerChild*
NeckoChild::AllocPWebSocketFrameListenerChild(const uint64_t& aInnerWindowID)
{
RefPtr<WebSocketEventListenerChild> c =
new WebSocketEventListenerChild(aInnerWindowID);
RefPtr<WebSocketFrameListenerChild> c =
new WebSocketFrameListenerChild(aInnerWindowID);
return c.forget().take();
}
bool
NeckoChild::DeallocPWebSocketEventListenerChild(PWebSocketEventListenerChild* aActor)
NeckoChild::DeallocPWebSocketFrameListenerChild(PWebSocketFrameListenerChild* aActor)
{
RefPtr<WebSocketEventListenerChild> c =
dont_AddRef(static_cast<WebSocketEventListenerChild*>(aActor));
RefPtr<WebSocketFrameListenerChild> c =
dont_AddRef(static_cast<WebSocketFrameListenerChild*>(aActor));
MOZ_ASSERT(c);
return true;
}

View File

@@ -79,9 +79,9 @@ protected:
const nsString& aRealm,
const uint64_t& aCallbackId) override;
virtual bool RecvAppOfflineStatus(const uint32_t& aId, const bool& aOffline) override;
virtual PWebSocketEventListenerChild*
AllocPWebSocketEventListenerChild(const uint64_t& aInnerWindowID) override;
virtual bool DeallocPWebSocketEventListenerChild(PWebSocketEventListenerChild*) override;
virtual PWebSocketFrameListenerChild*
AllocPWebSocketFrameListenerChild(const uint64_t& aInnerWindowID) override;
virtual bool DeallocPWebSocketFrameListenerChild(PWebSocketFrameListenerChild*) override;
/* Predictor Messsages */
virtual bool RecvPredOnPredictPreconnect(const URIParams& aURI) override;

View File

@@ -13,7 +13,7 @@
#include "mozilla/net/WyciwygChannelParent.h"
#include "mozilla/net/FTPChannelParent.h"
#include "mozilla/net/WebSocketChannelParent.h"
#include "mozilla/net/WebSocketEventListenerParent.h"
#include "mozilla/net/WebSocketFrameListenerParent.h"
#include "mozilla/net/DataChannelParent.h"
#ifdef NECKO_PROTOCOL_rtsp
#include "mozilla/net/RtspControllerParent.h"
@@ -348,19 +348,19 @@ NeckoParent::DeallocPWebSocketParent(PWebSocketParent* actor)
return true;
}
PWebSocketEventListenerParent*
NeckoParent::AllocPWebSocketEventListenerParent(const uint64_t& aInnerWindowID)
PWebSocketFrameListenerParent*
NeckoParent::AllocPWebSocketFrameListenerParent(const uint64_t& aInnerWindowID)
{
RefPtr<WebSocketEventListenerParent> c =
new WebSocketEventListenerParent(aInnerWindowID);
RefPtr<WebSocketFrameListenerParent> c =
new WebSocketFrameListenerParent(aInnerWindowID);
return c.forget().take();
}
bool
NeckoParent::DeallocPWebSocketEventListenerParent(PWebSocketEventListenerParent* aActor)
NeckoParent::DeallocPWebSocketFrameListenerParent(PWebSocketFrameListenerParent* aActor)
{
RefPtr<WebSocketEventListenerParent> c =
dont_AddRef(static_cast<WebSocketEventListenerParent*>(aActor));
RefPtr<WebSocketFrameListenerParent> c =
dont_AddRef(static_cast<WebSocketFrameListenerParent*>(aActor));
MOZ_ASSERT(c);
return true;
}

View File

@@ -172,9 +172,9 @@ protected:
virtual bool RecvCancelHTMLDNSPrefetch(const nsString& hostname,
const uint16_t& flags,
const nsresult& reason) override;
virtual PWebSocketEventListenerParent*
AllocPWebSocketEventListenerParent(const uint64_t& aInnerWindowID) override;
virtual bool DeallocPWebSocketEventListenerParent(PWebSocketEventListenerParent*) override;
virtual PWebSocketFrameListenerParent*
AllocPWebSocketFrameListenerParent(const uint64_t& aInnerWindowID) override;
virtual bool DeallocPWebSocketFrameListenerParent(PWebSocketFrameListenerParent*) override;
virtual mozilla::ipc::IProtocol*
CloneProtocol(Channel* aChannel,

View File

@@ -12,7 +12,7 @@ include protocol PBrowser;
include protocol PWyciwygChannel;
include protocol PFTPChannel;
include protocol PWebSocket;
include protocol PWebSocketEventListener;
include protocol PWebSocketFrameListener;
include protocol PTCPSocket;
include protocol PTCPServerSocket;
include protocol PUDPSocket;
@@ -46,7 +46,7 @@ prio(normal upto urgent) sync protocol PNecko
manages PWyciwygChannel;
manages PFTPChannel;
manages PWebSocket;
manages PWebSocketEventListener;
manages PWebSocketFrameListener;
manages PTCPSocket;
manages PTCPServerSocket;
manages PUDPSocket;
@@ -74,7 +74,7 @@ parent:
PDNSRequest(nsCString hostName, uint32_t flags, nsCString networkInterface);
PWebSocketEventListener(uint64_t aInnerWindowID);
PWebSocketFrameListener(uint64_t aInnerWindowID);
/* Predictor Methods */
PredPredict(OptionalURIParams targetURI, OptionalURIParams sourceURI,

View File

@@ -12,7 +12,7 @@ using mozilla::net::WebSocketFrameData from "ipc/IPCMessageUtils.h";
namespace mozilla {
namespace net {
async protocol PWebSocketEventListener
async protocol PWebSocketFrameListener
{
manager PNecko;

View File

@@ -12,7 +12,7 @@
#include "mozilla/Attributes.h"
#include "mozilla/Endian.h"
#include "mozilla/MathAlgorithms.h"
#include "mozilla/net/WebSocketEventService.h"
#include "mozilla/net/WebSocketFrameService.h"
#include "nsIURI.h"
#include "nsIChannel.h"
@@ -1196,7 +1196,7 @@ WebSocketChannel::WebSocketChannel() :
mSerial = sSerialSeed++;
mService = WebSocketEventService::GetOrCreate();
mFrameService = WebSocketFrameService::GetOrCreate();
}
WebSocketChannel::~WebSocketChannel()
@@ -1228,7 +1228,7 @@ WebSocketChannel::~WebSocketChannel()
NS_ReleaseOnMainThread(mLoadGroup);
NS_ReleaseOnMainThread(mLoadInfo);
NS_ReleaseOnMainThread(static_cast<nsIWebSocketEventService*>(mService.forget().take()));
NS_ReleaseOnMainThread(static_cast<nsIWebSocketFrameService*>(mFrameService.forget().take()));
}
NS_IMETHODIMP
@@ -1699,11 +1699,11 @@ WebSocketChannel::ProcessInput(uint8_t *buffer, uint32_t count)
}
RefPtr<WebSocketFrame> frame =
mService->CreateFrameIfNeeded(finBit, rsvBit1, rsvBit2, rsvBit3,
opcode, maskBit, mask, utf8Data);
mFrameService->CreateFrameIfNeeded(finBit, rsvBit1, rsvBit2, rsvBit3,
opcode, maskBit, mask, utf8Data);
if (frame) {
mService->FrameReceived(mSerial, mInnerWindowID, frame);
mFrameService->FrameReceived(mSerial, mInnerWindowID, frame);
}
mTargetThread->Dispatch(new CallOnMessageAvailable(this, utf8Data, -1),
@@ -1722,9 +1722,9 @@ WebSocketChannel::ProcessInput(uint8_t *buffer, uint32_t count)
}
RefPtr<WebSocketFrame> frame =
mService->CreateFrameIfNeeded(finBit, rsvBit1, rsvBit2, rsvBit3,
opcode, maskBit, mask, payload,
payloadLength);
mFrameService->CreateFrameIfNeeded(finBit, rsvBit1, rsvBit2, rsvBit3,
opcode, maskBit, mask, payload,
payloadLength);
if (opcode == nsIWebSocketFrame::OPCODE_CLOSE) {
LOG(("WebSocketChannel:: close received\n"));
@@ -1762,7 +1762,7 @@ WebSocketChannel::ProcessInput(uint8_t *buffer, uint32_t count)
if (frame) {
// We send the frame immediately becuase we want to have it dispatched
// before the CallOnServerClose.
mService->FrameReceived(mSerial, mInnerWindowID, frame);
mFrameService->FrameReceived(mSerial, mInnerWindowID, frame);
frame = nullptr;
}
@@ -1802,7 +1802,7 @@ WebSocketChannel::ProcessInput(uint8_t *buffer, uint32_t count)
}
if (frame) {
mService->FrameReceived(mSerial, mInnerWindowID, frame);
mFrameService->FrameReceived(mSerial, mInnerWindowID, frame);
}
} else if (opcode == nsIWebSocketFrame::OPCODE_BINARY) {
bool isDeflated = mPMCECompressor && mPMCECompressor->IsMessageDeflated();
@@ -1828,10 +1828,10 @@ WebSocketChannel::ProcessInput(uint8_t *buffer, uint32_t count)
}
RefPtr<WebSocketFrame> frame =
mService->CreateFrameIfNeeded(finBit, rsvBit1, rsvBit2, rsvBit3,
opcode, maskBit, mask, binaryData);
mFrameService->CreateFrameIfNeeded(finBit, rsvBit1, rsvBit2, rsvBit3,
opcode, maskBit, mask, binaryData);
if (frame) {
mService->FrameReceived(mSerial, mInnerWindowID, frame);
mFrameService->FrameReceived(mSerial, mInnerWindowID, frame);
}
mTargetThread->Dispatch(
@@ -2177,7 +2177,7 @@ WebSocketChannel::PrimeNewOutgoingMessage()
// For real data frames we ship the bulk of the payload off to ApplyMask()
RefPtr<WebSocketFrame> frame =
mService->CreateFrameIfNeeded(
mFrameService->CreateFrameIfNeeded(
mOutHeader[0] & WebSocketChannel::kFinalFragBit,
mOutHeader[0] & WebSocketChannel::kRsv1Bit,
mOutHeader[0] & WebSocketChannel::kRsv2Bit,
@@ -2190,7 +2190,7 @@ WebSocketChannel::PrimeNewOutgoingMessage()
mCurrentOut->OrigLength());
if (frame) {
mService->FrameSent(mSerial, mInnerWindowID, frame);
mFrameService->FrameSent(mSerial, mInnerWindowID, frame);
}
while (payload < (mOutHeader + mHdrOutToSend)) {

View File

@@ -50,7 +50,7 @@ class CallOnMessageAvailable;
class CallOnStop;
class CallOnServerClose;
class CallAcknowledge;
class WebSocketEventService;
class WebSocketFrameService;
// Used to enforce "1 connecting websocket per host" rule, and reconnect delays
enum wsConnectingState {
@@ -227,7 +227,7 @@ private:
const static int32_t kLingeringCloseTimeout = 1000;
const static int32_t kLingeringCloseThreshold = 50;
RefPtr<WebSocketEventService> mService;
RefPtr<WebSocketFrameService> mFrameService;
int32_t mMaxConcurrentConnections;

View File

@@ -8,7 +8,7 @@
#define mozilla_net_WebSocketFrame_h
#include "nsAutoPtr.h"
#include "nsIWebSocketEventService.h"
#include "nsIWebSocketFrameService.h"
#include "nsString.h"
namespace IPC {

View File

@@ -4,26 +4,26 @@
* 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 "WebSocketEventListenerChild.h"
#include "WebSocketFrameListenerChild.h"
#include "WebSocketEventService.h"
#include "WebSocketFrame.h"
#include "WebSocketFrameService.h"
namespace mozilla {
namespace net {
WebSocketEventListenerChild::WebSocketEventListenerChild(uint64_t aInnerWindowID)
: mService(WebSocketEventService::GetOrCreate())
WebSocketFrameListenerChild::WebSocketFrameListenerChild(uint64_t aInnerWindowID)
: mService(WebSocketFrameService::GetOrCreate())
, mInnerWindowID(aInnerWindowID)
{}
WebSocketEventListenerChild::~WebSocketEventListenerChild()
WebSocketFrameListenerChild::~WebSocketFrameListenerChild()
{
MOZ_ASSERT(!mService);
}
bool
WebSocketEventListenerChild::RecvFrameReceived(const uint32_t& aWebSocketSerialID,
WebSocketFrameListenerChild::RecvFrameReceived(const uint32_t& aWebSocketSerialID,
const WebSocketFrameData& aFrameData)
{
if (mService) {
@@ -35,7 +35,7 @@ WebSocketEventListenerChild::RecvFrameReceived(const uint32_t& aWebSocketSerialI
}
bool
WebSocketEventListenerChild::RecvFrameSent(const uint32_t& aWebSocketSerialID,
WebSocketFrameListenerChild::RecvFrameSent(const uint32_t& aWebSocketSerialID,
const WebSocketFrameData& aFrameData)
{
if (mService) {
@@ -47,14 +47,14 @@ WebSocketEventListenerChild::RecvFrameSent(const uint32_t& aWebSocketSerialID,
}
void
WebSocketEventListenerChild::Close()
WebSocketFrameListenerChild::Close()
{
mService = nullptr;
SendClose();
}
void
WebSocketEventListenerChild::ActorDestroy(ActorDestroyReason aWhy)
WebSocketFrameListenerChild::ActorDestroy(ActorDestroyReason aWhy)
{
mService = nullptr;
}

View File

@@ -4,22 +4,22 @@
* 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_net_WebSocketEventListenerChild_h
#define mozilla_net_WebSocketEventListenerChild_h
#ifndef mozilla_net_WebSocketFrameListenerChild_h
#define mozilla_net_WebSocketFrameListenerChild_h
#include "mozilla/net/PWebSocketEventListenerChild.h"
#include "mozilla/net/PWebSocketFrameListenerChild.h"
namespace mozilla {
namespace net {
class WebSocketEventService;
class WebSocketFrameService;
class WebSocketEventListenerChild final : public PWebSocketEventListenerChild
class WebSocketFrameListenerChild final : public PWebSocketFrameListenerChild
{
public:
NS_INLINE_DECL_REFCOUNTING(WebSocketEventListenerChild)
NS_INLINE_DECL_REFCOUNTING(WebSocketFrameListenerChild)
explicit WebSocketEventListenerChild(uint64_t aInnerWindowID);
explicit WebSocketFrameListenerChild(uint64_t aInnerWindowID);
bool RecvFrameReceived(const uint32_t& aWebSocketSerialID,
const WebSocketFrameData& aFrameData) override;
@@ -30,15 +30,15 @@ public:
void Close();
private:
~WebSocketEventListenerChild();
~WebSocketFrameListenerChild();
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
RefPtr<WebSocketEventService> mService;
RefPtr<WebSocketFrameService> mService;
uint64_t mInnerWindowID;
};
} // namespace net
} // namespace mozilla
#endif // mozilla_net_WebSocketEventListenerChild_h
#endif // mozilla_net_WebSocketFrameListenerChild_h

View File

@@ -4,34 +4,34 @@
* 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 "WebSocketEventListenerParent.h"
#include "WebSocketFrameListenerParent.h"
#include "mozilla/unused.h"
namespace mozilla {
namespace net {
NS_INTERFACE_MAP_BEGIN(WebSocketEventListenerParent)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebSocketEventListener)
NS_INTERFACE_MAP_ENTRY(nsIWebSocketEventListener)
NS_INTERFACE_MAP_BEGIN(WebSocketFrameListenerParent)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebSocketFrameListener)
NS_INTERFACE_MAP_ENTRY(nsIWebSocketFrameListener)
NS_INTERFACE_MAP_END
NS_IMPL_ADDREF(WebSocketEventListenerParent)
NS_IMPL_RELEASE(WebSocketEventListenerParent)
NS_IMPL_ADDREF(WebSocketFrameListenerParent)
NS_IMPL_RELEASE(WebSocketFrameListenerParent)
WebSocketEventListenerParent::WebSocketEventListenerParent(uint64_t aInnerWindowID)
: mService(WebSocketEventService::GetOrCreate())
WebSocketFrameListenerParent::WebSocketFrameListenerParent(uint64_t aInnerWindowID)
: mService(WebSocketFrameService::GetOrCreate())
, mInnerWindowID(aInnerWindowID)
{
mService->AddListener(mInnerWindowID, this);
}
WebSocketEventListenerParent::~WebSocketEventListenerParent()
WebSocketFrameListenerParent::~WebSocketFrameListenerParent()
{
MOZ_ASSERT(!mService);
}
bool
WebSocketEventListenerParent::RecvClose()
WebSocketFrameListenerParent::RecvClose()
{
if (mService) {
UnregisterListener();
@@ -42,13 +42,13 @@ WebSocketEventListenerParent::RecvClose()
}
void
WebSocketEventListenerParent::ActorDestroy(ActorDestroyReason aWhy)
WebSocketFrameListenerParent::ActorDestroy(ActorDestroyReason aWhy)
{
UnregisterListener();
}
void
WebSocketEventListenerParent::UnregisterListener()
WebSocketFrameListenerParent::UnregisterListener()
{
if (mService) {
mService->RemoveListener(mInnerWindowID, this);
@@ -57,7 +57,7 @@ WebSocketEventListenerParent::UnregisterListener()
}
NS_IMETHODIMP
WebSocketEventListenerParent::FrameReceived(uint32_t aWebSocketSerialID,
WebSocketFrameListenerParent::FrameReceived(uint32_t aWebSocketSerialID,
nsIWebSocketFrame* aFrame)
{
if (!aFrame) {
@@ -70,7 +70,7 @@ WebSocketEventListenerParent::FrameReceived(uint32_t aWebSocketSerialID,
}
NS_IMETHODIMP
WebSocketEventListenerParent::FrameSent(uint32_t aWebSocketSerialID,
WebSocketFrameListenerParent::FrameSent(uint32_t aWebSocketSerialID,
nsIWebSocketFrame* aFrame)
{
if (!aFrame) {

View File

@@ -4,28 +4,28 @@
* 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_net_WebSocketEventListenerParent_h
#define mozilla_net_WebSocketEventListenerParent_h
#ifndef mozilla_net_WebSocketFrameListenerParent_h
#define mozilla_net_WebSocketFrameListenerParent_h
#include "mozilla/net/PWebSocketEventListenerParent.h"
#include "nsIWebSocketEventService.h"
#include "mozilla/net/PWebSocketFrameListenerParent.h"
#include "nsIWebSocketFrameService.h"
namespace mozilla {
namespace net {
class WebSocketEventService;
class WebSocketFrameService;
class WebSocketEventListenerParent final : public PWebSocketEventListenerParent
, public nsIWebSocketEventListener
class WebSocketFrameListenerParent final : public PWebSocketFrameListenerParent
, public nsIWebSocketFrameListener
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIWEBSOCKETEVENTLISTENER
NS_DECL_NSIWEBSOCKETFRAMELISTENER
explicit WebSocketEventListenerParent(uint64_t aInnerWindowID);
explicit WebSocketFrameListenerParent(uint64_t aInnerWindowID);
private:
~WebSocketEventListenerParent();
~WebSocketFrameListenerParent();
virtual bool RecvClose() override;
@@ -33,11 +33,11 @@ private:
void UnregisterListener();
RefPtr<WebSocketEventService> mService;
RefPtr<WebSocketFrameService> mService;
uint64_t mInnerWindowID;
};
} // namespace net
} // namespace mozilla
#endif // mozilla_net_WebSocketEventListenerParent_h
#endif // mozilla_net_WebSocketFrameListenerParent_h

View File

@@ -4,9 +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 "WebSocketEventListenerChild.h"
#include "WebSocketEventService.h"
#include "WebSocketFrame.h"
#include "WebSocketFrameListenerChild.h"
#include "WebSocketFrameService.h"
#include "mozilla/net/NeckoChild.h"
#include "mozilla/StaticPtr.h"
@@ -20,7 +20,7 @@ namespace net {
namespace {
StaticRefPtr<WebSocketEventService> gWebSocketEventService;
StaticRefPtr<WebSocketFrameService> gWebSocketFrameService;
bool
IsChildProcess()
@@ -47,19 +47,20 @@ public:
{
MOZ_ASSERT(NS_IsMainThread());
RefPtr<WebSocketEventService> service = WebSocketEventService::GetOrCreate();
RefPtr<WebSocketFrameService> service =
WebSocketFrameService::GetOrCreate();
MOZ_ASSERT(service);
WebSocketEventService::WindowListeners* listeners =
WebSocketFrameService::WindowListeners* listeners =
service->GetListeners(mInnerWindowID);
if (!listeners) {
return NS_OK;
}
nsresult rv;
WebSocketEventService::WindowListeners::ForwardIterator iter(*listeners);
WebSocketFrameService::WindowListeners::ForwardIterator iter(*listeners);
while (iter.HasMore()) {
nsCOMPtr<nsIWebSocketEventListener> listener = iter.GetNext();
nsCOMPtr<nsIWebSocketFrameListener> listener = iter.GetNext();
if (mFrameSent) {
rv = listener->FrameSent(mWebSocketSerialID, mFrame);
@@ -85,29 +86,29 @@ protected:
bool mFrameSent;
};
/* static */ already_AddRefed<WebSocketEventService>
WebSocketEventService::GetOrCreate()
/* static */ already_AddRefed<WebSocketFrameService>
WebSocketFrameService::GetOrCreate()
{
MOZ_ASSERT(NS_IsMainThread());
if (!gWebSocketEventService) {
gWebSocketEventService = new WebSocketEventService();
if (!gWebSocketFrameService) {
gWebSocketFrameService = new WebSocketFrameService();
}
RefPtr<WebSocketEventService> service = gWebSocketEventService.get();
RefPtr<WebSocketFrameService> service = gWebSocketFrameService.get();
return service.forget();
}
NS_INTERFACE_MAP_BEGIN(WebSocketEventService)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebSocketEventService)
NS_INTERFACE_MAP_BEGIN(WebSocketFrameService)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebSocketFrameService)
NS_INTERFACE_MAP_ENTRY(nsIObserver)
NS_INTERFACE_MAP_ENTRY(nsIWebSocketEventService)
NS_INTERFACE_MAP_ENTRY(nsIWebSocketFrameService)
NS_INTERFACE_MAP_END
NS_IMPL_ADDREF(WebSocketEventService)
NS_IMPL_RELEASE(WebSocketEventService)
NS_IMPL_ADDREF(WebSocketFrameService)
NS_IMPL_RELEASE(WebSocketFrameService)
WebSocketEventService::WebSocketEventService()
WebSocketFrameService::WebSocketFrameService()
: mCountListeners(0)
{
MOZ_ASSERT(NS_IsMainThread());
@@ -119,13 +120,13 @@ WebSocketEventService::WebSocketEventService()
}
}
WebSocketEventService::~WebSocketEventService()
WebSocketFrameService::~WebSocketFrameService()
{
MOZ_ASSERT(NS_IsMainThread());
}
void
WebSocketEventService::FrameReceived(uint32_t aWebSocketSerialID,
WebSocketFrameService::FrameReceived(uint32_t aWebSocketSerialID,
uint64_t aInnerWindowID,
WebSocketFrame* aFrame)
{
@@ -144,7 +145,7 @@ WebSocketEventService::FrameReceived(uint32_t aWebSocketSerialID,
}
void
WebSocketEventService::FrameSent(uint32_t aWebSocketSerialID,
WebSocketFrameService::FrameSent(uint32_t aWebSocketSerialID,
uint64_t aInnerWindowID,
WebSocketFrame* aFrame)
{
@@ -164,8 +165,8 @@ WebSocketEventService::FrameSent(uint32_t aWebSocketSerialID,
}
NS_IMETHODIMP
WebSocketEventService::AddListener(uint64_t aInnerWindowID,
nsIWebSocketEventListener* aListener)
WebSocketFrameService::AddListener(uint64_t aInnerWindowID,
nsIWebSocketFrameListener* aListener)
{
MOZ_ASSERT(NS_IsMainThread());
@@ -180,10 +181,10 @@ WebSocketEventService::AddListener(uint64_t aInnerWindowID,
listener = new WindowListener();
if (IsChildProcess()) {
PWebSocketEventListenerChild* actor =
gNeckoChild->SendPWebSocketEventListenerConstructor(aInnerWindowID);
PWebSocketFrameListenerChild* actor =
gNeckoChild->SendPWebSocketFrameListenerConstructor(aInnerWindowID);
listener->mActor = static_cast<WebSocketEventListenerChild*>(actor);
listener->mActor = static_cast<WebSocketFrameListenerChild*>(actor);
MOZ_ASSERT(listener->mActor);
}
@@ -196,8 +197,8 @@ WebSocketEventService::AddListener(uint64_t aInnerWindowID,
}
NS_IMETHODIMP
WebSocketEventService::RemoveListener(uint64_t aInnerWindowID,
nsIWebSocketEventListener* aListener)
WebSocketFrameService::RemoveListener(uint64_t aInnerWindowID,
nsIWebSocketFrameListener* aListener)
{
MOZ_ASSERT(NS_IsMainThread());
@@ -230,7 +231,7 @@ WebSocketEventService::RemoveListener(uint64_t aInnerWindowID,
}
NS_IMETHODIMP
WebSocketEventService::Observe(nsISupports* aSubject, const char* aTopic,
WebSocketFrameService::Observe(nsISupports* aSubject, const char* aTopic,
const char16_t* aData)
{
MOZ_ASSERT(NS_IsMainThread());
@@ -268,37 +269,37 @@ WebSocketEventService::Observe(nsISupports* aSubject, const char* aTopic,
}
void
WebSocketEventService::Shutdown()
WebSocketFrameService::Shutdown()
{
MOZ_ASSERT(NS_IsMainThread());
if (gWebSocketEventService) {
if (gWebSocketFrameService) {
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
if (obs) {
obs->RemoveObserver(gWebSocketEventService, "xpcom-shutdown");
obs->RemoveObserver(gWebSocketEventService, "inner-window-destroyed");
obs->RemoveObserver(gWebSocketFrameService, "xpcom-shutdown");
obs->RemoveObserver(gWebSocketFrameService, "inner-window-destroyed");
}
mWindows.Clear();
gWebSocketEventService = nullptr;
gWebSocketFrameService = nullptr;
}
}
bool
WebSocketEventService::HasListeners() const
WebSocketFrameService::HasListeners() const
{
return !!mCountListeners;
}
WebSocketEventService::WindowListeners*
WebSocketEventService::GetListeners(uint64_t aInnerWindowID) const
WebSocketFrameService::WindowListeners*
WebSocketFrameService::GetListeners(uint64_t aInnerWindowID) const
{
WindowListener* listener = mWindows.Get(aInnerWindowID);
return listener ? &listener->mListeners : nullptr;
}
void
WebSocketEventService::ShutdownActorListener(WindowListener* aListener)
WebSocketFrameService::ShutdownActorListener(WindowListener* aListener)
{
MOZ_ASSERT(aListener);
MOZ_ASSERT(aListener->mActor);
@@ -307,7 +308,7 @@ WebSocketEventService::ShutdownActorListener(WindowListener* aListener)
}
WebSocketFrame*
WebSocketEventService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
WebSocketFrameService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
bool aRsvBit2, bool aRsvBit3,
uint8_t aOpCode, bool aMaskBit,
uint32_t aMask,
@@ -322,7 +323,7 @@ WebSocketEventService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
}
WebSocketFrame*
WebSocketEventService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
WebSocketFrameService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
bool aRsvBit2, bool aRsvBit3,
uint8_t aOpCode, bool aMaskBit,
uint32_t aMask, uint8_t* aPayload,
@@ -343,7 +344,7 @@ WebSocketEventService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
}
WebSocketFrame*
WebSocketEventService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
WebSocketFrameService::CreateFrameIfNeeded(bool aFinBit, bool aRsvBit1,
bool aRsvBit2, bool aRsvBit3,
uint8_t aOpCode, bool aMaskBit,
uint32_t aMask,

View File

@@ -4,11 +4,11 @@
* 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_net_WebSocketEventService_h
#define mozilla_net_WebSocketEventService_h
#ifndef mozilla_net_WebSocketFrameService_h
#define mozilla_net_WebSocketFrameService_h
#include "mozilla/Atomics.h"
#include "nsIWebSocketEventService.h"
#include "nsIWebSocketFrameService.h"
#include "nsAutoPtr.h"
#include "nsCOMPtr.h"
#include "nsClassHashtable.h"
@@ -21,9 +21,9 @@ namespace mozilla {
namespace net {
class WebSocketFrame;
class WebSocketEventListenerChild;
class WebSocketFrameListenerChild;
class WebSocketEventService final : public nsIWebSocketEventService
class WebSocketFrameService final : public nsIWebSocketFrameService
, public nsIObserver
{
friend class WebSocketFrameRunnable;
@@ -31,9 +31,9 @@ class WebSocketEventService final : public nsIWebSocketEventService
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIOBSERVER
NS_DECL_NSIWEBSOCKETEVENTSERVICE
NS_DECL_NSIWEBSOCKETFRAMESERVICE
static already_AddRefed<WebSocketEventService> GetOrCreate();
static already_AddRefed<WebSocketFrameService> GetOrCreate();
void FrameReceived(uint32_t aWebSocketSerialID,
uint64_t aInnerWindowID,
@@ -60,18 +60,18 @@ public:
uint8_t* aPayload, uint32_t aPayloadLength);
private:
WebSocketEventService();
~WebSocketEventService();
WebSocketFrameService();
~WebSocketFrameService();
bool HasListeners() const;
void Shutdown();
typedef nsTObserverArray<nsCOMPtr<nsIWebSocketEventListener>> WindowListeners;
typedef nsTObserverArray<nsCOMPtr<nsIWebSocketFrameListener>> WindowListeners;
struct WindowListener
{
WindowListeners mListeners;
RefPtr<WebSocketEventListenerChild> mActor;
RefPtr<WebSocketFrameListenerChild> mActor;
};
WindowListeners* GetListeners(uint64_t aInnerWindowID) const;
@@ -86,4 +86,4 @@ private:
} // net namespace
} // mozilla namespace
#endif // mozilla_net_WebSocketEventService_h
#endif // mozilla_net_WebSocketFrameService_h

View File

@@ -6,7 +6,7 @@
XPIDL_SOURCES += [
'nsIWebSocketChannel.idl',
'nsIWebSocketEventService.idl',
'nsIWebSocketFrameService.idl',
'nsIWebSocketListener.idl',
]
@@ -17,10 +17,10 @@ EXPORTS.mozilla.net += [
'WebSocketChannel.h',
'WebSocketChannelChild.h',
'WebSocketChannelParent.h',
'WebSocketEventListenerChild.h',
'WebSocketEventListenerParent.h',
'WebSocketEventService.h',
'WebSocketFrame.h',
'WebSocketFrameListenerChild.h',
'WebSocketFrameListenerParent.h',
'WebSocketFrameService.h',
]
UNIFIED_SOURCES += [
@@ -28,15 +28,15 @@ UNIFIED_SOURCES += [
'WebSocketChannel.cpp',
'WebSocketChannelChild.cpp',
'WebSocketChannelParent.cpp',
'WebSocketEventListenerChild.cpp',
'WebSocketEventListenerParent.cpp',
'WebSocketEventService.cpp',
'WebSocketFrame.cpp',
'WebSocketFrameListenerChild.cpp',
'WebSocketFrameListenerParent.cpp',
'WebSocketFrameService.cpp',
]
IPDL_SOURCES += [
'PWebSocket.ipdl',
'PWebSocketEventListener.ipdl',
'PWebSocketFrameListener.ipdl',
]
include('/ipc/chromium/chromium-config.mozbuild')

View File

@@ -37,7 +37,7 @@ interface nsIWebSocketFrame : nsISupports
};
[scriptable, uuid(f6a7ec44-23b2-4c77-bb94-f11a8df5a874)]
interface nsIWebSocketEventListener : nsISupports
interface nsIWebSocketFrameListener : nsISupports
{
void frameReceived(in unsigned long aWebSocketSerialID,
in nsIWebSocketFrame aFrame);
@@ -47,11 +47,11 @@ interface nsIWebSocketEventListener : nsISupports
};
[scriptable, builtinclass, uuid(b89d1b90-2cf3-4d8f-ac21-5aedfb25c760)]
interface nsIWebSocketEventService : nsISupports
interface nsIWebSocketFrameService : nsISupports
{
void addListener(in unsigned long long aInnerWindowID,
in nsIWebSocketEventListener aListener);
in nsIWebSocketFrameListener aListener);
void removeListener(in unsigned long long aInnerWindowID,
in nsIWebSocketEventListener aListener);
in nsIWebSocketFrameListener aListener);
};