Software Development Interface

Status of this Document

Copyright 1994, 1995 Spyglass, Inc.
This document may be distributed for the purpose of discussion of or developing World Wide Web technology.

This document is a work-in-progress draft. As such, this document may change without notice.

All comments or questions should be directed to:

Paul Rohr
Spyglass, Inc.
1800 Woodfield Drive
Savoy, IL 61874

paul@spyglass.com


$Date: 1995/03/02 12:00:00$

Abstract

This document describes a cross-platform API which can be used to extend the capabilities of Web browsers by integrating them with other applications. The API is specified as a set of platform-independent generic verbs which can be issued either to or from Web browsers. Platform-specific implementations of this spec are given for the AppleEvents and DDE transports. Future transports to be provided include OLE2 and TCP/IP (for UNIX).

To help understand this API, some typical uses are also described. While Web browser vendors are encouraged to implement the full API, no minimal subset is defined. Various external applications will have different integration needs, so each application is free to use only the subset they want.

The intention here is to provide an equivalent set of capabilities to NCSA's Common Client Interface (CCI). As both this document and the CCI document evolve, they should converge on the same feature set. For example, the CCI Application Programmer's Interface can be implemented using these generic verbs.


Generic Verbs

Since this is a platform-independent specification, all details about the semantics and parameters of individual verbs are provided in this section. Any details unique to a given platform and/or transport mechanism can be found in the appropriate section.

Each verb in the API is listed by name and direction (is it sent TO or FROM the Web browser), along with a list of its arguments, return value (if any), and a description of its semantics. Optional arguments are enclosed in [square brackets]. For ease of reference, verbs are grouped into four categories. Verbs in the first two categories, basic and utility, are all sent TO the Web browser. The third category comprises messages FROM the Web browser, which are sent only if you register to receive them. The fourth category comprises progress messages, which can be sent TO or FROM Web browsers.

NOTE: This specification was designed to allow applications to interact with a fully asynchronous, multi-threaded Web browser. However, it does not require that either the browser or the other application be asynchronous.

Basic Verbs

The basic functionality that an external application usually requires from the Web browser is to retrieve and/or render Web documents.

OpenURL ( TO Web browser )
URL,
[FileSpec],
WindowID,
Flags,
[FormData],
[MIMEType],
[ProgressApp],
[ResultApp]

Returns: TransactionID

Retrieves URL off the Web, either to dump to a file (FileSpec) or display in a given WindowID. Passing OpenURL a WindowID of 0 tells the Web browser to open a new window. WindowID 0xFFFFFFFF refers to the front window. Valid Flags settings include any combination of the following:

1. Ignore the document cache
2. Ignore the image cache
4. Operate in background mode

Additional options allow for the posting of forms (FormData) of a given MIMEType. If specified, ProgressApp can be named to handle the user interface for progress messages.

Immediately returns a unique TransactionID. When the requested URL has been accessed and all associated documents loaded, the Web browser will issue an OpenURLResult to the ResultApp. If ResultApp is empty, it indicates that the application does not care about the return value, and therefore, no OpenURLResult will be issued.

A TransactionID of 0 means that the requested URL is already in the document window, 0xFFFFFFFF means that the data was not of an appropriate MIME type to display in a Web browser window, and 0xFFFFFFFE means that the application should consider the operation to have succeeded (Super-ACK). In all three cases, no OpenURLResult will be issued.

A TransactionID of 0xFFFFFFFD means that an invalid URL was specified, and 0xFFFFFFFC means that an invalid output filename was specified. In both cases, the operation failed and no OpenURLResult will be issued.

OpenURLResult ( FROM Web browser )
TransactionID,
ActualWindowID

This verb is issued when all Web browser processing initiated by the OpenURL associated with TransactionID has completely finished.

Indicates the ActualWindowID the document was displayed in, where a value of 0 means that the operation failed, and 0xFFFFFFFF means that the data was not of an appropriate MIME type to display in a Web browser window.

ShowFile ( TO Web browser )
FileSpec,
MIMEType,
WindowID,
URL,
[ResultApp]

Returns: TransactionID

Passes FileSpec containing data of a given MIMEType to be rendered in a given WindowID. Also specified is a URL which allows this document to be reloaded if needed.

Immediately returns a unique TransactionID. When the requested URL has been accessed and all associated documents loaded, the Web browser will issue an ShowFileResult to the ResultApp. If ResultApp is empty, it indicates that the application does not care about the return value, and therefore, no ShowFileResult will be issued.

