/* -*- Mode: C++; tab-width: 2; 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 "nsIRequest.idl" interface nsIURI; interface nsIChannel; interface nsIRequestObserver; /** * nsIURIChecker * * The URI checker is a component that can be used to verify the existence * of a resource at the location specified by a given URI. It will use * protocol specific methods to verify the URI (e.g., use of HEAD request * for HTTP URIs). */ [scriptable, uuid(4660c1a1-be2d-4c78-9baf-c22984176c28)] interface nsIURIChecker : nsIRequest { /** * Initializes the URI checker. After this method is called, it is valid * to further configure the URI checker by calling its nsIRequest methods. * This method creates the channel that will be used to verify the URI. * In the case of the HTTP protocol, only a HEAD request will be issued. * * @param aURI * The URI to be checked. */ void init(in nsIURI aURI); /** * Returns the base channel that will be used to verify the URI. */ readonly attribute nsIChannel baseChannel; /** * Begin asynchronous checking URI for validity. Notification will be * asynchronous through the nsIRequestObserver callback interface. When * OnStartRequest is fired, the baseChannel attribute will have been * updated to reflect the final channel used (corresponding to any redirects * that may have been followed). * * Our interpretations of the nsIRequestObserver status codes: * NS_BINDING_SUCCEEDED: link is valid * NS_BINDING_FAILED: link is invalid (gave an error) * NS_BINDING_ABORTED: timed out, or cancelled * * @param aObserver * The object to notify when the link is verified. We will * call aObserver.OnStartRequest followed immediately by * aObserver.OnStopRequest. It is recommended that the caller use * OnStopRequest to act on the link's status. The underlying request * will not be cancelled until after OnStopRequest has been called. * @param aContext * A closure that will be passed back to the nsIRequestObserver * methods. */ void asyncCheck(in nsIRequestObserver aObserver, in nsISupports aContext); };