gecko/docshell/base/nsIURIFixup.idl
Gijs Kruitbosch 02d9143ece Bug 1042519 - test. should result in a keyword lookup instead of an error page, r=bz,mak
Also taking the opportunity to rework the nsIURIFixupInfo interface to use more sensible booleans, and the relevant test to specify outcomes directly, instead of trying to use the same logic as the implementation to infer them from the input.

--HG--
extra : rebase_source : 43b54b9ff412c05dc3fd2575a80919fc085d2d49
2014-07-25 11:46:07 +01:00

147 lines
5.0 KiB
Plaintext

/* -*- Mode: IDL; 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 "nsISupports.idl"
interface nsIURI;
interface nsIInputStream;
/**
* Interface indicating what we found/corrected when fixing up a URI
*/
[scriptable, uuid(62aac1e0-3da8-4920-bd1b-a54fc2e2eb24)]
interface nsIURIFixupInfo : nsISupports
{
/**
* Consumer that asked for fixed up URI.
*/
attribute nsISupports consumer;
/**
* Our best guess as to what URI the consumer will want. Might
* be null if we couldn't salvage anything (for instance, because
* the input was invalid as a URI and FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP
* was not passed)
*/
readonly attribute nsIURI preferredURI;
/**
* The fixed-up original input, *never* using a keyword search.
* (might be null if the original input was not recoverable as
* a URL, e.g. "foo bar"!)
*/
readonly attribute nsIURI fixedURI;
/**
* Whether the preferred option ended up using a keyword search.
*/
readonly attribute boolean fixupUsedKeyword;
/**
* Whether we changed the protocol instead of using one from the input as-is.
*/
readonly attribute boolean fixupChangedProtocol;
/**
* Whether we created an alternative URI. We might have added a prefix and/or
* suffix, the contents of which are controlled by the
* browser.fixup.alternate.prefix and .suffix prefs, with the defaults being
* "www." and ".com", respectively.
*/
readonly attribute boolean fixupCreatedAlternateURI;
/**
* The original input
*/
readonly attribute AUTF8String originalInput;
};
/**
* Interface implemented by objects capable of fixing up strings into URIs
*/
[scriptable, uuid(80d4932e-bb2e-4afb-98e0-de9cc9ea7d82)]
interface nsIURIFixup : nsISupports
{
/** No fixup flags. */
const unsigned long FIXUP_FLAG_NONE = 0;
/**
* Allow the fixup to use a keyword lookup service to complete the URI.
* The fixup object implementer should honour this flag and only perform
* any lengthy keyword (or search) operation if it is set.
*/
const unsigned long FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP = 1;
/**
* Tell the fixup to make an alternate URI from the input URI, for example
* to turn foo into www.foo.com.
*/
const unsigned long FIXUP_FLAGS_MAKE_ALTERNATE_URI = 2;
/**
* Fix common scheme typos.
*/
const unsigned long FIXUP_FLAG_FIX_SCHEME_TYPOS = 8;
/* Note that flag 4 is available. */
/**
* Converts an internal URI (e.g. a wyciwyg URI) into one which we can
* expose to the user, for example on the URL bar.
*
* @param aURI The URI to be converted
* @return nsIURI The converted, exposable URI
* @throws NS_ERROR_MALFORMED_URI when the exposable portion of aURI is malformed
* @throws NS_ERROR_UNKNOWN_PROTOCOL when we can't get a protocol handler service
* for the URI scheme.
*/
nsIURI createExposableURI(in nsIURI aURI);
/**
* Converts the specified string into a URI, first attempting
* to correct any errors in the syntax or other vagaries. Returns
* a wellformed URI or nullptr if it can't.
*
* @param aURIText Candidate URI.
* @param aFixupFlags Flags that govern ways the URI may be fixed up.
* @param aPostData The POST data to submit with the returned
* URI (see nsISearchSubmission).
*/
nsIURI createFixupURI(in AUTF8String aURIText, in unsigned long aFixupFlags,
[optional] out nsIInputStream aPostData);
/**
* Same as createFixupURI, but returns information about what it corrected
* (e.g. whether we could rescue the URI or "just" generated a keyword
* search URI instead).
*
* @param aURIText Candidate URI.
* @param aFixupFlags Flags that govern ways the URI may be fixed up.
* @param aPostData The POST data to submit with the returned
* URI (see nsISearchSubmission).
*/
nsIURIFixupInfo getFixupURIInfo(in AUTF8String aURIText,
in unsigned long aFixupFlags,
[optional] out nsIInputStream aPostData);
/**
* Converts the specified keyword string into a URI. Note that it's the
* caller's responsibility to check whether keywords are enabled and
* whether aKeyword is a sensible keyword.
*
* @param aKeyword The keyword string to convert into a URI
* @param aPostData The POST data to submit to the returned URI
* (see nsISearchSubmission).
*
* @throws NS_ERROR_FAILURE if the resulting URI requires submission of POST
* data and aPostData is null.
*/
nsIURI keywordToURI(in AUTF8String aKeyword,
[optional] out nsIInputStream aPostData);
};