LCOV - code coverage report
Current view: top level - image/decoders/icon - nsIconProtocolHandler.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 16 49 32.7 %
Date: 2017-07-14 16:53:18 Functions: 6 13 46.2 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
       2             :  *
       3             :  * This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #include "nsIconProtocolHandler.h"
       8             : 
       9             : #include "nsIconChannel.h"
      10             : #include "nsIconURI.h"
      11             : #include "nsIURL.h"
      12             : #include "nsCRT.h"
      13             : #include "nsCOMPtr.h"
      14             : #include "nsIComponentManager.h"
      15             : #include "nsIServiceManager.h"
      16             : #include "nsNetCID.h"
      17             : 
      18             : ///////////////////////////////////////////////////////////////////////////////
      19             : 
      20           3 : nsIconProtocolHandler::nsIconProtocolHandler()
      21           3 : { }
      22             : 
      23           0 : nsIconProtocolHandler::~nsIconProtocolHandler()
      24           0 : { }
      25             : 
      26          43 : NS_IMPL_ISUPPORTS(nsIconProtocolHandler, nsIProtocolHandler,
      27             :                   nsISupportsWeakReference)
      28             : 
      29             : 
      30             : ///////////////////////////////////////////////////////////////////////////////
      31             : // nsIProtocolHandler methods:
      32             : 
      33             : NS_IMETHODIMP
      34           0 : nsIconProtocolHandler::GetScheme(nsACString& result)
      35             : {
      36           0 :   result = "moz-icon";
      37           0 :   return NS_OK;
      38             : }
      39             : 
      40             : NS_IMETHODIMP
      41           0 : nsIconProtocolHandler::GetDefaultPort(int32_t* result)
      42             : {
      43           0 :   *result = 0;
      44           0 :   return NS_OK;
      45             : }
      46             : 
      47             : NS_IMETHODIMP
      48           0 : nsIconProtocolHandler::AllowPort(int32_t port,
      49             :                                  const char* scheme,
      50             :                                  bool* _retval)
      51             : {
      52             :     // don't override anything.
      53           0 :     *_retval = false;
      54           0 :     return NS_OK;
      55             : }
      56             : 
      57             : NS_IMETHODIMP
      58           1 : nsIconProtocolHandler::GetProtocolFlags(uint32_t* result)
      59             : {
      60           1 :   *result = URI_NORELATIVE | URI_NOAUTH | URI_IS_UI_RESOURCE |
      61             :             URI_IS_LOCAL_RESOURCE;
      62           1 :   return NS_OK;
      63             : }
      64             : 
      65             : NS_IMETHODIMP
      66           3 : nsIconProtocolHandler::NewURI(const nsACString& aSpec,
      67             :                               const char* aOriginCharset, // ignored
      68             :                               nsIURI* aBaseURI,
      69             :                               nsIURI** result)
      70             : {
      71           6 :   nsCOMPtr<nsIMozIconURI> uri = new nsMozIconURI();
      72           3 :   if (!uri) return NS_ERROR_OUT_OF_MEMORY;
      73             : 
      74           3 :   nsresult rv = uri->SetSpec(aSpec);
      75           3 :   if (NS_FAILED(rv)) return rv;
      76             : 
      77           6 :   nsCOMPtr<nsIURL> iconURL;
      78           3 :   uri->GetIconURL(getter_AddRefs(iconURL));
      79           3 :   if (iconURL) {
      80           0 :     uri = new nsNestedMozIconURI();
      81           0 :     rv = uri->SetSpec(aSpec);
      82           0 :     if (NS_FAILED(rv)) {
      83           0 :       return rv;
      84             :     }
      85             :   }
      86             : 
      87           3 :   NS_ADDREF(*result = uri);
      88           3 :   return NS_OK;
      89             : }
      90             : 
      91             : NS_IMETHODIMP
      92           0 : nsIconProtocolHandler::NewChannel2(nsIURI* url,
      93             :                                    nsILoadInfo* aLoadInfo,
      94             :                                    nsIChannel** result)
      95             : {
      96           0 :   NS_ENSURE_ARG_POINTER(url);
      97           0 :   nsIconChannel* channel = new nsIconChannel;
      98           0 :   if (!channel) {
      99           0 :     return NS_ERROR_OUT_OF_MEMORY;
     100             :   }
     101           0 :   NS_ADDREF(channel);
     102             : 
     103           0 :   nsresult rv = channel->Init(url);
     104           0 :   if (NS_FAILED(rv)) {
     105           0 :     NS_RELEASE(channel);
     106           0 :     return rv;
     107             :   }
     108             : 
     109             :   // set the loadInfo on the new channel
     110           0 :   rv = channel->SetLoadInfo(aLoadInfo);
     111           0 :   if (NS_FAILED(rv)) {
     112           0 :     NS_RELEASE(channel);
     113           0 :     return rv;
     114             :   }
     115             : 
     116           0 :   *result = channel;
     117           0 :   return NS_OK;
     118             : }
     119             : 
     120             : NS_IMETHODIMP
     121           0 : nsIconProtocolHandler::NewChannel(nsIURI* url, nsIChannel** result)
     122             : {
     123           0 :   return NewChannel2(url, nullptr, result);
     124             : }
     125             : 
     126             : ////////////////////////////////////////////////////////////////////////////////

Generated by: LCOV version 1.13