content/base/public/nsHostObjectProtocolHandler.h

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

     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 nsHostObjectProtocolHandler_h
     6 #define nsHostObjectProtocolHandler_h
     8 #include "mozilla/Attributes.h"
     9 #include "nsIProtocolHandler.h"
    10 #include "nsIURI.h"
    11 #include "nsCOMPtr.h"
    12 #include "nsIInputStream.h"
    14 #define BLOBURI_SCHEME "blob"
    15 #define MEDIASTREAMURI_SCHEME "mediastream"
    16 #define MEDIASOURCEURI_SCHEME "mediasource"
    17 #define FONTTABLEURI_SCHEME "moz-fonttable"
    18 #define RTSPURI_SCHEME "rtsp"
    20 class nsIDOMBlob;
    21 class nsIDOMMediaStream;
    22 class nsIPrincipal;
    24 namespace mozilla {
    25 namespace dom {
    26 class MediaSource;
    27 }
    28 }
    30 class nsHostObjectProtocolHandler : public nsIProtocolHandler
    31 {
    32 public:
    33   nsHostObjectProtocolHandler();
    34   virtual ~nsHostObjectProtocolHandler() {}
    35   NS_DECL_ISUPPORTS
    37   // nsIProtocolHandler methods, except for GetScheme which is only defined
    38   // in subclasses.
    39   NS_IMETHOD GetDefaultPort(int32_t *aDefaultPort) MOZ_OVERRIDE;
    40   NS_IMETHOD GetProtocolFlags(uint32_t *aProtocolFlags) MOZ_OVERRIDE;
    41   NS_IMETHOD NewURI(const nsACString & aSpec, const char * aOriginCharset, nsIURI *aBaseURI, nsIURI * *_retval) MOZ_OVERRIDE;
    42   NS_IMETHOD NewChannel(nsIURI *aURI, nsIChannel * *_retval) MOZ_OVERRIDE;
    43   NS_IMETHOD AllowPort(int32_t port, const char * scheme, bool *_retval) MOZ_OVERRIDE;
    45   static nsresult GenerateURIString(const nsACString &aScheme,
    46                                     nsACString &aUri);
    48   // Methods for managing uri->object mapping
    49   // AddDataEntry creates the URI with the given scheme and returns it in aUri
    50   static nsresult AddDataEntry(const nsACString& aScheme,
    51                                nsISupports* aObject,
    52                                nsIPrincipal* aPrincipal,
    53                                nsACString& aUri);
    54   static void RemoveDataEntry(const nsACString& aUri);
    55   static nsIPrincipal* GetDataEntryPrincipal(const nsACString& aUri);
    56   static void Traverse(const nsACString& aUri, nsCycleCollectionTraversalCallback& aCallback);
    58 private:
    59   static void Init(void);
    60 };
    62 class nsBlobProtocolHandler : public nsHostObjectProtocolHandler
    63 {
    64 public:
    65   NS_IMETHOD GetScheme(nsACString &result) MOZ_OVERRIDE;
    66 };
    68 class nsMediaStreamProtocolHandler : public nsHostObjectProtocolHandler
    69 {
    70 public:
    71   NS_IMETHOD GetScheme(nsACString &result) MOZ_OVERRIDE;
    72 };
    74 class nsMediaSourceProtocolHandler : public nsHostObjectProtocolHandler
    75 {
    76 public:
    77   NS_IMETHOD GetScheme(nsACString &result) MOZ_OVERRIDE;
    78 };
    80 class nsFontTableProtocolHandler : public nsHostObjectProtocolHandler
    81 {
    82 public:
    83   NS_IMETHOD GetScheme(nsACString &result);
    84   NS_IMETHOD NewURI(const nsACString & aSpec, const char * aOriginCharset, nsIURI *aBaseURI, nsIURI * *_retval);
    85 };
    87 inline bool IsBlobURI(nsIURI* aUri)
    88 {
    89   bool isBlob;
    90   return NS_SUCCEEDED(aUri->SchemeIs(BLOBURI_SCHEME, &isBlob)) && isBlob;
    91 }
    93 inline bool IsRtspURI(nsIURI* aUri)
    94 {
    95   bool isRtsp;
    96   return NS_SUCCEEDED(aUri->SchemeIs(RTSPURI_SCHEME, &isRtsp)) && isRtsp;
    97 }
    99 inline bool IsMediaStreamURI(nsIURI* aUri)
   100 {
   101   bool isStream;
   102   return NS_SUCCEEDED(aUri->SchemeIs(MEDIASTREAMURI_SCHEME, &isStream)) && isStream;
   103 }
   105 inline bool IsMediaSourceURI(nsIURI* aUri)
   106 {
   107   bool isMediaSource;
   108   return NS_SUCCEEDED(aUri->SchemeIs(MEDIASOURCEURI_SCHEME, &isMediaSource)) && isMediaSource;
   109 }
   111 inline bool IsFontTableURI(nsIURI* aUri)
   112 {
   113   bool isFont;
   114   return NS_SUCCEEDED(aUri->SchemeIs(FONTTABLEURI_SCHEME, &isFont)) && isFont;
   115 }
   117 extern nsresult
   118 NS_GetStreamForBlobURI(nsIURI* aURI, nsIInputStream** aStream);
   120 extern nsresult
   121 NS_GetStreamForMediaStreamURI(nsIURI* aURI, nsIDOMMediaStream** aStream);
   123 extern nsresult
   124 NS_GetSourceForMediaSourceURI(nsIURI* aURI, mozilla::dom::MediaSource** aSource);
   126 #define NS_BLOBPROTOCOLHANDLER_CID \
   127 { 0xb43964aa, 0xa078, 0x44b2, \
   128   { 0xb0, 0x6b, 0xfd, 0x4d, 0x1b, 0x17, 0x2e, 0x66 } }
   130 #define NS_MEDIASTREAMPROTOCOLHANDLER_CID \
   131 { 0x27d1fa24, 0x2b73, 0x4db3, \
   132 	{ 0xab, 0x48, 0xb9, 0x83, 0x83, 0x40, 0xe0, 0x81 } }
   134 #define NS_MEDIASOURCEPROTOCOLHANDLER_CID \
   135 { 0x12ef31fc, 0xa8fb, 0x4661, \
   136 	{ 0x9a, 0x63, 0xfb, 0x61, 0x04,0x5d, 0xb8, 0x61 } }
   138 #define NS_FONTTABLEPROTOCOLHANDLER_CID \
   139 { 0x3fc8f04e, 0xd719, 0x43ca, \
   140   { 0x9a, 0xd0, 0x18, 0xee, 0x32, 0x02, 0x11, 0xf2 } }
   142 #endif /* nsHostObjectProtocolHandler_h */

mercurial