mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Implemented java_authenticate (duh!). Uses appearance manager text controls to implement a pretty convincing password dialog.
This commit is contained in:
parent
a3839fe2da
commit
6b9763c789
@ -33,8 +33,10 @@
|
||||
#include <Files.h>
|
||||
#include <Dialogs.h>
|
||||
#include <Appearance.h>
|
||||
#include <Resources.h>
|
||||
|
||||
extern MRJConsole* theConsole;
|
||||
extern short thePluginRefnum;
|
||||
|
||||
static Boolean appearanceManagerExists()
|
||||
{
|
||||
@ -120,9 +122,72 @@ static Boolean java_exit(JMSessionRef session, SInt32 status)
|
||||
return false; /* not allowed in a plugin. */
|
||||
}
|
||||
|
||||
static void getItemText(DialogPtr dialog, DialogItemIndex index, ResType textTag, char str[256])
|
||||
{
|
||||
ControlHandle control;
|
||||
if (::GetDialogItemAsControl(dialog, index, &control) == noErr) {
|
||||
Size textSize;
|
||||
::GetControlDataSize(control, kControlNoPart, textTag, &textSize);
|
||||
if (textSize > 255) textSize = 255;
|
||||
::GetControlData(control, kControlNoPart, textTag, textSize, (Ptr)str, &textSize);
|
||||
str[textSize] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
static ControlHandle getItemControl(DialogPtr dialog, DialogItemIndex index)
|
||||
{
|
||||
ControlHandle control;
|
||||
if (::GetDialogItemAsControl(dialog, index, &control) == noErr)
|
||||
return control;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
enum {
|
||||
kUserNameIndex = 3,
|
||||
kPasswordIndex,
|
||||
kAuthenticationDialog = 128
|
||||
};
|
||||
|
||||
static Boolean java_authenticate(JMSessionRef session, const char *url, const char *realm, char userName[255], char password[255])
|
||||
{
|
||||
return false;
|
||||
Boolean result = false;
|
||||
if (thePluginRefnum != -1) {
|
||||
// ensure resources come from the plugin (yuck!).
|
||||
short oldRefnum = ::CurResFile();
|
||||
::UseResFile(thePluginRefnum);
|
||||
|
||||
DialogRecord storage;
|
||||
DialogPtr dialog = ::GetNewDialog(kAuthenticationDialog, &storage, WindowPtr(-1));
|
||||
if (dialog != NULL) {
|
||||
// set up default buttons.
|
||||
::SetDialogDefaultItem(dialog, kStdOkItemIndex);
|
||||
::SetDialogCancelItem(dialog, kStdCancelItemIndex);
|
||||
::SetDialogTracksCursor(dialog, true);
|
||||
|
||||
// set up default keyboard focus.
|
||||
ControlHandle userNameControl = getItemControl(dialog, kUserNameIndex);
|
||||
if (userNameControl != NULL)
|
||||
::SetKeyboardFocus(dialog, userNameControl, kControlFocusNextPart);
|
||||
|
||||
::ShowWindow(dialog);
|
||||
|
||||
DialogItemIndex itemHit = 0;
|
||||
do {
|
||||
::ModalDialog(ModalFilterUPP(NULL), &itemHit);
|
||||
} while (itemHit != 1 && itemHit != 2);
|
||||
|
||||
if (itemHit == 1) {
|
||||
getItemText(dialog, kUserNameIndex, kControlEditTextTextTag, userName);
|
||||
getItemText(dialog, kPasswordIndex, kControlEditTextPasswordTag, password);
|
||||
result = true;
|
||||
}
|
||||
|
||||
::CloseDialog(dialog);
|
||||
::UseResFile(oldRefnum);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static void java_lowmem(JMSessionRef session)
|
||||
|
Loading…
Reference in New Issue
Block a user