netwerk/streamconv/nsStreamConverterService.h
author Ian Bicking <ianb@colorstudy.com>
Fri, 27 Oct 2017 13:30:51 -0500
changeset 445215 9516c23c531eaae11cc6edf53e197446a8b3bcfb
parent 438301 67a8e12324569dd730347187e2ffccae486c758b
child 472483 17e1f96d453f869f9bb64cc1d889320ca2b4adba
permissions -rw-r--r--
Bug 1412091 - Export Screenshots 23.0.0 to Firefox (translations only) r=_6a68 a=gchang MozReview-Commit-ID: DBw6vmmkzjn

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef __nsstreamconverterservice__h___
#define __nsstreamconverterservice__h___

#include "nsIStreamConverterService.h"

#include "nsClassHashtable.h"
#include "nsCOMArray.h"
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"

class nsAtom;

class nsStreamConverterService : public nsIStreamConverterService {
public:
    /////////////////////////////////////////////////////
    // nsISupports methods
    NS_DECL_ISUPPORTS


    /////////////////////////////////////////////////////
    // nsIStreamConverterService methods
    NS_DECL_NSISTREAMCONVERTERSERVICE

    /////////////////////////////////////////////////////
    // nsStreamConverterService methods
    nsStreamConverterService();

private:
    virtual ~nsStreamConverterService();

    // Responsible for finding a converter for the given MIME-type.
    nsresult FindConverter(const char *aContractID, nsTArray<nsCString> **aEdgeList);
    nsresult BuildGraph(void);
    nsresult AddAdjacency(const char *aContractID);
    nsresult ParseFromTo(const char *aContractID, nsCString &aFromRes, nsCString &aToRes);

    // member variables
    nsClassHashtable<nsCStringHashKey, nsTArray<RefPtr<nsAtom>>>
        mAdjacencyList;
};

#endif // __nsstreamconverterservice__h___