/* -*- 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.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 Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ #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; }; //////////////////////////////////////////////////////////////////////////////// /** * 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. */ [scriptable, uuid(8793370a-311f-11d4-9876-00c04fa0cf4a)] interface nsIStandardURL : nsISupports { const unsigned long URLTYPE_STANDARD = 1; const unsigned long URLTYPE_AUTHORITY = 2; const unsigned long URLTYPE_NO_AUTHORITY = 3; void init(in unsigned long urlType, in long defaultPort, in string initialSpec, in nsIURI initialBaseURI); }; %{C++ #define NS_STANDARDURL_CID \ { /* de9472d0-8034-11d3-9399-00104ba0fd40 */ \ 0xde9472d0, \ 0x8034, \ 0x11d3, \ {0x93, 0x99, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40} \ } %} //////////////////////////////////////////////////////////////////////////////// interface nsIFile; /** * nsIFileURL is used for the file: protocol, and gives access to the * underlying nsIFile object. */ [scriptable, uuid(d26b2e2e-1dd1-11b2-88f3-8545a7ba7949)] interface nsIFileURL : nsIURL { attribute nsIFile file; };