/* -*- Mode: C++; tab-width: 2; 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 "nsIURI.idl" interface nsIChannel; interface nsIEventSinkGetter; /** * The nsIURL interface provides convenience methods that further * break down the path portion of nsIURI: * * http://directory/fileBaseName.fileExtension?query * http://directory/fileBaseName.fileExtension#ref * http://directory/fileBaseName.fileExtension;param * \ \ / * \ ----------------------- * \ | / * \ fileName / * ---------------------------- * | * filePath */ [scriptable, uuid(d6116970-8034-11d3-9399-00104ba0fd40)] interface nsIURL : nsIURI { //////////////////////////////////////////////////////////////////////////// // The path attribute is broken down into the following attributes: // filePath, param, query, and ref: /** * Returns a path including the directory and file portions of a * URL. E.g. The filePath of "http://foo/bar.html#baz" is * "/foo/bar.html". */ attribute string filePath; /** * Returns the parameters specified after the ; in the URL. * */ attribute string param; /** * Returns the query portion (the part after the "?") of the URL. * If there isn't one, an empty string is returned. */ attribute string query; /** * Returns the reference portion (the part after the "#") of the URL. * If there isn't one, an empty string is returned. */ attribute string ref; //////////////////////////////////////////////////////////////////////////// // The filePath attribute is further broken down into the following // attributes: directory, file: /** * Returns the directory portion of a URL. * If the URL denotes a path to a directory and not a file, * e.g. http://foo/bar/, then the Directory attribute accesses * the complete /foo/bar/ portion, and the FileName is the * empty string. If the trailing slash is omitted, then the * Directory is /foo/ and the file is bar (i.e. this is a * syntactic, not a semantic breakdown of the Path). * And hence dont rely on this for something to be a definitely * be a file. But you can get just the leading directory portion * for sure. */ attribute string directory; /** * Returns the file name portion of a URL. * If the URL denotes a path to a directory and not a file, * e.g. http://foo/bar/, then the Directory attribute accesses * the complete /foo/bar/ portion, and the FileName is the * empty string. Note that this is purely based on searching * for the last trailing slash. And hence dont rely on this to * be a definite file. */ attribute string fileName; //////////////////////////////////////////////////////////////////////////// // The fileName attribute is further broken down into the following // attributes: fileName, fileExtension: attribute string fileBaseName; /** * Returns the file extension portion of a filename in a url. * If a file extension does not exist, the empty string is returned. */ attribute string fileExtension; }; %{C++ /** * Protocol writers can obtain a default nsIURL implementation by calling the * component manager with NS_STANDARDURL_CID. The implementation returned will * only implement the set of accessors specified by nsIURL. After obtaining the * instance from the component manager, the Init routine must be called on it * to initialize it from the user's URL spec. */ #define NS_STANDARDURL_CID \ { /* de9472d0-8034-11d3-9399-00104ba0fd40 */ \ 0xde9472d0, \ 0x8034, \ 0x11d3, \ {0x93, 0x99, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40} \ } %}