A TransactionID of 0 means that the requested URL is already in the document window, 0xFFFFFFFF means that the data was not of an appropriate MIME type to display in a Web browser window, and 0xFFFFFFFE means that the application should consider the operation to have succeeded (Super-ACK). In all three cases, no ShowFileResult will be issued.

A TransactionID of 0xFFFFFFFD means that an invalid URL was specified. In this case, the operation failed and no ShowFileResult will be issued.

ShowFileResult ( FROM Web browser )
TransactionID,
ActualWindowID

This verb is issued when all Web browser processing initiated by the ShowFile associated with TransactionID has completely finished.

Indicates the ActualWindowID the document was displayed in, where a value of 0 means that the operation failed, and 0xFFFFFFFF means that the data was not of an appropriate MIME type to display in a Web browser window.

CancelTransaction ( TO Web browser )
TransactionID

Returns: Success

Tells the Web browser to cancel a TransactionID in progress which the application had initiated via an OpenURL or ShowFile command. Applications can only cancel transactions which they have initiated.

Immediately returns a Success flag. Success = TRUE means that the transaction will be canceled and no OpenURLResult or ShowFileResult (as appropriate) will be issued. Success = FALSE means that the requested TransactionID cannot be cancelled by this application.

Utility Verbs

These are some additional utility verbs which may be useful to Web browser-aware applications.

QueryVersion ( TO Web browser )
VersionMajor,
VersionMinor

Returns: BrowserVersionMajor, BrowserVersionMinor, UserAgent

Tells the Web browser that an application which wishes to communicate with it supports a specific Version (Major . Minor) of this SDI specification.

Returns the maximum BrowserVersion (Major . Minor) supported by this Web browser (subject to the constraint that BrowserVersion is less than or equal to Version). A BrowserVersion of 0.0 means that no common version is available. Also reports the browser's HTTP UserAgent information.

Activate ( TO Web browser )
WindowID,
Flags

Returns: ActualWindowID

Tells the Web browser to bring itself to the front and show WindowID. Flags are reserved for future expansion, and should be set to 0.

Upon completion, returns ActualWindowID, where a value of 0 means that the operation failed.

