/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * The contents of this file are subject to the Netscape Public License
 * Version 1.0 (the "NPL"); you may not use this file except in
 * compliance with the NPL.  You may obtain a copy of the NPL at
 * http://www.mozilla.org/NPL/
 *
 * Software distributed under the NPL is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
 * for the specific language governing rights and limitations under the
 * NPL.
 *
 * The Initial Developer of this code under the NPL is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
 * Reserved.
 */

#include "nsIAppShellComponent.idl"

interface nsIURI;
interface nsIDocumentLoader;
interface nsIChannel;

%{C++
#ifndef NECKO   // gross hack since we can't put ifdefs in idl:
#define nsIChannel nsIURI
#endif
%}


/*----------------------- nsIUnknownContentTypeHandler -------------------------
| This file describes the interface for Mozilla's "unknown content-type        |
| handler" component.  This component is notified whenever the browser         |
| encounters data of some unknown content (mime) type.                         |
|                                                                              |
| This component provides one component-specific member function:              |
| HandleUnknownContentType.  This method's areguments include:                 |
|   o the URL at which the content resides                                     |
|   o the content-type                                                         |
|   o the window that encountered the unknown content.                         |
|                                                                              |
| The expected response by implementors of this interface is to display a      |
| dialog prompting the user for direction on how to handle the content         |
| (e.g., download it, pick an application to use to view it, etc.) and then    |
| carry out that request (perhaps with assistance from other components).      |
------------------------------------------------------------------------------*/
[scriptable, uuid(a6cf90ef-15b3-11d2-932e-00805f8add32)]
interface nsIUnknownContentTypeHandler : nsIAppShellComponent {

    void HandleUnknownContentType( in nsIChannel aURL,
                                   in string aContentType, 
                                   in nsIDocumentLoader aDocLoader );
};


%{C++
#define NS_IUNKNOWNCONTENTTYPEHANDLER_PROGID NS_IAPPSHELLCOMPONENT_PROGID "/unknownContentType"
#define NS_IUNKNOWNCONTENTTYPEHANDLER_CLASSNAME "Mozilla Unknown Content-Type Handler Component"
#define NS_DECL_IUNKNOWNCONTENTTYPEHANDLER                                \
    NS_IMETHOD HandleUnknownContentType( nsIChannel *aURL,                    \
                                         const char *aContentType,        \
                                         nsIDocumentLoader *aDocLoader );
%}
