image/decoders/icon/nsIconProtocolHandler.cpp

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/image/decoders/icon/nsIconProtocolHandler.cpp	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,92 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
     1.5 + *
     1.6 + * This Source Code Form is subject to the terms of the Mozilla Public
     1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.9 +
    1.10 +#include "nsIconChannel.h"
    1.11 +#include "nsIconURI.h"
    1.12 +#include "nsIconProtocolHandler.h"
    1.13 +#include "nsIURL.h"
    1.14 +#include "nsCRT.h"
    1.15 +#include "nsCOMPtr.h"
    1.16 +#include "nsIComponentManager.h"
    1.17 +#include "nsIServiceManager.h"
    1.18 +#include "nsNetCID.h"
    1.19 +
    1.20 +////////////////////////////////////////////////////////////////////////////////
    1.21 +
    1.22 +nsIconProtocolHandler::nsIconProtocolHandler() 
    1.23 +{
    1.24 +}
    1.25 +
    1.26 +nsIconProtocolHandler::~nsIconProtocolHandler() 
    1.27 +{}
    1.28 +
    1.29 +NS_IMPL_ISUPPORTS(nsIconProtocolHandler, nsIProtocolHandler, nsISupportsWeakReference)
    1.30 +
    1.31 +    
    1.32 +////////////////////////////////////////////////////////////////////////////////
    1.33 +// nsIProtocolHandler methods:
    1.34 +
    1.35 +NS_IMETHODIMP nsIconProtocolHandler::GetScheme(nsACString &result) 
    1.36 +{
    1.37 +  result = "moz-icon";
    1.38 +  return NS_OK;
    1.39 +}
    1.40 +
    1.41 +NS_IMETHODIMP nsIconProtocolHandler::GetDefaultPort(int32_t *result) 
    1.42 +{
    1.43 +  *result = 0;
    1.44 +  return NS_OK;
    1.45 +}
    1.46 +
    1.47 +NS_IMETHODIMP nsIconProtocolHandler::AllowPort(int32_t port, const char *scheme, bool *_retval)
    1.48 +{
    1.49 +    // don't override anything.  
    1.50 +    *_retval = false;
    1.51 +    return NS_OK;
    1.52 +}
    1.53 +
    1.54 +NS_IMETHODIMP nsIconProtocolHandler::GetProtocolFlags(uint32_t *result)
    1.55 +{
    1.56 +  *result = URI_NORELATIVE | URI_NOAUTH | URI_IS_UI_RESOURCE |
    1.57 +            URI_IS_LOCAL_RESOURCE;
    1.58 +  return NS_OK;
    1.59 +}
    1.60 +
    1.61 +NS_IMETHODIMP nsIconProtocolHandler::NewURI(const nsACString &aSpec,
    1.62 +                                            const char *aOriginCharset, // ignored
    1.63 +                                            nsIURI *aBaseURI,
    1.64 +                                            nsIURI **result) 
    1.65 +{
    1.66 +  
    1.67 +  nsCOMPtr<nsIURI> uri = new nsMozIconURI();
    1.68 +  if (!uri) return NS_ERROR_OUT_OF_MEMORY;
    1.69 +
    1.70 +  nsresult rv = uri->SetSpec(aSpec);
    1.71 +  if (NS_FAILED(rv)) return rv;
    1.72 +
    1.73 +  NS_ADDREF(*result = uri);
    1.74 +  return NS_OK;
    1.75 +}
    1.76 +
    1.77 +NS_IMETHODIMP nsIconProtocolHandler::NewChannel(nsIURI* url, nsIChannel* *result)
    1.78 +{
    1.79 +  NS_ENSURE_ARG_POINTER(url);
    1.80 +  nsIconChannel* channel = new nsIconChannel;
    1.81 +  if (!channel)
    1.82 +    return NS_ERROR_OUT_OF_MEMORY;
    1.83 +  NS_ADDREF(channel);
    1.84 +
    1.85 +  nsresult rv = channel->Init(url);
    1.86 +  if (NS_FAILED(rv)) {
    1.87 +    NS_RELEASE(channel);
    1.88 +    return rv;
    1.89 +  }
    1.90 +
    1.91 +  *result = channel;
    1.92 +  return NS_OK;
    1.93 +}
    1.94 +
    1.95 +////////////////////////////////////////////////////////////////////////////////

mercurial