How to test this bug. 1. Remove your .mozilla directory, or equivalent 1.5 Set up the proxy preferences so you can get to bugzilla.mozilla.org. 2. Start mozilla and go to Edit-Preferences->Advanced->Cookies. 3. Remove all Cookies 4. Accept all cookies, and warn me before accepting cookes 5. Stop mozilla. Start webclient and visit <http://bugzilla.mozilla.org/enter_bug.cgi?product=Browser>, then enter your bugzilla userid and password. A Confirm dialog should come up. Make sure that the dialog does the right thing, that is, if you accept the cookie, exit webclient, start up mozilla, and use the cookie viewer to see that the cookie is there. Please note that you see the Enter a bug page whether you accept the cookie or not. git-svn-id: svn://10.0.0.236/branches/JAVADEV_RTM_20001102@83508 18797224-902f-48f8-a5cc-f745e15eee43
165 lines
5.1 KiB
C++
165 lines
5.1 KiB
C++
/* -*- 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>
|
|
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
|
* Ann Sunhachawee
|
|
*/
|
|
|
|
#include "prlog.h" // for PR_ASSERT
|
|
|
|
#include "ns_util.h"
|
|
|
|
/**
|
|
|
|
* a null terminated array of listener interfaces we support. This is
|
|
* used in NativeEventThread.cpp nativeAddListener,
|
|
* nativeRemoveListener, and in CBrowserContainer.cpp
|
|
|
|
*/
|
|
|
|
const char *gSupportedListenerInterfaces[] = {
|
|
DOCUMENT_LOAD_LISTENER_CLASSNAME_VALUE,
|
|
MOUSE_LISTENER_CLASSNAME_VALUE,
|
|
nsnull
|
|
};
|
|
|
|
void util_PostEvent(WebShellInitContext * initContext, PLEvent * event)
|
|
{
|
|
PL_ENTER_EVENT_QUEUE_MONITOR(initContext->actionQueue);
|
|
|
|
::PL_PostEvent(initContext->actionQueue, event);
|
|
|
|
PL_EXIT_EVENT_QUEUE_MONITOR(initContext->actionQueue);
|
|
} // PostEvent()
|
|
|
|
|
|
void *util_PostSynchronousEvent(WebShellInitContext * initContext, PLEvent * event)
|
|
{
|
|
void * voidResult = nsnull;
|
|
|
|
PL_ENTER_EVENT_QUEUE_MONITOR(initContext->actionQueue);
|
|
|
|
voidResult = ::PL_PostSynchronousEvent(initContext->actionQueue, event);
|
|
|
|
PL_EXIT_EVENT_QUEUE_MONITOR(initContext->actionQueue);
|
|
|
|
return voidResult;
|
|
} // PostSynchronousEvent()
|
|
|
|
nsresult util_CreateJstringsFromUnichars(wsStringStruct *strings,
|
|
PRInt32 arrayLen)
|
|
{
|
|
PR_ASSERT(strings);
|
|
int i = 0;
|
|
nsAutoString autoStr;
|
|
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION);
|
|
|
|
for (i = 0; i < arrayLen; i++) {
|
|
autoStr = strings[i].uniStr;
|
|
strings[i].jStr = nsnull;
|
|
if (autoStr.GetUnicode()) {
|
|
strings[i].jStr = ::util_NewString(env, (const jchar *)
|
|
autoStr.GetUnicode(),
|
|
autoStr.Length());
|
|
if (nsnull == strings[i].jStr) {
|
|
return NS_ERROR_NULL_POINTER;
|
|
}
|
|
}
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult util_DeleteJstringsFromUnichars(wsStringStruct *strings,
|
|
PRInt32 arrayLen)
|
|
{
|
|
PR_ASSERT(strings);
|
|
int i = 0;
|
|
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION);
|
|
|
|
for (i = 0; i < arrayLen; i++) {
|
|
if (nsnull != strings[i].jStr) {
|
|
::util_DeleteString(env, strings[i].jStr);
|
|
strings[i].jStr = nsnull;
|
|
}
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
#ifdef XP_UNIX
|
|
jint util_GetGTKWinPtrFromCanvas(JNIEnv *env, jobject browserControlCanvas)
|
|
{
|
|
jint result = -1;
|
|
#ifdef BAL_INTERFACE
|
|
#else
|
|
jclass cls = env->GetObjectClass(browserControlCanvas); // Get Class for BrowserControlImpl object
|
|
jclass clz = env->FindClass("org/mozilla/webclient/BrowserControlImpl");
|
|
if (nsnull == clz) {
|
|
::util_ThrowExceptionToJava(env, "Exception: Could not find class for BrowserControlImpl");
|
|
return (jint) 0;
|
|
}
|
|
jboolean ans = env->IsInstanceOf(browserControlCanvas, clz);
|
|
if (JNI_FALSE == ans) {
|
|
::util_ThrowExceptionToJava(env, "Exception: We have a problem");
|
|
return (jint) 0;
|
|
}
|
|
// Get myCanvas IVar
|
|
jfieldID fid = env->GetFieldID(cls, "myCanvas", "Lorg/mozilla/webclient/BrowserControlCanvas;");
|
|
if (nsnull == fid) {
|
|
::util_ThrowExceptionToJava(env, "Exception: field myCanvas not found in the jobject for BrowserControlImpl");
|
|
return (jint) 0;
|
|
}
|
|
jobject canvasObj = env->GetObjectField(browserControlCanvas, fid);
|
|
jclass canvasCls = env->GetObjectClass(canvasObj);
|
|
if (nsnull == canvasCls) {
|
|
::util_ThrowExceptionToJava(env, "Exception: Could Not find Class for CanvasObj");
|
|
return (jint) 0;
|
|
}
|
|
jfieldID gtkfid = env->GetFieldID(canvasCls, "gtkWinPtr", "I");
|
|
if (nsnull == gtkfid) {
|
|
::util_ThrowExceptionToJava(env, "Exception: field gtkWinPtr not found in the jobject for BrowserControlCanvas");
|
|
return (jint) 0;
|
|
}
|
|
result = env->GetIntField(canvasObj, gtkfid);
|
|
#endif
|
|
return result;
|
|
}
|
|
#endif
|
|
|
|
//
|
|
// Implementations for functions defined in ../src_share/jni_util.h, but not
|
|
// implemented there.
|
|
//
|
|
|
|
void util_LogMessage(int level, const char *fmt)
|
|
{
|
|
if (prLogModuleInfo) {
|
|
PR_LOG(prLogModuleInfo, level, (fmt));
|
|
}
|
|
}
|
|
|
|
void util_Assert(void *test)
|
|
{
|
|
PR_ASSERT(test);
|
|
}
|