mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
Bug 1418007 P2 Track the client window or worker's event target on ClientSource. r=baku
This commit is contained in:
parent
156cd8dec2
commit
44e7d854dd
@ -98,6 +98,7 @@ ClientManager::Shutdown()
|
||||
|
||||
UniquePtr<ClientSource>
|
||||
ClientManager::CreateSourceInternal(ClientType aType,
|
||||
nsISerialEventTarget* aEventTarget,
|
||||
const PrincipalInfo& aPrincipal)
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(ClientManager);
|
||||
@ -113,7 +114,7 @@ ClientManager::CreateSourceInternal(ClientType aType,
|
||||
}
|
||||
|
||||
ClientSourceConstructorArgs args(id, aType, aPrincipal, TimeStamp::Now());
|
||||
UniquePtr<ClientSource> source(new ClientSource(this, args));
|
||||
UniquePtr<ClientSource> source(new ClientSource(this, aEventTarget, args));
|
||||
source->Activate(GetActor());
|
||||
|
||||
return Move(source);
|
||||
@ -210,7 +211,8 @@ ClientManager::Startup()
|
||||
|
||||
// static
|
||||
UniquePtr<ClientSource>
|
||||
ClientManager::CreateSource(ClientType aType, nsIPrincipal* aPrincipal)
|
||||
ClientManager::CreateSource(ClientType aType, nsISerialEventTarget* aEventTarget,
|
||||
nsIPrincipal* aPrincipal)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(aPrincipal);
|
||||
@ -222,15 +224,16 @@ ClientManager::CreateSource(ClientType aType, nsIPrincipal* aPrincipal)
|
||||
}
|
||||
|
||||
RefPtr<ClientManager> mgr = GetOrCreateForCurrentThread();
|
||||
return mgr->CreateSourceInternal(aType, principalInfo);
|
||||
return mgr->CreateSourceInternal(aType, aEventTarget, principalInfo);
|
||||
}
|
||||
|
||||
// static
|
||||
UniquePtr<ClientSource>
|
||||
ClientManager::CreateSource(ClientType aType, const PrincipalInfo& aPrincipal)
|
||||
ClientManager::CreateSource(ClientType aType, nsISerialEventTarget* aEventTarget,
|
||||
const PrincipalInfo& aPrincipal)
|
||||
{
|
||||
RefPtr<ClientManager> mgr = GetOrCreateForCurrentThread();
|
||||
return mgr->CreateSourceInternal(aType, aPrincipal);
|
||||
return mgr->CreateSourceInternal(aType, aEventTarget, aPrincipal);
|
||||
}
|
||||
|
||||
// static
|
||||
|
@ -8,12 +8,13 @@
|
||||
|
||||
#include "mozilla/dom/ClientOpPromise.h"
|
||||
#include "mozilla/dom/ClientThing.h"
|
||||
#include "mozilla/ipc/PBackgroundSharedTypes.h"
|
||||
#include "nsIPrincipal.h"
|
||||
|
||||
class nsIPrincipal;
|
||||
|
||||
namespace mozilla {
|
||||
namespace ipc {
|
||||
class PBackgroundChild;
|
||||
class PrincipalInfo;
|
||||
} // namespace ipc
|
||||
namespace dom {
|
||||
|
||||
@ -48,6 +49,7 @@ class ClientManager final : public ClientThing<ClientManagerChild>
|
||||
|
||||
UniquePtr<ClientSource>
|
||||
CreateSourceInternal(ClientType aType,
|
||||
nsISerialEventTarget* aEventTarget,
|
||||
const mozilla::ipc::PrincipalInfo& aPrincipal);
|
||||
|
||||
already_AddRefed<ClientHandle>
|
||||
@ -79,10 +81,12 @@ public:
|
||||
Startup();
|
||||
|
||||
static UniquePtr<ClientSource>
|
||||
CreateSource(ClientType aType, nsIPrincipal* aPrincipal);
|
||||
CreateSource(ClientType aType, nsISerialEventTarget* aEventTarget,
|
||||
nsIPrincipal* aPrincipal);
|
||||
|
||||
static UniquePtr<ClientSource>
|
||||
CreateSource(ClientType aType, const mozilla::ipc::PrincipalInfo& aPrincipal);
|
||||
CreateSource(ClientType aType, nsISerialEventTarget* aEventTarget,
|
||||
const mozilla::ipc::PrincipalInfo& aPrincipal);
|
||||
|
||||
static already_AddRefed<ClientHandle>
|
||||
CreateHandle(const ClientInfo& aClientInfo,
|
||||
|
@ -75,12 +75,15 @@ ClientSource::GetDocShell() const
|
||||
}
|
||||
|
||||
ClientSource::ClientSource(ClientManager* aManager,
|
||||
nsISerialEventTarget* aEventTarget,
|
||||
const ClientSourceConstructorArgs& aArgs)
|
||||
: mManager(aManager)
|
||||
, mEventTarget(aEventTarget)
|
||||
, mOwner(AsVariant(Nothing()))
|
||||
, mClientInfo(aArgs.id(), aArgs.type(), aArgs.principalInfo(), aArgs.creationTime())
|
||||
{
|
||||
MOZ_ASSERT(mManager);
|
||||
MOZ_ASSERT(mEventTarget);
|
||||
}
|
||||
|
||||
void
|
||||
@ -238,5 +241,11 @@ ClientSource::Info() const
|
||||
return mClientInfo;
|
||||
}
|
||||
|
||||
nsISerialEventTarget*
|
||||
ClientSource::EventTarget() const
|
||||
{
|
||||
return mEventTarget;
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
@ -38,6 +38,7 @@ class ClientSource final : public ClientThing<ClientSourceChild>
|
||||
NS_DECL_OWNINGTHREAD
|
||||
|
||||
RefPtr<ClientManager> mManager;
|
||||
nsCOMPtr<nsISerialEventTarget> mEventTarget;
|
||||
|
||||
Variant<Nothing,
|
||||
RefPtr<nsPIDOMWindowInner>,
|
||||
@ -60,6 +61,7 @@ class ClientSource final : public ClientThing<ClientSourceChild>
|
||||
|
||||
// Private methods called by ClientManager
|
||||
ClientSource(ClientManager* aManager,
|
||||
nsISerialEventTarget* aEventTarget,
|
||||
const ClientSourceConstructorArgs& aArgs);
|
||||
|
||||
void
|
||||
@ -82,6 +84,9 @@ public:
|
||||
|
||||
const ClientInfo&
|
||||
Info() const;
|
||||
|
||||
nsISerialEventTarget*
|
||||
EventTarget() const;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
Loading…
Reference in New Issue
Block a user