ListWindows ( TO Web browser )
Returns: (list of WindowID's)

Returns a list of WindowID's for each window currently being used by the Web browser. These WindowIDs are synthetic, and do not necessarily have any platform-specific significance.

GetWindowInfo ( TO Web browser )
WindowID
Returns: (list of Window info)

Returns a list of Window info items for WindowID, namely the URL and window Title.

ParseAnchor ( TO Web browser )
MainURL,
RelativeURL

Returns: URL

Combines a base URL (MainURL) and a relative URL (RelativeURL) to produce a fully-specified URL.

Exit ( TO Web browser )
Tells the Web browser to shut down and exit. Used by scripting applications which want to control the Web browser as a slave process. Generally not needed.

Registered Verbs

A tighter level of integration between the Web browser and other applications can be achieved if there is a two-way flow of information back and forth between the applications.

Messages are sent FROM the Web browser only if you register to receive them, via the RegisterProtocol, RegisterViewer, RegisterURLEcho, or RegisterWindowClose verbs. Verbs sent FROM the Web browser are listed between the relevant Register and UnRegister events.

Applications which have registered to receive messages from the Web browser must unregister when they are shut down. The Web browser will not automatically unregister viewers, protocol handlers, etc.

RegisterNow ( FROM Web browser )
BrowserApp,
TransactionID

Returns: Timeout

Tells applications which wish to register themselves that BrowserApp is a Web browser which can now be communicated with via this interface. Passes a unique TransactionID to be used by the matching RegisterDone message, if any.

Returns a Timeout value, indicating the amount of time (in seconds) the application will need to register itself. If the application does not send a RegisterDone message within Timeout seconds, the Web browser will assume that the registration has failed. A Timeout of 0 means that the application will not register itself.

RegisterDone ( TO Web browser )
TransactionID,
Result

This verb is issued when all application processing initiated by the RegisterNow associated with TransactionID has finished.

Indicates the Result of the operation, where a value of 0 means that the operation failed, and a value of 1 means that the operation succeeded. A value of 2 means that the operation ran out of time. At the Web browser's discretion, another RegisterNow operation may then be started.


RegisterProtocol ( TO Web browser )
Application,
Protocol

Returns: Success

Notifies the Web browser that Application is ready to handle all URLs for a given Protocol, such as MAILTO, NEWS, etc.

If multiple apps attempt to register a given protocol, only the first one succeeds (Success = TRUE).

OpenURL ( FROM Web browser )
URL,
[FileSpec],
WindowID,
Flags,
[FormData],
[MIMEType],
[ProgressApp],
[ResultApp]

Returns: TransactionID

Passes URL for this protocol application to handle. The FileSpec and WindowID are made available to be passed back to the Web browser as part of a nested ShowFile call. The FormData and MIMEType fields can either be used by the application and/or passed back to the Web browser as part of a nested OpenURL call. Flags are reserved for future expansion. If specified, ProgressApp can be named to handle the user interface for progress messages.

Immediately returns a unique TransactionID. When the requested URL has been accessed and all associated documents loaded, the application will issue an OpenURLResult to the ResultApp. If ResultApp is empty, it indicates that the Web browser does not care about the return value, and therefore, no OpenURLResult will be issued.

A TransactionID of 0 means that the requested URL is already in the document window, 0xFFFFFFFF means that the data was not of an appropriate MIME type to display in a Web browser window, and 0xFFFFFFFE means that the application should consider the operation to have succeeded (Super-ACK). In all three cases, no OpenURLResult will be issued.

A TransactionID of 0xFFFFFFFD means that an invalid URL was specified, and 0xFFFFFFFC means that an invalid output filename was specified. In both cases, the operation failed and no OpenURLResult will be issued.

OpenURLResult ( TO Web browser )
TransactionID,
ActualWindowID

This verb is issued when all protocol application processing initiated by the OpenURL associated with TransactionID has completely finished.

Indicates the ActualWindowID the document was displayed in, where a value of 0 means that the operation failed, and 0xFFFFFFFF means that the data was not of an appropriate MIME type to display in a Web browser window.

CancelTransaction ( FROM Web browser )
TransactionID

Returns: Success

Tells the protocol application to cancel a TransactionID in progress which the Web browser had initiated via an OpenURL command. Web browsers can only cancel transactions which they have initiated.

Immediately returns a Success flag. Success = TRUE means that the transaction will be canceled and no OpenURLResult will be issued. Success = FALSE means that the requested TransactionID cannot be cancelled by this Web browser.

UnRegisterProtocol ( TO Web browser )
Application,
Protocol

Notifies the Web browser that Application no longer wishes to receive Protocol URLs.


RegisterViewer ( TO Web browser )

Application,
MIMEType,
Flags

Returns: Success

Notifies the Web browser that Application is ready to handle all MIMEType documents. The Flags may be any of the following values:

1. Save to a temporary file and use platform-specific OpenDocument event
2. Use QueryViewer
4. Always use ViewDocFile
8. Always use ViewDocData

If multiple apps attempt to register a given MIMEType, only the first one succeeds (Success = TRUE). RegisterViewer dynamically overrides any relevant user- or OEM-configured viewers.

QueryViewer ( FROM Web browser )
URL,
MIMEType

Returns: FileSpec

Asks the application handling MIMEType documents where it wants a temporary copy of the document associated with URL to be stored. The reply should be provided in FileSpec.

This allows the application to handle deletion of unused tempfiles, so that the Web browser doesn't delete them out from under it.

If the application does not specify a FileSpec in response to a specific QueryViewer message, then the Web browser will handle the creation and/or deletion of a tempfile for that URL as appropriate, and the application must not delete the file passed to it in the subsequent ViewDocFile message.

ViewDocCache ( FROM Web browser )
URL,
WindowID

Returns: Success

Asks a registered viewer if has a copy of URL in its own internal cache. If so, the application is expected to immediately render the document and then return Success = TRUE). If not, return Success = FALSE so that the Web Browser or another registered viewer can process the URL.

The WindowID attribute is passed along to let the application know which Web browser window generated this request. This allows the application to pass the same WindowID back to the Web browser in related requests.

Note that this message may get sent to multiple registered viewers, at the discretion of the Web browser.

ViewDocData ( FROM Web browser )
URL,
MIMEType,
WindowID,
(actual data)

Tells the application handling MIMEType documents to render the (actual data) which was obtained from URL. The WindowID attribute is passed along to let the application know which Web browser window generated this request. This allows the application to pass the same WindowID back to the Web browser in related requests.

