Renamed nsIWebBrowserApp with nsIWebBrowserChrome. Added some additional methods and more fully specified the ones that were there. Changed the interfaces to forward declare referenced interfaces rather than including them all. Added topLevelWindow to nsIWebBrowser. Provided implementation for these changes.

This commit is contained in:
tbogard%aol.net 1999-11-18 09:17:07 +00:00
Родитель fe1df31ce7
Коммит 229d9ade3d
8 изменённых файлов: 123 добавлений и 165 удалений

Просмотреть файл

@ -27,7 +27,7 @@ XPIDLSRCS= \
.\nsIProgress.idl \
.\nsIProgressListener.idl \
.\nsIWebBrowser.idl \
.\nsIWebBrowserApp.idl \
.\nsIWebBrowserChrome.idl \
.\nsIWebBrowserNav.idl \
$(NULL)

Просмотреть файл

@ -36,6 +36,11 @@ nsIProgress
nsIBaseWindow
nsIScrollable
nsITextScroll
Outwardly communicates with:
----------------------------
nsIWebBrowserChrome
nsIInterfaceRequestor
*/
%{ C++

Просмотреть файл

@ -1,144 +0,0 @@
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* 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 the Mozilla browser.
*
* The Initial Developer of the Original Code is Netscape
* Communications, Inc. Portions created by Netscape are
* Copyright (C) 1999, Mozilla. All Rights Reserved.
*
* Contributor(s):
* Travis Bogard <travis@netscape.com>
*/
#include "nsISupports.idl"
#include "nsIProgressListener.idl"
/**
* The nsIProgress interface is used to look at the progress of a given browser
* loading.
*/
[scriptable, uuid(69E5DF04-7B8B-11d3-AF61-00A024FFC08C)]
interface nsIProgress : nsISupports
{
/*
Connection Status Steps
step_dns - Looking up requested host.
step_connecting - Connecting to requested host.
step_negotiating - Negotiating connection to the server
(Authentication/ Authorization).
step_transferring - Transferring data from host.
step_done - All completed successfully.
step_failedDNS - DNS lookup failed.
step_failedConnect - Connecting to server failed.
step_failedTranfer - Transfer failed.
step_userCancelled - User cancelled load.
*/
const long step_dns = 1;
const long step_connecting = 2;
const long step_negotiating = 3;
const long step_transferring = 4;
const long step_done = 5;
const long step_failedDNS = 6;
const long step_failedConnect = 7;
const long step_failedTransfer = 8;
const long step_userCancelled = 9;
/*
Registers a listener to be notified of Progress Events
@param listener - The listener interface to be called when a progress event
occurs.
@param cookie - This is an optional parameter to receieve a cookie to use
to unregister rather than the original interface pointer. This may
be nsnull.
@return NS_OK - Listener was registered successfully.
NS_INVALID_ARG - The listener passed in was either nsnull,
or was already registered with this progress interface.
*/
void addProgressListener(in nsIProgressListener listener, out long cookie);
/*
Removes a previously registered listener of Progress Events
@param listener - The listener interface previously registered with
AddListener() this may be nsnull if a valid cookie is provided.
@param cookie - A cookie that was returned from a previously called
AddListener() call. This may be nsnull if a valid listener interface
is passed in.
@return NS_OK - Listener was successfully unregistered.
NS_ERROR_INVALID_ARG - Neither the cookie nor the listener point
to a previously registered listener.
*/
void removeProgressListener(in nsIProgressListener listener, in long cookie);
/*
Current connection Status of the browser. This will be one of the enumerated
connection progress steps.
*/
readonly attribute long connectionStatus;
/*
Simple boolean to know if the browser is active or not. This provides the
same information that the connectionStatus attribute does. This however
allows you to avoid having to check the various connection steps.
*/
readonly attribute boolean active;
/*
The current position of progress. This is between 0 and maxSelfProgress.
This is the position of only this progress object. It doesn not include
the progress of all children.
*/
readonly attribute long curSelfProgress;
/*
The maximum position that progress will go to. This sets a relative
position point for the current progress to relate to. This is the max
position of only this progress object. It does not include the progress of
all the children.
*/
readonly attribute long maxSelfProgress;
/*
The current position of progress for this object and all children added
together. This is between 0 and maxTotalProgress.
*/
readonly attribute long curTotalProgress;
/*
The maximum position that progress will go to for the max of this progress
object and all children. This sets the relative position point for the
current progress to relate to.
*/
readonly attribute long maxTotalProgress;
/*
Retrieves the progress object for a particular child part.
@param childPart - The number of the child part you wish to retrieve.
@param childProgress - The returned progress interface for the requested
child.
*/
void getChildPart(in long childPart, out nsIProgress childProgress);
/*
Number of Child progress parts.
*/
readonly attribute long numChildParts;
};

Просмотреть файл

@ -21,27 +21,15 @@
*/
#include "nsISupports.idl"
#include "nsIInterfaceRequestor.idl"
#include "nsIDocShell.idl"
interface nsIDocShell;
interface nsIInterfaceRequestor;
interface nsIWebBrowserChrome;
/**
* The nsIWebBrowser
*/
/*
{69E5DF00-7B8B-11d3-AF61-00A024FFC08C} -
{69E5DF99-7B8B-11d3-AF61-00A024FFC08C} have been reserved for nsWebBrowser
Interfaces.
Currently Used:
{69E5DF00-7B8B-11d3-AF61-00A024FFC08C} - nsIWebBrowser
{69E5DF01-7B8B-11d3-AF61-00A024FFC08C} - nsIWebBrowserNav
{69E5DF02-7B8B-11d3-AF61-00A024FFC08C} - Available
{69E5DF03-7B8B-11d3-AF61-00A024FFC08C} - nsIWebBrowserApp
{69E5DF04-7B8B-11d3-AF61-00A024FFC08C} - nsIProgress
{69E5DF05-7B8B-11d3-AF61-00A024FFC08C} - nsIProgressListener
*/
[scriptable, uuid(69E5DF00-7B8B-11d3-AF61-00A024FFC08C)]
interface nsIWebBrowser : nsISupports
{
@ -84,8 +72,20 @@ interface nsIWebBrowser : nsISupports
void removeWebBrowserListener(in nsIInterfaceRequestor listener, in long cookie);
/*
The current docShell that is loaded at the root. This will change as
different pages are loaded.
This is the top level window embedding the browser. The object passed in
will be QI'd and used for setting positioning, chrome elements, etc of the
containing window. This interface is implemented by the embedding app.
The topLevelWindow object will be QId for nsIInterfaceRequestor, if it
is found, it is considered and implicit addition to the webBrowserListener
list and will be queried first. Implementations of this interface should
not refcount the topLevelWindow as it is considered the owner of the browser
window. That therefore means that when the topLevelWindow goes away, it
must set topLevelWindow to nsnull.
*/
attribute nsIWebBrowserChrome topLevelWindow;
/*
The root docShell of the browserWindow.
*/
readonly attribute nsIDocShell docShell;
};

Просмотреть файл

Просмотреть файл

@ -0,0 +1,76 @@
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* 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 the Mozilla browser.
*
* The Initial Developer of the Original Code is Netscape
* Communications, Inc. Portions created by Netscape are
* Copyright (C) 1999, Mozilla. All Rights Reserved.
*
* Contributor(s):
* Travis Bogard <travis@netscape.com>
*/
#include "nsISupports.idl"
interface nsIWebBrowser;
/**
* The nsIWebBrowserChrome
*/
[scriptable, uuid(BA434C60-9D52-11d3-AFB0-00A024FFC08C)]
interface nsIWebBrowserChrome : nsISupports
{
/*
Called when the js status value changes. nsnull will be passed when
there is no longer any js Status.
*/
void setJSStatus(in wstring status);
/*
Called when the current link the mouse is over changes. nsnull will
be passed when the mouse is no longer over a link.
*/
void setOverLink(in wstring link);
/*
Called when the page is requesting the chrome to change the title.
*/
void setTitle(in wstring title);
/*
This is the currently loaded webBrowser. The browser chrome may be
told to set the webBrowser object to a new object via setting of this
attribute. In this case the implementer is responsible for taking the
new webBrowser object and doing any necessary initialization or setup
as if it had created the webBrowser itself. This includes positioning
setting up listeners etc.
*/
attribute nsIWebBrowser webBrowser;
/*
Tells the implementer of this interface to create a new webBrowserChrome
object for it. Typically this means the implemetor will create a new
top level window that is represented by nsIWebBrowserChrome. This
most often will be called when for instance there is a need for a new
JS window, etc. Soon after this new object is returned, the webBrowser
attribute will be set with the new widget to instantiate in this
new window.
*/
void getNewBrowserChrome(out nsIWebBrowserChrome webBrowserChrome);
void findNamedWebBrowser(out nsIWebBrowserChrome webBrowserChrome);
/* XXX Figure these out....
void OnFocusAvailable(); */
};

Просмотреть файл

@ -26,7 +26,9 @@
#include "nsIDeviceContext.h"
#include "nsIDocument.h"
#include "nsIDOMDocument.h"
#include "nsIInterfaceRequestor.h"
#include "nsIDocShell.h"
#include "nsIWebBrowserChrome.h"
#include "nsWebBrowser.h"
static NS_DEFINE_IID(kChildCID, NS_CHILD_CID);
@ -36,7 +38,7 @@ static NS_DEFINE_IID(kDeviceContextCID, NS_DEVICE_CONTEXT_CID);
//*** nsWebBrowser: Object Management
//*****************************************************************************
nsWebBrowser::nsWebBrowser() : mCreated(PR_FALSE)
nsWebBrowser::nsWebBrowser() : mCreated(PR_FALSE), mTopLevelWindow(nsnull)
{
NS_INIT_REFCNT();
mInitInfo = new nsWebBrowserInitInfo();
@ -123,6 +125,22 @@ NS_IMETHODIMP nsWebBrowser::RemoveWebBrowserListener(nsIInterfaceRequestor* list
return NS_OK;
}
NS_IMETHODIMP nsWebBrowser::GetTopLevelWindow(nsIWebBrowserChrome** topWindow)
{
NS_ENSURE_ARG_POINTER(topWindow);
*topWindow = mTopLevelWindow;
NS_IF_ADDREF(*topWindow);
return NS_OK;
}
NS_IMETHODIMP nsWebBrowser::SetTopLevelWindow(nsIWebBrowserChrome* topWindow)
{
mTopLevelWindow = topWindow; //Weak Reference
return NS_OK;
}
NS_IMETHODIMP nsWebBrowser::GetDocShell(nsIDocShell** docShell)
{
NS_ENSURE_ARG_POINTER(docShell);

Просмотреть файл

@ -73,6 +73,9 @@ protected:
nsCOMPtr<nsIWidget> mParentWidget;
nativeWindow mParentNativeWindow;
nsCOMPtr<nsIWidget> mInternalWidget;
//Weak Reference interfaces...
nsIWebBrowserChrome* mTopLevelWindow;
};
#endif /* nsWebBrowser_h__ */