зеркало из https://github.com/mozilla/gecko-dev.git
bug=44279
a=edburns r=edburns author=ashuk. This code makes Webclient work with Mozilla M16.
This commit is contained in:
Родитель
241f6b261c
Коммит
86f35f950a
|
@ -51,7 +51,7 @@ import org.w3c.dom.Document;
|
|||
* This is a test application for using the BrowserControl.
|
||||
|
||||
*
|
||||
* @version $Id: EMWindow.java,v 1.14 2000/06/08 02:16:06 edburns%acm.org Exp $
|
||||
* @version $Id: EMWindow.java,v 1.15 2000/06/30 00:01:58 ashuk%eng.sun.com Exp $
|
||||
*
|
||||
* @see org.mozilla.webclient.BrowserControlFactory
|
||||
|
||||
|
@ -121,6 +121,7 @@ public class EMWindow extends Frame implements DialogClient, ActionListener, Doc
|
|||
MenuItem sourceItem = new MenuItem("View Page Source");
|
||||
MenuItem pageInfoItem = new MenuItem("View Page Info");
|
||||
MenuItem selectAllItem = new MenuItem("Select All");
|
||||
MenuItem copyItem = new MenuItem("Copy");
|
||||
menuBar.add(fileMenu);
|
||||
menuBar.add(viewMenu);
|
||||
menuBar.add(searchMenu);
|
||||
|
@ -139,6 +140,8 @@ public class EMWindow extends Frame implements DialogClient, ActionListener, Doc
|
|||
pageInfoItem.addActionListener(this);
|
||||
editMenu.add(selectAllItem);
|
||||
selectAllItem.addActionListener(this);
|
||||
editMenu.add(copyItem);
|
||||
copyItem.addActionListener(this);
|
||||
|
||||
// Create the URL field
|
||||
urlField = new TextField("", 30);
|
||||
|
@ -364,6 +367,9 @@ public void actionPerformed (ActionEvent evt)
|
|||
else if (command.equals("Select All")) {
|
||||
currentPage.selectAll();
|
||||
}
|
||||
else if (command.equals("Copy")) {
|
||||
currentPage.copyCurrentSelectionToSystemClipboard();
|
||||
}
|
||||
}
|
||||
// deal with the button bar commands
|
||||
else if(command.equals("Stop")) {
|
||||
|
|
|
@ -167,12 +167,12 @@ public byte [] getSourceBytes(boolean viewMode)
|
|||
byte [] result = null;
|
||||
myFactory.throwExceptionIfNotInitialized();
|
||||
|
||||
/* synchronized(myBrowserControl) {
|
||||
synchronized(myBrowserControl) {
|
||||
result = nativeGetSourceBytes(nativeWebShell, viewMode);
|
||||
}
|
||||
*/
|
||||
|
||||
throw new UnimplementedException("\nUnimplementedException -----\n API Function CurrentPage::getSourceBytes has not yet been implemented.\n Will be available after Webclient M3 Release\n");
|
||||
|
||||
//throw new UnimplementedException("\nUnimplementedException -----\n API Function CurrentPage::getSourceBytes has not yet been implemented.\n Will be available after Webclient M3 Release\n");
|
||||
|
||||
// PENDING (Ashu) - This should work - but it does not get anything from URl
|
||||
// and hangs up from time to time. Have to Debug. In M15, other native solution
|
||||
|
@ -201,9 +201,9 @@ public byte [] getSourceBytes(boolean viewMode)
|
|||
{
|
||||
System.out.println("Error occurred while establishing connection -- \n ERROR - " + e);
|
||||
}
|
||||
|
||||
return result;
|
||||
*/
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
public void resetFind()
|
||||
|
@ -260,7 +260,7 @@ public static void main(String [] args)
|
|||
Assert.setEnabled(true);
|
||||
Log.setApplicationName("CurrentPageImpl");
|
||||
Log.setApplicationVersion("0.0");
|
||||
Log.setApplicationVersionDate("$Id: CurrentPageImpl.java,v 1.6 2000/06/04 22:16:05 edburns%acm.org Exp $");
|
||||
Log.setApplicationVersionDate("$Id: CurrentPageImpl.java,v 1.7 2000/06/30 00:01:35 ashuk%eng.sun.com Exp $");
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
*/
|
||||
|
||||
package org.mozilla.webclient.wrapper_native;
|
||||
|
@ -176,7 +177,7 @@ public void delete()
|
|||
|
||||
public void run()
|
||||
{
|
||||
this.setPriority(Thread.MIN_PRIORITY);
|
||||
// this.setPriority(Thread.MIN_PRIORITY);
|
||||
Assert.assert(-1 != nativeWebShell);
|
||||
Assert.assert(null != windowControl);
|
||||
|
||||
|
@ -200,20 +201,22 @@ public void run()
|
|||
if (null == this.browserControlCanvas) {
|
||||
return;
|
||||
}
|
||||
|
||||
synchronized (this.browserControlCanvas.getTreeLock()) {
|
||||
nativeProcessEvents(nativeWebShell);
|
||||
}
|
||||
|
||||
if (null != listenersToAdd && !listenersToAdd.isEmpty()) {
|
||||
tempEnum = listenersToAdd.elements();
|
||||
while (tempEnum.hasMoreElements()) {
|
||||
nativeAddListener(nativeWebShell,
|
||||
(WebclientEventListener)
|
||||
tempEnum.nextElement());
|
||||
while (tempEnum.hasMoreElements()) {
|
||||
nativeAddListener(nativeWebShell,
|
||||
(WebclientEventListener)
|
||||
tempEnum.nextElement());
|
||||
}
|
||||
listenersToAdd.clear();
|
||||
}
|
||||
listenersToAdd.clear();
|
||||
}
|
||||
doRemoveListeners();
|
||||
doRemoveListeners();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -327,31 +330,28 @@ void nativeEventOccurred(WebclientEventListener target, long eventType,
|
|||
Assert.assert(-1 != nativeWebShell);
|
||||
Assert.assert(null != windowControl);
|
||||
|
||||
synchronized(this.browserControlCanvas.getTreeLock()) {
|
||||
WebclientEvent event = null;
|
||||
WebclientEvent event = null;
|
||||
|
||||
if (target instanceof DocumentLoadListener) {
|
||||
event = new DocumentLoadEvent(this, eventType, eventData);
|
||||
}
|
||||
else if (target instanceof MouseListener) {
|
||||
Assert.assert(target instanceof WCMouseListenerImpl);
|
||||
|
||||
// We create a plain vanilla WebclientEvent, which the
|
||||
// WCMouseListenerImpl target knows how to deal with.
|
||||
|
||||
// Also, the source happens to be the browserControlCanvas
|
||||
// to satisfy the java.awt.event.MouseEvent's requirement
|
||||
// that the source be a java.awt.Component subclass.
|
||||
|
||||
event = new WebclientEvent(browserControlCanvas, eventType, eventData);
|
||||
}
|
||||
// else...
|
||||
|
||||
// PENDING(edburns): maybe we need to put this in some sort of
|
||||
// event queue?
|
||||
|
||||
target.eventDispatched(event);
|
||||
if (target instanceof DocumentLoadListener) {
|
||||
event = new DocumentLoadEvent(this, eventType, eventData);
|
||||
}
|
||||
else if (target instanceof MouseListener) {
|
||||
Assert.assert(target instanceof WCMouseListenerImpl);
|
||||
|
||||
// We create a plain vanilla WebclientEvent, which the
|
||||
// WCMouseListenerImpl target knows how to deal with.
|
||||
|
||||
// Also, the source happens to be the browserControlCanvas
|
||||
// to satisfy the java.awt.event.MouseEvent's requirement
|
||||
// that the source be a java.awt.Component subclass.
|
||||
|
||||
event = new WebclientEvent(browserControlCanvas, eventType, eventData);
|
||||
}
|
||||
// else...
|
||||
|
||||
// PENDING(edburns): maybe we need to put this in some sort of
|
||||
// event queue?
|
||||
target.eventDispatched(event);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -116,6 +116,7 @@ public void eventDispatched(WebclientEvent event)
|
|||
int modifiers = 0, x = -1, y = -1, clickCount = 0;
|
||||
String str;
|
||||
boolean bool;
|
||||
if (null != props) {
|
||||
if (null != (str = props.getProperty("ClientX"))) {
|
||||
x = Integer.valueOf(str).intValue();
|
||||
}
|
||||
|
@ -161,6 +162,7 @@ public void eventDispatched(WebclientEvent event)
|
|||
modifiers += InputEvent.SHIFT_MASK;
|
||||
}
|
||||
}
|
||||
}
|
||||
switch ((int) event.getType()) {
|
||||
case (int) WCMouseEvent.MOUSE_DOWN_EVENT_MASK:
|
||||
mouseEvent =
|
||||
|
|
|
@ -59,14 +59,14 @@ Java_org_mozilla_webclient_wrapper_1native_BookmarksImpl_nativeNewRDFNode
|
|||
nsCOMPtr<nsIRDFResource> newNode;
|
||||
nsresult rv;
|
||||
jint result = -1;
|
||||
nsAutoString uri("NC:BookmarksRoot");
|
||||
nsAutoString uri(L"NC:BookmarksRoot");
|
||||
|
||||
const char *url = ::util_GetStringUTFChars(env, urlString);
|
||||
uri.Append("#$");
|
||||
const jchar *url = ::util_GetStringChars(env, urlString);
|
||||
uri.Append(L"#$");
|
||||
uri.Append(url);
|
||||
|
||||
rv = gRDF->GetUnicodeResource(uri.GetUnicode(), getter_AddRefs(newNode));
|
||||
::util_ReleaseStringUTFChars(env, urlString, url);
|
||||
::util_ReleaseStringChars(env, urlString, url);
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: nativeNewRDFNode: can't create new nsIRDFResource.");
|
||||
return result;
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,206 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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 code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Ed Burns <edburns@acm.org>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BROWSERCONTAINER_H
|
||||
#define BROWSERCONTAINER_H
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsISupportsUtils.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIDOMMouseListener.h"
|
||||
#include "nsIDOMMouseEvent.h"
|
||||
#include "nsIDOMEventTarget.h"
|
||||
#include "nsIWebBrowserChrome.h"
|
||||
#include "nsIWebProgressListener.h"
|
||||
#include "nsIWebShell.h" // We still have to implement nsIWebShellContainer
|
||||
// in order to receveive some DocumentLoaderObserver
|
||||
// events. edburns
|
||||
#include "nsIStreamObserver.h"
|
||||
#include "nsIURIContentListener.h"
|
||||
#include "nsIDocumentLoaderObserver.h"
|
||||
#include "nsIDocShellTreeOwner.h"
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
#include "nsIPrompt.h"
|
||||
#include "nsCWebBrowser.h"
|
||||
|
||||
#include "wcIBrowserContainer.h"
|
||||
|
||||
#include "jni_util.h"
|
||||
|
||||
class nsIURI;
|
||||
|
||||
// This is the class that handles the XPCOM side of things, callback
|
||||
// interfaces into the web shell and so forth.
|
||||
|
||||
class CBrowserContainer :
|
||||
public nsIBaseWindow,
|
||||
public nsIWebBrowserChrome,
|
||||
public nsIWebProgressListener,
|
||||
public nsIWebShellContainer,
|
||||
public nsIStreamObserver,
|
||||
public nsIURIContentListener,
|
||||
public nsIDocumentLoaderObserver,
|
||||
public nsIDocShellTreeOwner,
|
||||
public nsIInterfaceRequestor,
|
||||
public nsIPrompt,
|
||||
public nsIDOMMouseListener,
|
||||
public wcIBrowserContainer
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
typedef enum {
|
||||
START_DOCUMENT_LOAD_EVENT_MASK = 0,
|
||||
END_DOCUMENT_LOAD_EVENT_MASK,
|
||||
START_URL_LOAD_EVENT_MASK,
|
||||
END_URL_LOAD_EVENT_MASK,
|
||||
PROGRESS_URL_LOAD_EVENT_MASK,
|
||||
STATUS_URL_LOAD_EVENT_MASK,
|
||||
UNKNOWN_CONTENT_EVENT_MASK,
|
||||
FETCH_INTERRUPT_EVENT_MASK,
|
||||
NUMBER_OF_DOCUMENT_LOADER_MASK_NAMES
|
||||
} DOCUMENT_LOADER_EVENT_MASK_NAMES;
|
||||
|
||||
typedef enum {
|
||||
MOUSE_DOWN_EVENT_MASK = 0,
|
||||
MOUSE_UP_EVENT_MASK,
|
||||
MOUSE_CLICK_EVENT_MASK,
|
||||
MOUSE_DOUBLE_CLICK_EVENT_MASK,
|
||||
MOUSE_OVER_EVENT_MASK,
|
||||
MOUSE_OUT_EVENT_MASK,
|
||||
NUMBER_OF_DOM_MOUSE_LISTENER_MASK_NAMES
|
||||
} DOM_MOUSE_LISTENER_EVENT_MASK_NAMES;
|
||||
|
||||
|
||||
static jlong DocumentLoader_maskValues [NUMBER_OF_DOCUMENT_LOADER_MASK_NAMES];
|
||||
static char *DocumentLoader_maskNames [];
|
||||
|
||||
static jlong DOMMouseListener_maskValues [NUMBER_OF_DOM_MOUSE_LISTENER_MASK_NAMES];
|
||||
static char *DOMMouseListener_maskNames [];
|
||||
|
||||
|
||||
public:
|
||||
CBrowserContainer(nsIWebBrowser *pOwner, JNIEnv *yourJNIEnv, WebShellInitContext *yourInitContext);
|
||||
|
||||
CBrowserContainer();
|
||||
|
||||
public:
|
||||
virtual ~CBrowserContainer();
|
||||
|
||||
// Protected members
|
||||
protected:
|
||||
nsIWebBrowser *m_pOwner;
|
||||
JNIEnv *mJNIEnv;
|
||||
WebShellInitContext *mInitContext;
|
||||
jobject mDocTarget;
|
||||
jobject mMouseTarget;
|
||||
nsCOMPtr<nsIDOMEventTarget> mDomEventTarget;
|
||||
|
||||
//
|
||||
// The following arguments are used in the takeActionOnNode method.
|
||||
//
|
||||
|
||||
/**
|
||||
|
||||
* 0 is the leaf depth. That's why we call it the inverse depth.
|
||||
|
||||
*/
|
||||
|
||||
PRInt32 inverseDepth;
|
||||
|
||||
/**
|
||||
|
||||
* The properties table, created during a mouseEvent handler
|
||||
|
||||
*/
|
||||
|
||||
jobject properties;
|
||||
|
||||
/**
|
||||
|
||||
* the nsIDOMEvent in the current event
|
||||
|
||||
*/
|
||||
|
||||
nsCOMPtr<nsIDOMEvent> currentDOMEvent;
|
||||
|
||||
//
|
||||
// End of ivars used in takeActionOnNode
|
||||
//
|
||||
|
||||
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIBASEWINDOW
|
||||
NS_DECL_NSIWEBBROWSERCHROME
|
||||
NS_DECL_NSIDOCSHELLTREEOWNER
|
||||
NS_DECL_NSIURICONTENTLISTENER
|
||||
NS_DECL_NSISTREAMOBSERVER
|
||||
NS_DECL_NSIDOCUMENTLOADEROBSERVER
|
||||
NS_DECL_NSIINTERFACEREQUESTOR
|
||||
NS_DECL_NSIWEBPROGRESSLISTENER
|
||||
|
||||
NS_DECL_WCIBROWSERCONTAINER
|
||||
|
||||
// "Services" accessed through nsIInterfaceRequestor
|
||||
NS_DECL_NSIPROMPT
|
||||
|
||||
// nsIDOMMouseListener
|
||||
|
||||
virtual nsresult HandleEvent(nsIDOMEvent* aEvent);
|
||||
virtual nsresult MouseDown(nsIDOMEvent* aMouseEvent);
|
||||
virtual nsresult MouseUp(nsIDOMEvent* aMouseEvent);
|
||||
virtual nsresult MouseClick(nsIDOMEvent* aMouseEvent);
|
||||
virtual nsresult MouseDblClick(nsIDOMEvent* aMouseEvent);
|
||||
virtual nsresult MouseOver(nsIDOMEvent* aMouseEvent);
|
||||
virtual nsresult MouseOut(nsIDOMEvent* aMouseEvent);
|
||||
|
||||
// nsIWebShellContainer
|
||||
NS_IMETHOD WillLoadURL(nsIWebShell* aShell,
|
||||
const PRUnichar* aURL,
|
||||
nsLoadType aReason);
|
||||
|
||||
NS_IMETHOD BeginLoadURL(nsIWebShell* aShell,
|
||||
const PRUnichar* aURL);
|
||||
|
||||
|
||||
NS_IMETHOD EndLoadURL(nsIWebShell* aShell,
|
||||
const PRUnichar* aURL,
|
||||
nsresult aStatus);
|
||||
|
||||
protected:
|
||||
//
|
||||
// Local methods
|
||||
//
|
||||
jobject JNICALL getPropertiesFromEvent(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
void JNICALL addMouseEventDataToProperties(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
static nsresult JNICALL takeActionOnNode(nsCOMPtr<nsIDOMNode> curNode,
|
||||
void *yourObject);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ann Sunhachawee
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -53,6 +53,11 @@
|
|||
#include "nsIDOMRange.h"
|
||||
#include "nsIContentViewer.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIContentViewer.h"
|
||||
#include "nsIContentViewerEdit.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIScriptGlobalObject.h"
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
|
||||
static NS_DEFINE_CID(kCDOMRangeCID, NS_RANGE_CID);
|
||||
static NS_DEFINE_IID(kIDOMHTMLDocumentIID, NS_IDOMHTMLDOCUMENT_IID);
|
||||
|
@ -63,29 +68,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImp
|
|||
(JNIEnv *env, jobject obj, jint webShellPtr)
|
||||
{
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
nsresult rv;
|
||||
nsIContentViewer* contentViewer ;
|
||||
nsresult rv = nsnull;
|
||||
rv = initContext->docShell->GetContentViewer(&contentViewer);
|
||||
nsCOMPtr<nsIContentViewerEdit> contentViewerEdit(do_QueryInterface(contentViewer));
|
||||
rv = contentViewerEdit->CopySelection();
|
||||
|
||||
rv = initContext->docShell->GetPresShell(getter_AddRefs(presShell));
|
||||
// PENDING() should this be done using an nsActionEvent subclass?
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kHistoryWebShellError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't Copy to Clipboard");
|
||||
return;
|
||||
}
|
||||
|
||||
presShell->DoCopy();
|
||||
|
||||
/***
|
||||
|
||||
This looks like the right way to do it, but as of 01/13/00, it
|
||||
doesn't work. See a post on n.p.m.embedding:
|
||||
|
||||
Message-ID: <85ll4n$nli$1@nnrp1.deja.com>
|
||||
|
||||
|
||||
**/
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -99,6 +87,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImp
|
|||
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
|
||||
|
||||
//First get the FindComponent object
|
||||
nsresult rv;
|
||||
|
||||
|
@ -109,9 +98,13 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImp
|
|||
return;
|
||||
}
|
||||
|
||||
// Create a Search Context for the FindComponent
|
||||
nsCOMPtr<nsIInterfaceRequestor> interfaceRequestor(do_QueryInterface(initContext->docShell));
|
||||
nsCOMPtr<nsIDOMWindow> domWindow;
|
||||
rv = interfaceRequestor->GetInterface(NS_GET_IID(nsIDOMWindow), getter_AddRefs(domWindow));
|
||||
|
||||
|
||||
nsCOMPtr<nsISupports> searchContext;
|
||||
rv = findComponent->CreateContext(initContext->webShell, nsnull, getter_AddRefs(searchContext));
|
||||
rv = findComponent->CreateContext(domWindow, nsnull, getter_AddRefs(searchContext));
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSearchContextError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't create SearchContext for Find");
|
||||
|
@ -141,6 +134,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImp
|
|||
|
||||
// Save in initContext struct for future findNextInPage calls
|
||||
initContext->searchContext = srchcontext;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -201,13 +195,14 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPage
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
nsISessionHistory *yourHistory;
|
||||
// nsISessionHistory *yourHistory;
|
||||
nsISHistory* yourHistory;
|
||||
nsresult rv;
|
||||
|
||||
rv = initContext->webShell->GetSessionHistory(yourHistory);
|
||||
rv = initContext->webNavigation->GetSessionHistory(&yourHistory);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get SessionHistory from webshell");
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get SessionHistory from webNavigation");
|
||||
return urlString;
|
||||
}
|
||||
|
||||
|
@ -272,8 +267,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPage
|
|||
JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImpl_nativeGetSource
|
||||
(JNIEnv * env, jobject jobj)
|
||||
{
|
||||
|
||||
jstring result = nsnull;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -283,17 +278,19 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPage
|
|||
* Signature: ()[B
|
||||
*/
|
||||
JNIEXPORT jbyteArray JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImpl_nativeGetSourceBytes
|
||||
(JNIEnv * env, jobject jobj, jint webShellPtr, jboolean mode)
|
||||
(JNIEnv * env, jobject jobj, jint webShellPtr, jboolean viewMode)
|
||||
{
|
||||
/*
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
nsCOMPtr <nsIDocShell> docShell = initContext->docShell;
|
||||
|
||||
if (mode)
|
||||
docShell->SetViewMode(nsIDocShell::viewSource);
|
||||
else
|
||||
docShell->SetViewMode(nsIDocShell::viewNormal);
|
||||
*/
|
||||
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsViewSourceEvent * actionEvent =
|
||||
new wsViewSourceEvent(initContext->docShell, ((JNI_TRUE == viewMode)? PR_TRUE : PR_FALSE));
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostSynchronousEvent(initContext, event);
|
||||
}
|
||||
|
||||
jbyteArray result = nsnull;
|
||||
return result;
|
||||
|
@ -319,82 +316,13 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImp
|
|||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_CurrentPageImpl_nativeSelectAll
|
||||
(JNIEnv * env, jobject obj, jint webShellPtr)
|
||||
{
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
nsresult rv;
|
||||
|
||||
rv = initContext->docShell->GetPresShell(getter_AddRefs(presShell));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get PresShell");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMSelection> selection;
|
||||
rv = presShell->GetSelection(SELECTION_NORMAL, getter_AddRefs(selection));
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get DOMSelection");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIContentViewer> contentViewer;
|
||||
rv = initContext->docShell->GetContentViewer(getter_AddRefs(contentViewer));
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get contentViewer");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDocumentViewer> docViewer(do_QueryInterface(contentViewer));
|
||||
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
rv = docViewer->GetDocument(*getter_AddRefs(doc));
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get Document object");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
nsCOMPtr<nsIDOMHTMLDocument> htmldoc;
|
||||
rv = doc->QueryInterface(kIDOMHTMLDocumentIID, getter_AddRefs(htmldoc));
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get DOMHTMLDocument");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMHTMLElement>bodyElement;
|
||||
rv = htmldoc->GetBody(getter_AddRefs(bodyElement));
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get DOMHTMLElement");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMNode>bodyNode = do_QueryInterface(bodyElement);
|
||||
if (!bodyNode) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get DOMNode");
|
||||
return;
|
||||
}
|
||||
|
||||
rv = selection->ClearSelection();
|
||||
|
||||
nsCOMPtr<nsIDOMRange> range;
|
||||
rv = nsComponentManager::CreateInstance(kCDOMRangeCID, nsnull,
|
||||
NS_GET_IID(nsIDOMRange),
|
||||
getter_AddRefs(range));
|
||||
|
||||
rv = range->SelectNodeContents(bodyNode);
|
||||
|
||||
rv = selection->AddRange(range);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kSelectAllError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't get final Select working");
|
||||
return;
|
||||
}
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
nsIContentViewer* contentViewer ;
|
||||
nsresult rv = nsnull;
|
||||
rv = initContext->docShell->GetContentViewer(&contentViewer);
|
||||
nsCOMPtr<nsIContentViewerEdit> contentViewerEdit(do_QueryInterface(contentViewer));
|
||||
rv = contentViewerEdit->SelectAll();
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't do SelectAll through contentViewerEdit");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,649 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 RaptorCanvas.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Kirk Baker and
|
||||
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
||||
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Ed Burns <edburns@acm.org>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "DOMMouseListenerImpl.h"
|
||||
|
||||
#include "nsString.h"
|
||||
#include "nsFileSpec.h" // for nsAutoCString
|
||||
#include "nsIDOMNamedNodeMap.h"
|
||||
#include "nsIDOMMouseEvent.h"
|
||||
#include "DOMMouseListenerImpl.h"
|
||||
#include "jni_util.h"
|
||||
#include "dom_util.h"
|
||||
#include "nsActions.h"
|
||||
|
||||
#include "prprf.h" // for PR_snprintf
|
||||
|
||||
#include "prlog.h" // for PR_ASSERT
|
||||
#include "ns_globals.h" // for prLogModuleInfo and gComponentManager
|
||||
|
||||
#include <stdlib.h> // for itoa
|
||||
|
||||
#if defined(XP_UNIX) || defined(XP_MAC) || defined(XP_BEOS)
|
||||
|
||||
#define WC_ITOA(intVal, buf, radix) sprintf(buf, "%d", intVal)
|
||||
#else
|
||||
#define WC_ITOA(intVal, buf, radix) itoa(intVal, buf, radix)
|
||||
#endif
|
||||
|
||||
static NS_DEFINE_IID(kIDOMMouseListenerIID, NS_IDOMMOUSELISTENER_IID);
|
||||
|
||||
//
|
||||
// Local functions
|
||||
//
|
||||
|
||||
jlong DOMMouseListenerImpl::maskValues[] = { -1L };
|
||||
|
||||
char *DOMMouseListenerImpl::maskNames[] = {
|
||||
"MOUSE_DOWN_EVENT_MASK",
|
||||
"MOUSE_UP_EVENT_MASK",
|
||||
"MOUSE_CLICK_EVENT_MASK",
|
||||
"MOUSE_DOUBLE_CLICK_EVENT_MASK",
|
||||
"MOUSE_OVER_EVENT_MASK",
|
||||
"MOUSE_OUT_EVENT_MASK",
|
||||
nsnull
|
||||
};
|
||||
|
||||
static jboolean PROPERTIES_KEYS_INITED = JNI_FALSE;
|
||||
static jobject SCREEN_X_KEY = nsnull;
|
||||
static jobject SCREEN_Y_KEY = nsnull;
|
||||
static jobject CLIENT_X_KEY = nsnull;
|
||||
static jobject CLIENT_Y_KEY = nsnull;
|
||||
static jobject ALT_KEY = nsnull;
|
||||
static jobject CTRL_KEY = nsnull;
|
||||
static jobject SHIFT_KEY = nsnull;
|
||||
static jobject META_KEY = nsnull;
|
||||
static jobject BUTTON_KEY = nsnull;
|
||||
static jobject CLICK_COUNT_KEY = nsnull;
|
||||
static jobject TRUE_VALUE = nsnull;
|
||||
static jobject FALSE_VALUE = nsnull;
|
||||
|
||||
/**
|
||||
|
||||
* Initialize the above static jobject as jstrings
|
||||
|
||||
*/
|
||||
|
||||
jboolean initPropertiesKeys();
|
||||
|
||||
//NS_IMPL_ADDREF(DOMMouseListenerImpl);
|
||||
//NS_IMPL_RELEASE(DOMMouseListenerImpl);
|
||||
|
||||
NS_IMETHODIMP_(nsrefcnt) DOMMouseListenerImpl::AddRef()
|
||||
{
|
||||
mRefCnt++;
|
||||
return mRefCnt;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP_(nsrefcnt) DOMMouseListenerImpl::Release()
|
||||
{
|
||||
mRefCnt--;
|
||||
|
||||
if (mRefCnt == 0) {
|
||||
mRefCnt = 1; /* stabilize */
|
||||
NS_DELETEXPCOM(this);
|
||||
return 0;
|
||||
}
|
||||
return mRefCnt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
DOMMouseListenerImpl::DOMMouseListenerImpl() : mJNIEnv(nsnull),
|
||||
mInitContext(nsnull), mTarget(nsnull),
|
||||
inverseDepth(-1), properties(nsnull), currentDOMEvent(nsnull)
|
||||
{
|
||||
}
|
||||
|
||||
DOMMouseListenerImpl::DOMMouseListenerImpl(JNIEnv *env,
|
||||
WebShellInitContext *yourInitContext,
|
||||
jobject yourTarget) :
|
||||
mJNIEnv(env), mInitContext(yourInitContext), mTarget(yourTarget),
|
||||
inverseDepth(-1), properties(nsnull), currentDOMEvent(nsnull)
|
||||
{
|
||||
if (nsnull == gVm) { // declared in jni_util.h
|
||||
::util_GetJavaVM(env, &gVm); // save this vm reference away for the callback!
|
||||
}
|
||||
#ifndef BAL_INTERFACE
|
||||
PR_ASSERT(gVm);
|
||||
#endif
|
||||
|
||||
if (-1 == maskValues[0]) {
|
||||
util_InitializeEventMaskValuesFromClass("org/mozilla/webclient/WCMouseEvent",
|
||||
maskNames, maskValues);
|
||||
}
|
||||
mRefCnt = 0; // PENDING(edburns): not sure about how right this is to do.
|
||||
}
|
||||
|
||||
DOMMouseListenerImpl::~DOMMouseListenerImpl()
|
||||
{
|
||||
if (properties) {
|
||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||
util_DestroyPropertiesObject(env, properties, (jobject) mInitContext);
|
||||
properties = nsnull;
|
||||
}
|
||||
currentDOMEvent = nsnull;
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DOMMouseListenerImpl::QueryInterface(REFNSIID aIID, void** aInstance)
|
||||
{
|
||||
if (nsnull == aInstance)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
*aInstance = nsnull;
|
||||
|
||||
|
||||
if (aIID.Equals(NS_GET_IID(nsIDOMMouseListener))) {
|
||||
*aInstance = (void*) ((nsIDOMMouseListener*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
return NS_NOINTERFACE;
|
||||
}
|
||||
|
||||
/* nsIDOMEventListener methods */
|
||||
|
||||
nsresult DOMMouseListenerImpl::HandleEvent(nsIDOMEvent* aEvent)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* nsIDOMMouseListener methods */
|
||||
nsresult DOMMouseListenerImpl::MouseDown(nsIDOMEvent *aMouseEvent)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("!DOMMouseListenerImpl::MouseDown\n"));
|
||||
}
|
||||
#endif
|
||||
PR_ASSERT(nsnull != aMouseEvent);
|
||||
|
||||
getPropertiesFromEvent(aMouseEvent);
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread,
|
||||
mTarget,
|
||||
maskValues[MOUSE_DOWN_EVENT_MASK],
|
||||
properties);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult DOMMouseListenerImpl::MouseUp(nsIDOMEvent *aMouseEvent)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("!DOMMouseListenerImpl::MouseUp\n"));
|
||||
}
|
||||
#endif
|
||||
PR_ASSERT(nsnull != aMouseEvent);
|
||||
|
||||
getPropertiesFromEvent(aMouseEvent);
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread,
|
||||
mTarget,
|
||||
maskValues[MOUSE_UP_EVENT_MASK],
|
||||
properties);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult DOMMouseListenerImpl::MouseClick(nsIDOMEvent *aMouseEvent)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("!DOMMouseListenerImpl::MouseClick\n"));
|
||||
}
|
||||
#endif
|
||||
PR_ASSERT(nsnull != aMouseEvent);
|
||||
|
||||
getPropertiesFromEvent(aMouseEvent);
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread,
|
||||
mTarget,
|
||||
maskValues[MOUSE_CLICK_EVENT_MASK],
|
||||
properties);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult DOMMouseListenerImpl::MouseDblClick(nsIDOMEvent *aMouseEvent)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("!DOMMouseListenerImpl::MouseDoubleClick\n"));
|
||||
}
|
||||
#endif
|
||||
PR_ASSERT(nsnull != aMouseEvent);
|
||||
|
||||
getPropertiesFromEvent(aMouseEvent);
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread,
|
||||
mTarget,
|
||||
maskValues[MOUSE_DOUBLE_CLICK_EVENT_MASK],
|
||||
properties);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult DOMMouseListenerImpl::MouseOver(nsIDOMEvent *aMouseEvent)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("!DOMMouseListenerImpl::MouseOver\n"));
|
||||
}
|
||||
#endif
|
||||
PR_ASSERT(nsnull != aMouseEvent);
|
||||
|
||||
getPropertiesFromEvent(aMouseEvent);
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread,
|
||||
mTarget,
|
||||
maskValues[MOUSE_OVER_EVENT_MASK],
|
||||
properties);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult DOMMouseListenerImpl::MouseOut(nsIDOMEvent *aMouseEvent)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("!DOMMouseListenerImpl::MouseOut\n"));
|
||||
}
|
||||
#endif
|
||||
PR_ASSERT(nsnull != aMouseEvent);
|
||||
|
||||
getPropertiesFromEvent(aMouseEvent);
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread,
|
||||
mTarget,
|
||||
maskValues[MOUSE_OUT_EVENT_MASK],
|
||||
properties);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
jobject JNICALL DOMMouseListenerImpl::getPropertiesFromEvent(nsIDOMEvent *event)
|
||||
{
|
||||
nsCOMPtr<nsIDOMNode> currentNode;
|
||||
nsCOMPtr<nsIDOMEvent> aMouseEvent = event;
|
||||
nsresult rv = NS_OK;;
|
||||
|
||||
rv = aMouseEvent->GetTarget(getter_AddRefs(currentNode));
|
||||
if (NS_FAILED(rv)) {
|
||||
return properties;
|
||||
}
|
||||
if (nsnull == currentNode) {
|
||||
return properties;
|
||||
}
|
||||
inverseDepth = 0;
|
||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||
|
||||
if (properties) {
|
||||
util_ClearPropertiesObject(env, properties, (jobject) mInitContext);
|
||||
}
|
||||
else {
|
||||
if (!(properties =
|
||||
util_CreatePropertiesObject(env, (jobject)mInitContext))) {
|
||||
return properties;
|
||||
}
|
||||
}
|
||||
dom_iterateToRoot(currentNode, DOMMouseListenerImpl::takeActionOnNode,
|
||||
(void *)this);
|
||||
addMouseEventDataToProperties(aMouseEvent);
|
||||
|
||||
return properties;
|
||||
}
|
||||
|
||||
void JNICALL DOMMouseListenerImpl::addMouseEventDataToProperties(nsIDOMEvent *aMouseEvent)
|
||||
{
|
||||
if (!properties) {
|
||||
return;
|
||||
}
|
||||
nsresult rv;
|
||||
|
||||
// Add modifiers, keys, mouse buttons, etc, to the properties table
|
||||
nsCOMPtr<nsIDOMMouseEvent> mouseEvent;
|
||||
|
||||
rv = aMouseEvent->QueryInterface(nsIDOMMouseEvent::GetIID(),
|
||||
getter_AddRefs(mouseEvent));
|
||||
if (NS_FAILED(rv)) {
|
||||
return;
|
||||
}
|
||||
// initialize the standard properties keys
|
||||
if (!PROPERTIES_KEYS_INITED) {
|
||||
// if the initialization failed, don't modify the properties
|
||||
if (!initPropertiesKeys()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
PRInt32 intVal;
|
||||
PRUint16 int16Val;
|
||||
PRBool boolVal;
|
||||
char buf[20];
|
||||
jstring strVal;
|
||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||
|
||||
// PENDING(edburns): perhaps use a macro to speed this up?
|
||||
rv = mouseEvent->GetScreenX(&intVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
WC_ITOA(intVal, buf, 10);
|
||||
strVal = ::util_NewStringUTF(env, buf);
|
||||
::util_StoreIntoPropertiesObject(env, properties, SCREEN_X_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
rv = mouseEvent->GetScreenY(&intVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
WC_ITOA(intVal, buf, 10);
|
||||
strVal = ::util_NewStringUTF(env, buf);
|
||||
::util_StoreIntoPropertiesObject(env, properties, SCREEN_Y_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
rv = mouseEvent->GetClientX(&intVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
WC_ITOA(intVal, buf, 10);
|
||||
strVal = ::util_NewStringUTF(env, buf);
|
||||
::util_StoreIntoPropertiesObject(env, properties, CLIENT_X_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
rv = mouseEvent->GetClientY(&intVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
WC_ITOA(intVal, buf, 10);
|
||||
strVal = ::util_NewStringUTF(env, buf);
|
||||
::util_StoreIntoPropertiesObject(env, properties, CLIENT_Y_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
int16Val = 0;
|
||||
rv = mouseEvent->GetButton(&int16Val);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
WC_ITOA(int16Val, buf, 10);
|
||||
strVal = ::util_NewStringUTF(env, buf);
|
||||
::util_StoreIntoPropertiesObject(env, properties, BUTTON_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
int16Val = 0;
|
||||
rv = mouseEvent->GetClickCount(&int16Val);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
WC_ITOA(int16Val, buf, 10);
|
||||
strVal = ::util_NewStringUTF(env, buf);
|
||||
::util_StoreIntoPropertiesObject(env, properties, CLICK_COUNT_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
rv = mouseEvent->GetAltKey(&boolVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
strVal = boolVal ? (jstring) TRUE_VALUE : (jstring) FALSE_VALUE;
|
||||
::util_StoreIntoPropertiesObject(env, properties, ALT_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
rv = mouseEvent->GetCtrlKey(&boolVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
strVal = boolVal ? (jstring) TRUE_VALUE : (jstring) FALSE_VALUE;
|
||||
::util_StoreIntoPropertiesObject(env, properties, CTRL_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
rv = mouseEvent->GetShiftKey(&boolVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
strVal = boolVal ? (jstring) TRUE_VALUE : (jstring) FALSE_VALUE;
|
||||
::util_StoreIntoPropertiesObject(env, properties, SHIFT_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
|
||||
rv = mouseEvent->GetMetaKey(&boolVal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
strVal = boolVal ? (jstring) TRUE_VALUE : (jstring) FALSE_VALUE;
|
||||
::util_StoreIntoPropertiesObject(env, properties, META_KEY,
|
||||
(jobject) strVal,
|
||||
(jobject) mInitContext);
|
||||
}
|
||||
}
|
||||
|
||||
nsresult JNICALL DOMMouseListenerImpl::takeActionOnNode(nsCOMPtr<nsIDOMNode> currentNode,
|
||||
void *myObject)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsString nodeInfo, nodeName, nodeValue, nodeDepth;
|
||||
jstring jNodeName, jNodeValue;
|
||||
PRUint32 depth = -1;
|
||||
DOMMouseListenerImpl *curThis = nsnull;
|
||||
const PRUint32 depthStrLen = 20;
|
||||
char depthStr[depthStrLen];
|
||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||
|
||||
PR_ASSERT(nsnull != myObject);
|
||||
curThis = (DOMMouseListenerImpl *) myObject;
|
||||
depth = curThis->inverseDepth++;
|
||||
|
||||
if (!(curThis->properties)) {
|
||||
return rv;
|
||||
}
|
||||
// encode the depth of the node
|
||||
PR_snprintf(depthStr, depthStrLen, "depthFromLeaf:%d", depth);
|
||||
nodeDepth = (const char *) depthStr;
|
||||
|
||||
// Store the name and the value of this node
|
||||
|
||||
{
|
||||
// get the name and prepend the depth
|
||||
rv = currentNode->GetNodeName(nodeInfo);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
// nodeName = nodeDepth;
|
||||
// nodeName += nodeInfo;
|
||||
nodeName = nodeInfo;
|
||||
|
||||
if (prLogModuleInfo) {
|
||||
nsAutoCString nodeInfoCStr(nodeName);
|
||||
PR_LOG(prLogModuleInfo, 4, ("%s", (const char *)nodeInfoCStr));
|
||||
}
|
||||
|
||||
rv = currentNode->GetNodeValue(nodeInfo);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
// nodeValue = nodeDepth;
|
||||
// nodeValue += nodeInfo;
|
||||
nodeValue = nodeInfo;
|
||||
|
||||
if (prLogModuleInfo) {
|
||||
nsAutoCString nodeInfoCStr(nodeValue);
|
||||
PR_LOG(prLogModuleInfo, 4, ("%s", (const char *)nodeInfoCStr));
|
||||
}
|
||||
|
||||
jNodeName = ::util_NewString(env, nodeName.GetUnicode(),
|
||||
nodeName.Length());
|
||||
jNodeValue = ::util_NewString(env, nodeValue.GetUnicode(),
|
||||
nodeValue.Length());
|
||||
|
||||
util_StoreIntoPropertiesObject(env, (jobject) curThis->properties,
|
||||
(jobject) jNodeName,
|
||||
(jobject) jNodeValue,
|
||||
(jobject) curThis->mInitContext);
|
||||
if (jNodeName) {
|
||||
::util_DeleteString(env, jNodeName);
|
||||
}
|
||||
if (jNodeValue) {
|
||||
::util_DeleteString(env, jNodeValue);
|
||||
}
|
||||
} // end of Storing the name and value of this node
|
||||
|
||||
// store any attributes of this node
|
||||
{
|
||||
nsCOMPtr<nsIDOMNamedNodeMap> nodeMap;
|
||||
rv = currentNode->GetAttributes(getter_AddRefs(nodeMap));
|
||||
if (NS_FAILED(rv) || !nodeMap) {
|
||||
return rv;
|
||||
}
|
||||
PRUint32 length, i;
|
||||
rv = nodeMap->GetLength(&length);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
for (i = 0; i < length; i++) {
|
||||
rv = nodeMap->Item(i, getter_AddRefs(currentNode));
|
||||
|
||||
if (nsnull == currentNode) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = currentNode->GetNodeName(nodeInfo);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
// nodeName = nodeDepth;
|
||||
// nodeName += nodeInfo;
|
||||
nodeName = nodeInfo;
|
||||
|
||||
if (prLogModuleInfo) {
|
||||
nsAutoCString nodeInfoCStr(nodeName);
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("attribute[%d], %s", i, (const char *)nodeInfoCStr));
|
||||
}
|
||||
|
||||
rv = currentNode->GetNodeValue(nodeInfo);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
// nodeValue = nodeDepth;
|
||||
// nodeValue += nodeInfo;
|
||||
nodeValue = nodeInfo;
|
||||
|
||||
if (prLogModuleInfo) {
|
||||
nsAutoCString nodeInfoCStr(nodeValue);
|
||||
PR_LOG(prLogModuleInfo, 4,
|
||||
("attribute[%d] %s", i,(const char *)nodeInfoCStr));
|
||||
}
|
||||
jNodeName = ::util_NewString(env, nodeName.GetUnicode(),
|
||||
nodeName.Length());
|
||||
jNodeValue = ::util_NewString(env, nodeValue.GetUnicode(),
|
||||
nodeValue.Length());
|
||||
|
||||
util_StoreIntoPropertiesObject(env, (jobject) curThis->properties,
|
||||
(jobject) jNodeName,
|
||||
(jobject) jNodeValue,
|
||||
(jobject) curThis->mInitContext);
|
||||
if (jNodeName) {
|
||||
::util_DeleteString(env, jNodeName);
|
||||
}
|
||||
if (jNodeValue) {
|
||||
::util_DeleteString(env, jNodeValue);
|
||||
}
|
||||
}
|
||||
} // end of storing the attributes
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
//
|
||||
// Local functions
|
||||
//
|
||||
|
||||
jboolean initPropertiesKeys()
|
||||
{
|
||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||
|
||||
if (nsnull == (SCREEN_X_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "ScreenX")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (SCREEN_Y_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "ScreenY")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (CLIENT_X_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "ClientX")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (CLIENT_Y_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "ClientY")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (ALT_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "Alt")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (CTRL_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "Ctrl")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (SHIFT_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "Shift")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (META_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "Meta")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (BUTTON_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "Button")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (CLICK_COUNT_KEY =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env,
|
||||
"ClickCount")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (TRUE_VALUE =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "true")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (nsnull == (FALSE_VALUE =
|
||||
::util_NewGlobalRef(env, (jobject)
|
||||
::util_NewStringUTF(env, "false")))) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
return PROPERTIES_KEYS_INITED = JNI_TRUE;
|
||||
}
|
|
@ -1,150 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 RaptorCanvas.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Kirk Baker and
|
||||
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
||||
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Ed Burns <edburns@acm.org>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DOMMouseListenerImpl_h
|
||||
#define DOMMouseListenerImpl_h
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsISupportsUtils.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIDOMMouseListener.h"
|
||||
#include "nsIDOMNode.h"
|
||||
|
||||
#include "jni_util.h"
|
||||
|
||||
class nsIURI;
|
||||
|
||||
/**
|
||||
|
||||
* This class is the shim between the mozilla listener event system for
|
||||
* mouse events and the java MouseListener interface.
|
||||
* For each of the Mouse* methods, we call the appropriate method in java.
|
||||
* See the implementation of MouseOver for an example.
|
||||
|
||||
* For each mouseEvent, we create a Properties object containing
|
||||
* information about the event. We use methods in dom_util to do this.
|
||||
|
||||
*/
|
||||
|
||||
class DOMMouseListenerImpl : public nsIDOMMouseListener {
|
||||
NS_DECL_ISUPPORTS
|
||||
public:
|
||||
|
||||
typedef enum {
|
||||
MOUSE_DOWN_EVENT_MASK = 0,
|
||||
MOUSE_UP_EVENT_MASK,
|
||||
MOUSE_CLICK_EVENT_MASK,
|
||||
MOUSE_DOUBLE_CLICK_EVENT_MASK,
|
||||
MOUSE_OVER_EVENT_MASK,
|
||||
MOUSE_OUT_EVENT_MASK,
|
||||
NUMBER_OF_MASK_NAMES
|
||||
} EVENT_MASK_NAMES;
|
||||
|
||||
|
||||
#ifdef XP_UNIX
|
||||
static jlong maskValues [NUMBER_OF_MASK_NAMES];
|
||||
#else
|
||||
static jlong maskValues [DOMMouseListenerImpl::EVENT_MASK_NAMES::NUMBER_OF_MASK_NAMES];
|
||||
#endif
|
||||
|
||||
static char *maskNames [];
|
||||
|
||||
DOMMouseListenerImpl(JNIEnv *yourJNIEnv,
|
||||
WebShellInitContext *yourInitContext,
|
||||
jobject yourTarget);
|
||||
|
||||
DOMMouseListenerImpl();
|
||||
|
||||
virtual ~DOMMouseListenerImpl();
|
||||
|
||||
/* nsIDOMEventListener methods */
|
||||
nsresult HandleEvent(nsIDOMEvent* aEvent);
|
||||
|
||||
|
||||
/* nsIDOMMouseListener methods */
|
||||
|
||||
nsresult MouseDown(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
nsresult MouseUp(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
nsresult MouseClick(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
nsresult MouseDblClick(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
nsresult MouseOver(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
nsresult MouseOut(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
//
|
||||
// Local methods
|
||||
//
|
||||
protected:
|
||||
|
||||
jobject JNICALL getPropertiesFromEvent(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
void JNICALL addMouseEventDataToProperties(nsIDOMEvent *aMouseEvent);
|
||||
|
||||
static nsresult JNICALL takeActionOnNode(nsCOMPtr<nsIDOMNode> curNode,
|
||||
void *yourObject);
|
||||
|
||||
protected:
|
||||
|
||||
JNIEnv *mJNIEnv;
|
||||
WebShellInitContext *mInitContext;
|
||||
jobject mTarget;
|
||||
|
||||
//
|
||||
// The following arguments are used in the takeActionOnNode method.
|
||||
//
|
||||
|
||||
/**
|
||||
|
||||
* 0 is the leaf depth. That's why we call it the inverse depth.
|
||||
|
||||
*/
|
||||
|
||||
PRInt32 inverseDepth;
|
||||
|
||||
/**
|
||||
|
||||
* The properties table, created during a mouseEvent handler
|
||||
|
||||
*/
|
||||
|
||||
jobject properties;
|
||||
|
||||
/**
|
||||
|
||||
* the nsIDOMEvent in the current event
|
||||
|
||||
*/
|
||||
|
||||
nsCOMPtr<nsIDOMEvent> currentDOMEvent;
|
||||
|
||||
//
|
||||
// End of ivars used in takeActionOnNode
|
||||
//
|
||||
|
||||
};
|
||||
|
||||
#endif // DOMMouseListenerImpl_h
|
|
@ -1,371 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 RaptorCanvas.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Kirk Baker and
|
||||
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
||||
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Kirk Baker <kbaker@eb.com>
|
||||
* Ian Wilkinson <iw@ennoble.com>
|
||||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
#include "DocumentLoaderObserverImpl.h"
|
||||
|
||||
#include "nsString.h"
|
||||
#include "jni_util.h"
|
||||
#include "dom_util.h"
|
||||
#include "nsActions.h"
|
||||
|
||||
#include "nsIDOMDocument.h"
|
||||
|
||||
#include "prlog.h" // for PR_ASSERT
|
||||
|
||||
jlong DocumentLoaderObserverImpl::maskValues[] = { -1L };
|
||||
|
||||
char *DocumentLoaderObserverImpl::maskNames[] = {
|
||||
"START_DOCUMENT_LOAD_EVENT_MASK",
|
||||
"END_DOCUMENT_LOAD_EVENT_MASK",
|
||||
"START_URL_LOAD_EVENT_MASK",
|
||||
"END_URL_LOAD_EVENT_MASK",
|
||||
"PROGRESS_URL_LOAD_EVENT_MASK",
|
||||
"STATUS_URL_LOAD_EVENT_MASK",
|
||||
"UNKNOWN_CONTENT_EVENT_MASK",
|
||||
"FETCH_INTERRUPT_EVENT_MASK",
|
||||
nsnull
|
||||
};
|
||||
|
||||
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
|
||||
static NS_DEFINE_IID(kIDocumentLoaderObserverIID, NS_IDOCUMENT_LOADER_OBSERVER_IID);
|
||||
static NS_DEFINE_IID(kIDocumentLoaderObserverImplIID, NS_IDOCLOADEROBSERVERIMPL_IID);
|
||||
|
||||
NS_IMPL_ADDREF(DocumentLoaderObserverImpl);
|
||||
NS_IMPL_RELEASE(DocumentLoaderObserverImpl);
|
||||
|
||||
DocumentLoaderObserverImpl::DocumentLoaderObserverImpl() : mRefCnt(1),
|
||||
mTarget(nsnull), mMouseListener(nsnull), mDomEventTarget(nsnull) {
|
||||
}
|
||||
|
||||
DocumentLoaderObserverImpl::DocumentLoaderObserverImpl(JNIEnv *env,
|
||||
WebShellInitContext *yourInitContext) :
|
||||
mJNIEnv(env), mInitContext(yourInitContext), mTarget(nsnull),
|
||||
mMouseListener(nsnull)
|
||||
{
|
||||
if (nsnull == gVm) { // declared in jni_util.h
|
||||
::util_GetJavaVM(env, &gVm); // save this vm reference away for the callback!
|
||||
}
|
||||
#ifndef BAL_INTERFACE
|
||||
PR_ASSERT(gVm);
|
||||
#endif
|
||||
|
||||
if (-1 == maskValues[0]) {
|
||||
util_InitializeEventMaskValuesFromClass("org/mozilla/webclient/DocumentLoadEvent",
|
||||
maskNames, maskValues);
|
||||
}
|
||||
mRefCnt = 1; // PENDING(edburns): not sure about how right this is to do.
|
||||
}
|
||||
|
||||
DocumentLoaderObserverImpl::~DocumentLoaderObserverImpl()
|
||||
{
|
||||
RemoveMouseListener();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::QueryInterface(REFNSIID aIID,
|
||||
void** aInstance)
|
||||
{
|
||||
if (nsnull == aInstance)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
*aInstance = nsnull;
|
||||
|
||||
|
||||
if (aIID.Equals(kIDocumentLoaderObserverIID)) {
|
||||
*aInstance = (void*) ((nsIDocumentLoaderObserver*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
else if (aIID.Equals(kIDocumentLoaderObserverImplIID)) {
|
||||
*aInstance = (void*) ((DocumentLoaderObserverImpl*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return NS_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
||||
/* nsIDocumentLoaderObserver methods */
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::OnStartDocumentLoad(nsIDocumentLoader* loader,
|
||||
nsIURI* aURL,
|
||||
const char* aCommand)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("DocumentLoaderObserverImpl.cpp: OnStartDocumentLoad\n"));
|
||||
}
|
||||
#endif
|
||||
// If we don't have a target, don't take any action
|
||||
if (nsnull == mTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
char *urlStr = nsnull;
|
||||
jobject urlJStr = nsnull;
|
||||
if (nsnull != aURL) {
|
||||
|
||||
// IMPORTANT: do not use initContext->env here since it comes
|
||||
// from another thread. Use JNU_GetEnv instead.
|
||||
|
||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||
|
||||
aURL->GetSpec(&urlStr);
|
||||
if (nsnull != urlStr) {
|
||||
urlJStr = (jobject) ::util_NewStringUTF(env, urlStr);
|
||||
::Recycle(urlStr);
|
||||
}
|
||||
}
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread, mTarget,
|
||||
maskValues[START_DOCUMENT_LOAD_EVENT_MASK], urlJStr);
|
||||
|
||||
if (urlJStr) {
|
||||
::util_DeleteStringUTF(mInitContext->env, (jstring) urlJStr);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::OnEndDocumentLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
nsresult aStatus)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("!!DocumentLoaderObserverImpl.cpp: OnEndDocumentLoad\n"));
|
||||
}
|
||||
#endif
|
||||
nsCOMPtr<nsIDOMDocument> doc;
|
||||
if (nsnull == loader) {
|
||||
// NOT really ok, but we can't do anything.
|
||||
return NS_OK;
|
||||
}
|
||||
if (!(doc = dom_getDocumentFromLoader(loader))) {
|
||||
// NOT really ok, but we can't do anything.
|
||||
return NS_OK;
|
||||
}
|
||||
mInitContext->currentDocument = doc;
|
||||
|
||||
// if we have a mouse listener
|
||||
if (mMouseListener) {
|
||||
// install the mouse listener into mozilla
|
||||
|
||||
PR_ASSERT(mMouseListener);
|
||||
|
||||
nsresult rv;
|
||||
|
||||
rv = doc->QueryInterface(NS_GET_IID(nsIDOMEventTarget),
|
||||
getter_AddRefs(mDomEventTarget));
|
||||
if (NS_FAILED(rv) || !mDomEventTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
nsAutoString eType("mouseover");
|
||||
mDomEventTarget->AddEventListener(eType, mMouseListener, PR_FALSE);
|
||||
|
||||
} // end of "install mouse listener"
|
||||
|
||||
// If we don't have a target, don't take any action
|
||||
if (nsnull == mTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
util_SendEventToJava(mInitContext->env,
|
||||
mInitContext->nativeEventThread, mTarget,
|
||||
maskValues[END_DOCUMENT_LOAD_EVENT_MASK], nsnull);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::OnStartURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("!DocumentLoaderObserverImpl: OnStartURLLoad\n"));
|
||||
}
|
||||
#endif
|
||||
// If we don't have a target, don't take any action
|
||||
if (nsnull == mTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
util_SendEventToJava(mInitContext->env, mInitContext->nativeEventThread, mTarget,
|
||||
maskValues[START_URL_LOAD_EVENT_MASK], nsnull);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::OnProgressURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
PRUint32 aProgress,
|
||||
PRUint32 aProgressMax)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("!DocumentLoaderObserverImpl: OnProgressURLLoad\n"));
|
||||
}
|
||||
#endif
|
||||
// If we don't have a target, don't take any action
|
||||
if (nsnull == mTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
util_SendEventToJava(mInitContext->env, mInitContext->nativeEventThread, mTarget,
|
||||
maskValues[PROGRESS_URL_LOAD_EVENT_MASK], nsnull);
|
||||
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::OnStatusURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
nsString& aMsg)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("!DocumentLoaderObserverImpl: OnStatusURLLoad: %S\n",
|
||||
aMsg.GetUnicode()));
|
||||
}
|
||||
#endif
|
||||
// If we don't have a target, don't take any action
|
||||
if (nsnull == mTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
int length = aMsg.Length();
|
||||
|
||||
// IMPORTANT: do not use initContext->env here since it comes
|
||||
// from another thread. Use JNU_GetEnv instead.
|
||||
|
||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||
jstring statusMessage = ::util_NewString(env, (const jchar *)
|
||||
aMsg.GetUnicode(), length);
|
||||
|
||||
util_SendEventToJava(mInitContext->env, mInitContext->nativeEventThread, mTarget,
|
||||
maskValues[STATUS_URL_LOAD_EVENT_MASK], (jobject) statusMessage);
|
||||
|
||||
if (statusMessage) {
|
||||
::util_DeleteString(mInitContext->env, statusMessage);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::OnEndURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
nsresult aStatus)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("!DocumentLoaderObserverImpl: OnEndURLLoad\n"));
|
||||
}
|
||||
#endif
|
||||
// If we don't have a target, don't take any action
|
||||
if (nsnull == mTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
util_SendEventToJava(mInitContext->env, mInitContext->nativeEventThread, mTarget,
|
||||
maskValues[END_URL_LOAD_EVENT_MASK], nsnull);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::HandleUnknownContentType(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
const char *aContentType,
|
||||
const char *aCommand)
|
||||
{
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("!DocumentLoaderObserverImpl: HandleUnknownContentType\n"));
|
||||
}
|
||||
#endif
|
||||
// If we don't have a target, don't take any action
|
||||
if (nsnull == mTarget) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
util_SendEventToJava(mInitContext->env, mInitContext->nativeEventThread, mTarget,
|
||||
maskValues[UNKNOWN_CONTENT_EVENT_MASK], nsnull);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//
|
||||
// Methods from DocumentLoaderObserverImpl
|
||||
//
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::AddMouseListener(nsCOMPtr<nsIDOMMouseListener> toAdd)
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
if (nsnull == toAdd) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
mMouseListener = toAdd;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::RemoveMouseListener()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (mDomEventTarget && mMouseListener) {
|
||||
nsAutoString eType("mouseover");
|
||||
mDomEventTarget->RemoveEventListener(eType, mMouseListener, PR_FALSE);
|
||||
mDomEventTarget = nsnull;
|
||||
mMouseListener = nsnull;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::SetTarget(jobject yourTarget)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
mTarget = yourTarget;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP DocumentLoaderObserverImpl::ClearTarget(void)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
mTarget = nsnull;
|
||||
|
||||
return rv;
|
||||
}
|
|
@ -1,163 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 RaptorCanvas.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Kirk Baker and
|
||||
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
||||
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Kirk Baker <kbaker@eb.com>
|
||||
* Ian Wilkinson <iw@ennoble.com>
|
||||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
#ifndef DocumentLoaderObserverImpl_h
|
||||
#define DocumentLoaderObserverImpl_h
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsISupportsUtils.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIDocumentLoaderObserver.h"
|
||||
#include "nsIDOMMouseListener.h"
|
||||
#include "nsIDOMEventTarget.h"
|
||||
|
||||
class nsIURI;
|
||||
|
||||
#include "jni_util.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
/**
|
||||
|
||||
* We define a local IID to allow the addDocumentLoadListener and
|
||||
* addMouseListener functions in EventRegistration.{h,cpp} to
|
||||
* interrogate the currently installed DocumentLoaderObserver instance
|
||||
* in mozilla.
|
||||
|
||||
*/
|
||||
|
||||
#define NS_IDOCLOADEROBSERVERIMPL_IID_STR "fdadb2e0-3028-11d4-8a96-0080c7b9c5ba"
|
||||
|
||||
#define NS_IDOCLOADEROBSERVERIMPL_IID {0xfdadb2e0, 0x3028, 0x11d4, { 0x8a, 0x96, 0x00, 0x80, 0xc7, 0xb9, 0xc5, 0xba }}
|
||||
|
||||
/**
|
||||
|
||||
* This class is the shim between the mozilla listener event system for
|
||||
* document load events and the java DocumentLoadListener interface.
|
||||
* For each of the On* methods, we call the appropriate method in java.
|
||||
* See the implementation of OnEndDocumentLoad for an example.
|
||||
|
||||
* A DocumentLoaderObserverImpl instance has a "jobject target", which
|
||||
* is the Java object that should ultimately receive the events. This
|
||||
* target will be null if the user just wants to listen for mouse
|
||||
* events. It willl be non-null if the user wants to listen for
|
||||
* DocumentLoad events.
|
||||
|
||||
* It also hosts a nsIDOMMouseListener instance, which piggybacks on the
|
||||
* nsIDocumentLoaderObserver instance.
|
||||
|
||||
*/
|
||||
|
||||
class DocumentLoaderObserverImpl : public nsIDocumentLoaderObserver {
|
||||
NS_DECL_ISUPPORTS
|
||||
public:
|
||||
|
||||
typedef enum {
|
||||
START_DOCUMENT_LOAD_EVENT_MASK = 0,
|
||||
END_DOCUMENT_LOAD_EVENT_MASK,
|
||||
START_URL_LOAD_EVENT_MASK,
|
||||
END_URL_LOAD_EVENT_MASK,
|
||||
PROGRESS_URL_LOAD_EVENT_MASK,
|
||||
STATUS_URL_LOAD_EVENT_MASK,
|
||||
UNKNOWN_CONTENT_EVENT_MASK,
|
||||
FETCH_INTERRUPT_EVENT_MASK,
|
||||
NUMBER_OF_MASK_NAMES
|
||||
} EVENT_MASK_NAMES;
|
||||
|
||||
|
||||
#ifdef XP_UNIX
|
||||
static jlong maskValues [NUMBER_OF_MASK_NAMES];
|
||||
#else
|
||||
static jlong maskValues [DocumentLoaderObserverImpl::EVENT_MASK_NAMES::NUMBER_OF_MASK_NAMES];
|
||||
#endif
|
||||
|
||||
static char *maskNames [];
|
||||
|
||||
DocumentLoaderObserverImpl(JNIEnv *yourJNIEnv,
|
||||
WebShellInitContext *yourInitContext);
|
||||
|
||||
DocumentLoaderObserverImpl();
|
||||
virtual ~DocumentLoaderObserverImpl();
|
||||
|
||||
/* nsIDocumentLoaderObserver methods */
|
||||
NS_IMETHOD OnStartDocumentLoad(nsIDocumentLoader* loader,
|
||||
nsIURI* aURL,
|
||||
const char* aCommand);
|
||||
|
||||
NS_IMETHOD OnEndDocumentLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
nsresult aStatus);
|
||||
|
||||
NS_IMETHOD OnStartURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel);
|
||||
|
||||
NS_IMETHOD OnProgressURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
PRUint32 aProgress,
|
||||
PRUint32 aProgressMax);
|
||||
|
||||
NS_IMETHOD OnStatusURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
nsString& aMsg);
|
||||
|
||||
NS_IMETHOD OnEndURLLoad(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
nsresult aStatus);
|
||||
|
||||
NS_IMETHOD HandleUnknownContentType(nsIDocumentLoader* loader,
|
||||
nsIChannel* channel,
|
||||
const char *aContentType,
|
||||
const char *aCommand);
|
||||
|
||||
//
|
||||
// Methods for NS_IDOCLOADEROBSERVERIMPL_IID
|
||||
//
|
||||
|
||||
/**
|
||||
|
||||
* Called in EventRegistration.{h,cpp} addMouseListener.
|
||||
|
||||
*/
|
||||
|
||||
NS_IMETHOD AddMouseListener(nsCOMPtr<nsIDOMMouseListener> toAdd);
|
||||
|
||||
NS_IMETHOD RemoveMouseListener(void);
|
||||
|
||||
NS_IMETHOD SetTarget(jobject newTarget);
|
||||
|
||||
NS_IMETHOD ClearTarget(void);
|
||||
|
||||
protected:
|
||||
|
||||
JNIEnv *mJNIEnv;
|
||||
WebShellInitContext *mInitContext;
|
||||
jobject mTarget;
|
||||
nsCOMPtr<nsIDOMMouseListener> mMouseListener;
|
||||
nsCOMPtr<nsIDOMEventTarget> mDomEventTarget;
|
||||
|
||||
};
|
||||
|
||||
#endif // DocumentLoaderObserverImpl_h
|
|
@ -1,161 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 RaptorCanvas.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Kirk Baker and
|
||||
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
||||
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Kirk Baker <kbaker@eb.com>
|
||||
* Ian Wilkinson <iw@ennoble.com>
|
||||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
#include "EventRegistration.h"
|
||||
|
||||
#include "nsActions.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "DocumentLoaderObserverImpl.h"
|
||||
#include "DOMMouseListenerImpl.h"
|
||||
|
||||
static NS_DEFINE_IID(kIDocumentLoaderObserverImplIID, NS_IDOCLOADEROBSERVERIMPL_IID);
|
||||
|
||||
void addDocumentLoadListener(JNIEnv *env, WebShellInitContext *initContext,
|
||||
jobject listener)
|
||||
{
|
||||
if (initContext->initComplete) {
|
||||
|
||||
|
||||
PR_ASSERT(initContext->nativeEventThread);
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIDocumentLoaderObserver> curObserver;
|
||||
nsCOMPtr<DocumentLoaderObserverImpl> myListener = nsnull;
|
||||
|
||||
PR_ASSERT(nsnull != initContext->docShell);
|
||||
|
||||
// tricky logic to accomodate "piggybacking" a mouseListener.
|
||||
|
||||
// See if there already is a DocListener
|
||||
rv = initContext->docShell->GetDocLoaderObserver(getter_AddRefs(curObserver));
|
||||
if (NS_FAILED(rv) || !curObserver) {
|
||||
// if there is no listener, we need to create and add it now
|
||||
|
||||
// create the c++ "peer" for the DocumentLoadListener, which is an
|
||||
// nsIDocumentLoaderObserver.
|
||||
curObserver = new DocumentLoaderObserverImpl(env, initContext);
|
||||
if (nsnull == curObserver) {
|
||||
return;
|
||||
}
|
||||
|
||||
wsAddDocLoaderObserverEvent *actionEvent =
|
||||
new wsAddDocLoaderObserverEvent(initContext->docShell,
|
||||
curObserver);
|
||||
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostSynchronousEvent(initContext, event);
|
||||
}
|
||||
|
||||
if (curObserver) {
|
||||
// if we have an observer (either just created, or from mozilla),
|
||||
// install the target.
|
||||
|
||||
rv = curObserver->QueryInterface(kIDocumentLoaderObserverImplIID,
|
||||
getter_AddRefs(myListener));
|
||||
if (NS_SUCCEEDED(rv) && myListener) {
|
||||
myListener->SetTarget(listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void addMouseListener(JNIEnv *env, WebShellInitContext *initContext,
|
||||
jobject listener)
|
||||
{
|
||||
if (initContext->initComplete) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIDocumentLoaderObserver> curObserver;
|
||||
nsCOMPtr<DocumentLoaderObserverImpl> myListener = nsnull;
|
||||
|
||||
PR_ASSERT(nsnull != initContext->docShell);
|
||||
|
||||
// See if there already is a DocListener
|
||||
rv = initContext->docShell->GetDocLoaderObserver(getter_AddRefs(curObserver));
|
||||
if (NS_SUCCEEDED(rv) && curObserver) {
|
||||
|
||||
// if so, se if it's something we added
|
||||
rv = curObserver->QueryInterface(kIDocumentLoaderObserverImplIID,
|
||||
getter_AddRefs(myListener));
|
||||
}
|
||||
else {
|
||||
|
||||
// if not, we need to create a listener
|
||||
myListener = new DocumentLoaderObserverImpl(env, initContext);
|
||||
// note that we don't call setTarget, since this
|
||||
// DocumentLoaderObserver is just for getting mouse events
|
||||
|
||||
// install our listener into mozilla
|
||||
wsAddDocLoaderObserverEvent *actionEvent =
|
||||
new wsAddDocLoaderObserverEvent(initContext->docShell,
|
||||
myListener);
|
||||
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostSynchronousEvent(initContext, event);
|
||||
}
|
||||
|
||||
if (nsnull == myListener) {
|
||||
// either the new failed, or the currently installed listener
|
||||
// wasn't installed by us. Either way, do nothing.
|
||||
return;
|
||||
}
|
||||
// we have a listener
|
||||
|
||||
nsCOMPtr<nsIDOMMouseListener> mouseListener =
|
||||
new DOMMouseListenerImpl(env, initContext, listener);
|
||||
|
||||
myListener->AddMouseListener(mouseListener);
|
||||
}
|
||||
}
|
||||
|
||||
void removeAllListeners(JNIEnv *env, WebShellInitContext *initContext)
|
||||
{
|
||||
if (initContext->initComplete) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIDocumentLoaderObserver> curObserver;
|
||||
nsCOMPtr<DocumentLoaderObserverImpl> myListener = nsnull;
|
||||
|
||||
PR_ASSERT(nsnull != initContext->docShell);
|
||||
|
||||
// See if there already is a DocListener
|
||||
rv = initContext->docShell->GetDocLoaderObserver(getter_AddRefs(curObserver));
|
||||
if (NS_SUCCEEDED(rv) && curObserver) {
|
||||
|
||||
// if so, see if it's something we added
|
||||
rv = curObserver->QueryInterface(kIDocumentLoaderObserverImplIID,
|
||||
getter_AddRefs(myListener));
|
||||
}
|
||||
if (myListener) {
|
||||
// remove the doc listener from the docShell
|
||||
rv = initContext->docShell->SetDocLoaderObserver(nsnull);
|
||||
// remove the mouse listener from the doc listener
|
||||
myListener->RemoveMouseListener();
|
||||
myListener = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,76 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 RaptorCanvas.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Kirk Baker and
|
||||
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
||||
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Kirk Baker <kbaker@eb.com>
|
||||
* Ian Wilkinson <iw@ennoble.com>
|
||||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
#ifndef EventRegistration_h
|
||||
#define EventRegistration_h
|
||||
|
||||
#include "jni_util.h"
|
||||
|
||||
/**
|
||||
|
||||
* This file contains methods to add and remove listeners.
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
* This function creates an instance of DocumentLoaderObserverImpl,
|
||||
* which is the shim between the mozilla nsIDocumentLoaderObserver class
|
||||
* and the Java DocumentLoadListener interface. See
|
||||
* DocumentLoaderObserverImpl.h
|
||||
|
||||
* PENDING(): implement removeDocumentLoadListener
|
||||
|
||||
* PENDING(): implement the ability to have multiple listener instances
|
||||
* per listener types, all of which get notified.
|
||||
|
||||
*/
|
||||
|
||||
void addDocumentLoadListener(JNIEnv *env, WebShellInitContext *initContext,
|
||||
jobject listener);
|
||||
|
||||
/**
|
||||
|
||||
* This function creates an instance of DOMMouseListenerImpl,
|
||||
* which is the shim between the mozilla nsIDOMMouseListener class
|
||||
* and the Java MouseListener interface. See
|
||||
* DocumentLoaderObserverImpl.h
|
||||
|
||||
* PENDING(): implement removeMouseListener
|
||||
|
||||
* PENDING(): implement the ability to have multiple listener instances
|
||||
* per listener types, all of which get notified.
|
||||
|
||||
*/
|
||||
|
||||
void addMouseListener(JNIEnv *env, WebShellInitContext *initContext,
|
||||
jobject listener);
|
||||
|
||||
void removeAllListeners(JNIEnv *env, WebShellInitContext *initContext);
|
||||
|
||||
|
||||
#endif
|
|
@ -22,7 +22,7 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ann Sunhachawee
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
*/
|
||||
|
||||
#include "HistoryImpl.h"
|
||||
|
@ -47,7 +47,7 @@ Java_org_mozilla_webclient_wrapper_1native_HistoryImpl_nativeBack
|
|||
|
||||
if (initContext->initComplete) {
|
||||
wsBackEvent * actionEvent =
|
||||
new wsBackEvent(initContext->sessionHistory, initContext->webShell);
|
||||
new wsBackEvent(initContext->webNavigation);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -63,7 +63,8 @@ JNICALL Java_org_mozilla_webclient_wrapper_1native_HistoryImpl_nativeCanBack
|
|||
jboolean result = JNI_FALSE;
|
||||
JNIEnv * pEnv = env;
|
||||
jobject jobj = obj;
|
||||
void * voidResult;
|
||||
void * voidResult;
|
||||
// PRBool voidResult;
|
||||
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
|
||||
|
@ -73,8 +74,8 @@ JNICALL Java_org_mozilla_webclient_wrapper_1native_HistoryImpl_nativeCanBack
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsCanBackEvent * actionEvent =
|
||||
new wsCanBackEvent(initContext->sessionHistory);
|
||||
wsCanBackEvent * actionEvent =
|
||||
new wsCanBackEvent(initContext->webNavigation);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -115,8 +116,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_HistoryImpl_na
|
|||
|
||||
if (initContext->initComplete) {
|
||||
wsForwardEvent * actionEvent =
|
||||
new wsForwardEvent(initContext->sessionHistory,
|
||||
initContext->webShell);
|
||||
new wsForwardEvent(initContext->webNavigation);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -142,7 +142,7 @@ JNIEXPORT jboolean JNICALL Java_org_mozilla_webclient_wrapper_1native_HistoryImp
|
|||
|
||||
if (initContext->initComplete) {
|
||||
wsCanForwardEvent * actionEvent =
|
||||
new wsCanForwardEvent(initContext->sessionHistory);
|
||||
new wsCanForwardEvent(initContext->webNavigation);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -195,8 +195,16 @@ Java_org_mozilla_webclient_wrapper_1native_HistoryImpl_nativeGetCurrentHistoryIn
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
nsISHistory* sHistory;
|
||||
nsresult rv = initContext->webNavigation->GetSessionHistory(&sHistory);
|
||||
|
||||
if ( NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: couldn't get History for passing to raptorWebShellGetHistoryIndex");
|
||||
return result;
|
||||
}
|
||||
|
||||
wsGetHistoryIndexEvent * actionEvent =
|
||||
new wsGetHistoryIndexEvent(initContext->sessionHistory);
|
||||
new wsGetHistoryIndexEvent(sHistory);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -224,8 +232,7 @@ Java_org_mozilla_webclient_wrapper_1native_HistoryImpl_nativeSetCurrentHistoryIn
|
|||
|
||||
if (initContext->initComplete) {
|
||||
wsGoToEvent * actionEvent =
|
||||
new wsGoToEvent(initContext->sessionHistory,
|
||||
initContext->webShell, historyIndex);
|
||||
new wsGoToEvent(initContext->webNavigation, historyIndex);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -251,8 +258,16 @@ Java_org_mozilla_webclient_wrapper_1native_HistoryImpl_nativeGetHistoryLength
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
nsISHistory* sHistory;
|
||||
nsresult rv = initContext->webNavigation->GetSessionHistory(&sHistory);
|
||||
|
||||
if ( NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: couldn't get History for passing to raptorWebShellGetHistoryIndex");
|
||||
return result;
|
||||
}
|
||||
|
||||
wsGetHistoryLengthEvent * actionEvent =
|
||||
new wsGetHistoryLengthEvent(initContext->sessionHistory);
|
||||
new wsGetHistoryLengthEvent(sHistory);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -279,9 +294,17 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_wrapper_1native_HistoryImpl
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsGetURLForIndexEvent * actionEvent =
|
||||
new wsGetURLForIndexEvent(initContext->sessionHistory,
|
||||
historyIndex);
|
||||
nsISHistory* sHistory;
|
||||
nsresult rv = initContext->webNavigation->GetSessionHistory(&sHistory);
|
||||
|
||||
if ( NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: couldn't get History for passing to raptorWebShellGetHistoryIndex");
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
wsGetURLForIndexEvent * actionEvent =
|
||||
new wsGetURLForIndexEvent(initContext->sHistory,
|
||||
historyIndex);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
charResult = (char *) ::util_PostSynchronousEvent(initContext, event);
|
||||
|
|
|
@ -26,21 +26,20 @@ MAKE_OBJ_TYPE = DLL
|
|||
|
||||
MODULE=webclient
|
||||
|
||||
|
||||
OBJS = \
|
||||
.\$(OBJDIR)\jni_util.obj \
|
||||
.\$(OBJDIR)\jni_util_export.obj \
|
||||
.\$(OBJDIR)\rdf_util.obj \
|
||||
.\$(OBJDIR)\dom_util.obj \
|
||||
.\$(OBJDIR)\nsActions.obj \
|
||||
.\$(OBJDIR)\BookmarksImpl.obj \
|
||||
.\$(OBJDIR)\CurrentPageImpl.obj \
|
||||
.\$(OBJDIR)\DocumentLoaderObserverImpl.obj \
|
||||
.\$(OBJDIR)\DOMMouseListenerImpl.obj \
|
||||
.\$(OBJDIR)\EventRegistration.obj \
|
||||
.\$(OBJDIR)\HistoryImpl.obj \
|
||||
.\$(OBJDIR)\BookmarksImpl.obj \
|
||||
.\$(OBJDIR)\WrapperFactoryImpl.obj \
|
||||
.\$(OBJDIR)\WindowControlImpl.obj \
|
||||
.\$(OBJDIR)\NavigationImpl.obj \
|
||||
.\$(OBJDIR)\CBrowserContainer.obj \
|
||||
.\$(OBJDIR)\NativeEventThread.obj \
|
||||
.\$(OBJDIR)\RDFEnumeration.obj \
|
||||
.\$(OBJDIR)\RDFTreeNode.obj \
|
||||
|
@ -80,9 +79,9 @@ LLIBS = \
|
|||
$(DIST)\lib\xpcom.lib \
|
||||
$(DIST)\lib\gkgfxwin.lib \
|
||||
$(DIST)\lib\nsreg.lib \
|
||||
$(DIST)\lib\nspr3.lib \
|
||||
$(DIST)\lib\plds3.lib \
|
||||
$(DIST)\lib\plc3.lib \
|
||||
$(DIST)\lib\nspr4.lib \
|
||||
$(DIST)\lib\plc4.lib \
|
||||
$(DIST)\lib\plds4.lib \
|
||||
# $(DEPTH)\xpfe\bootstrap\$(OBJDIR)\nsSetupRegistry.obj \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -22,32 +22,48 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
#include "NativeEventThread.h"
|
||||
#include "CBrowserContainer.h"
|
||||
|
||||
#include "jni_util.h"
|
||||
#include "EventRegistration.h" // event callbacks
|
||||
#include "ns_globals.h"
|
||||
|
||||
#include "nsIServiceManager.h" // for NS_InitXPCOM
|
||||
|
||||
#include "nsIProfile.h" // for the profile manager
|
||||
#include "nsICmdLineService.h" // for the cmdline service to give to the
|
||||
// profile manager.
|
||||
|
||||
#include "nsCRT.h" // for nsCRT::strcmp
|
||||
#include "prenv.h"
|
||||
#include "nsILocalFile.h"
|
||||
// #include "WrapperFactoryImpl.cpp"
|
||||
|
||||
#ifdef XP_PC
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#include "nsAppShellCIDs.h" // for NS_SESSIONHISTORY_CID
|
||||
#include "nsIBaseWindow.h" // to get methods like SetVisibility
|
||||
#include "nsCOMPtr.h" // to get nsIBaseWindow from webshell
|
||||
//nsIDocShell is included in jni_util.h
|
||||
#include "nsIEventQueueService.h" // for PLEventQueue
|
||||
#include "nsIPref.h" // for preferences
|
||||
#include "nsRepository.h"
|
||||
#include "nsIServiceManager.h" // for do_GetService
|
||||
#include "nsISessionHistory.h" // for history
|
||||
#include "nsIPref.h" // for preferences
|
||||
#include "nsIThread.h" // for PRThread
|
||||
#include "nsIDocShell.h"
|
||||
#include "nsIBaseWindow.h"
|
||||
#include "nsIDocShellTreeItem.h"
|
||||
#include "nsCWebBrowser.h"
|
||||
#include "nsIEventQueueService.h"
|
||||
#include "nsIThread.h"
|
||||
//nsIWebShell is included in jni_util.h
|
||||
|
||||
|
||||
#include "prlog.h" // for PR_ASSERT
|
||||
|
||||
#ifdef XP_UNIX
|
||||
|
@ -59,8 +75,51 @@
|
|||
static NS_DEFINE_IID(kWebShellCID, NS_WEB_SHELL_CID);
|
||||
static NS_DEFINE_IID(kIWebShellIID, NS_IWEB_SHELL_IID);
|
||||
|
||||
static NS_DEFINE_IID(kISessionHistoryIID, NS_ISESSIONHISTORY_IID);
|
||||
static NS_DEFINE_CID(kSessionHistoryCID, NS_SESSIONHISTORY_CID);
|
||||
static NS_DEFINE_IID(kISHistoryIID, NS_ISHISTORY_IID);
|
||||
static NS_DEFINE_CID(kSHistoryCID, NS_SHISTORY_CID);
|
||||
|
||||
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
|
||||
|
||||
static NS_DEFINE_CID(kCmdLineServiceCID, NS_COMMANDLINE_SERVICE_CID);
|
||||
|
||||
static const char *NS_DOCSHELL_PROGID = "component://netscape/docshell/html";
|
||||
//static const char *NS_WEBBROWSER_PROGID = "component://netscape/embedding/browser/nsWebBrowser";
|
||||
|
||||
extern const char * gBinDir;
|
||||
|
||||
#ifdef XP_PC
|
||||
|
||||
// All this stuff is needed to initialize the history
|
||||
|
||||
#define APPSHELL_DLL "appshell.dll"
|
||||
#define BROWSER_DLL "nsbrowser.dll"
|
||||
#define EDITOR_DLL "ender.dll"
|
||||
|
||||
#else
|
||||
|
||||
#ifdef XP_MAC
|
||||
|
||||
#define APPSHELL_DLL "APPSHELL_DLL"
|
||||
#define EDITOR_DLL "ENDER_DLL"
|
||||
|
||||
#else
|
||||
|
||||
// XP_UNIX || XP_BEOS
|
||||
#define APPSHELL_DLL "libnsappshell"MOZ_DLL_SUFFIX
|
||||
#define APPCORES_DLL "libappcores"MOZ_DLL_SUFFIX
|
||||
#define EDITOR_DLL "libender"MOZ_DLL_SUFFIX
|
||||
|
||||
#endif // XP_MAC
|
||||
|
||||
#endif // XP_PC
|
||||
|
||||
//
|
||||
// Functions to hook into mozilla
|
||||
//
|
||||
|
||||
extern "C" void NS_SetupRegistry();
|
||||
extern nsresult NS_AutoregisterComponents();
|
||||
|
||||
|
||||
//
|
||||
// Local functions
|
||||
|
@ -76,8 +135,8 @@ int processEventLoop(WebShellInitContext * initContext);
|
|||
|
||||
/**
|
||||
|
||||
* Called from Java nativeInitialize to create the webshell, history,
|
||||
* prefs, and other mozilla things, then start the event loop.
|
||||
* Called from Java nativeInitialize to create the webshell, history
|
||||
* and other mozilla things, then start the event loop.
|
||||
|
||||
*/
|
||||
|
||||
|
@ -87,7 +146,13 @@ nsresult InitMozillaStuff (WebShellInitContext * arg);
|
|||
// Local data
|
||||
//
|
||||
|
||||
nsISessionHistory *gHistory = nsnull;
|
||||
nsISHistory *gHistory = nsnull;
|
||||
nsIComponentManager *gComponentManager = nsnull;
|
||||
static PRBool gFirstTime = PR_TRUE;
|
||||
static PLEventQueue * gActionQueue;
|
||||
static PRThread * gEmbeddedThread;
|
||||
|
||||
|
||||
|
||||
char * errorMessages[] = {
|
||||
"No Error",
|
||||
|
@ -101,11 +166,6 @@ char * errorMessages[] = {
|
|||
|
||||
* a null terminated array of listener interfaces we support.
|
||||
|
||||
* PENDING(): this should probably live in EventRegistration.h
|
||||
|
||||
* PENDING(edburns): need to abstract this out so we can use it from uno
|
||||
* and JNI.
|
||||
|
||||
*/
|
||||
|
||||
const char *gSupportedListenerInterfaces[] = {
|
||||
|
@ -114,8 +174,7 @@ const char *gSupportedListenerInterfaces[] = {
|
|||
nsnull
|
||||
};
|
||||
|
||||
// these index into the gSupportedListenerInterfaces array, this should
|
||||
// also live in EventRegistration.h
|
||||
// these index into the gSupportedListenerInterfaces array
|
||||
|
||||
typedef enum {
|
||||
DOCUMENT_LOAD_LISTENER = 0,
|
||||
|
@ -191,8 +250,6 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThr
|
|||
* PENDING(): implement nativeRemoveListener, which must call
|
||||
* RemoveGlobalRef.
|
||||
|
||||
* See the comments for EventRegistration.h:addDocumentLoadListener
|
||||
|
||||
*/
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeAddListener
|
||||
|
@ -204,7 +261,6 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThr
|
|||
::util_ThrowExceptionToJava(env, "Exception: null initContext passed tonativeAddListener");
|
||||
return;
|
||||
}
|
||||
|
||||
if (nsnull == initContext->nativeEventThread) {
|
||||
// store the java EventRegistrationImpl class in the initContext
|
||||
initContext->nativeEventThread =
|
||||
|
@ -242,15 +298,17 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThr
|
|||
::util_ThrowExceptionToJava(env, "Exception: NativeEventThread.nativeAddListener(): can't create NewGlobalRef\n\tfor argument");
|
||||
return;
|
||||
}
|
||||
PR_ASSERT(initContext->browserContainer);
|
||||
|
||||
switch(listenerType) {
|
||||
case DOCUMENT_LOAD_LISTENER:
|
||||
addDocumentLoadListener(env, initContext, globalRef);
|
||||
initContext->browserContainer->AddDocumentLoadListener(globalRef);
|
||||
break;
|
||||
case MOUSE_LISTENER:
|
||||
addMouseListener(env, initContext, globalRef);
|
||||
initContext->browserContainer->AddMouseListener(globalRef);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
|
@ -263,10 +321,9 @@ Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeRemoveAllList
|
|||
return;
|
||||
}
|
||||
|
||||
removeAllListeners(env, initContext);
|
||||
// removeAllListeners(env, initContext);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* This function processes methods inserted into WebShellInitContext's
|
||||
|
@ -343,99 +400,173 @@ static void event_processor_callback(gpointer data,
|
|||
#endif
|
||||
//
|
||||
|
||||
|
||||
void DoMozInitialization(WebShellInitContext * initContext)
|
||||
{
|
||||
if (gFirstTime) {
|
||||
nsILocalFile * pathFile = nsnull;
|
||||
nsresult rv = nsnull;
|
||||
JNIEnv * env = initContext->env;
|
||||
const char * BinDir = gBinDir;
|
||||
|
||||
rv = NS_NewLocalFile(BinDir, &pathFile);
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "call to NS_NewLocalFile failed.");
|
||||
return;
|
||||
}
|
||||
|
||||
// It is vitally important to call NS_InitXPCOM before calling
|
||||
// anything else.
|
||||
NS_InitXPCOM(nsnull, pathFile);
|
||||
NS_SetupRegistry();
|
||||
rv = NS_GetGlobalComponentManager(&gComponentManager);
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "NS_GetGlobalComponentManager() failed.");
|
||||
return;
|
||||
}
|
||||
prLogModuleInfo = PR_NewLogModule("webclient");
|
||||
const char *webclientLogFile = PR_GetEnv("WEBCLIENT_LOG_FILE");
|
||||
if (nsnull != webclientLogFile) {
|
||||
PR_SetLogFile(webclientLogFile);
|
||||
// If this fails, it just goes to stdout/stderr
|
||||
}
|
||||
|
||||
gComponentManager->RegisterComponentLib(kSHistoryCID, nsnull,
|
||||
nsnull, APPSHELL_DLL,
|
||||
PR_FALSE, PR_FALSE);
|
||||
NS_AutoregisterComponents();
|
||||
|
||||
// handle the profile manager nonsense
|
||||
nsCOMPtr<nsICmdLineService> cmdLine =do_GetService(kCmdLineServiceCID);
|
||||
nsCOMPtr<nsIProfile> profile = do_GetService(NS_PROFILE_PROGID);
|
||||
if (!cmdLine || !profile) {
|
||||
::util_ThrowExceptionToJava(env, "Can't get the profile manager.");
|
||||
return;
|
||||
}
|
||||
char *argv[1];
|
||||
argv[0] = strdup(gBinDir);
|
||||
rv = cmdLine->Initialize(1, argv);
|
||||
nsCRT::free(argv[0]);
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Can't initialize nsICmdLineService.");
|
||||
return;
|
||||
}
|
||||
rv = profile->StartupWithArgs(cmdLine);
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "Can't statrup nsIProfile service.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
nsresult InitMozillaStuff (WebShellInitContext * initContext)
|
||||
{
|
||||
nsresult rv = nsnull;
|
||||
|
||||
DoMozInitialization(initContext);
|
||||
|
||||
PR_ASSERT(gComponentManager);
|
||||
|
||||
nsCOMPtr<nsIEventQueueService>
|
||||
aEventQService = do_GetService(NS_EVENTQUEUESERVICE_PROGID);
|
||||
if (gFirstTime)
|
||||
{
|
||||
nsCOMPtr<nsIEventQueueService>
|
||||
aEventQService = do_GetService(NS_EVENTQUEUESERVICE_PROGID);
|
||||
|
||||
// if we get here, we know that aEventQService is not null.
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
PRBool allowPlugins = PR_FALSE;
|
||||
// if we get here, we know that aEventQService is not null.
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
//TODO Add tracing from nspr.
|
||||
//TODO Add tracing from nspr.
|
||||
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("InitMozillaStuff(%lx): Create the Event Queue for the UI thread...\n",
|
||||
initContext));
|
||||
}
|
||||
#endif
|
||||
|
||||
// Create the Event Queue for the UI thread...
|
||||
if (!aEventQService) {
|
||||
initContext->initFailCode = kEventQueueError;
|
||||
return rv;
|
||||
}
|
||||
|
||||
// Create the event queue.
|
||||
rv = aEventQService->CreateThreadEventQueue();
|
||||
|
||||
initContext->embeddedThread = PR_GetCurrentThread();
|
||||
|
||||
// Create the action queue
|
||||
if (initContext->embeddedThread) {
|
||||
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3, ("InitMozillaStuff(%lx): embeddedThread != nsnull\n", initContext));
|
||||
}
|
||||
#endif
|
||||
if (initContext->actionQueue == nsnull) {
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3, ("InitMozillaStuff(%lx): Create the action queue\n", initContext));
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("InitMozillaStuff(%lx): Create the Event Queue for the UI thread...\n",
|
||||
initContext));
|
||||
}
|
||||
#endif
|
||||
// We need to do something different for Unix
|
||||
nsIEventQueue * EQueue = nsnull;
|
||||
#endif
|
||||
|
||||
rv = aEventQService->GetThreadEventQueue(initContext->embeddedThread,
|
||||
&EQueue);
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kCreateWebShellError;
|
||||
// Create the Event Queue for the UI thread...
|
||||
if (!aEventQService) {
|
||||
initContext->initFailCode = kEventQueueError;
|
||||
return rv;
|
||||
}
|
||||
|
||||
#ifdef XP_UNIX
|
||||
gdk_input_add(EQueue->GetEventQueueSelectFD(),
|
||||
GDK_INPUT_READ,
|
||||
event_processor_callback,
|
||||
EQueue);
|
||||
#endif
|
||||
// Create the event queue.
|
||||
rv = aEventQService->CreateThreadEventQueue();
|
||||
initContext->embeddedThread = PR_GetCurrentThread();
|
||||
gEmbeddedThread = initContext->embeddedThread;
|
||||
|
||||
PLEventQueue * plEventQueue = nsnull;
|
||||
// Create the action queue
|
||||
if (initContext->embeddedThread) {
|
||||
|
||||
EQueue->GetPLEventQueue(&plEventQueue);
|
||||
initContext->actionQueue = plEventQueue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
initContext->initFailCode = kCreateWebShellError;
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
if (initContext->actionQueue == nsnull) {
|
||||
printf("InitMozillaStuff(%lx): Create the action queue\n", initContext);
|
||||
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("InitMozillaStuff(%lx): Create the WebShell...\n", initContext));
|
||||
}
|
||||
#endif
|
||||
// Create the WebShell.
|
||||
rv = nsRepository::CreateInstance(kWebShellCID, nsnull, kIWebShellIID, getter_AddRefs(initContext->webShell));
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kCreateWebShellError;
|
||||
return rv;
|
||||
}
|
||||
// We need to do something different for Unix
|
||||
nsIEventQueue * EQueue = nsnull;
|
||||
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("InitMozillaStuff(%lx): Init the WebShell...\n", initContext));
|
||||
}
|
||||
#endif
|
||||
rv = aEventQService->GetThreadEventQueue(initContext->embeddedThread,
|
||||
&EQueue);
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kCreateWebShellError;
|
||||
return rv;
|
||||
}
|
||||
|
||||
#ifdef XP_UNIX
|
||||
gdk_input_add(EQueue->GetEventQueueSelectFD(),
|
||||
GDK_INPUT_READ,
|
||||
event_processor_callback,
|
||||
EQueue);
|
||||
#endif
|
||||
|
||||
PLEventQueue * plEventQueue = nsnull;
|
||||
|
||||
EQueue->GetPLEventQueue(&plEventQueue);
|
||||
initContext->actionQueue = plEventQueue;
|
||||
gActionQueue = initContext->actionQueue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
initContext->initFailCode = kCreateWebShellError;
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
initContext->embeddedThread = gEmbeddedThread;
|
||||
initContext->actionQueue = gActionQueue;
|
||||
}
|
||||
|
||||
// Setup Prefs obj and read default prefs
|
||||
if (gFirstTime)
|
||||
{
|
||||
nsCOMPtr<nsIPref> mPrefs(do_GetService(kPrefCID));
|
||||
if (!mPrefs) {
|
||||
initContext->initFailCode = kCreateWebShellError;
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
rv = mPrefs->StartUp();
|
||||
rv = mPrefs->ReadUserPrefs();
|
||||
gFirstTime = PR_FALSE;
|
||||
}
|
||||
PRBool allowPlugins = PR_TRUE;
|
||||
|
||||
// Create the WebBrowser.
|
||||
nsCOMPtr<nsIWebBrowser> webBrowser;
|
||||
webBrowser = do_CreateInstance(NS_WEBBROWSER_PROGID);
|
||||
|
||||
initContext->webBrowser = webBrowser;
|
||||
|
||||
// Get the BaseWindow from the DocShell - upcast
|
||||
// nsCOMPtr<nsIBaseWindow> docShellAsWin(do_QueryInterface(webBrowser));
|
||||
nsCOMPtr<nsIBaseWindow> docShellAsWin;
|
||||
rv = webBrowser->QueryInterface(NS_GET_IID(nsIBaseWindow), getter_AddRefs(docShellAsWin));
|
||||
|
||||
initContext->baseWindow = docShellAsWin;
|
||||
|
||||
printf ("Init the baseWindow\n");
|
||||
|
||||
#ifdef XP_UNIX
|
||||
GdkSuperWin * superwin;
|
||||
|
@ -445,83 +576,90 @@ nsresult InitMozillaStuff (WebShellInitContext * initContext)
|
|||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3, ("Ashu Debugs - Inside InitMozillaStuff(%lx): - before Init Call...\n", initContext));
|
||||
}
|
||||
rv = initContext->webShell->Init((nsNativeWidget *)superwin, initContext->x, initContext->y, initContext->w, initContext->h);
|
||||
rv = initContext->baseWindow->InitWindow((nativeWindow) superwin, nsnull, initContext->x, initContext->y, initContext->w, initContext->h);
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3, ("Ashu Debugs - Inside InitMozillaStuff(%lx): - after Init Call...\n", initContext));
|
||||
}
|
||||
#else
|
||||
rv = initContext->webShell->Init((nsNativeWidget *)initContext->parentHWnd,
|
||||
rv = initContext->baseWindow->InitWindow((nativeWindow) initContext->parentHWnd, nsnull,
|
||||
initContext->x, initContext->y, initContext->w, initContext->h);
|
||||
#endif
|
||||
|
||||
printf("Create the BaseWindow...\n");
|
||||
|
||||
rv = initContext->baseWindow->Create();
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kInitWebShellError;
|
||||
return rv;
|
||||
}
|
||||
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("InitMozillaStuff(%lx): Install Prefs in the Webshell...\n", initContext));
|
||||
}
|
||||
#endif
|
||||
// Create the DocShell
|
||||
|
||||
nsCOMPtr<nsIPref> prefs = do_GetService(NS_PREF_PROGID);
|
||||
nsIDocShell * docShell;
|
||||
rv = webBrowser->GetDocShell(getter_AddRefs(&docShell));
|
||||
initContext->docShell = docShell;
|
||||
printf("docShell is %l \n", docShell);
|
||||
|
||||
if (prefs) {
|
||||
if (nsnull == gComponentManager) { // only do this once per app.
|
||||
prefs->ReadUserPrefs();
|
||||
}
|
||||
// Set the prefs in the outermost webshell.
|
||||
initContext->webShell->SetPrefs(prefs);
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kCreateDocShellError;
|
||||
return rv;
|
||||
}
|
||||
|
||||
// create our BrowserContainer, which implements many many things.
|
||||
|
||||
initContext->browserContainer =
|
||||
new CBrowserContainer(initContext->webBrowser, initContext->env,
|
||||
initContext);
|
||||
|
||||
// set the WebShellContainer. This is a pain. It's necessary
|
||||
// because nsWebShell.cpp still checks for mContainer all over the
|
||||
// place.
|
||||
nsCOMPtr<nsIWebShellContainer> wsContainer(do_QueryInterface(initContext->browserContainer));
|
||||
nsCOMPtr<nsIWebShell> webShell(do_QueryInterface(docShell));
|
||||
webShell->SetContainer(wsContainer);
|
||||
|
||||
// set the URIContentListener
|
||||
nsCOMPtr<nsIURIContentListener> contentListener(do_QueryInterface(initContext->browserContainer));
|
||||
webBrowser->SetParentURIContentListener(contentListener);
|
||||
|
||||
// set the TreeOwner
|
||||
nsCOMPtr<nsIDocShellTreeItem> docShellAsItem(do_QueryInterface(docShell));
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner(do_QueryInterface(initContext->browserContainer));
|
||||
docShellAsItem->SetTreeOwner(treeOwner);
|
||||
|
||||
// set the docloaderobserver
|
||||
nsCOMPtr<nsIDocumentLoaderObserver> observer(do_QueryInterface(initContext->browserContainer));
|
||||
docShell->SetDocLoaderObserver(observer);
|
||||
|
||||
if (nsnull == gHistory) {
|
||||
rv = gComponentManager->CreateInstance(kSessionHistoryCID, nsnull,
|
||||
kISessionHistoryIID,
|
||||
rv = gComponentManager->CreateInstance(kSHistoryCID, nsnull,
|
||||
kISHistoryIID,
|
||||
(void**)&gHistory);
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kHistoryWebShellError;
|
||||
return rv;
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kHistoryWebShellError;
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
initContext->webShell->SetSessionHistory(gHistory);
|
||||
|
||||
// set the sessionHistory in the initContexn
|
||||
initContext->sessionHistory = gHistory;
|
||||
printf("Creation Done.....\n");
|
||||
// Get the WebNavigation Object from the DocShell
|
||||
nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(initContext->docShell));
|
||||
initContext->webNavigation = webNav;
|
||||
|
||||
#if DEBUG_RAPTOR_CANVAS
|
||||
if (prLogModuleInfo) {
|
||||
PR_LOG(prLogModuleInfo, 3,
|
||||
("InitMozillaStuff(%lx): Show the WebShell...\n", initContext));
|
||||
}
|
||||
#endif
|
||||
// Set the History
|
||||
// initContext->webNavigation->SetSessionHistory(gHistory);
|
||||
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
|
||||
rv = initContext->webShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
// Save the sessionHistory in the initContext
|
||||
// initContext->sHistory = gHistory;
|
||||
|
||||
printf("Show the webBrowser\n");
|
||||
// Show the webBrowser
|
||||
rv = initContext->baseWindow->SetVisibility(PR_TRUE);
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kShowWebShellError;
|
||||
return rv;
|
||||
}
|
||||
rv = baseWindow->SetVisibility(PR_TRUE);
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kShowWebShellError;
|
||||
return rv;
|
||||
}
|
||||
|
||||
// set the docShell
|
||||
rv = initContext->webShell->QueryInterface(NS_GET_IID(nsIDocShell),
|
||||
getter_AddRefs(initContext->docShell));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kHistoryWebShellError;
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
initContext->initComplete = TRUE;
|
||||
|
||||
|
@ -531,9 +669,14 @@ nsresult InitMozillaStuff (WebShellInitContext * initContext)
|
|||
("InitMozillaStuff(%lx): enter event loop\n", initContext));
|
||||
}
|
||||
#endif
|
||||
PRThread *thread = PR_GetCurrentThread();
|
||||
printf("debug: edburns: InitMozillaStuff currentThread %p\n", thread);
|
||||
|
||||
// Just need to loop once to clear out events before returning
|
||||
processEventLoop(initContext);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
|
@ -66,7 +67,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NavigationImpl
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsLoadURLEvent * actionEvent = new wsLoadURLEvent(initContext->webShell, urlStringChars);
|
||||
wsLoadURLEvent * actionEvent = new wsLoadURLEvent(initContext->webNavigation, urlStringChars);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostEvent(initContext, event);
|
||||
|
@ -90,7 +91,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NavigationImpl
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsRefreshEvent * actionEvent = new wsRefreshEvent(initContext->webShell, (long) loadFlags);
|
||||
wsRefreshEvent * actionEvent = new wsRefreshEvent(initContext->webNavigation, (PRInt32) loadFlags);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
|
@ -115,7 +116,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NavigationImpl
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsStopEvent * actionEvent = new wsStopEvent(initContext->webShell);
|
||||
wsStopEvent * actionEvent = new wsStopEvent(initContext->webNavigation);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostEvent(initContext, event);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
|
@ -50,7 +51,7 @@ Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeSetBounds
|
|||
}
|
||||
if (initContext->initComplete) {
|
||||
wsResizeEvent * actionEvent =
|
||||
new wsResizeEvent(initContext->webShell, x, y, w, h);
|
||||
new wsResizeEvent(initContext->baseWindow, x, y, w, h);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostEvent(initContext, event);
|
||||
|
@ -83,8 +84,12 @@ JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
|
|||
initContext->initFailCode = 0;
|
||||
initContext->parentHWnd = parentHWnd;
|
||||
initContext->webShell = nsnull;
|
||||
initContext->docShell = nsnull;
|
||||
initContext->baseWindow = nsnull;
|
||||
initContext->sHistory = nsnull;
|
||||
initContext->webNavigation = nsnull;
|
||||
initContext->presShell = nsnull;
|
||||
initContext->embeddedThread = nsnull;
|
||||
initContext->sessionHistory = nsnull;
|
||||
initContext->actionQueue = nsnull;
|
||||
initContext->env = env;
|
||||
initContext->nativeEventThread = nsnull;
|
||||
|
@ -96,6 +101,7 @@ JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
|
|||
initContext->searchContext = nsnull;
|
||||
initContext->currentDocument = nsnull;
|
||||
initContext->propertiesClass = nsnull;
|
||||
initContext->browserContainer = nsnull;
|
||||
|
||||
#ifdef XP_UNIX
|
||||
initContext->gtkWinPtr =
|
||||
|
@ -128,9 +134,10 @@ Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeDestroyInitCo
|
|||
// see http://bugzilla.mozilla.org/show_bug.cgi?id=38271
|
||||
|
||||
initContext->webShell = nsnull;
|
||||
|
||||
//NOTE we don't de-allocate the global session history here.
|
||||
initContext->sessionHistory = nsnull;
|
||||
initContext->webNavigation = nsnull;
|
||||
initContext->presShell = nsnull;
|
||||
initContext->sHistory = nsnull;
|
||||
initContext->baseWindow = nsnull;
|
||||
|
||||
// PENDING(edburns): not sure if these need to be deleted
|
||||
initContext->actionQueue = nsnull;
|
||||
|
@ -151,6 +158,7 @@ Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeDestroyInitCo
|
|||
initContext->searchContext = nsnull;
|
||||
initContext->currentDocument = nsnull;
|
||||
initContext->propertiesClass = nsnull;
|
||||
initContext->browserContainer = nsnull;
|
||||
|
||||
delete initContext;
|
||||
}
|
||||
|
@ -167,7 +175,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsMoveToEvent * actionEvent = new wsMoveToEvent(initContext->webShell, x, y);
|
||||
wsMoveToEvent * actionEvent = new wsMoveToEvent(initContext->baseWindow, x, y);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostEvent(initContext, event);
|
||||
|
@ -185,7 +193,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsRemoveFocusEvent * actionEvent = new wsRemoveFocusEvent(initContext->webShell);
|
||||
wsRemoveFocusEvent * actionEvent = new wsRemoveFocusEvent(initContext->baseWindow);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostEvent(initContext, event);
|
||||
|
@ -203,7 +211,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsRepaintEvent * actionEvent = new wsRepaintEvent(initContext->webShell, (PRBool) forceRepaint);
|
||||
wsRepaintEvent * actionEvent = new wsRepaintEvent(initContext->baseWindow, (PRBool) forceRepaint);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostEvent(initContext, event);
|
||||
|
@ -214,23 +222,17 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
|
|||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeSetVisible
|
||||
(JNIEnv *env, jobject obj, jint webShellPtr, jboolean newState)
|
||||
{
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
nsresult rv;
|
||||
|
||||
rv = initContext->webShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kShowWebShellError;
|
||||
return;
|
||||
}
|
||||
rv = baseWindow->SetVisibility(JNI_TRUE == newState ? PR_TRUE : PR_FALSE);
|
||||
if (NS_FAILED(rv)) {
|
||||
initContext->initFailCode = kShowWebShellError;
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't SetVisibility");
|
||||
return;
|
||||
}
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
if (initContext == nsnull) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to raptorWebShellRepaint");
|
||||
return;
|
||||
}
|
||||
if (initContext->initComplete) {
|
||||
wsShowEvent * actionEvent = new wsShowEvent(initContext->baseWindow, JNI_TRUE == newState ? PR_TRUE : PR_FALSE);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
::util_PostEvent(initContext, event);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -245,12 +247,9 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
|
|||
}
|
||||
|
||||
if (initContext->initComplete) {
|
||||
wsSetFocusEvent * actionEvent = new wsSetFocusEvent(initContext->webShell);
|
||||
wsSetFocusEvent * actionEvent = new wsSetFocusEvent(initContext->baseWindow);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
::util_PostEvent(initContext, event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -22,53 +22,17 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
#include "WrapperFactoryImpl.h"
|
||||
|
||||
#include "jni_util.h"
|
||||
|
||||
#include "nsIServiceManager.h" // for NS_InitXPCOM
|
||||
#include "nsAppShellCIDs.h" // for NS_SESSIONHISTORY_CID
|
||||
#include "nsCRT.h" // for nsCRT::strcmp
|
||||
|
||||
#include "prenv.h"
|
||||
|
||||
static NS_DEFINE_CID(kSessionHistoryCID, NS_SESSIONHISTORY_CID);
|
||||
|
||||
#ifdef XP_PC
|
||||
|
||||
// All this stuff is needed to initialize the history
|
||||
|
||||
#define APPSHELL_DLL "appshell.dll"
|
||||
#define BROWSER_DLL "nsbrowser.dll"
|
||||
#define EDITOR_DLL "ender.dll"
|
||||
|
||||
#else
|
||||
|
||||
#ifdef XP_MAC
|
||||
|
||||
#define APPSHELL_DLL "APPSHELL_DLL"
|
||||
#define EDITOR_DLL "ENDER_DLL"
|
||||
|
||||
#else
|
||||
|
||||
// XP_UNIX || XP_BEOS
|
||||
#define APPSHELL_DLL "libnsappshell"MOZ_DLL_SUFFIX
|
||||
#define APPCORES_DLL "libappcores"MOZ_DLL_SUFFIX
|
||||
#define EDITOR_DLL "libender"MOZ_DLL_SUFFIX
|
||||
|
||||
#endif // XP_MAC
|
||||
|
||||
#endif // XP_PC
|
||||
|
||||
//
|
||||
// file data
|
||||
//
|
||||
|
||||
|
||||
static nsFileSpec gBinDir;
|
||||
const char * gBinDir;
|
||||
|
||||
PRLogModuleInfo *prLogModuleInfo = NULL; // declared in jni_util.h
|
||||
|
||||
|
@ -86,53 +50,20 @@ const char *gImplementedInterfaces[] = {
|
|||
// global data
|
||||
//
|
||||
|
||||
nsIComponentManager *gComponentManager = nsnull;
|
||||
|
||||
//
|
||||
// Functions to hook into mozilla
|
||||
//
|
||||
|
||||
extern "C" void NS_SetupRegistry();
|
||||
extern nsresult NS_AutoregisterComponents();
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_mozilla_webclient_wrapper_1native_WrapperFactoryImpl_nativeAppInitialize(
|
||||
JNIEnv *env, jobject obj, jstring verifiedBinDirAbsolutePath)
|
||||
{
|
||||
static PRBool gFirstTime = PR_TRUE;
|
||||
nsresult rv;
|
||||
|
||||
if (gFirstTime) {
|
||||
const char *nativePath = (const char *) ::util_GetStringUTFChars(env,
|
||||
verifiedBinDirAbsolutePath);
|
||||
gBinDir = nativePath;
|
||||
|
||||
// It is vitally important to call NS_InitXPCOM before calling
|
||||
// anything else.
|
||||
NS_InitXPCOM(nsnull, &gBinDir);
|
||||
NS_SetupRegistry();
|
||||
rv = NS_GetGlobalComponentManager(&gComponentManager);
|
||||
if (NS_FAILED(rv)) {
|
||||
::util_ThrowExceptionToJava(env, "NS_GetGlobalComponentManager() failed.");
|
||||
::util_ReleaseStringUTFChars(env, verifiedBinDirAbsolutePath,
|
||||
nativePath);
|
||||
return;
|
||||
}
|
||||
prLogModuleInfo = PR_NewLogModule("webclient");
|
||||
const char *webclientLogFile = PR_GetEnv("WEBCLIENT_LOG_FILE");
|
||||
if (nsnull != webclientLogFile) {
|
||||
PR_SetLogFile(webclientLogFile);
|
||||
// If this fails, it just goes to stdout/stderr
|
||||
}
|
||||
|
||||
gComponentManager->RegisterComponentLib(kSessionHistoryCID, nsnull,
|
||||
nsnull, APPSHELL_DLL,
|
||||
PR_FALSE, PR_FALSE);
|
||||
NS_AutoregisterComponents();
|
||||
gFirstTime = PR_FALSE;
|
||||
gBinDir = PL_strdup(nativePath);
|
||||
::util_ReleaseStringUTFChars(env, verifiedBinDirAbsolutePath, nativePath);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
|
@ -141,6 +72,8 @@ Java_org_mozilla_webclient_wrapper_1native_WrapperFactoryImpl_nativeTerminate
|
|||
{
|
||||
gComponentManager = nsnull;
|
||||
gHistory = nsnull;
|
||||
nsCRT::free((char *) gBinDir);
|
||||
gBinDir = nsnull;
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
|
@ -38,14 +39,20 @@
|
|||
#include <jni.h>
|
||||
|
||||
#include "nsCOMPtr.h" // so we can save the docShell
|
||||
#include "nsIWebBrowser.h"
|
||||
#include "nsIDocShell.h" // so we can save our nsIDocShell
|
||||
#include "nsISessionHistory.h" // so we can save our nsISessionHistory
|
||||
#include "nsIBaseWindow.h" // to get methods like SetVisibility
|
||||
#include "nsIWebNavigation.h" // for all Navigation commands
|
||||
#include "nsISHistory.h" // for session history
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIThread.h" // for PRThread
|
||||
#include "nsIWebShell.h" // for nsIWebShell
|
||||
#include "nsIEventQueueService.h" // for PLEventQueue
|
||||
#include "nsISearchContext.h" // for Find
|
||||
#include "nsIDOMDocument.h"
|
||||
|
||||
#include "wcIBrowserContainer.h" // our BrowserContainer
|
||||
|
||||
#include "ns_globals.h"
|
||||
|
||||
// Ashu
|
||||
|
@ -71,7 +78,11 @@ struct WebShellInitContext {
|
|||
#endif
|
||||
nsCOMPtr<nsIWebShell> webShell;
|
||||
nsCOMPtr<nsIDocShell> docShell;
|
||||
nsISessionHistory* sessionHistory;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
nsCOMPtr<nsISHistory> sHistory;
|
||||
nsCOMPtr<nsIWebNavigation> webNavigation;
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
nsCOMPtr<nsIWebBrowser> webBrowser;
|
||||
PLEventQueue * actionQueue;
|
||||
PRThread * embeddedThread;
|
||||
JNIEnv * env;
|
||||
|
@ -83,22 +94,24 @@ struct WebShellInitContext {
|
|||
int y;
|
||||
int w;
|
||||
int h;
|
||||
int gtkWinPtr;
|
||||
nsCOMPtr<nsISearchContext> searchContext;
|
||||
nsCOMPtr<nsIDOMDocument> currentDocument;
|
||||
int gtkWinPtr;
|
||||
nsCOMPtr<nsISearchContext> searchContext;
|
||||
nsCOMPtr<nsIDOMDocument> currentDocument;
|
||||
jclass propertiesClass;
|
||||
nsCOMPtr<wcIBrowserContainer> browserContainer;
|
||||
};
|
||||
|
||||
enum {
|
||||
kEventQueueError = 1,
|
||||
kCreateWebShellError,
|
||||
kCreateDocShellError,
|
||||
kGetBaseWindowError,
|
||||
kInitWebShellError,
|
||||
kShowWebShellError,
|
||||
kHistoryWebShellError,
|
||||
kClipboardWebShellError,
|
||||
kFindComponentError,
|
||||
kSearchContextError,
|
||||
kSelectAllError
|
||||
kSearchContextError
|
||||
};
|
||||
|
||||
extern JavaVM *gVm; // defined in jni_util.cpp
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
*
|
||||
* Contributor(s): Kirk Baker <kbaker@eb.com>
|
||||
* Ian Wilkinson <iw@ennoble.com>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
|
@ -32,6 +33,8 @@
|
|||
#include "nsCOMPtr.h"
|
||||
#include "nsIContentViewer.h"
|
||||
#include "nsIBaseWindow.h"
|
||||
#include "nsISHEntry.h"
|
||||
#include "nsIURI.h"
|
||||
|
||||
|
||||
void * handleEvent (PLEvent * event);
|
||||
|
@ -73,7 +76,7 @@ nsActionEvent::nsActionEvent ()
|
|||
(PLDestroyEventProc) ::destroyEvent);
|
||||
}
|
||||
|
||||
wsHistoryActionEvent::wsHistoryActionEvent(nsISessionHistory *yourHistory)
|
||||
wsHistoryActionEvent::wsHistoryActionEvent(nsISHistory *yourHistory)
|
||||
{
|
||||
mHistory = yourHistory;
|
||||
}
|
||||
|
@ -82,9 +85,9 @@ wsHistoryActionEvent::wsHistoryActionEvent(nsISessionHistory *yourHistory)
|
|||
* wsResizeEvent
|
||||
*/
|
||||
|
||||
wsResizeEvent::wsResizeEvent(nsIWebShell* webShell, PRInt32 x, PRInt32 y, PRInt32 w, PRInt32 h) :
|
||||
wsResizeEvent::wsResizeEvent(nsIBaseWindow* baseWindow, PRInt32 x, PRInt32 y, PRInt32 w, PRInt32 h) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell),
|
||||
mBaseWindow(baseWindow),
|
||||
mLeft(x),
|
||||
mBottom(y),
|
||||
mWidth(w),
|
||||
|
@ -97,17 +100,9 @@ void *
|
|||
wsResizeEvent::handleEvent ()
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
if (mWebShell) {
|
||||
if (mBaseWindow) {
|
||||
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
|
||||
rv = mWebShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return nsnull;
|
||||
}
|
||||
rv = baseWindow->SetPositionAndSize(mLeft, mBottom, mWidth, mHeight,
|
||||
rv = mBaseWindow->SetPositionAndSize(mLeft, mBottom, mWidth, mHeight,
|
||||
PR_TRUE);
|
||||
|
||||
|
||||
|
@ -123,9 +118,9 @@ wsResizeEvent::handleEvent ()
|
|||
* wsLoadURLEvent
|
||||
*/
|
||||
|
||||
wsLoadURLEvent::wsLoadURLEvent(nsIWebShell* webShell, PRUnichar * urlString) :
|
||||
wsLoadURLEvent::wsLoadURLEvent(nsIWebNavigation* webNavigation, PRUnichar * urlString) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell),
|
||||
mWebNavigation(webNavigation),
|
||||
mURL(nsnull)
|
||||
{
|
||||
mURL = new nsString(urlString);
|
||||
|
@ -135,18 +130,17 @@ wsLoadURLEvent::wsLoadURLEvent(nsIWebShell* webShell, PRUnichar * urlString) :
|
|||
void *
|
||||
wsLoadURLEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell && mURL) {
|
||||
|
||||
nsresult rv = mWebShell->LoadURL(mURL->GetUnicode());
|
||||
}
|
||||
return nsnull;
|
||||
if (mWebNavigation && mURL) {
|
||||
nsresult rv = mWebNavigation->LoadURI(mURL->GetUnicode());
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
||||
|
||||
wsLoadURLEvent::~wsLoadURLEvent ()
|
||||
{
|
||||
if (mURL != nsnull)
|
||||
delete mURL;
|
||||
if (mURL != nsnull)
|
||||
delete mURL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -155,9 +149,9 @@ wsLoadURLEvent::~wsLoadURLEvent ()
|
|||
* wsStopEvent
|
||||
*/
|
||||
|
||||
wsStopEvent::wsStopEvent(nsIWebShell* webShell) :
|
||||
wsStopEvent::wsStopEvent(nsIWebNavigation* webNavigation) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell)
|
||||
mWebNavigation(webNavigation)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -165,8 +159,8 @@ wsStopEvent::wsStopEvent(nsIWebShell* webShell) :
|
|||
void *
|
||||
wsStopEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv = mWebShell->Stop();
|
||||
if (mWebNavigation) {
|
||||
nsresult rv = mWebNavigation->Stop();
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
@ -177,9 +171,10 @@ wsStopEvent::handleEvent ()
|
|||
* wsShowEvent
|
||||
*/
|
||||
|
||||
wsShowEvent::wsShowEvent(nsIWebShell* webShell) :
|
||||
wsShowEvent::wsShowEvent(nsIBaseWindow* baseWindow, PRBool state) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell)
|
||||
mBaseWindow(baseWindow),
|
||||
mState(state)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -187,17 +182,8 @@ wsShowEvent::wsShowEvent(nsIWebShell* webShell) :
|
|||
void *
|
||||
wsShowEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
|
||||
rv = mWebShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return nsnull;
|
||||
}
|
||||
baseWindow->SetVisibility(PR_TRUE);
|
||||
if (mBaseWindow) {
|
||||
mBaseWindow->SetVisibility(mState);
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
@ -208,9 +194,9 @@ wsShowEvent::handleEvent ()
|
|||
* wsHideEvent
|
||||
*/
|
||||
|
||||
wsHideEvent::wsHideEvent(nsIWebShell* webShell) :
|
||||
wsHideEvent::wsHideEvent(nsIBaseWindow* baseWindow) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell)
|
||||
mBaseWindow(baseWindow)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -218,17 +204,8 @@ wsHideEvent::wsHideEvent(nsIWebShell* webShell) :
|
|||
void *
|
||||
wsHideEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
|
||||
rv = mWebShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return nsnull;
|
||||
}
|
||||
baseWindow->SetVisibility(PR_FALSE);
|
||||
if (mBaseWindow) {
|
||||
mBaseWindow->SetVisibility(PR_FALSE);
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
@ -239,9 +216,9 @@ wsHideEvent::handleEvent ()
|
|||
* wsMoveToEvent
|
||||
*/
|
||||
|
||||
wsMoveToEvent::wsMoveToEvent(nsIWebShell* webShell, PRInt32 x, PRInt32 y) :
|
||||
wsMoveToEvent::wsMoveToEvent(nsIBaseWindow* baseWindow, PRInt32 x, PRInt32 y) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell),
|
||||
mBaseWindow(baseWindow),
|
||||
mX(x),
|
||||
mY(y)
|
||||
{
|
||||
|
@ -251,17 +228,8 @@ wsMoveToEvent::wsMoveToEvent(nsIWebShell* webShell, PRInt32 x, PRInt32 y) :
|
|||
void *
|
||||
wsMoveToEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
|
||||
rv = mWebShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return nsnull;
|
||||
}
|
||||
rv = baseWindow->SetPosition(mX, mY);
|
||||
if (mBaseWindow) {
|
||||
nsresult rv = mBaseWindow->SetPosition(mX, mY);
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
@ -271,9 +239,9 @@ wsMoveToEvent::handleEvent ()
|
|||
* wsSetFocusEvent
|
||||
*/
|
||||
|
||||
wsSetFocusEvent::wsSetFocusEvent(nsIWebShell* webShell) :
|
||||
wsSetFocusEvent::wsSetFocusEvent(nsIBaseWindow* baseWindow) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell)
|
||||
mBaseWindow(baseWindow)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -281,17 +249,8 @@ wsSetFocusEvent::wsSetFocusEvent(nsIWebShell* webShell) :
|
|||
void *
|
||||
wsSetFocusEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
|
||||
rv = mWebShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return nsnull;
|
||||
}
|
||||
rv = baseWindow->SetFocus();
|
||||
if (mBaseWindow) {
|
||||
nsresult rv = mBaseWindow->SetFocus();
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
@ -302,9 +261,9 @@ wsSetFocusEvent::handleEvent ()
|
|||
* wsRemoveFocusEvent
|
||||
*/
|
||||
|
||||
wsRemoveFocusEvent::wsRemoveFocusEvent(nsIWebShell* webShell) :
|
||||
wsRemoveFocusEvent::wsRemoveFocusEvent(nsIBaseWindow* baseWindow) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell)
|
||||
mBaseWindow(baseWindow)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -312,8 +271,9 @@ wsRemoveFocusEvent::wsRemoveFocusEvent(nsIWebShell* webShell) :
|
|||
void *
|
||||
wsRemoveFocusEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv = mWebShell->RemoveFocus();
|
||||
if (mBaseWindow) {
|
||||
//PENDING (Ashu) : No removeFocus functionality provided in M15
|
||||
// nsresult rv = mWebShell->RemoveFocus();
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
@ -324,9 +284,9 @@ wsRemoveFocusEvent::handleEvent ()
|
|||
* wsRepaintEvent
|
||||
*/
|
||||
|
||||
wsRepaintEvent::wsRepaintEvent(nsIWebShell* webShell, PRBool forceRepaint) :
|
||||
wsRepaintEvent::wsRepaintEvent(nsIBaseWindow* baseWindow, PRBool forceRepaint) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell),
|
||||
mBaseWindow(baseWindow),
|
||||
mForceRepaint(forceRepaint)
|
||||
{
|
||||
}
|
||||
|
@ -335,17 +295,8 @@ wsRepaintEvent::wsRepaintEvent(nsIWebShell* webShell, PRBool forceRepaint) :
|
|||
void *
|
||||
wsRepaintEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
|
||||
rv = mWebShell->QueryInterface(NS_GET_IID(nsIBaseWindow),
|
||||
getter_AddRefs(baseWindow));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return nsnull;
|
||||
}
|
||||
rv = baseWindow->Repaint(mForceRepaint);
|
||||
if (mBaseWindow) {
|
||||
nsresult rv = mBaseWindow->Repaint(mForceRepaint);
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
@ -356,8 +307,9 @@ wsRepaintEvent::handleEvent ()
|
|||
* wsCanBackEvent
|
||||
*/
|
||||
|
||||
wsCanBackEvent::wsCanBackEvent(nsISessionHistory* yourSessionHistory) :
|
||||
wsHistoryActionEvent(yourSessionHistory)
|
||||
wsCanBackEvent::wsCanBackEvent(nsIWebNavigation* webNavigation) :
|
||||
nsActionEvent(),
|
||||
mWebNavigation(webNavigation)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -366,11 +318,11 @@ void *
|
|||
wsCanBackEvent::handleEvent ()
|
||||
{
|
||||
void *result = nsnull;
|
||||
if (mHistory) {
|
||||
if (mWebNavigation) {
|
||||
nsresult rv;
|
||||
PRBool canGoBack;
|
||||
|
||||
rv = mHistory->CanGoBack(&canGoBack);
|
||||
rv = mWebNavigation->GetCanGoBack(&canGoBack);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
|
@ -385,9 +337,11 @@ wsCanBackEvent::handleEvent ()
|
|||
* wsCanForwardEvent
|
||||
*/
|
||||
|
||||
wsCanForwardEvent::wsCanForwardEvent(nsISessionHistory* yourSessionHistory) :
|
||||
wsHistoryActionEvent(yourSessionHistory)
|
||||
wsCanForwardEvent::wsCanForwardEvent(nsIWebNavigation* webNavigation) :
|
||||
nsActionEvent(),
|
||||
mWebNavigation(webNavigation)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -395,11 +349,11 @@ void *
|
|||
wsCanForwardEvent::handleEvent ()
|
||||
{
|
||||
void *result = nsnull;
|
||||
if (mHistory) {
|
||||
if (mWebNavigation) {
|
||||
nsresult rv;
|
||||
PRBool canGoForward;
|
||||
|
||||
rv = mHistory->CanGoForward(&canGoForward);
|
||||
rv = mWebNavigation->GetCanGoForward(&canGoForward);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
|
@ -417,9 +371,9 @@ wsCanForwardEvent::handleEvent ()
|
|||
* wsBackEvent
|
||||
*/
|
||||
|
||||
wsBackEvent::wsBackEvent(nsISessionHistory* yourSessionHistory,
|
||||
nsIWebShell *yourWebShell) :
|
||||
wsHistoryActionEvent(yourSessionHistory), mWebShell(yourWebShell)
|
||||
wsBackEvent::wsBackEvent(nsIWebNavigation* webNavigation) :
|
||||
nsActionEvent(),
|
||||
mWebNavigation(webNavigation)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -428,8 +382,8 @@ void *
|
|||
wsBackEvent::handleEvent ()
|
||||
{
|
||||
void *result = nsnull;
|
||||
if (mHistory && mWebShell) {
|
||||
nsresult rv = mHistory->GoBack(mWebShell);
|
||||
if (mWebNavigation) {
|
||||
nsresult rv = mWebNavigation->GoBack();
|
||||
|
||||
result = (void *) rv;
|
||||
}
|
||||
|
@ -442,10 +396,9 @@ wsBackEvent::handleEvent ()
|
|||
* wsForwardEvent
|
||||
*/
|
||||
|
||||
wsForwardEvent::wsForwardEvent(nsISessionHistory *yourSessionHistory,
|
||||
nsIWebShell* webShell) :
|
||||
wsHistoryActionEvent(yourSessionHistory),
|
||||
mWebShell(webShell)
|
||||
wsForwardEvent::wsForwardEvent(nsIWebNavigation* webNavigation) :
|
||||
nsActionEvent(),
|
||||
mWebNavigation(webNavigation)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -454,9 +407,9 @@ void *
|
|||
wsForwardEvent::handleEvent ()
|
||||
{
|
||||
void *result = nsnull;
|
||||
if (mHistory && mWebShell) {
|
||||
if (mWebNavigation) {
|
||||
|
||||
nsresult rv = mHistory->GoForward(mWebShell);
|
||||
nsresult rv = mWebNavigation->GoForward();
|
||||
result = (void *) rv;
|
||||
}
|
||||
return result;
|
||||
|
@ -468,10 +421,9 @@ wsForwardEvent::handleEvent ()
|
|||
* wsGoToEvent
|
||||
*/
|
||||
|
||||
wsGoToEvent::wsGoToEvent(nsISessionHistory *yourSessionHistory,
|
||||
nsIWebShell* webShell, PRInt32 historyIndex) :
|
||||
wsHistoryActionEvent(yourSessionHistory),
|
||||
mWebShell(webShell), mHistoryIndex(historyIndex)
|
||||
wsGoToEvent::wsGoToEvent(nsIWebNavigation* webNavigation, PRInt32 historyIndex) :
|
||||
nsActionEvent(),
|
||||
mWebNavigation(webNavigation), mHistoryIndex(historyIndex)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -480,9 +432,11 @@ void *
|
|||
wsGoToEvent::handleEvent ()
|
||||
{
|
||||
void *result = nsnull;
|
||||
if (mHistory && mWebShell) {
|
||||
nsresult rv = mHistory->Goto(mHistoryIndex, mWebShell, PR_TRUE);
|
||||
result = (void *) rv;
|
||||
nsresult rv = nsnull;
|
||||
if (mWebNavigation) {
|
||||
//PENDING (Ashu) : GoTo Functionality seems to be missing in M15
|
||||
// nsresult rv = mHistory->Goto(mHistoryIndex, mWebShell, PR_TRUE);
|
||||
result = (void *) rv;
|
||||
}
|
||||
return result;
|
||||
} // handleEvent()
|
||||
|
@ -493,8 +447,9 @@ wsGoToEvent::handleEvent ()
|
|||
* wsGetHistoryLengthEvent
|
||||
*/
|
||||
|
||||
wsGetHistoryLengthEvent::wsGetHistoryLengthEvent(nsISessionHistory* yourSessionHistory) :
|
||||
wsHistoryActionEvent(yourSessionHistory)
|
||||
wsGetHistoryLengthEvent::wsGetHistoryLengthEvent(nsISHistory * sHistory) :
|
||||
nsActionEvent(),
|
||||
mHistory(sHistory)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -506,7 +461,7 @@ wsGetHistoryLengthEvent::handleEvent ()
|
|||
if (mHistory) {
|
||||
PRInt32 historyLength = 0;
|
||||
|
||||
nsresult rv = mHistory->GetHistoryLength(&historyLength);
|
||||
nsresult rv = mHistory->GetCount(&historyLength);
|
||||
result = (void *) historyLength;
|
||||
}
|
||||
return result;
|
||||
|
@ -518,8 +473,9 @@ wsGetHistoryLengthEvent::handleEvent ()
|
|||
* wsGetHistoryIndexEvent
|
||||
*/
|
||||
|
||||
wsGetHistoryIndexEvent::wsGetHistoryIndexEvent(nsISessionHistory *yourSessionHistory) :
|
||||
wsHistoryActionEvent(yourSessionHistory)
|
||||
wsGetHistoryIndexEvent::wsGetHistoryIndexEvent(nsISHistory * sHistory) :
|
||||
nsActionEvent(),
|
||||
mHistory(sHistory)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -531,7 +487,7 @@ wsGetHistoryIndexEvent::handleEvent ()
|
|||
if (mHistory) {
|
||||
PRInt32 historyIndex = 0;
|
||||
|
||||
nsresult rv = mHistory->GetCurrentIndex(&historyIndex);
|
||||
nsresult rv = mHistory->GetIndex(&historyIndex);
|
||||
result = (void *) historyIndex;
|
||||
}
|
||||
return result;
|
||||
|
@ -543,8 +499,9 @@ wsGetHistoryIndexEvent::handleEvent ()
|
|||
* wsGetURLEvent
|
||||
*/
|
||||
|
||||
wsGetURLEvent::wsGetURLEvent(nsISessionHistory* yourSessionHistory) :
|
||||
wsHistoryActionEvent(yourSessionHistory)
|
||||
wsGetURLEvent::wsGetURLEvent(nsISHistory * sHistory) :
|
||||
nsActionEvent(),
|
||||
mHistory(sHistory)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -560,19 +517,31 @@ wsGetURLEvent::handleEvent ()
|
|||
char *currentURL = nsnull;
|
||||
nsresult rv;
|
||||
|
||||
rv = mHistory->GetCurrentIndex(¤tIndex);
|
||||
rv = mHistory->GetIndex(¤tIndex);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// THIS STRING NEEDS TO BE deleted!!!!!!
|
||||
rv = mHistory->GetURLForIndex(currentIndex, ¤tURL);
|
||||
nsISHEntry * Entry;
|
||||
rv = mHistory->GetEntryAtIndex(currentIndex, PR_FALSE, &Entry);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
nsIURI * URI;
|
||||
rv = Entry->GetURI(&URI);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
rv = URI->GetSpec(¤tURL);
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
result = (void *) currentURL;
|
||||
}
|
||||
return result;
|
||||
|
@ -582,10 +551,11 @@ wsGetURLEvent::handleEvent ()
|
|||
* wsGetURLForIndexEvent
|
||||
*/
|
||||
|
||||
wsGetURLForIndexEvent::wsGetURLForIndexEvent(nsISessionHistory *yourSessionHistory,
|
||||
wsGetURLForIndexEvent::wsGetURLForIndexEvent(nsISHistory * sHistory,
|
||||
PRInt32 historyIndex) :
|
||||
wsHistoryActionEvent(yourSessionHistory),
|
||||
mHistoryIndex(historyIndex)
|
||||
nsActionEvent(),
|
||||
mHistory(sHistory),
|
||||
mHistoryIndex(historyIndex)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -597,11 +567,25 @@ wsGetURLForIndexEvent::handleEvent ()
|
|||
if (mHistory) {
|
||||
nsresult rv;
|
||||
char *indexURL = nsnull;
|
||||
rv = mHistory->GetURLForIndex(mHistoryIndex, &indexURL);
|
||||
|
||||
nsISHEntry * Entry;
|
||||
rv = mHistory->GetEntryAtIndex(mHistoryIndex, PR_FALSE, &Entry);
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
nsIURI * URI;
|
||||
rv = Entry->GetURI(&URI);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
rv = URI->GetSpec(&indexURL);
|
||||
if (NS_FAILED(rv)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
result = (void *) indexURL;
|
||||
}
|
||||
return result;
|
||||
|
@ -615,24 +599,51 @@ wsGetURLForIndexEvent::handleEvent ()
|
|||
* wsRefreshEvent
|
||||
*/
|
||||
|
||||
wsRefreshEvent::wsRefreshEvent(nsIWebShell* webShell, long yourLoadFlags) :
|
||||
wsRefreshEvent::wsRefreshEvent(nsIWebNavigation* webNavigation, PRInt32 reloadType) :
|
||||
nsActionEvent(),
|
||||
mWebShell(webShell)
|
||||
mWebNavigation(webNavigation),
|
||||
mReloadType(reloadType)
|
||||
{
|
||||
loadFlags = (nsLoadFlags) yourLoadFlags;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void *
|
||||
wsRefreshEvent::handleEvent ()
|
||||
{
|
||||
if (mWebShell) {
|
||||
nsresult rv = mWebShell->Reload(loadFlags);
|
||||
if (mWebNavigation) {
|
||||
nsresult rv = mWebNavigation->Reload(mReloadType);
|
||||
return (void *) rv;
|
||||
}
|
||||
return nsnull;
|
||||
} // handleEvent()
|
||||
|
||||
|
||||
|
||||
wsViewSourceEvent::wsViewSourceEvent(nsIDocShell* docShell, PRBool viewMode) :
|
||||
nsActionEvent(),
|
||||
mDocShell(docShell),
|
||||
mViewMode(viewMode)
|
||||
{
|
||||
}
|
||||
|
||||
void *
|
||||
wsViewSourceEvent::handleEvent ()
|
||||
{
|
||||
if(mDocShell) {
|
||||
if(mViewMode) {
|
||||
nsresult rv = mDocShell->SetViewMode(nsIDocShell::viewSource);
|
||||
return (void *) rv;
|
||||
}
|
||||
else
|
||||
{
|
||||
nsresult rv = mDocShell->SetViewMode(nsIDocShell::viewNormal);
|
||||
return (void *) rv;
|
||||
}
|
||||
}
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
wsAddDocLoaderObserverEvent::wsAddDocLoaderObserverEvent(nsIDocShell* yourDocShell,
|
||||
nsIDocumentLoaderObserver *yourObserver) :
|
||||
nsActionEvent(),
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
*
|
||||
* Contributor(s): Kirk Baker <kbaker@eb.com>
|
||||
* Ian Wilkinson <iw@ennoble.com>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
* Mark Lin <mark.lin@eng.sun.com>
|
||||
* Mark Goddard
|
||||
* Ed Burns <edburns@acm.org>
|
||||
|
@ -37,12 +38,12 @@
|
|||
#include "nsIDocShell.h"
|
||||
#include "nsIDocumentLoaderObserver.h"
|
||||
#include "nsIWebShell.h"
|
||||
#include "nsISessionHistory.h"
|
||||
#include "nsISHistory.h"
|
||||
#include "nsIBaseWindow.h"
|
||||
#include "nsIWebNavigation.h"
|
||||
#include "nsString.h"
|
||||
#include "plevent.h"
|
||||
|
||||
#include "DocumentLoaderObserverImpl.h"
|
||||
|
||||
/**
|
||||
|
||||
* Concrete subclasses of nsActionEvent are used to safely convey an
|
||||
|
@ -95,20 +96,20 @@ protected:
|
|||
|
||||
class wsHistoryActionEvent : public nsActionEvent {
|
||||
public:
|
||||
wsHistoryActionEvent(nsISessionHistory *yourHistory);
|
||||
wsHistoryActionEvent(nsISHistory *yourHistory);
|
||||
virtual ~wsHistoryActionEvent() {};
|
||||
|
||||
protected:
|
||||
nsISessionHistory *mHistory;
|
||||
nsISHistory *mHistory;
|
||||
};
|
||||
|
||||
class wsResizeEvent : public nsActionEvent {
|
||||
public:
|
||||
wsResizeEvent (nsIWebShell* webShell, PRInt32 x, PRInt32 y, PRInt32 w, PRInt32 h);
|
||||
wsResizeEvent (nsIBaseWindow* baseWindow, PRInt32 x, PRInt32 y, PRInt32 w, PRInt32 h);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIBaseWindow * mBaseWindow;
|
||||
PRInt32 mLeft;
|
||||
PRInt32 mBottom;
|
||||
PRInt32 mWidth;
|
||||
|
@ -118,56 +119,57 @@ protected:
|
|||
|
||||
class wsLoadURLEvent : public nsActionEvent {
|
||||
public:
|
||||
wsLoadURLEvent (nsIWebShell* webShell, PRUnichar * urlString);
|
||||
wsLoadURLEvent (nsIWebNavigation* webNavigation, PRUnichar * urlString);
|
||||
~wsLoadURLEvent ();
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
nsString * mURL;
|
||||
};
|
||||
|
||||
|
||||
class wsStopEvent : public nsActionEvent {
|
||||
public:
|
||||
wsStopEvent (nsIWebShell* webShell);
|
||||
wsStopEvent (nsIWebNavigation* webNavigation);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsShowEvent : public nsActionEvent {
|
||||
public:
|
||||
wsShowEvent (nsIWebShell* webShell);
|
||||
wsShowEvent (nsIBaseWindow* baseWindow, PRBool state);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIBaseWindow * mBaseWindow;
|
||||
PRBool mState;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsHideEvent : public nsActionEvent {
|
||||
public:
|
||||
wsHideEvent (nsIWebShell* webShell);
|
||||
wsHideEvent (nsIBaseWindow* baseWindow);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIBaseWindow * mBaseWindow;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsMoveToEvent : public nsActionEvent {
|
||||
public:
|
||||
wsMoveToEvent (nsIWebShell* webShell, PRInt32 x, PRInt32 y);
|
||||
wsMoveToEvent (nsIBaseWindow* baseWindow, PRInt32 x, PRInt32 y);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIBaseWindow * mBaseWindow;
|
||||
PRInt32 mX;
|
||||
PRInt32 mY;
|
||||
};
|
||||
|
@ -176,119 +178,131 @@ protected:
|
|||
|
||||
class wsSetFocusEvent : public nsActionEvent {
|
||||
public:
|
||||
wsSetFocusEvent(nsIWebShell* webShell);
|
||||
wsSetFocusEvent(nsIBaseWindow* baseWindow);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIBaseWindow * mBaseWindow;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsRemoveFocusEvent : public nsActionEvent {
|
||||
public:
|
||||
wsRemoveFocusEvent(nsIWebShell* webShell);
|
||||
wsRemoveFocusEvent(nsIBaseWindow* baseWindow);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIBaseWindow * mBaseWindow;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsRepaintEvent : public nsActionEvent {
|
||||
public:
|
||||
wsRepaintEvent (nsIWebShell* webShell, PRBool forceRepaint);
|
||||
wsRepaintEvent (nsIBaseWindow* baseWindow, PRBool forceRepaint);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIBaseWindow * mBaseWindow;
|
||||
PRBool mForceRepaint;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsCanBackEvent : public wsHistoryActionEvent {
|
||||
//class wsCanBackEvent : public wsHistoryActionEvent {
|
||||
class wsCanBackEvent : public nsActionEvent {
|
||||
public:
|
||||
wsCanBackEvent (nsISessionHistory* yourSessionHistory);
|
||||
wsCanBackEvent (nsIWebNavigation* webNavigation);
|
||||
void * handleEvent (void);
|
||||
protected:
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsCanForwardEvent : public wsHistoryActionEvent {
|
||||
//class wsCanForwardEvent : public wsHistoryActionEvent {
|
||||
class wsCanForwardEvent : public nsActionEvent {
|
||||
public:
|
||||
wsCanForwardEvent(nsISessionHistory* yourSessionHistory);
|
||||
wsCanForwardEvent(nsIWebNavigation* webNavigation);
|
||||
void * handleEvent (void);
|
||||
protected:
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
};
|
||||
|
||||
|
||||
class wsBackEvent : public wsHistoryActionEvent {
|
||||
class wsBackEvent : public nsActionEvent {
|
||||
public:
|
||||
wsBackEvent (nsISessionHistory* yourSessionHistory,
|
||||
nsIWebShell *yourWebShell);
|
||||
wsBackEvent (nsIWebNavigation* webNavigation);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell *mWebShell;
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
};
|
||||
|
||||
|
||||
class wsForwardEvent : public wsHistoryActionEvent {
|
||||
class wsForwardEvent : public nsActionEvent {
|
||||
public:
|
||||
wsForwardEvent (nsISessionHistory* yourSessionHistory,
|
||||
nsIWebShell *yourWebShell);
|
||||
wsForwardEvent (nsIWebNavigation* webNavigation);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell *mWebShell;
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
};
|
||||
|
||||
|
||||
class wsGoToEvent : public wsHistoryActionEvent {
|
||||
class wsGoToEvent : public nsActionEvent {
|
||||
public:
|
||||
wsGoToEvent (nsISessionHistory *yourSessionHistory,
|
||||
nsIWebShell* webShell,
|
||||
wsGoToEvent (nsIWebNavigation* webNavigation,
|
||||
PRInt32 historyIndex);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
PRInt32 mHistoryIndex;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsGetHistoryLengthEvent : public wsHistoryActionEvent {
|
||||
class wsGetHistoryLengthEvent : public nsActionEvent {
|
||||
public:
|
||||
wsGetHistoryLengthEvent(nsISessionHistory* yourSessionHistory);
|
||||
wsGetHistoryLengthEvent(nsISHistory * sHistory);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsISHistory * mHistory;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsGetHistoryIndexEvent : public wsHistoryActionEvent {
|
||||
class wsGetHistoryIndexEvent : public nsActionEvent {
|
||||
public:
|
||||
wsGetHistoryIndexEvent (nsISessionHistory *yourSessionHistory);
|
||||
wsGetHistoryIndexEvent (nsISHistory * sHistory);
|
||||
void * handleEvent (void);
|
||||
protected:
|
||||
nsISHistory * mHistory;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class wsGetURLEvent : public wsHistoryActionEvent {
|
||||
class wsGetURLEvent : public nsActionEvent {
|
||||
public:
|
||||
wsGetURLEvent (nsISessionHistory* yourSessionHistory);
|
||||
wsGetURLEvent (nsISHistory * sHistory);
|
||||
void * handleEvent (void);
|
||||
protected:
|
||||
nsISHistory * mHistory;
|
||||
};
|
||||
|
||||
class wsGetURLForIndexEvent : public wsHistoryActionEvent {
|
||||
|
||||
class wsGetURLForIndexEvent : public nsActionEvent {
|
||||
public:
|
||||
wsGetURLForIndexEvent(nsISessionHistory *yourSessionHistory,
|
||||
wsGetURLForIndexEvent(nsISHistory * sHistory,
|
||||
PRInt32 historyIndex);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
PRInt32 mHistoryIndex;
|
||||
nsISHistory * mHistory;
|
||||
PRInt32 mHistoryIndex;
|
||||
};
|
||||
|
||||
|
||||
|
@ -296,15 +310,26 @@ protected:
|
|||
// added by Mark Goddard OTMP 9/2/1999
|
||||
class wsRefreshEvent : public nsActionEvent {
|
||||
public:
|
||||
wsRefreshEvent (nsIWebShell* webShell,
|
||||
long yourLoadFlags);
|
||||
wsRefreshEvent (nsIWebNavigation* webNavigation,
|
||||
PRInt32 reloadType);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIWebShell * mWebShell;
|
||||
nsLoadFlags loadFlags;
|
||||
nsIWebNavigation * mWebNavigation;
|
||||
PRInt32 mReloadType;
|
||||
};
|
||||
|
||||
class wsViewSourceEvent : public nsActionEvent {
|
||||
public:
|
||||
wsViewSourceEvent (nsIDocShell * docShell, PRBool viewMode);
|
||||
void * handleEvent (void);
|
||||
|
||||
protected:
|
||||
nsIDocShell * mDocShell;
|
||||
PRBool mViewMode;
|
||||
};
|
||||
|
||||
|
||||
class wsAddDocLoaderObserverEvent : public nsActionEvent {
|
||||
public:
|
||||
wsAddDocLoaderObserverEvent(nsIDocShell *yourDocShell,
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Ed Burns <edburns@acm.org>
|
||||
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -28,6 +29,10 @@
|
|||
|
||||
*/
|
||||
|
||||
#include "nsIWebShell.h" // for nsIWebShell
|
||||
#include "nsIEventQueueService.h" // for PLEventQueue
|
||||
|
||||
|
||||
#ifndef ns_globals_h
|
||||
#define ns_globals_h
|
||||
|
||||
|
@ -46,7 +51,8 @@ extern PRLogModuleInfo *prLogModuleInfo; // defined in WrapperFactory.cpp
|
|||
*/
|
||||
|
||||
class nsIComponentManager;
|
||||
extern nsIComponentManager *gComponentManager; // defined in WrapperFactoryImpl.cpp
|
||||
extern nsIComponentManager *gComponentManager; // defined in NativeEventThread.cpp
|
||||
extern const char * gBinDir; // defined in WrapperFactoryImpl.cpp
|
||||
|
||||
/**
|
||||
|
||||
|
@ -58,9 +64,14 @@ extern nsIComponentManager *gComponentManager; // defined in WrapperFactoryImpl.
|
|||
|
||||
*/
|
||||
|
||||
class nsISessionHistory;
|
||||
extern nsISessionHistory *gHistory; // defined in NativeEventThread.cpp
|
||||
class nsISHistory;
|
||||
extern nsISHistory *gHistory; // defined in NativeEventThread.cpp
|
||||
|
||||
|
||||
class nsIEventQueueService;
|
||||
extern PLEventQueue * gActionQueue; // defined in NativeEventThread.cpp
|
||||
|
||||
class nsIThread;
|
||||
extern PRThread * gEmbeddedThread; // defined in NativeEventThread.cpp
|
||||
|
||||
#endif // ns_globals_h
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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 code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef WCI_BROWSERCONTAINER
|
||||
#define WCI_BROWSERCONTAINER
|
||||
|
||||
#include "nsISupports.h"
|
||||
|
||||
#include "jni.h"
|
||||
|
||||
#define WC_IBROWSERCONTAINER_IID_STR "fdadb2e0-3028-11d4-8a96-0080c7b9c5ba"
|
||||
#define WC_IBROWSERCONTAINER_IID {0xfdadb2e0, 0x3028, 0x11d4, { 0x8a, 0x96, 0x00, 0x80, 0xc7, 0xb9, 0xc5, 0xba }}
|
||||
|
||||
/**
|
||||
|
||||
* This interface defines methods that webclient mozilla must use to
|
||||
* support listeners.
|
||||
|
||||
*/
|
||||
|
||||
class wcIBrowserContainer : public nsISupports {
|
||||
public:
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(WC_IBROWSERCONTAINER_IID)
|
||||
|
||||
|
||||
NS_IMETHOD AddMouseListener(jobject target) = 0;
|
||||
NS_IMETHOD AddDocumentLoadListener(jobject target) = 0;
|
||||
NS_IMETHOD RemoveAllListeners() = 0;
|
||||
|
||||
};
|
||||
|
||||
#define NS_DECL_WCIBROWSERCONTAINER \
|
||||
NS_IMETHOD AddMouseListener(jobject target); \
|
||||
NS_IMETHOD AddDocumentLoadListener(jobject target); \
|
||||
NS_IMETHOD RemoveAllListeners();
|
||||
|
||||
|
||||
#endif
|
Загрузка…
Ссылка в новой задаче