/usr/include/thunderbird/mozilla/dom/FlyWebPublishedServerIPC.h is in thunderbird-dev 1:52.8.0-1~deb8u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef mozilla_dom_FlyWebPublishedServerIPC_h
#define mozilla_dom_FlyWebPublishedServerIPC_h
#include "HttpServer.h"
#include "mozilla/dom/FlyWebPublishedServer.h"
#include "mozilla/dom/PFlyWebPublishedServerParent.h"
#include "mozilla/dom/PFlyWebPublishedServerChild.h"
#include "mozilla/MozPromise.h"
#include "nsICancelable.h"
#include "nsIDOMEventListener.h"
#include "nsISupportsImpl.h"
class nsPIDOMWindowInner;
namespace mozilla {
namespace net {
class TransportProviderParent;
class TransportProviderChild;
}
namespace dom {
class FlyWebPublishedServerParent;
class FlyWebPublishedServerImpl final : public FlyWebPublishedServer
, public HttpServerListener
{
public:
FlyWebPublishedServerImpl(nsPIDOMWindowInner* aOwner,
const nsAString& aName,
const FlyWebPublishOptions& aOptions);
NS_DECL_ISUPPORTS_INHERITED
int32_t Port()
{
return mHttpServer ? mHttpServer->GetPort() : 0;
}
void GetCertKey(nsACString& aKey) {
if (mHttpServer) {
mHttpServer->GetCertKey(aKey);
} else {
aKey.Truncate();
}
}
virtual void PermissionGranted(bool aGranted) override;
virtual void OnFetchResponse(InternalRequest* aRequest,
InternalResponse* aResponse) override;
virtual void OnWebSocketResponse(InternalRequest* aConnectRequest,
InternalResponse* aResponse) override;
virtual already_AddRefed<nsITransportProvider>
OnWebSocketAcceptInternal(InternalRequest* aConnectRequest,
const Optional<nsAString>& aProtocol,
ErrorResult& aRv) override;
void SetCancelRegister(nsICancelable* aCancelRegister)
{
mMDNSCancelRegister = aCancelRegister;
}
virtual void Close() override;
// HttpServerListener
virtual void OnServerStarted(nsresult aStatus) override;
virtual void OnRequest(InternalRequest* aRequest) override
{
FireFetchEvent(aRequest);
}
virtual void OnWebSocket(InternalRequest* aConnectRequest) override
{
FireWebsocketEvent(aConnectRequest);
}
virtual void OnServerClose() override
{
mHttpServer = nullptr;
Close();
}
private:
~FlyWebPublishedServerImpl() {}
RefPtr<HttpServer> mHttpServer;
nsCOMPtr<nsICancelable> mMDNSCancelRegister;
RefPtr<FlyWebPublishedServerParent> mServerParent;
};
class FlyWebPublishedServerChild final : public FlyWebPublishedServer
, public PFlyWebPublishedServerChild
{
public:
FlyWebPublishedServerChild(nsPIDOMWindowInner* aOwner,
const nsAString& aName,
const FlyWebPublishOptions& aOptions);
virtual void PermissionGranted(bool aGranted) override;
virtual bool RecvServerReady(const nsresult& aStatus) override;
virtual bool RecvServerClose() override;
virtual bool RecvFetchRequest(const IPCInternalRequest& aRequest,
const uint64_t& aRequestId) override;
virtual bool RecvWebSocketRequest(const IPCInternalRequest& aRequest,
const uint64_t& aRequestId,
PTransportProviderChild* aProvider) override;
virtual void OnFetchResponse(InternalRequest* aRequest,
InternalResponse* aResponse) override;
virtual void OnWebSocketResponse(InternalRequest* aConnectRequest,
InternalResponse* aResponse) override;
virtual already_AddRefed<nsITransportProvider>
OnWebSocketAcceptInternal(InternalRequest* aConnectRequest,
const Optional<nsAString>& aProtocol,
ErrorResult& aRv) override;
virtual void Close() override;
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
private:
~FlyWebPublishedServerChild() {}
nsDataHashtable<nsRefPtrHashKey<InternalRequest>, uint64_t> mPendingRequests;
nsRefPtrHashtable<nsUint64HashKey, TransportProviderChild>
mPendingTransportProviders;
bool mActorExists;
};
class FlyWebPublishedServerParent final : public PFlyWebPublishedServerParent
, public nsIDOMEventListener
{
public:
FlyWebPublishedServerParent(const nsAString& aName,
const FlyWebPublishOptions& aOptions);
NS_DECL_ISUPPORTS
NS_DECL_NSIDOMEVENTLISTENER
private:
virtual void
ActorDestroy(ActorDestroyReason aWhy) override;
virtual bool
Recv__delete__() override;
virtual bool
RecvFetchResponse(const IPCInternalResponse& aResponse,
const uint64_t& aRequestId) override;
virtual bool
RecvWebSocketResponse(const IPCInternalResponse& aResponse,
const uint64_t& aRequestId) override;
virtual bool
RecvWebSocketAccept(const nsString& aProtocol,
const uint64_t& aRequestId) override;
~FlyWebPublishedServerParent() {}
bool mActorDestroyed;
uint64_t mNextRequestId;
nsRefPtrHashtable<nsUint64HashKey, InternalRequest> mPendingRequests;
nsRefPtrHashtable<nsUint64HashKey, TransportProviderParent>
mPendingTransportProviders;
RefPtr<FlyWebPublishedServerImpl> mPublishedServer;
};
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_FlyWebPublishedServerIPC_h
|