ViewDocFile ( FROM Web browser )
FileSpec,
URL,
MIMEType,
WindowID

Tells the application handling MIMEType documents to render the data in FileSpec which was obtained from URL. The WindowID attribute is passed along to let the application know which Web browser window generated this request. This allows the application to pass the same WindowID back to the Web browser in related requests.

UnRegisterViewer ( TO Web browser )
Application,
MIMEType

Notifies the Web browser that Application no longer wishes to receive MIMEType documents.


RegisterURLEcho ( TO Web browser )
Application

Returns: Success

Notifies the Web browser that Application would like to receive URLEcho events for all windows.

Multiple apps can be concurrently registered to receive URLEcho events.

URLEcho ( FROM Web browser )
URL,
MIMEType,
WindowID,
[ReferrerURL]

Tells the application that the Web browser just loaded a URL of a given MIMEType to WindowID. Also mentions the ReferrerURL it was launched from, for use by mapping apps.

In certain cases, such as when a URL is processed by another application, the MIMEType may be unknown, and thus will be represented as an empty string. A WindowID of 0xFFFFFFFF means that the Web browser didn't wind up displaying the URL in one of its own windows.

UnRegisterURLEcho ( TO Web browser )
Application

Notifies the Web browser that Application no longer wishes to receive URLEcho events.


RegisterWindowClose ( TO Web browser )
Application,
WindowID

Returns: ActualWindowID

Notifies the Web browser that Application would like to receive WindowClose events from WindowID. Upon completion, returns ActualWindowID, where a value of 0 means that the operation failed.

WindowClose ( FROM Web browser )
WindowID,
Exiting

Tells the application that WindowID just closed. Also indicates whether this happened because the Web browser is Exiting (value = TRUE), or because of user interface operations.

Since WindowIDs are unique, and not reused when a window is closed, the Web browser will also perform an automatic UnRegisterWindowClose for that WindowID.

UnRegisterWindowClose ( TO Web browser )
Application,
WindowID

Notifies the Web browser that Application no longer wishes to receive WindowClose events from WindowID.

Progress Verbs

The application that handles the processing of a given URL may be different from the application which handles the user interface for presenting the results of that processing. Thus, it will sometimes be necessary to delegate the handling of progress indicators such as message lines, progress thermometers, spinning globes, etc. to another application. The following messages can be used to delegate the user interface handling of progress indicators for a specific transaction to a specific window in another application.

This family of messages can potentially be sent either TO or FROM the Web browser during processing of the relevant OpenURL event.

BeginProgress ( TO or FROM Web browser )
TransactionID,
Message

Returns: Success

Initializes a progress indicator for an existing OpenURL TransactionID with an initial Message.

If multiple apps attempt to control the same progress indicator, only the first one succeeds (Success = TRUE).

SetProgressRange ( TO or FROM Web browser )
TransactionID,
Max

Sets a Max value for the progress indicator associated with TransactionID. The range begins at 0 and extends upwards. Setting a Max value of 0 hides the progress indicator.

MakingProgress ( TO or FROM Web browser )
TransactionID,
Message,
Current

Returns: Cancel

Updates the progress indicator associated with TransactionID to reflect the Current value. Will also change the Message displayed, unless that field contains an empty string, in which case the current message is preserved.

Returns a flag indicating whether the user wishes to Cancel the transaction. Upon receipt of Cancel = TRUE, the application which sent this message should abort processing and then send an EndProgress message. Progress-monitoring applications which don't allow users to interrupt lengthy transactions will always return Cancel = FALSE.

EndProgress ( TO or FROM Web browser )
TransactionID

Notifies the application that the progress indicator associated with TransactionID is no longer needed.


Implementation: AppleEvents

Listed below are the AppleEvent-specific details for each verb in the API. For more information on the semantics and parameters of each verb, see the generic verbs section above.

Note that much of this information can also be found in the AETE (Apple Event Terminology Extension) resource which gets shipped with AppleEvents-aware copies of the Web browser.

Events which can be sent to the Web browser use the class 'WWW!'. Events which the Web browser generates use the class 'WWW?'. These classes are temporary until an official class is assigned.

TODO: Adjust spec to reflect async verb changes.

