/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* 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/. */ #include "nsIFile.idl" %{C++ #include #include %} native OSType(OSType); native FSSpec(FSSpec); native FSRef(FSRef); [ptr] native FSRefPtr(FSRef); native CFURLRef(CFURLRef); [scriptable, builtinclass, uuid(623eca5b-c25d-4e27-be5a-789a66c4b2f7)] interface nsILocalFileMac : nsIFile { /** * initWithCFURL * * Init this object with a CFURLRef * * NOTE: Supported only for XP_MACOSX * NOTE: If the path of the CFURL is /a/b/c, at least a/b must exist beforehand. * * @param aCFURL the CoreFoundation URL * */ [noscript] void initWithCFURL(in CFURLRef aCFURL); /** * initWithFSRef * * Init this object with an FSRef * * NOTE: Supported only for XP_MACOSX * * @param aFSRef the native FSRef * */ [noscript] void initWithFSRef([const] in FSRefPtr aFSRef); /** * getCFURL * * Returns the CFURLRef of the file object. The caller is * responsible for calling CFRelease() on it. * * NOTE: Observes the state of the followLinks attribute. * If the file object is an alias and followLinks is TRUE, returns * the target of the alias. If followLinks is FALSE, returns * the unresolved alias file. * * NOTE: Supported only for XP_MACOSX * * @return * */ [noscript] CFURLRef getCFURL(); /** * getFSRef * * Returns the FSRef of the file object. * * NOTE: Observes the state of the followLinks attribute. * If the file object is an alias and followLinks is TRUE, returns * the target of the alias. If followLinks is FALSE, returns * the unresolved alias file. * * NOTE: Supported only for XP_MACOSX * * @return * */ [noscript] FSRef getFSRef(); /** * getFSSpec * * Returns the FSSpec of the file object. * * NOTE: Observes the state of the followLinks attribute. * If the file object is an alias and followLinks is TRUE, returns * the target of the alias. If followLinks is FALSE, returns * the unresolved alias file. * * @return * */ [noscript] FSSpec getFSSpec(); /** * fileSizeWithResFork * * Returns the combined size of both the data fork and the resource * fork (if present) rather than just the size of the data fork * as returned by GetFileSize() * */ readonly attribute int64_t fileSizeWithResFork; /** * fileType, creator * * File type and creator attributes * */ [noscript] attribute OSType fileType; [noscript] attribute OSType fileCreator; /** * launchWithDoc * * Launch the application that this file points to with a document. * * @param aDocToLoad Must not be NULL. If no document, use nsIFile::launch * @param aLaunchInBackground TRUE if the application should not come to the front. * */ void launchWithDoc(in nsIFile aDocToLoad, in boolean aLaunchInBackground); /** * openDocWithApp * * Open the document that this file points to with the given application. * * @param aAppToOpenWith The application with which to open the document. * If NULL, the creator code of the document is used * to determine the application. * @param aLaunchInBackground TRUE if the application should not come to the front. * */ void openDocWithApp(in nsIFile aAppToOpenWith, in boolean aLaunchInBackground); /** * isPackage * * returns true if a directory is determined to be a package under Mac OS 9/X * */ boolean isPackage(); /** * bundleDisplayName * * returns the display name of the application bundle (usually the human * readable name of the application) */ readonly attribute AString bundleDisplayName; /** * bundleIdentifier * * returns the identifier of the bundle */ readonly attribute AUTF8String bundleIdentifier; /** * Last modified time of a bundle's contents (as opposed to its package * directory). Our convention is to make the bundle's Info.plist file * stand in for the rest of its contents -- since this file contains the * bundle's version information and other identifiers. For non-bundles * this is the same as lastModifiedTime. */ readonly attribute int64_t bundleContentsLastModifiedTime; /** * Return whether or not the file has an extended attribute. * * @param aAttrName The attribute name to check for. * * @return Whether or not the extended attribute is present. */ bool hasXAttr(in ACString aAttrName); /** * Get the value of the extended attribute. * * @param aAttrName The attribute name to read. * * @return The extended attribute value. */ Array getXAttr(in ACString aAttrName); /** * Set an extended attribute. * * @param aAttrName The attribute name to set a value for. * @param aAttrValue The value to set for the attribute. */ void setXAttr(in ACString aAttrName, in Array aAttrValue); /** * Delete an extended attribute. * * @param aAttrName The extended attribute to delete. */ void delXAttr(in ACString aAttrName); }; %{C++ extern "C" { NS_EXPORT nsresult NS_NewLocalFileWithFSRef(const FSRef* aFSRef, bool aFollowSymlinks, nsILocalFileMac** result); NS_EXPORT nsresult NS_NewLocalFileWithCFURL(const CFURLRef aURL, bool aFollowSymlinks, nsILocalFileMac** result); } %}