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();
32 // Cleanup the singleton instance on shutdown
33 static void Shutdown();
36 typedef nsInterfaceHashtable
<nsUint32HashKey
, nsIChannel
> ChannelHashtable
;
37 typedef nsInterfaceHashtable
<nsUint32HashKey
, nsIParentChannel
>
38 ParentChannelHashtable
;
40 ChannelHashtable mRealChannels
;
41 ParentChannelHashtable mParentChannels
;
45 static StaticRefPtr
<RedirectChannelRegistrar
> gSingleton
;
49 } // namespace mozilla