/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla 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/MPL/ * * 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 object loading code. * * The Initial Developer of the Original Code is * Christian Biesinger . * Portions created by the Initial Developer are Copyright (C) 2005 * 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 MPL, 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 MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface nsIFrame; interface nsIObjectFrame; interface nsIPluginInstance; interface nsIDOMElement; interface nsIDOMClientRect; /** * This interface represents a content node that loads objects. */ [scriptable, uuid(1d89f35e-8f4b-4b79-b622-7be812a8babe)] interface nsIObjectLoadingContent : nsISupports { const unsigned long TYPE_LOADING = 0; const unsigned long TYPE_IMAGE = 1; const unsigned long TYPE_PLUGIN = 2; const unsigned long TYPE_DOCUMENT = 3; const unsigned long TYPE_NULL = 4; /** * The actual mime type (the one we got back from the network * request) for the element. */ readonly attribute ACString actualType; /** * Gets the type of the content that's currently loaded. See * the constants above for the list of possible values. */ readonly attribute unsigned long displayedType; /** * Gets the content type that corresponds to the give MIME type. See the * constants above for the list of possible values. If nothing else fits, * TYPE_NULL will be returned. */ unsigned long getContentTypeForMIMEType(in AUTF8String aMimeType); /** * Returns the plugin instance if it has already been instantiated. This * will never instantiate the plugin and so is safe to call even when * content script must not execute. */ [noscript] readonly attribute nsIPluginInstance pluginInstance; /** * Makes sure that a frame for this object exists, and that the plugin is * instantiated. This method does nothing if the type is not #TYPE_PLUGIN. * There is no guarantee that there will be a frame after this method is * called; for example, the node may have a display:none style. If plugin * instantiation is possible, it will be done synchronously by this method, * and the plugin instance will be returned. A success return value does not * necessarily mean that the instance is nonnull. * * This is a noscript method because it is internal and will go away once * plugin loading moves to content. * * @note If there is an error instantiating the plugin, this method will * trigger fallback to replacement content, and the type will change (and * this method will return a failure code) */ [noscript] nsIPluginInstance ensureInstantiation(); /** * Tells the content about an associated object frame. * This can be called multiple times for different frames. * * This is noscript because this is an internal method that will go away, and * because nsIObjectFrame is unscriptable. */ [noscript] void hasNewFrame(in nsIObjectFrame aFrame); /** * Tells the object to paint directly in this location ignoring any * positioning information that may have been provided otherwise */ void setAbsoluteScreenPosition(in nsIDOMElement element, in nsIDOMClientRect position, in nsIDOMClientRect clip); /** * If this object is in going to be printed, this method * returns the nsIObjectFrame object which should be used when * printing the plugin. The returned nsIFrame is in the original document, * not in the static clone. */ [noscript] nsIFrame getPrintFrame(); [noscript] void pluginCrashed(in AString pluginName, in boolean submittedCrashReport); };