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 +////////////////////////////////////////////////////////////////////////////////