/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: NPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Netscape Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the NPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the NPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface nsIProtocolHandler; interface nsIChannel; interface nsIURI; interface nsIURLParser; interface nsIFile; [scriptable, uuid(ab7c3a84-d488-11d3-8cda-0060b0fc14a3)] interface nsIIOService : nsISupports { /** * Returns a protocol handler for a given URI scheme. * * @param scheme URI scheme * @return reference to nsIProtcolHandler */ nsIProtocolHandler getProtocolHandler(in string scheme); /** * Returns the protocol flags for a given scheme. * * @param scheme URI scheme * @return returns unsigned long for protocol flags */ unsigned long getProtocolFlags(in string scheme); /** * This method constructs a new URI by first determining the scheme * of the URI spec, and then delegating the construction of the URI * to the protocol handler for that scheme. QueryInterface can be used * on the resulting URI object to obtain a more specific type of URI. * @see nsIProtocolHandler::newURI */ nsIURI newURI(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI); /** * This method constructs a new file URI * * @param aFile nsIFile from which to make an URI from * @return reference to a new nsIURI object */ nsIURI newFileURI(in nsIFile aFile); /** * Creates a channel for a given URI. The notificationCallbacks argument * is used to obtain the appropriate callbacks for the URI's protocol * from the application. * * @param originalURI - Specifies the original URI which caused the * creation of this channel. This can occur when the construction of * one channel (e.g. for resource:) causes another channel to be created * on its behalf (e.g. a file: channel), or if a redirect occurs, * causing the current URL to become different from the original URL. * If NULL, the aURI parameter will be used as the originalURI instead. * * @param aURI nsIURI to make a channel from * @return a reference to the new nsIChannel object */ nsIChannel newChannelFromURI(in nsIURI aURI); /** * Shortcut equivalent to newChannelFromURI(newURI(...)) */ nsIChannel newChannel(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI); /** * Returns true if networking is in "offline" mode. When in offline mode, * attempts to access the network will fail (although this is not * necessarily corrolated with whether there is actually a network * available -- that's hard to detect without causing the dialer to * come up). */ attribute boolean offline; /** * Checks if a port number is banned. * * |allowPort| will check a list of "known-to-do-bad-things" * port numbers. If the given port is found on the blacklist, * |allowPort| will ask the protocol handler if it wishes to override. * Scheme can be null. */ boolean allowPort(in long port, in string scheme); //////////////////////////////////////////////////////////////////////////// // URL parsing utilities /** * Utility for protocol implementors -- extracts the scheme from a URL * string, consistently and according to spec. * * @param urlString the URL string to parse * @return scheme * * @throws NS_ERROR_MALFORMED_URI if urlString is not of the right form. */ ACString extractScheme(in AUTF8String urlString); /** * returns the protocol specific URL parser */ nsIURLParser getParserForScheme(in string scheme); /** * @param urlString absolute URL path. * @param flags combination of url_XXX flags. * * @throws NS_ERROR_MALFORMED_URI if urlString is not of the right form. */ AUTF8String extractUrlPart(in AUTF8String urlString, in short flags); /** * Constants for the mask in the call to extractUrlPart * * XXX these should really be enumerated in left-to-right order! */ const short url_Scheme = (1<<0); const short url_Username = (1<<1); const short url_Password = (1<<2); const short url_Host = (1<<3); const short url_Directory = (1<<4); const short url_FileBaseName = (1<<5); const short url_FileExtension = (1<<6); const short url_Param = (1<<7); const short url_Query = (1<<8); const short url_Ref = (1<<9); const short url_Path = (1<<10); const short url_Port = (1<<11); /** * Resolves a relative path string containing "." and ".." * with respect to a base path (assumed to already be resolved). * For example, resolving "../../foo/./bar/../baz.html" w.r.t. * "/a/b/c/d/e/" yields "/a/b/c/foo/baz.html". Attempting to * ascend above the base results in the NS_ERROR_MALFORMED_URI * exception. If basePath is null, it treats it as "/". * * @param relativePath a relative URI * @param basePath a base URI * * @return a new string, representing canonical uri */ AUTF8String resolveRelativePath(in AUTF8String relativePath, in AUTF8String basePath); /** * conversions between nsILocalFile and a file url string */ /** * gets a file:// url out of an nsIFile * @param file the file to extract the path from * @return a file:// style url string */ AUTF8String getURLSpecFromFile(in nsIFile file); /** * Sets the native path of the file given the url string * @param file the file to initialize with the given spec * @param url the url string which will be used to initialize the file */ void initFileFromURLSpec(in nsIFile file, in AUTF8String url); }; .