OpenURL ( TO Web browser )
WWW!   OURL  
----   TEXT   URL,
INTO   fss    [FileSpec],
WIND   long   WindowID,
FLGS   long   Flags,
POST   ****   [FormData],
MIME   TEXT   [MIMEType]
PROG   psn    [ProgressApp]
Reply:
rply   long   ActualWindowID

ShowFile ( TO Web browser )
WWW!   SHWF  
----   alis   FileSpec,
MIME   TEXT   MIMEType,
WIND   long   WindowID,
URL    TEXT   URL
Reply:
rply   long   ActualWindowID

Activate ( TO Web browser )
WWW!   ACTV  
WIND   long   WindowID,
FLGS   long   Flags,
Reply:
rply   long   ActualWindowID

ListWindows ( TO Web browser )
WWW!   LSTW  
----   null   (not used)
Reply:
rply   list   (list of WindowID's, each of type long)

GetWindowInfo ( TO Web browser )
WWW!   WNFO  
----   long   WindowID
Reply:
rply   list   List containing following items:
       TEXT   URL
       TEXT   Title

ParseAnchor ( TO Web browser )
WWW!   PRSA  
----   TEXT   MainURL,
RELA   TEXT   RelativeURL
Reply:
rply   TEXT   URL

Exit ( TO Web browser )
Not needed. The AppleEvent core event class includes a Quit Application event which performs the same function.

RegisterProtocol ( TO Web browser )
WWW!   RGPR  
----   sign   Application
PROT   TEXT   Protocol,
Reply:
rply   bool   Success

OpenURL ( FROM Web browser )
WWW!   OURL  
----   TEXT   URL,
INTO   fss    [FileSpec],
WIND   long   WindowID,
FLGS   long   Flags,
POST   ****   [FormData],
MIME   TEXT   [MIMEType]
PROG   psn    [ProgressApp]
Reply:
rply   long   ActualWindowID
Note:
This is identical to the OpenURL event sent to the web browser, which is why it uses the WWW! class.

UnRegisterProtocol ( TO Web browser )
WWW!   UNRP  
----   sign   Application
PROT   TEXT   Protocol,
Reply:
Not used

RegisterViewer ( TO Web browser )
WWW!   RGVW  
----   sign   Application
MIME   TEXT   MIMEType,
MTHD   shor   Flags,
FTYP   type   FileType (not needed if using ViewDocData)
Reply:
rply   bool   Success

QueryViewer ( FROM Web browser )
WWW?   QVWR  
----   TEXT   URL,
MIME   TEXT   MIMEType
Reply:
rply   fss    FileSpec

ViewDocCache ( FROM Web browser )
WWW?   VCHD  
----   TEXT   URL,
WIND   long   WindowID
Reply:
rply   bool   Success

ViewDocData ( FROM Web browser )
To be specified
Reply:
To be specified

ViewDocFile ( FROM Web browser )
WWW?   VDOC  
----   alis   FileSpec,
URL    TEXT   URL,
MIME   TEXT   MIMEType,
WIND   long   WindowID
Reply:
Not used

UnRegisterViewer ( TO Web browser )
WWW!   UNRV  
----   sign   Application
MIME   TEXT   MIMEType,
Reply:
Not used

RegisterURLEcho ( TO Web browser )
WWW!   RGUE  
----   sign   Application
Reply:
rply   bool   Success

URLEcho ( FROM Web browser )
WWW?   URLE  
----   TEXT   URL,
MIME   TEXT   MIMEType,
WIND   long   WindowID,
RFRR   TEXT   [ReferrerURL]
Reply:
Not used

UnRegisterURLEcho ( TO Web browser )
WWW!   UNRU  
----   sign   Application
Reply:
Not used

RegisterWindowClose ( TO Web browser )
WWW!   RGWC  
----   sign   Application
WIND   long   WindowID
Reply:
rply   long   ActualWindowID

WindowClose ( FROM Web browser )
WWW?   WNDC  
----   long   WindowID
EXIT   bool   Exiting
Reply:
Not used

UnRegisterWindowClose ( TO Web browser )
WWW!   UNRC  
----   sign   Application
WIND   long   WindowID
Reply:
Not used

BeginProgress ( TO or FROM Web browser )
WWW!   PRBG  
----   long   WindowID
PMSG   TEXT   Message
Reply:
rply   long   TransactionID

SetProgressRange ( TO or FROM Web browser )
WWW!   PRSR  
----   long   TransactionID
MAXV   long   Max
Reply:
Not used

MakingProgress ( TO or FROM Web browser )
WWW!   PRMK  
----   long   TransactionID
PMSG   TEXT   Message
CURR   long   Current
Reply:
rply   bool   Cancel

EndProgress ( TO or FROM Web browser )
WWW!   PREN  
----   long   TransactionID
Reply:
Not used

Implementation: DDE

Listed below are the DDE-specific details for each verb in the API. For more information on the semantics and parameters of each verb, see the generic verbs section above.

The following DDE-specific attributes are provided for each verb in the API: a topic, item, transaction type, and data. These attributes can be used to synthesize DDE messages of the appropriate type. Note that the DDE item and data are both null-terminated strings composed of comma-delimited arguments. For more information on DDE programming, see the appropriate manuals supplied with your scripting or programming language.

Messages are sent to the Web browser under a browser-specific DDE service name. For example, Enhanced Mosaic uses the service name Mosaic.

Notation

In the detail sections below, a standard notation is used to indicate argument and result types. A name prefixed with qs indicates a quoted string. (To embed a quote character within a quoted string, use the \" character combination.) A name prefixed with s indicates a string, unquoted. A name prefixed with b indicates a Boolean value which must be either TRUE or FALSE. A name prefixed with l indicates a long value. A lWindowID refers to a unique window identifier which the Web browser will provide. The qsResultApp, qsProgressApp, qsBrowserApp, and qsApplication strings each contain the DDE service name of the relevant application.

At the implementation level, all DDE items are passed as strings that have to be parsed, but the DDE data (ie, the "return value") is only a string when it has to be. For example, GetWindowInfo returns two strings, qsURL and qsTitle. ParseAnchor returns a string too. RegisterProtocol, however, does not return a string but a BOOL (4 byte integer).

OpenURL ( TO Web browser )
Topic: WWW_OpenURL
Item: qsURL, [qsFileSpec], lWindowID, lFlags, [qsFormData], [qsMIMEType], [qsProgressApp], [qsResultApp]
Transaction: XTYP_REQUEST
Data: lTransactionID

OpenURLResult ( FROM Web browser )
Topic: WWW_OpenURLResult
Item: lTransactionID, lActualWindowID
Transaction: XTYP_POKE
Data: Not used

ShowFile ( TO Web browser )
Topic: WWW_ShowFile
Item: qsFileSpec, qsMIMEType, lWindowID, qsURL, [qsResultApp]
Transaction: XTYP_REQUEST
Data: lTransactionID

ShowFileResult ( FROM Web browser )
Topic: WWW_ShowFileResult
Item: lTransactionID, lActualWindowID
Transaction: XTYP_POKE
Data: Not used

CancelTransaction ( TO Web browser )
Topic: WWW_CancelTransaction
Item: lTransactionID
Transaction: XTYP_REQUEST
Data: bSuccess

QueryVersion ( TO Web browser )
Topic: WWW_QueryVersion
Item: lVersionMajor, lVersionMinor
Transaction: XTYP_REQUEST
Data: lBrowserVersionMajor, lBrowserVersionMinor, sUserAgent

Activate ( TO Web browser )
Topic: WWW_Activate
Item: lWindowID, lFlags
Transaction: XTYP_REQUEST
Data: lActualWindowID

ListWindows ( TO Web browser )
Topic: WWW_ListWindows
Item: WWW_ListWindows
Transaction: XTYP_REQUEST
Data: lArrayItems, (array of lWindowIDs)

GetWindowInfo ( TO Web browser )
Topic: WWW_GetWindowInfo
Item: lWindowID
Transaction: XTYP_REQUEST
Data: qsURL, qsTitle

ParseAnchor ( TO Web browser )
Topic: WWW_ParseAnchor
Item: qsMainURL, qsRelativeURL
Transaction: XTYP_REQUEST
Data: qsURL

Exit ( TO Web browser )
Topic: WWW_Exit
Item: WWW_Exit
Transaction: XTYP_POKE
Data: Not used

RegisterNow ( FROM Web browser )
Topic: WWW_RegisterNow
Item: qsBrowserApp, lTransactionID
Transaction: XTYP_REQUEST
Data: lTimeout

RegisterDone ( TO Web browser )
Topic: WWW_RegisterDone
Item: lTransactionID, lResult
Transaction: XTYP_POKE
Data: Not used

RegisterProtocol ( TO Web browser )
Topic: WWW_RegisterProtocol
Item: qsApplication, qsProtocol
Transaction: XTYP_REQUEST
Data: bSuccess

OpenURL ( FROM Web browser )
Topic: WWW_OpenURL
Item: qsURL, [qsFileSpec], lWindowID, lFlags, [qsFormData], [qsMIMEType], [qsProgressApp], [qsResultApp]
Transaction: XTYP_REQUEST
Data: lTransactionID

OpenURLResult ( TO Web browser )
Topic: WWW_OpenURLResult
Item: lTransactionID, lActualWindowID
Transaction: XTYP_POKE
Data: Not used

CancelTransaction ( FROM Web browser )
Topic: WWW_CancelTransaction
Item: lTransactionID
Transaction: XTYP_REQUEST
Data: bSuccess

UnRegisterProtocol ( TO Web browser )
Topic: WWW_UnRegisterProtocol
Item: qsApplication, qsProtocol
Transaction: XTYP_REQUEST
Data: bSuccess

RegisterViewer ( TO Web browser )
Topic: WWW_RegisterViewer
Item: qsApplication, qsMIMEType, lFlags
Transaction: XTYP_REQUEST
Data: bSuccess

QueryViewer ( FROM Web browser )
Topic: WWW_QueryViewer
Item: qsURL, qsMIMEType
Transaction: XTYP_REQUEST
Data: qsFileSpec

ViewDocCache ( FROM Web browser )
Topic: WWW_ViewDocData
Item: qsURL, lWindowID
Transaction: XTYP_REQUEST
Data: bSuccess

ViewDocData ( FROM Web browser )
To be specified

ViewDocFile ( FROM Web browser )
Topic: WWW_ViewDocFile
Item: qsFileSpec, qsURL, qsMIMEType, lWindowID
Transaction: XTYP_POKE
Data: Not used

UnRegisterViewer ( TO Web browser )
Topic: WWW_UnRegisterViewer
Item: qsApplication, qsMIMEType
Transaction: XTYP_REQUEST
Data: bSuccess

RegisterURLEcho ( TO Web browser )
Topic: WWW_RegisterURLEcho
Item: qsApplication
Transaction: XTYP_REQUEST
Data: bSuccess

URLEcho ( FROM Web browser )
Topic: WWW_URLEcho
Item: qsURL, qsMIMEType, lWindowID, [qsReferrerURL]
Transaction: XTYP_POKE
Data: Not used

UnRegisterURLEcho ( TO Web browser )
Topic: WWW_UnRegisterURLEcho
Item: qsApplication
Transaction: XTYP_REQUEST
Data: bSuccess

RegisterWindowClose ( TO Web browser )
Topic: WWW_RegisterWindowClose
Item: qsApplication, lWindowID
Transaction: XTYP_REQUEST
Data: lActualWindowID

WindowClose ( FROM Web browser )
Topic: WWW_WindowClose
Item: lWindowID, bExiting
Transaction: XTYP_POKE
Data: Not used

UnRegisterWindowClose ( TO Web browser )
Topic: WWW_UnRegisterWindowClose
Item: qsApplication, lWindowID
Transaction: XTYP_REQUEST
Data: bSuccess

BeginProgress ( TO or FROM Web browser )
Topic: WWW_BeginProgress
Item: lTransactionID, qsMessage
Transaction: XTYP_REQUEST
Data: bSuccess

SetProgressRange ( TO or FROM Web browser )
Topic: WWW_SetProgressRange
Item: lTransactionID, lMax
Transaction: XTYP_POKE
Data: Not used

MakingProgress ( TO or FROM Web browser )
Topic: WWW_MakingProgress
Item: lTransactionID, qsMessage, lCurrent
Transaction: XTYP_REQUEST
Data: bCancel

EndProgress ( TO or FROM Web browser )
Topic: WWW_EndProgress
Item: lTransactionID
Transaction: XTYP_REQUEST
Data: bSuccess


Typical Uses

This section describes the portions of the API which might be used to support various types of Web browser-friendly applications. This list is not intended to be exhaustive, but merely illustrative.

External Viewer

In addition to the basic and utility verbs, add support to receive and handle the RegisterViewer family of verbs.

Protocol Handler

In addition to the basic and utility verbs, add support to receive and handle the RegisterProtocol family of verbs.

Search Tool

This can be implemented by just using the forms-posting options of the OpenURL verb. It may also be desirable to have the search tool act as an external viewer for a custom search results format.