1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef RedirectChannelRegistrar_h__
6 #define RedirectChannelRegistrar_h__
8 #include "nsIRedirectChannelRegistrar.h"
10 #include "nsIChannel.h"
11 #include "nsIParentChannel.h"
12 #include "nsInterfaceHashtable.h"
13 #include "mozilla/Attributes.h"
14 #include "mozilla/Mutex.h"
19 class RedirectChannelRegistrar final
: public nsIRedirectChannelRegistrar
{
21 NS_DECL_NSIREDIRECTCHANNELREGISTRAR
23 RedirectChannelRegistrar();
26 ~RedirectChannelRegistrar() = default;
30 static already_AddRefed
<nsIRedirectChannelRegistrar
> GetOrCreate();
33 using ChannelHashtable
= nsInterfaceHashtable
<nsUint64HashKey
, nsIChannel
>;
34 using ParentChannelHashtable
=
35 nsInterfaceHashtable
<nsUint64HashKey
, nsIParentChannel
>;
37 ChannelHashtable mRealChannels
;
38 ParentChannelHashtable mParentChannels
;
39 Mutex mLock MOZ_UNANNOTATED
;
41 static StaticRefPtr
<RedirectChannelRegistrar
> gSingleton
;
45 } // namespace mozilla