Compare commits
64 Commits
Accessible
...
MODULAR_NE
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c515100b8e | ||
|
|
fe0f4d855f | ||
|
|
3d4019f9c4 | ||
|
|
9d96048a4b | ||
|
|
ae5d3bac86 | ||
|
|
dd5a8c0dfa | ||
|
|
a5f43d2a13 | ||
|
|
897d60bb73 | ||
|
|
fd1359cac8 | ||
|
|
aa88ba7591 | ||
|
|
0c9f6e6d80 | ||
|
|
f635646933 | ||
|
|
74a41b1364 | ||
|
|
dddf36e52d | ||
|
|
42f1218f94 | ||
|
|
9369584965 | ||
|
|
644d7cd9c7 | ||
|
|
cac7b720c3 | ||
|
|
371d44de72 | ||
|
|
d5840939c7 | ||
|
|
2a50f93567 | ||
|
|
d2a75afae6 | ||
|
|
8f2a603835 | ||
|
|
d9babead55 | ||
|
|
daa26a48be | ||
|
|
be77d90b49 | ||
|
|
e2793376a7 | ||
|
|
6d54e5f6e3 | ||
|
|
b0db9a4acd | ||
|
|
a7a9a03946 | ||
|
|
5340ef2b1b | ||
|
|
1043bb4cc9 | ||
|
|
9cb908ce37 | ||
|
|
93cf7025ed | ||
|
|
42b35681a2 | ||
|
|
bd2471c41c | ||
|
|
3231691800 | ||
|
|
2bdd74e814 | ||
|
|
97b4b7a6d1 | ||
|
|
55369bada1 | ||
|
|
82ed1f72bb | ||
|
|
52d02fe072 | ||
|
|
11e91b2751 | ||
|
|
9c6ac35617 | ||
|
|
50054acba1 | ||
|
|
79a4c9490b | ||
|
|
c181b6d7f9 | ||
|
|
a5e5b98ad8 | ||
|
|
f453d81444 | ||
|
|
05cb725cfb | ||
|
|
46d5611628 | ||
|
|
d9a5e647f5 | ||
|
|
6c07a2ca66 | ||
|
|
3c5574eb6e | ||
|
|
fee6fe5171 | ||
|
|
46e818474a | ||
|
|
ac3fe4623e | ||
|
|
e5430a78e1 | ||
|
|
e8ecd3ec68 | ||
|
|
86e542aa90 | ||
|
|
35f45baaed | ||
|
|
e72757dc16 | ||
|
|
f7ac2222ef | ||
|
|
4099eb2ef3 |
@@ -1,32 +0,0 @@
|
||||
#
|
||||
# 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):
|
||||
#
|
||||
|
||||
DEPTH = ..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = public src build
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
#
|
||||
# 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):
|
||||
#
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = accessibility
|
||||
LIBRARY_NAME = accessibility
|
||||
SHORT_LIBNAME = access
|
||||
IS_COMPONENT = 1
|
||||
REQUIRES = xpcom string dom
|
||||
|
||||
CPPSRCS = nsAccessibilityFactory.cpp
|
||||
|
||||
LOCAL_INCLUDES = -I$(srcdir)/../src
|
||||
|
||||
SHARED_LIBRARY_LIBS = \
|
||||
$(DIST)/lib/libaccessibility_s.$(LIB_SUFFIX) \
|
||||
$(DIST)/lib/libchrome_s.$(LIB_SUFFIX) \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DSO_LDOPTS = \
|
||||
$(MOZ_COMPONENT_LIBS) \
|
||||
-lgkgfx \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#!gmake
|
||||
#
|
||||
# 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):
|
||||
|
||||
DEPTH=..\..
|
||||
MODULE=accessibility
|
||||
|
||||
MAKE_OBJ_TYPE=DLL
|
||||
DLLNAME=accessibility
|
||||
DLL=.\$(OBJDIR)\$(DLLNAME).dll
|
||||
|
||||
CPP_OBJS=\
|
||||
.\$(OBJDIR)\nsAccessibilityFactory.obj \
|
||||
$(NULL)
|
||||
|
||||
LINCS = $(LINCS) -I..\src # for implementation headers
|
||||
|
||||
LLIBS=\
|
||||
$(DIST)\lib\xpcom.lib \
|
||||
$(DIST)\lib\accessibility_s.lib \
|
||||
$(DIST)\lib\timer_s.lib \
|
||||
$(DIST)\lib\gkgfxwin.lib \
|
||||
$(LIBNSPR)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
install:: $(DLL)
|
||||
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin\components
|
||||
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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):
|
||||
*/
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIModule.h"
|
||||
#include "nsIGenericFactory.h"
|
||||
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsIAccessibilityService.h"
|
||||
#include "nscore.h"
|
||||
|
||||
static NS_IMETHODIMP
|
||||
NS_ConstructAccessibilityService(nsISupports *aOuter, REFNSIID aIID, void **aResult)
|
||||
{
|
||||
nsresult rv;
|
||||
NS_ASSERTION(aOuter == nsnull, "no aggregation");
|
||||
nsIAccessibilityService* accessibility;
|
||||
rv = NS_NewAccessibilityService(&accessibility);
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_ERROR("Unable to construct chrome registry");
|
||||
return rv;
|
||||
}
|
||||
rv = accessibility->QueryInterface(aIID, aResult);
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to find correct interface");
|
||||
NS_RELEASE(accessibility);
|
||||
return rv;
|
||||
}
|
||||
|
||||
// The list of components we register
|
||||
static nsModuleComponentInfo components[] =
|
||||
{
|
||||
{ "AccessibilityService",
|
||||
NS_ACCESSIBILITY_SERVICE_CID,
|
||||
"@mozilla.org/accessibilityService;1",
|
||||
NS_ConstructAccessibilityService
|
||||
},
|
||||
};
|
||||
|
||||
NS_IMPL_NSGETMODULE("nsAccessibilityModule", components);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,26 +0,0 @@
|
||||
#!gmake
|
||||
#
|
||||
# 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):
|
||||
|
||||
DEPTH=..
|
||||
|
||||
DIRS= public src build
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
@@ -1,3 +0,0 @@
|
||||
nsIAccessibilityService.idl
|
||||
nsIAccessible.idl
|
||||
nsIMutableAccessible.idl
|
||||
@@ -1,41 +0,0 @@
|
||||
#
|
||||
# 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):
|
||||
#
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = accessibility
|
||||
XPIDL_MODULE= accessibility
|
||||
|
||||
XPIDLSRCS = \
|
||||
nsIAccessibilityService.idl \
|
||||
nsIAccessible.idl \
|
||||
nsIMutableAccessible.idl \
|
||||
nsIAccessibleEventReceiver.idl \
|
||||
nsIAccessibleEventListener.idl \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
#!gmake
|
||||
#
|
||||
# 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):
|
||||
|
||||
DEPTH=..\..
|
||||
MODULE=accessibility
|
||||
XPIDL_MODULE=accessibility
|
||||
|
||||
XPIDLSRCS = \
|
||||
.\nsIAccessibilityService.idl \
|
||||
.\nsIAccessible.idl \
|
||||
.\nsIMutableAccessible.idl \
|
||||
.\nsIAccessibleEventReceiver.idl \
|
||||
.\nsIAccessibleEventListener.idl \
|
||||
$(NULL)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
@@ -1,53 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: Eric Vaughan (evaughan@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "domstubs.idl"
|
||||
#include "nsIMutableAccessible.idl"
|
||||
#include "nsIAtom.idl"
|
||||
|
||||
[scriptable, uuid(68D9720A-0984-42b6-A3F5-8237ED925727)]
|
||||
interface nsIAccessibilityService : nsISupports
|
||||
{
|
||||
nsIAccessible createRootAccessible(in nsISupports aPresShell, in nsISupports aFrame);
|
||||
nsIMutableAccessible createMutableAccessible(in nsISupports aNode);
|
||||
nsIAccessible createHTMLBlockAccessible(in nsIAccessible aAccessible, in nsIDOMNode aNode, in nsISupports aPresShell);
|
||||
nsIAccessible createHTMLSelectAccessible(in nsIAtom aAccessible, in nsIDOMNode aNode, in nsISupports aPresShell);
|
||||
nsIAccessible createHTMLCheckboxAccessible(in nsISupports aFrame);
|
||||
nsIAccessible createHTMLRadioButtonAccessible(in nsISupports aFrame);
|
||||
nsIAccessible createHTMLButtonAccessible(in nsISupports aFrame);
|
||||
nsIAccessible createHTMLTextAccessible(in nsISupports aFrame);
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
// for component registration
|
||||
// {DE401C37-9A7F-4278-A6F8-3DE2833989EF}
|
||||
#define NS_ACCESSIBILITY_SERVICE_CID \
|
||||
{ 0xde401c37, 0x9a7f, 0x4278, { 0xa6, 0xf8, 0x3d, 0xe2, 0x83, 0x39, 0x89, 0xef } }
|
||||
|
||||
extern nsresult
|
||||
NS_NewAccessibilityService(nsIAccessibilityService** aResult);
|
||||
%}
|
||||
@@ -1,205 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: Eric D Vaughan (evaughan@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[scriptable, uuid(B26FBE47-9A5F-42a1-822B-082461AE4D6D)]
|
||||
interface nsIAccessible : nsISupports
|
||||
{
|
||||
/* Can't use these javascript can't tell us if properties are undefined
|
||||
|
||||
readonly attribute nsIAccessible accParent;
|
||||
readonly attribute nsIAccessible accNextSibling;
|
||||
readonly attribute nsIAccessible accPreviousSibling;
|
||||
readonly attribute nsIAccessible accFirstChild;
|
||||
readonly attribute nsIAccessible accLastChild;
|
||||
readonly attribute long accChildCount;
|
||||
|
||||
attribute wstring accName;
|
||||
attribute wstring accValue;
|
||||
readonly attribute wstring accDescription;
|
||||
readonly attribute wstring accRole;
|
||||
readonly attribute unsigned long accState;
|
||||
readonly attribute wstring accHelp;
|
||||
readonly attribute wstring accDefaultAction;
|
||||
readonly attribute boolean accFocused;
|
||||
*/
|
||||
|
||||
nsIAccessible getAccParent();
|
||||
nsIAccessible getAccNextSibling();
|
||||
nsIAccessible getAccPreviousSibling();
|
||||
nsIAccessible getAccFirstChild();
|
||||
nsIAccessible getAccLastChild();
|
||||
|
||||
long getAccChildCount();
|
||||
wstring getAccName();
|
||||
wstring getAccValue();
|
||||
void setAccName(in wstring name);
|
||||
void setAccValue(in wstring value);
|
||||
|
||||
wstring getAccDescription();
|
||||
wstring getAccRole();
|
||||
unsigned long getAccState();
|
||||
unsigned long getAccExtState();
|
||||
wstring getAccDefaultAction();
|
||||
wstring getAccHelp();
|
||||
boolean getAccFocused();
|
||||
|
||||
nsIAccessible accGetAt(in long x, in long y);
|
||||
|
||||
nsIAccessible accNavigateRight();
|
||||
nsIAccessible accNavigateLeft();
|
||||
nsIAccessible accNavigateUp();
|
||||
nsIAccessible accNavigateDown();
|
||||
|
||||
void accGetBounds(out long x,
|
||||
out long y,
|
||||
out long width,
|
||||
out long height);
|
||||
|
||||
void accAddSelection();
|
||||
void accRemoveSelection();
|
||||
void accExtendSelection();
|
||||
void accTakeSelection();
|
||||
void accTakeFocus();
|
||||
void accDoDefaultAction();
|
||||
|
||||
// MSAA State flags - used for bitfield. More than 1 allowed.
|
||||
const unsigned long STATE_UNAVAILABLE = 0x00000001; // Disabled, maps to opposite of Java ENABLED, Gnome/ATK SENSITIVE?
|
||||
const unsigned long STATE_SELECTED = 0x00000002;
|
||||
const unsigned long STATE_FOCUSED = 0x00000004;
|
||||
const unsigned long STATE_PRESSED = 0x00000008;
|
||||
const unsigned long STATE_CHECKED = 0x00000010;
|
||||
const unsigned long STATE_MIXED = 0x00000020; // 3-state checkbox or toolbar button
|
||||
const unsigned long STATE_READONLY = 0x00000040; // Maps to opposite of Java/Gnome/ATK EDITABLE state
|
||||
const unsigned long STATE_HOTTRACKED = 0x00000080;
|
||||
const unsigned long STATE_DEFAULT = 0x00000100;
|
||||
const unsigned long STATE_EXPANDED = 0x00000200;
|
||||
const unsigned long STATE_COLLAPSED = 0x00000400;
|
||||
const unsigned long STATE_BUSY = 0x00000800;
|
||||
const unsigned long STATE_FLOATING = 0x00001000; // Children "owned" not "contained" by parent
|
||||
const unsigned long STATE_MARQUEED = 0x00002000;
|
||||
const unsigned long STATE_ANIMATED = 0x00004000;
|
||||
const unsigned long STATE_INVISIBLE = 0x00008000;
|
||||
const unsigned long STATE_OFFSCREEN = 0x00010000;
|
||||
const unsigned long STATE_SIZEABLE = 0x00020000;
|
||||
const unsigned long STATE_MOVEABLE = 0x00040000;
|
||||
const unsigned long STATE_SELFVOICING = 0x00080000;
|
||||
const unsigned long STATE_FOCUSABLE = 0x00100000;
|
||||
const unsigned long STATE_SELECTABLE = 0x00200000;
|
||||
const unsigned long STATE_LINKED = 0x00400000;
|
||||
const unsigned long STATE_TRAVERSED = 0x00800000;
|
||||
const unsigned long STATE_MULTISELECTABLE = 0x01000000; // Supports multiple selection
|
||||
const unsigned long STATE_EXTSELECTABLE = 0x02000000; // Supports extended selection
|
||||
const unsigned long STATE_ALERT_LOW = 0x04000000; // This information is of low priority
|
||||
const unsigned long STATE_ALERT_MEDIUM = 0x08000000; // This information is of medium priority
|
||||
const unsigned long STATE_ALERT_HIGH = 0x10000000; // This information is of high priority
|
||||
const unsigned long STATE_PROTECTED = 0x20000000; // Maps to Gnome's *Role* ATK_ROLE_PASSWD_TEXT, nothing for Java?
|
||||
const unsigned long STATE_HASPOPUP = 0x40000000; // New in MSAA 2.0
|
||||
|
||||
// Extended state flags (for now non-MSAA, for Java and Gnome/ATK support)
|
||||
// This is only the states that there isn't already a mapping for in MSAA
|
||||
// See www.accessmozilla.org/article.php?sid=11 for information on the mappings between accessibility API states
|
||||
const unsigned long STATE_INVALID = 0x00200000; // No explanation given
|
||||
const unsigned long STATE_ACTIVE = 0x00400000; // This window is currently the active window
|
||||
const unsigned long STATE_EXPANDABLE = 0x00800000; // An item that can be expanded, such as a tree item with children
|
||||
const unsigned long STATE_MODAL = 0x01000000; // Must do something with control before leaving it
|
||||
const unsigned long STATE_MULTI_LINE = 0x02000000; // Edit control that can take multiple lines
|
||||
const unsigned long STATE_SENSITIVE = 0x04000000; // No explanation given
|
||||
const unsigned long STATE_RESIZABLE = 0x08000000; // Object can be resized
|
||||
const unsigned long STATE_SHOWING = 0x10000000; // This object and all of it's ancestors are visible
|
||||
const unsigned long STATE_SINGLE_LINE = 0x20000000; // This text object can only contain 1 line of text
|
||||
const unsigned long STATE_TRANSIENT = 0x40000000; // Tells accessibility aid "Don't add event listener - this object doesn't generate any". For example, could be used with higher level containers.
|
||||
const unsigned long STATE_VERTICAL = 0x80000000; // Especially used for sliders and scrollbars
|
||||
|
||||
|
||||
/*
|
||||
// MSAA Roles - only one per nsIAccessible or IAccessible
|
||||
const unsigned long ROLE_TITLEBAR = 0x00000001;
|
||||
const unsigned long ROLE_MENUBAR = 0x00000002;
|
||||
const unsigned long ROLE_SCROLLBAR = 0x00000003;
|
||||
const unsigned long ROLE_GRIP = 0x00000004;
|
||||
const unsigned long ROLE_SOUND = 0x00000005;
|
||||
const unsigned long ROLE_CURSOR = 0x00000006;
|
||||
const unsigned long ROLE_CARET = 0x00000007;
|
||||
const unsigned long ROLE_ALERT = 0x00000008;
|
||||
const unsigned long ROLE_WINDOW = 0x00000009;
|
||||
const unsigned long ROLE_CLIENT = 0x0000000A;
|
||||
const unsigned long ROLE_MENUPOPUP = 0x0000000B;
|
||||
const unsigned long ROLE_MENUITEM = 0x0000000C;
|
||||
const unsigned long ROLE_TOOLTIP = 0x0000000D;
|
||||
const unsigned long ROLE_APPLICATION = 0x0000000E;
|
||||
const unsigned long ROLE_DOCUMENT = 0x0000000F;
|
||||
const unsigned long ROLE_PANE = 0x00000010;
|
||||
const unsigned long ROLE_CHART = 0x00000011;
|
||||
const unsigned long ROLE_DIALOG = 0x00000012;
|
||||
const unsigned long ROLE_BORDER = 0x00000013;
|
||||
const unsigned long ROLE_GROUPING = 0x00000014;
|
||||
const unsigned long ROLE_SEPARATOR = 0x00000015;
|
||||
const unsigned long ROLE_TOOLBAR = 0x00000016;
|
||||
const unsigned long ROLE_STATUSBAR = 0x00000017;
|
||||
const unsigned long ROLE_TABLE = 0x00000018;
|
||||
const unsigned long ROLE_COLUMNHEADER = 0x00000019;
|
||||
const unsigned long ROLE_ROWHEADER = 0x0000001A;
|
||||
const unsigned long ROLE_COLUMN = 0x0000001B;
|
||||
const unsigned long ROLE_ROW = 0x0000001C;
|
||||
const unsigned long ROLE_CELL = 0x0000001D;
|
||||
const unsigned long ROLE_LINK = 0x0000001E;
|
||||
const unsigned long ROLE_HELPBALLOON = 0x0000001F;
|
||||
const unsigned long ROLE_CHARACTER = 0x00000020;
|
||||
const unsigned long ROLE_LIST = 0x00000021;
|
||||
const unsigned long ROLE_LISTITEM = 0x00000022;
|
||||
const unsigned long ROLE_OUTLINE = 0x00000023;
|
||||
const unsigned long ROLE_OUTLINEITEM = 0x00000024;
|
||||
const unsigned long ROLE_PAGETAB = 0x00000025;
|
||||
const unsigned long ROLE_PROPERTYPAGE = 0x00000026;
|
||||
const unsigned long ROLE_INDICATOR = 0x00000027;
|
||||
const unsigned long ROLE_GRAPHIC = 0x00000028;
|
||||
const unsigned long ROLE_STATICTEXT = 0x00000029;
|
||||
const unsigned long ROLE_TEXT = 0x0000002A; // Editable, selectable, etc.
|
||||
const unsigned long ROLE_PUSHBUTTON = 0x0000002B;
|
||||
const unsigned long ROLE_CHECKBUTTON = 0x0000002C;
|
||||
const unsigned long ROLE_RADIOBUTTON = 0x0000002D;
|
||||
const unsigned long ROLE_COMBOBOX = 0x0000002E;
|
||||
const unsigned long ROLE_DROPLIST = 0x0000002F;
|
||||
const unsigned long ROLE_PROGRESSBAR = 0x00000030;
|
||||
const unsigned long ROLE_DIAL = 0x00000031;
|
||||
const unsigned long ROLE_HOTKEYFIELD = 0x00000032;
|
||||
const unsigned long ROLE_SLIDER = 0x00000033;
|
||||
const unsigned long ROLE_SPINBUTTON = 0x00000034;
|
||||
const unsigned long ROLE_DIAGRAM = 0x00000035;
|
||||
const unsigned long ROLE_ANIMATION = 0x00000036;
|
||||
const unsigned long ROLE_EQUATION = 0x00000037;
|
||||
const unsigned long ROLE_BUTTONDROPDOWN = 0x00000038;
|
||||
const unsigned long ROLE_BUTTONMENU = 0x00000039;
|
||||
const unsigned long ROLE_BUTTONDROPDOWNGRID = 0x0000003A;
|
||||
const unsigned long ROLE_WHITESPACE = 0x0000003B;
|
||||
const unsigned long ROLE_PAGETABLIST = 0x0000003C;
|
||||
const unsigned long ROLE_CLOCK = 0x0000003D;
|
||||
const unsigned long ROLE_SPLITBUTTON = 0x0000003E; // New in MSAA 2.0
|
||||
const unsigned long ROLE_IPADDRESS = 0x0000003F; // New in MSAA 2.0
|
||||
|
||||
*/
|
||||
|
||||
};
|
||||
@@ -1,34 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: Eric D Vaughan (evaughan@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsIAccessible.idl"
|
||||
|
||||
[scriptable, uuid(BEE49E7D-9D06-49bf-8984-1694C697D74F)]
|
||||
interface nsIAccessibleEventListener : nsISupports
|
||||
{
|
||||
const unsigned long EVENT_FOCUS = 0x8005;
|
||||
|
||||
void handleEvent(in unsigned long aEvent, in nsIAccessible aTarget);
|
||||
};
|
||||
@@ -1,32 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: Eric D Vaughan (evaughan@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsIAccessibleEventListener.idl"
|
||||
|
||||
[scriptable, uuid(AB331E47-4FAA-4a12-9480-9B480DD78B39)]
|
||||
interface nsIAccessibleEventReceiver : nsISupports
|
||||
{
|
||||
void addAccessibleEventListener(in nsIAccessibleEventListener aListener);
|
||||
void removeAccessibleEventListener(in nsIAccessibleEventListener aListener);
|
||||
};
|
||||
@@ -1,36 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s): pav
|
||||
*/
|
||||
|
||||
#include "nsIAccessible.idl"
|
||||
#include "nsIAtom.idl"
|
||||
|
||||
[scriptable, uuid(AD3274E5-9DD1-4614-81C8-BFF992869CBE)]
|
||||
interface nsIMutableAccessible : nsIAccessible
|
||||
{
|
||||
void SetNameAsNodeValue();
|
||||
void SetName(in wstring aName);
|
||||
void SetNameAsAttribute(in nsIAtom aAtom);
|
||||
void SetRole(in wstring aRole);
|
||||
void SetIsLeaf(in boolean aLeaf);
|
||||
};
|
||||
@@ -1,49 +0,0 @@
|
||||
#
|
||||
# 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):
|
||||
#
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = accessibility
|
||||
LIBRARY_NAME = accessibility_s
|
||||
REQUIRES = xpcom string layout widget dom view locale gfx2
|
||||
|
||||
CPPSRCS = \
|
||||
nsAccessible.cpp \
|
||||
nsAccessibilityService.cpp \
|
||||
nsMutableAccessible.cpp \
|
||||
nsRootAccessible.cpp \
|
||||
nsHTMLFormControlAccessible.cpp \
|
||||
nsHTMLTextAccessible.cpp \
|
||||
nsSelectAccessible.cpp \
|
||||
nsGenericAccessible.cpp \
|
||||
$(NULL)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
override NO_SHARED_LIB=1
|
||||
override NO_STATIC_LIB=
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -1,252 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; 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.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsIAccessibilityService.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsMutableAccessible.h"
|
||||
#include "nsHTMLFormControlAccessible.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsSelectAccessible.h"
|
||||
#include "nsHTMLTextAccessible.h"
|
||||
|
||||
//--------------------
|
||||
|
||||
|
||||
nsAccessibilityService::nsAccessibilityService()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
nsAccessibilityService::~nsAccessibilityService()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS1(nsAccessibilityService, nsIAccessibilityService);
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsIAccessibilityService methods:
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateRootAccessible(nsISupports* aPresContext, nsISupports* aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* f = NS_STATIC_CAST(nsIFrame*, aFrame);
|
||||
|
||||
nsCOMPtr<nsIPresContext> c = do_QueryInterface(aPresContext);
|
||||
NS_ASSERTION(c,"Error non prescontext passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresShell> s;
|
||||
c->GetShell(getter_AddRefs(s));
|
||||
|
||||
NS_ASSERTION(s,"Error not presshell!!");
|
||||
|
||||
nsCOMPtr<nsIWeakReference> wr = getter_AddRefs(NS_GetWeakReference(s));
|
||||
|
||||
*_retval = new nsRootAccessible(wr,f);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateMutableAccessible(nsISupports* aNode, nsIMutableAccessible **_retval)
|
||||
{
|
||||
*_retval = new nsMutableAccessible(aNode);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateHTMLBlockAccessible(nsIAccessible* aAccessible, nsIDOMNode* node, nsISupports* aPresContext, nsIAccessible **_retval)
|
||||
{
|
||||
nsCOMPtr<nsIContent> n = do_QueryInterface(node);
|
||||
NS_ASSERTION(n,"Error non nsIContent passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresContext> c = do_QueryInterface(aPresContext);
|
||||
NS_ASSERTION(c,"Error non prescontext passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresShell> s;
|
||||
c->GetShell(getter_AddRefs(s));
|
||||
|
||||
NS_ASSERTION(s,"Error not presshell!!");
|
||||
|
||||
nsCOMPtr<nsIWeakReference> wr = getter_AddRefs(NS_GetWeakReference(s));
|
||||
|
||||
*_retval = new nsHTMLBlockAccessible(aAccessible, n,wr);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateHTMLSelectAccessible(nsIAtom* aPopupAtom, nsIDOMNode* node, nsISupports* aPresContext, nsIAccessible **_retval)
|
||||
{
|
||||
nsCOMPtr<nsIContent> n = do_QueryInterface(node);
|
||||
NS_ASSERTION(n,"Error non nsIContent passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresContext> c = do_QueryInterface(aPresContext);
|
||||
NS_ASSERTION(c,"Error non prescontext passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresShell> s;
|
||||
c->GetShell(getter_AddRefs(s));
|
||||
|
||||
nsCOMPtr<nsIWeakReference> wr = getter_AddRefs(NS_GetWeakReference(s));
|
||||
|
||||
*_retval = new nsSelectAccessible(aPopupAtom, nsnull, n, wr);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLCheckboxAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLCheckboxAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
*_retval = new nsHTMLCheckboxAccessible(shell,node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLCheckboxAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLRadioButtonAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
|
||||
*_retval = new nsHTMLRadioButtonAccessible(shell,node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLCheckboxAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLButtonAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
*_retval = new nsHTMLButtonAccessible(shell,node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLTextAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLTextAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
*_retval = new nsHTMLTextAccessible(shell, node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessibilityService::GetInfo(nsISupports* aFrame, nsIFrame** aRealFrame, nsIPresShell** aShell, nsIDOMNode** aNode)
|
||||
{
|
||||
*aRealFrame = NS_STATIC_CAST(nsIFrame*, aFrame);
|
||||
nsCOMPtr<nsIContent> content;
|
||||
(*aRealFrame)->GetContent(getter_AddRefs(content));
|
||||
nsCOMPtr<nsIDOMNode> node = do_QueryInterface(content);
|
||||
*aNode = node;
|
||||
NS_ADDREF(*aNode);
|
||||
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
content->GetDocument(*getter_AddRefs(document));
|
||||
|
||||
#ifdef DEBUG
|
||||
PRInt32 shells = document->GetNumberOfShells();
|
||||
NS_ASSERTION(shells > 0,"Error no shells!");
|
||||
#endif
|
||||
|
||||
*aShell = document->GetShellAt(0);
|
||||
NS_IF_ADDREF(*aShell);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
nsresult
|
||||
NS_NewAccessibilityService(nsIAccessibilityService** aResult)
|
||||
{
|
||||
NS_PRECONDITION(aResult != nsnull, "null ptr");
|
||||
if (! aResult)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsAccessibilityService* a = new nsAccessibilityService();
|
||||
if (a == nsnull)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
NS_ADDREF(a);
|
||||
*aResult = a;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef __nsAccessibilityService_h__
|
||||
#define __nsAccessibilityService_h__
|
||||
|
||||
#include "nsIAccessibilityService.h"
|
||||
class nsIFrame;
|
||||
class nsIPresShell;
|
||||
class nsIDOMNode;
|
||||
|
||||
class nsAccessibilityService : public nsIAccessibilityService
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
// nsIAccessibilityService methods:
|
||||
NS_DECL_NSIACCESSIBILITYSERVICE
|
||||
|
||||
// nsAccessibilityService methods:
|
||||
nsAccessibilityService();
|
||||
virtual ~nsAccessibilityService();
|
||||
|
||||
public:
|
||||
|
||||
private:
|
||||
NS_IMETHOD GetInfo(nsISupports* aFrame, nsIFrame** aRealFrame, nsIPresShell** aShell, nsIDOMNode** aContent);
|
||||
|
||||
};
|
||||
|
||||
#endif /* __nsIccessibilityService_h__ */
|
||||
@@ -1,995 +0,0 @@
|
||||
/* -*- 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):
|
||||
*/
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIScrollableView.h"
|
||||
#include "nsRootAccessible.h"
|
||||
|
||||
//#define DEBUG_LEAKS
|
||||
|
||||
#ifdef DEBUG_LEAKS
|
||||
static gnsAccessibles = 0;
|
||||
#endif
|
||||
|
||||
|
||||
class nsFrameTreeWalker {
|
||||
public:
|
||||
nsFrameTreeWalker(nsIPresContext* aPresContext, nsAccessible* aOwner);
|
||||
nsIFrame* GetNextSibling(nsIFrame* aFrame);
|
||||
nsIFrame* GetPreviousSibling(nsIFrame* aFrame);
|
||||
nsIFrame* GetParent(nsIFrame* aFrame);
|
||||
nsIFrame* GetFirstChild(nsIFrame* aFrame);
|
||||
nsIFrame* GetLastChild(nsIFrame* aFrame);
|
||||
nsIFrame* GetChildBefore(nsIFrame* aParent, nsIFrame* aChild);
|
||||
PRInt32 GetCount(nsIFrame* aFrame);
|
||||
|
||||
static PRBool ShouldSkip(nsIPresContext* aContext, nsIAtom* aList, nsIFrame* aStart, nsIFrame* aNext);
|
||||
static void GetAccessible(nsIFrame* aFrame, nsCOMPtr<nsIAccessible>& aAccessible, nsCOMPtr<nsIContent>& aContent);
|
||||
|
||||
nsCOMPtr<nsIPresContext> mPresContext;
|
||||
nsCOMPtr<nsIAccessible> mAccessible;
|
||||
nsCOMPtr<nsIContent> mContent;
|
||||
nsAccessible* mOwner;
|
||||
};
|
||||
|
||||
nsFrameTreeWalker::nsFrameTreeWalker(nsIPresContext* aPresContext, nsAccessible* aOwner)
|
||||
{
|
||||
mPresContext = aPresContext;
|
||||
mOwner = aOwner;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetParent(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get parent\n");
|
||||
|
||||
nsIFrame* parent = nsnull;
|
||||
aFrame->GetParent(&parent);
|
||||
|
||||
// if no parent then we hit the root
|
||||
// just return that top frame
|
||||
if (!parent) {
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return aFrame;
|
||||
}
|
||||
|
||||
GetAccessible(parent, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
return parent;
|
||||
|
||||
return GetParent(parent);
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetNextSibling(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get next\n");
|
||||
|
||||
// get next sibling
|
||||
nsIFrame* next = nsnull;
|
||||
aFrame->GetNextSibling(&next);
|
||||
nsIAtom* list = nsnull;
|
||||
mOwner->GetListAtomForFrame(aFrame, list);
|
||||
|
||||
|
||||
// skip any frames with the same content node
|
||||
while(ShouldSkip(mPresContext, list, aFrame, next))
|
||||
next->GetNextSibling(&next);
|
||||
|
||||
|
||||
// if failed
|
||||
if (!next)
|
||||
{
|
||||
// if parent has content
|
||||
nsIFrame* parent = nsnull;
|
||||
aFrame->GetParent(&parent);
|
||||
|
||||
// if no parent fail
|
||||
if (!parent) {
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
// fail if we reach a parent that is accessible
|
||||
GetAccessible(parent, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
{
|
||||
// fail
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
} else {
|
||||
// next on parent
|
||||
nsIFrame* n = GetNextSibling(parent);
|
||||
if (ShouldSkip(mPresContext, list, aFrame, n))
|
||||
return GetNextSibling(n);
|
||||
else
|
||||
return n;
|
||||
}
|
||||
}
|
||||
|
||||
// if next has content
|
||||
GetAccessible(next, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
{
|
||||
// done
|
||||
return next;
|
||||
}
|
||||
|
||||
// if next doesn't have node
|
||||
|
||||
// call first on next
|
||||
nsIFrame* first = GetFirstChild(next);
|
||||
|
||||
// if found
|
||||
if (first) {
|
||||
if (ShouldSkip(mPresContext, list, aFrame, first))
|
||||
return GetNextSibling(first);
|
||||
else
|
||||
return first;
|
||||
}
|
||||
|
||||
// call next on next
|
||||
nsIFrame* n = GetNextSibling(next);
|
||||
if (ShouldSkip(mPresContext, list, aFrame, next))
|
||||
return GetNextSibling(n);
|
||||
else
|
||||
return n;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetFirstChild(nsIFrame* aFrame)
|
||||
{
|
||||
|
||||
//printf("Get first\n");
|
||||
|
||||
// get first child
|
||||
nsIFrame* child = nsnull;
|
||||
nsIAtom* list = nsnull;
|
||||
mOwner->GetListAtomForFrame(aFrame, list);
|
||||
aFrame->FirstChild(mPresContext, list, &child);
|
||||
|
||||
while(child)
|
||||
{
|
||||
// if first has a content node
|
||||
GetAccessible(child, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
{
|
||||
// done
|
||||
return child;
|
||||
} else {
|
||||
// call first on child
|
||||
nsIFrame* first = GetFirstChild(child);
|
||||
|
||||
// if succeeded
|
||||
if (first)
|
||||
{
|
||||
// return child
|
||||
return first;
|
||||
}
|
||||
}
|
||||
|
||||
// get next sibling
|
||||
nsIFrame* next;
|
||||
child->GetNextSibling(&next);
|
||||
|
||||
// skip children with duplicate content nodes
|
||||
nsIAtom* list = nsnull;
|
||||
mOwner->GetListAtomForFrame(child, list);
|
||||
|
||||
while(ShouldSkip(mPresContext, list, child, next))
|
||||
next->GetNextSibling(&next);
|
||||
|
||||
child = next;
|
||||
}
|
||||
|
||||
// fail
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetChildBefore(nsIFrame* aParent, nsIFrame* aChild)
|
||||
{
|
||||
nsIFrame* child = GetFirstChild(aParent);
|
||||
|
||||
// if the child is not us
|
||||
if (child == aChild) {
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
nsIFrame* prev = child;
|
||||
nsCOMPtr<nsIContent> prevContent = mContent;
|
||||
nsCOMPtr<nsIAccessible> prevAccessible = mAccessible;
|
||||
|
||||
while(child)
|
||||
{
|
||||
child = GetNextSibling(child);
|
||||
|
||||
if (child == aChild)
|
||||
break;
|
||||
|
||||
prev = child;
|
||||
prevContent = mContent;
|
||||
prevAccessible = mAccessible;
|
||||
}
|
||||
|
||||
mAccessible = prevAccessible;
|
||||
mContent = prevContent;
|
||||
return prev;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetPreviousSibling(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get previous\n");
|
||||
|
||||
nsIFrame* parent = GetParent(aFrame);
|
||||
|
||||
return GetChildBefore(parent, aFrame);
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetLastChild(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get last\n");
|
||||
|
||||
return GetChildBefore(aFrame, nsnull);
|
||||
}
|
||||
|
||||
PRInt32 nsFrameTreeWalker::GetCount(nsIFrame* aFrame)
|
||||
{
|
||||
|
||||
//printf("Get count\n");
|
||||
nsIFrame* child = GetFirstChild(aFrame);
|
||||
|
||||
PRInt32 count = 0;
|
||||
while(child)
|
||||
{
|
||||
count++;
|
||||
child = GetNextSibling(child);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
void nsFrameTreeWalker::GetAccessible(nsIFrame* aFrame, nsCOMPtr<nsIAccessible>& aAccessible, nsCOMPtr<nsIContent>& aContent)
|
||||
{
|
||||
aContent = nsnull;
|
||||
aAccessible = nsnull;
|
||||
|
||||
aFrame->GetContent(getter_AddRefs(aContent));
|
||||
|
||||
if (!aContent)
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
aContent->GetDocument(*getter_AddRefs(document));
|
||||
if (!document)
|
||||
return;
|
||||
|
||||
PRInt32 shells = document->GetNumberOfShells();
|
||||
NS_ASSERTION(shells > 0,"Error no shells!");
|
||||
nsIPresShell* shell = document->GetShellAt(0);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(aContent, &frame);
|
||||
|
||||
if (!frame)
|
||||
return;
|
||||
|
||||
aAccessible = do_QueryInterface(aFrame);
|
||||
|
||||
if (!aAccessible)
|
||||
aAccessible = do_QueryInterface(aContent);
|
||||
|
||||
// if (aAccessible)
|
||||
// printf("Found accessible!\n");
|
||||
}
|
||||
|
||||
PRBool nsFrameTreeWalker::ShouldSkip(nsIPresContext* aContext, nsIAtom* aList, nsIFrame* aStart, nsIFrame* aNext)
|
||||
{
|
||||
if (!aStart || !aNext)
|
||||
return PR_FALSE;
|
||||
|
||||
// is content the same? If so skip it
|
||||
nsCOMPtr<nsIContent> content1;
|
||||
nsCOMPtr<nsIContent> content2;
|
||||
|
||||
aStart->GetContent(getter_AddRefs(content1));
|
||||
aNext->GetContent(getter_AddRefs(content2));
|
||||
|
||||
if (content1 == content2 && content1 != nsnull) {
|
||||
// does it have childen? It it does then don't skip it
|
||||
nsIFrame* child = nsnull;
|
||||
aNext->FirstChild(aContext, aList, &child);
|
||||
if (child)
|
||||
return PR_FALSE;
|
||||
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class nsAccessible
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------
|
||||
// construction
|
||||
//-----------------------------------------------------
|
||||
nsAccessible::nsAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
|
||||
// get frame and node
|
||||
mContent = aContent;
|
||||
mAccessible = aAccessible;
|
||||
mPresShell = aShell;
|
||||
|
||||
#ifdef DEBUG_LEAKS
|
||||
printf("nsAccessibles=%d\n", ++gnsAccessibles);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// destruction
|
||||
//-----------------------------------------------------
|
||||
nsAccessible::~nsAccessible()
|
||||
{
|
||||
#ifdef DEBUG_LEAKS
|
||||
printf("nsAccessibles=%d\n", --gnsAccessibles);
|
||||
#endif
|
||||
}
|
||||
|
||||
//NS_IMPL_ISUPPORTS2(nsAccessible, nsIAccessible, nsIAccessibleWidgetAccess);
|
||||
NS_IMPL_ISUPPORTS1(nsAccessible, nsIAccessible);
|
||||
|
||||
/* readonly attribute nsIAccessible accParent; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccParent(nsIAccessible * *aAccParent)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccParent(aAccParent);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
walker.GetParent(GetFrame());
|
||||
|
||||
// if no content or accessible then we hit the root
|
||||
if (!walker.mContent || !walker.mAccessible)
|
||||
{
|
||||
*aAccParent = new nsRootAccessible(mPresShell);
|
||||
NS_ADDREF(*aAccParent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*aAccParent = CreateNewParentAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccParent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*aAccParent = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
/* readonly attribute nsIAccessible accNextSibling; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccNextSibling(nsIAccessible * *aAccNextSibling)
|
||||
{
|
||||
// delegate
|
||||
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccNextSibling(aAccNextSibling);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
|
||||
nsIFrame* next = walker.GetNextSibling(GetFrame());
|
||||
|
||||
if (next && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccNextSibling = CreateNewNextAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccNextSibling);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccNextSibling = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accPreviousSibling; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccPreviousSibling(nsIAccessible * *aAccPreviousSibling)
|
||||
{
|
||||
// delegate
|
||||
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccPreviousSibling(aAccPreviousSibling);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
nsIFrame* prev = walker.GetPreviousSibling(GetFrame());
|
||||
|
||||
if (prev && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccPreviousSibling = CreateNewPreviousAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccPreviousSibling);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccPreviousSibling = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accFirstChild; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccFirstChild(nsIAccessible * *aAccFirstChild)
|
||||
{
|
||||
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccFirstChild(aAccFirstChild);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
nsIFrame* child = walker.GetFirstChild(GetFrame());
|
||||
|
||||
if (child && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccFirstChild = CreateNewFirstAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccFirstChild);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccFirstChild = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accFirstChild; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccLastChild(nsIAccessible * *aAccLastChild)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccLastChild(aAccLastChild);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
nsIFrame* last = walker.GetLastChild(GetFrame());
|
||||
|
||||
if (last && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccLastChild = CreateNewLastAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccLastChild);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccLastChild = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute long accChildCount; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccChildCount(PRInt32 *aAccChildCount)
|
||||
{
|
||||
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccChildCount(aAccChildCount);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
*aAccChildCount = walker.GetCount(GetFrame());
|
||||
} else
|
||||
*aAccChildCount = 0;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccName(PRUnichar * *aAccName)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccName(aAccName);
|
||||
if (NS_SUCCEEDED(rv) && *aAccName != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
*aAccName = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccDefaultAction(PRUnichar * *aDefaultAction)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccDefaultAction(aDefaultAction);
|
||||
if (NS_SUCCEEDED(rv) && *aDefaultAction != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
*aDefaultAction = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessible::SetAccName(const PRUnichar * aAccName)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->SetAccName(aAccName);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* attribute wstring accValue; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccValue(PRUnichar * *aAccValue)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccValue(aAccValue);
|
||||
|
||||
if (NS_SUCCEEDED(rv) && *aAccValue != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
*aAccValue = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessible::SetAccValue(const PRUnichar * aAccValue) { return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
/* readonly attribute wstring accDescription; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccDescription(PRUnichar * *aAccDescription)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccDescription(aAccDescription);
|
||||
if (NS_SUCCEEDED(rv) && *aAccDescription != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accRole; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccRole(PRUnichar * *aAccRole)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccRole(aAccRole);
|
||||
if (NS_SUCCEEDED(rv) && *aAccRole != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accState; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccState(PRUint32 *aAccState)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible)
|
||||
return mAccessible->GetAccState(aAccState);
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessible::GetAccExtState(PRUint32 *aAccExtState)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible)
|
||||
return mAccessible->GetAccExtState(aAccExtState);
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accHelp; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccHelp(PRUnichar * *aAccHelp)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccHelp(aAccHelp);
|
||||
if (NS_SUCCEEDED(rv) && *aAccHelp != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute boolean accFocused; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccFocused(PRBool *aAccFocused) { return NS_OK; }
|
||||
|
||||
/* nsIAccessible accGetChildAt (in long x, in long y); */
|
||||
NS_IMETHODIMP nsAccessible::AccGetAt(PRInt32 tx, PRInt32 ty, nsIAccessible **_retval)
|
||||
{
|
||||
PRInt32 x,y,w,h;
|
||||
AccGetBounds(&x,&y,&w,&h);
|
||||
if (tx > x && tx < x + w && ty > y && ty < y + h)
|
||||
{
|
||||
nsCOMPtr<nsIAccessible> child;
|
||||
nsCOMPtr<nsIAccessible> next;
|
||||
GetAccFirstChild(getter_AddRefs(child));
|
||||
PRInt32 cx,cy,cw,ch;
|
||||
|
||||
while(child) {
|
||||
child->AccGetBounds(&cx,&cy,&cw,&ch);
|
||||
|
||||
if (tx > cx && tx < cx + cw && ty > cy && ty < cy + ch)
|
||||
{
|
||||
*_retval = child;
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
child->GetAccNextSibling(getter_AddRefs(next));
|
||||
child = next;
|
||||
}
|
||||
|
||||
|
||||
*_retval = this;
|
||||
NS_ADDREF(this);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void accNavigateRight (); */
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateRight(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
/* void navigateLeft (); */
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateLeft(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
/* void navigateUp (); */
|
||||
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateUp(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
/* void navigateDown (); */
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateDown(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
|
||||
/* void addSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccAddSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccAddSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void removeSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccRemoveSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccRemoveSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void extendSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccExtendSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccExtendSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void takeSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccTakeSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccTakeSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void takeFocus (); */
|
||||
NS_IMETHODIMP nsAccessible::AccTakeFocus(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccTakeFocus();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void doDefaultAction (); */
|
||||
NS_IMETHODIMP nsAccessible::AccDoDefaultAction(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccDoDefaultAction();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void accGetBounds (out long x, out long y, out long width, out long height); */
|
||||
NS_IMETHODIMP nsAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
nsIFrame* frame = GetBoundsFrame();
|
||||
|
||||
if (!frame || !context)
|
||||
{
|
||||
*x = *y = *width = *height = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// sum up all rects of frames with the same content node
|
||||
nsRect r;
|
||||
nsIFrame* start = frame;
|
||||
nsIFrame* next = nsnull;
|
||||
start->GetNextSibling(&next);
|
||||
|
||||
start->GetRect(r);
|
||||
|
||||
while (nsFrameTreeWalker::ShouldSkip(context,nsnull, start, next))
|
||||
{
|
||||
nsRect r2;
|
||||
next->GetRect(r2);
|
||||
r.UnionRect(r,r2);
|
||||
next->GetNextSibling(&next);
|
||||
}
|
||||
|
||||
nsPoint offset(r.x,r.y);
|
||||
|
||||
frame->GetParent(&frame);
|
||||
|
||||
nsPoint pos(0,0);
|
||||
while(frame) {
|
||||
nsIScrollableView* scrollingView;
|
||||
nsIView* view;
|
||||
// XXX hack
|
||||
frame->GetView(context, &view);
|
||||
if (view) {
|
||||
nsresult result = view->QueryInterface(NS_GET_IID(nsIScrollableView), (void**)&scrollingView);
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
nscoord xoff = 0;
|
||||
nscoord yoff = 0;
|
||||
scrollingView->GetScrollPosition(xoff, yoff);
|
||||
offset.x -= xoff;
|
||||
offset.y -= yoff;
|
||||
}
|
||||
}
|
||||
|
||||
frame->GetOrigin(pos);
|
||||
offset += pos;
|
||||
frame->GetParent(&frame);
|
||||
}
|
||||
|
||||
float t2p;
|
||||
context->GetTwipsToPixels(&t2p);
|
||||
|
||||
*x = (PRInt32)(offset.x*t2p);
|
||||
*y = (PRInt32)(offset.y*t2p);
|
||||
*width = (PRInt32)(r.width*t2p);
|
||||
*height = (PRInt32)(r.height*t2p);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// helpers
|
||||
|
||||
nsIFrame* nsAccessible::GetBoundsFrame()
|
||||
{
|
||||
return GetFrame();
|
||||
}
|
||||
|
||||
nsIFrame* nsAccessible::GetFrame()
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(mContent, &frame);
|
||||
return frame;
|
||||
}
|
||||
|
||||
void nsAccessible::GetPresContext(nsCOMPtr<nsIPresContext>& aContext)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
|
||||
if (shell) {
|
||||
shell->GetPresContext(getter_AddRefs(aContext));
|
||||
} else
|
||||
aContext = nsnull;
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewParentAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
|
||||
// ------- nsHTMLBlockAccessible ------
|
||||
|
||||
nsHTMLBlockAccessible::nsHTMLBlockAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell):nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
nsIAccessible* nsHTMLBlockAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsHTMLBlockAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
/* nsIAccessible accGetAt (in long x, in long y); */
|
||||
NS_IMETHODIMP nsHTMLBlockAccessible::AccGetAt(PRInt32 tx, PRInt32 ty, nsIAccessible **_retval)
|
||||
{
|
||||
PRInt32 x,y,w,h;
|
||||
AccGetBounds(&x,&y,&w,&h);
|
||||
if (tx > x && tx < x + w && ty > y && ty < y + h)
|
||||
{
|
||||
nsCOMPtr<nsIAccessible> child;
|
||||
nsCOMPtr<nsIAccessible> smallestChild;
|
||||
PRInt32 smallestArea = -1;
|
||||
nsCOMPtr<nsIAccessible> next;
|
||||
GetAccFirstChild(getter_AddRefs(child));
|
||||
PRInt32 cx,cy,cw,ch;
|
||||
|
||||
while(child) {
|
||||
child->AccGetBounds(&cx,&cy,&cw,&ch);
|
||||
|
||||
// ok if there are multiple frames the contain the point
|
||||
// and they overlap then pick the smallest. We need to do this
|
||||
// for text frames.
|
||||
if (tx > cx && tx < cx + cw && ty > cy && ty < cy + ch)
|
||||
{
|
||||
if (smallestArea == -1 || cw*ch < smallestArea) {
|
||||
smallestArea = cw*ch;
|
||||
smallestChild = child;
|
||||
}
|
||||
}
|
||||
child->GetAccNextSibling(getter_AddRefs(next));
|
||||
child = next;
|
||||
}
|
||||
|
||||
if (smallestChild != nsnull)
|
||||
{
|
||||
*_retval = smallestChild;
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*_retval = this;
|
||||
NS_ADDREF(this);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
/* -*- 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 _nsAccessible_H_
|
||||
#define _nsAccessible_H_
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsIAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsWeakReference.h"
|
||||
|
||||
class nsIFrame;
|
||||
|
||||
class nsAccessible : public nsIAccessible
|
||||
// public nsIAccessibleWidgetAccess
|
||||
{
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
// nsIAccessibilityService methods:
|
||||
NS_DECL_NSIACCESSIBLE
|
||||
|
||||
//NS_IMETHOD AccGetWidget(nsIWidget**);
|
||||
|
||||
public:
|
||||
nsAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsAccessible();
|
||||
|
||||
virtual void GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList) { aList = nsnull; }
|
||||
|
||||
protected:
|
||||
virtual nsIFrame* GetFrame();
|
||||
virtual nsIFrame* GetBoundsFrame();
|
||||
virtual void GetPresContext(nsCOMPtr<nsIPresContext>& aContext);
|
||||
virtual nsIAccessible* CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewParentAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIContent> mContent;
|
||||
nsCOMPtr<nsIWeakReference> mPresShell;
|
||||
nsCOMPtr<nsIAccessible> mAccessible;
|
||||
};
|
||||
|
||||
/* Special Accessible that knows how to handle hit detection for flowing text */
|
||||
class nsHTMLBlockAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
nsHTMLBlockAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
NS_IMETHOD AccGetAt(PRInt32 x, PRInt32 y, nsIAccessible **_retval);
|
||||
protected:
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aFrame, nsIWeakReference* aShell);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,335 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsGenericAccessible.h"
|
||||
#include "nsIEventStateManager.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIWeakReference.h"
|
||||
|
||||
/* Implementation file */
|
||||
NS_IMPL_ISUPPORTS1(nsGenericAccessible, nsIAccessible)
|
||||
|
||||
nsGenericAccessible::nsGenericAccessible()
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
/* member initializers and constructor code */
|
||||
}
|
||||
|
||||
nsGenericAccessible::~nsGenericAccessible()
|
||||
{
|
||||
/* destructor code */
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccParent (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccNextSibling (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccPreviousSibling (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccPreviousSibling(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccFirstChild (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccLastChild (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* long getAccChildCount (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccName (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccValue (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccValue(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void setAccName (in wstring name); */
|
||||
NS_IMETHODIMP nsGenericAccessible::SetAccName(const PRUnichar *name)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void setAccValue (in wstring value); */
|
||||
NS_IMETHODIMP nsGenericAccessible::SetAccValue(const PRUnichar *value)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccDescription (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccDescription(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccState (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccState(PRUint32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccHelp (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccHelp(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* boolean getAccFocused (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccFocused(PRBool *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accGetAt (in long x, in long y); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccGetAt(PRInt32 x, PRInt32 y, nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateRight (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateRight(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateLeft (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateLeft(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateUp (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateUp(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateDown (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateDown(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accGetBounds (out long x, out long y, out long width, out long height); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accAddSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccAddSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accRemoveSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccRemoveSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accExtendSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccExtendSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accTakeSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccTakeSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accTakeFocus (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccTakeFocus()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accDoDefaultAction (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccDoDefaultAction()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* unsigned long getAccExtState (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccExtState(PRUint32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
//-------------
|
||||
// nsDOMAccessible
|
||||
//-------------
|
||||
|
||||
nsDOMAccessible::nsDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode)
|
||||
{
|
||||
mPresShell = getter_AddRefs(NS_GetWeakReference(aShell));
|
||||
mNode = aNode;
|
||||
}
|
||||
|
||||
|
||||
/* void accRemoveSelection (); */
|
||||
NS_IMETHODIMP nsDOMAccessible::AccRemoveSelection()
|
||||
{
|
||||
nsCOMPtr<nsISelectionController> control = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsISelection> selection;
|
||||
nsresult rv = control->GetSelection(nsISelectionController::SELECTION_NORMAL, getter_AddRefs(selection));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> parent;
|
||||
rv = mNode->GetParentNode(getter_AddRefs(parent));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = selection->Collapse(parent, 0);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void accTakeSelection (); */
|
||||
NS_IMETHODIMP nsDOMAccessible::AccTakeSelection()
|
||||
{
|
||||
nsCOMPtr<nsISelectionController> control = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsISelection> selection;
|
||||
nsresult rv = control->GetSelection(nsISelectionController::SELECTION_NORMAL, getter_AddRefs(selection));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> parent;
|
||||
rv = mNode->GetParentNode(getter_AddRefs(parent));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
PRInt32 offsetInParent = 0;
|
||||
nsCOMPtr<nsIDOMNode> child;
|
||||
rv = parent->GetFirstChild(getter_AddRefs(child));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> next;
|
||||
|
||||
while(child)
|
||||
{
|
||||
if (child == mNode) {
|
||||
// Collapse selection to just before desired element,
|
||||
rv = selection->Collapse(parent, offsetInParent);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
// then extend it to just after
|
||||
rv = selection->Extend(parent, offsetInParent+1);
|
||||
return rv;
|
||||
}
|
||||
|
||||
child->GetNextSibling(getter_AddRefs(next));
|
||||
child = next;
|
||||
offsetInParent++;
|
||||
}
|
||||
|
||||
// didn't find a child
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void accTakeFocus (); */
|
||||
NS_IMETHODIMP nsDOMAccessible::AccTakeFocus()
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
shell->GetPresContext(getter_AddRefs(context));
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(mNode);
|
||||
content->SetFocus(context);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------
|
||||
// nsLeafFrameAccessible
|
||||
//-------------
|
||||
|
||||
nsLeafDOMAccessible::nsLeafDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsDOMAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccFirstChild (); */
|
||||
NS_IMETHODIMP nsLeafDOMAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccLastChild (); */
|
||||
NS_IMETHODIMP nsLeafDOMAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* long getAccChildCount (); */
|
||||
NS_IMETHODIMP nsLeafDOMAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
*_retval = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric D Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef _nsGenericAccessible_H_
|
||||
#define _nsGenericAccessible_H_
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsIAccessible.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
class nsIWeakReference;
|
||||
|
||||
/**
|
||||
* Basic implementation
|
||||
* supports nothing
|
||||
*/
|
||||
class nsGenericAccessible : public nsIAccessible
|
||||
{
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIACCESSIBLE
|
||||
|
||||
public:
|
||||
nsGenericAccessible();
|
||||
virtual ~nsGenericAccessible();
|
||||
};
|
||||
|
||||
/**
|
||||
* And accessible that observes a dom node
|
||||
* supports:
|
||||
* - selection
|
||||
* - focus
|
||||
*/
|
||||
class nsDOMAccessible : public nsGenericAccessible
|
||||
{
|
||||
public:
|
||||
nsDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
|
||||
NS_IMETHOD AccTakeSelection(void);
|
||||
NS_IMETHOD AccTakeFocus(void);
|
||||
NS_IMETHOD AccRemoveSelection(void);
|
||||
|
||||
protected:
|
||||
nsIWeakReference* mPresShell;
|
||||
nsCOMPtr<nsIDOMNode> mNode;
|
||||
};
|
||||
|
||||
/* Leaf version of DOM Accessible
|
||||
* has no children
|
||||
*/
|
||||
class nsLeafDOMAccessible : public nsDOMAccessible
|
||||
{
|
||||
public:
|
||||
nsLeafDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
|
||||
NS_IMETHOD GetAccFirstChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccLastChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccChildCount(PRInt32 *_retval);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,199 +0,0 @@
|
||||
/* -*- 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):
|
||||
*/
|
||||
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIDOMEventTarget.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIDOMEventReceiver.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(nsRootAccessible)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIAccessibleEventReceiver)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessibleEventReceiver)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsAccessible)
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsRootAccessible, nsAccessible);
|
||||
NS_IMPL_RELEASE_INHERITED(nsRootAccessible, nsAccessible);
|
||||
|
||||
//-----------------------------------------------------
|
||||
// construction
|
||||
//-----------------------------------------------------
|
||||
nsRootAccessible::nsRootAccessible(nsIWeakReference* aShell, nsIFrame* aFrame):nsAccessible(nsnull,nsnull,aShell)
|
||||
{
|
||||
// mFrame = aFrame;
|
||||
mListener = nsnull;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// destruction
|
||||
//-----------------------------------------------------
|
||||
nsRootAccessible::~nsRootAccessible()
|
||||
{
|
||||
RemoveAccessibleEventListener(mListener);
|
||||
}
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHODIMP nsRootAccessible::GetAccName(PRUnichar * *aAccName)
|
||||
{
|
||||
*aAccName = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// helpers
|
||||
nsIFrame* nsRootAccessible::GetFrame()
|
||||
{
|
||||
//if (!mFrame) {
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* root = nsnull;
|
||||
if (shell)
|
||||
shell->GetRootFrame(&root);
|
||||
|
||||
return root;
|
||||
//}
|
||||
|
||||
// return mFrame;
|
||||
}
|
||||
|
||||
nsIAccessible* nsRootAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return new nsHTMLBlockAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accParent; */
|
||||
NS_IMETHODIMP nsRootAccessible::GetAccParent(nsIAccessible * *aAccParent)
|
||||
{
|
||||
*aAccParent = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accRole; */
|
||||
NS_IMETHODIMP nsRootAccessible::GetAccRole(PRUnichar * *aAccRole)
|
||||
{
|
||||
*aAccRole = ToNewUnicode(NS_LITERAL_STRING("client"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void addAccessibleEventListener (in nsIAccessibleEventListener aListener); */
|
||||
NS_IMETHODIMP nsRootAccessible::AddAccessibleEventListener(nsIAccessibleEventListener *aListener)
|
||||
{
|
||||
if (!mListener)
|
||||
{
|
||||
// add an event listener to the document
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
shell->GetDocument(getter_AddRefs(document));
|
||||
|
||||
nsCOMPtr<nsIDOMEventReceiver> receiver;
|
||||
if (NS_SUCCEEDED(document->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(receiver))) && receiver)
|
||||
{
|
||||
nsresult rv = receiver->AddEventListenerByIID(NS_STATIC_CAST(nsIDOMFocusListener *, this), NS_GET_IID(nsIDOMFocusListener));
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to register listener");
|
||||
}
|
||||
}
|
||||
|
||||
// create a weak reference to the listener
|
||||
mListener = aListener;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void removeAccessibleEventListener (in nsIAccessibleEventListener aListener); */
|
||||
NS_IMETHODIMP nsRootAccessible::RemoveAccessibleEventListener(nsIAccessibleEventListener *aListener)
|
||||
{
|
||||
if (mListener)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
if (!shell)
|
||||
return NS_OK;
|
||||
|
||||
shell->GetDocument(getter_AddRefs(document));
|
||||
|
||||
nsCOMPtr<nsIDOMEventReceiver> erP;
|
||||
if (NS_SUCCEEDED(document->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(erP))) && erP)
|
||||
{
|
||||
nsresult rv = erP->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMFocusListener *, this), NS_GET_IID(nsIDOMFocusListener));
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to register listener");
|
||||
}
|
||||
}
|
||||
|
||||
mListener = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
nsresult nsRootAccessible::HandleEvent(nsIDOMEvent* aEvent)
|
||||
{
|
||||
if (mListener) {
|
||||
nsCOMPtr<nsIDOMEventTarget> t;
|
||||
aEvent->GetOriginalTarget(getter_AddRefs(t));
|
||||
|
||||
// create and accessible for the target
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(t);
|
||||
|
||||
if (!content)
|
||||
return NS_OK;
|
||||
|
||||
if (mCurrentFocus == content)
|
||||
return NS_OK;
|
||||
|
||||
mCurrentFocus = content;
|
||||
|
||||
nsIFrame* frame = nsnull;
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
shell->GetPrimaryFrameFor(content, &frame);
|
||||
|
||||
if (!frame)
|
||||
return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIAccessible> a = do_QueryInterface(frame);
|
||||
|
||||
if (!a)
|
||||
a = do_QueryInterface(content);
|
||||
|
||||
nsCOMPtr<nsIAccessible> na = CreateNewAccessible(a, content, mPresShell);
|
||||
|
||||
mListener->HandleEvent(nsIAccessibleEventListener::EVENT_FOCUS, na);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsRootAccessible::Focus(nsIDOMEvent* aEvent)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsRootAccessible::Blur(nsIDOMEvent* aEvent)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
/* -*- 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 _nsRootAccessible_H_
|
||||
#define _nsRootAccessible_H_
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsIAccessibleEventReceiver.h"
|
||||
#include "nsIAccessibleEventListener.h"
|
||||
#include "nsIDOMFocusListener.h"
|
||||
|
||||
class nsRootAccessible : public nsAccessible,
|
||||
public nsIAccessibleEventReceiver,
|
||||
public nsIDOMFocusListener
|
||||
|
||||
{
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
public:
|
||||
nsRootAccessible(nsIWeakReference* aShell, nsIFrame* aFrame = nsnull);
|
||||
virtual ~nsRootAccessible();
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHOD GetAccName(PRUnichar * *aAccName);
|
||||
NS_IMETHOD GetAccParent(nsIAccessible * *aAccParent);
|
||||
NS_IMETHOD GetAccRole(PRUnichar * *aAccRole);
|
||||
|
||||
// ----- nsIAccessibleEventReceiver ------
|
||||
|
||||
NS_IMETHOD AddAccessibleEventListener(nsIAccessibleEventListener *aListener);
|
||||
NS_IMETHOD RemoveAccessibleEventListener(nsIAccessibleEventListener *aListener);
|
||||
|
||||
// ----- nsIDOMEventListener --------
|
||||
virtual nsresult HandleEvent(nsIDOMEvent* anEvent);
|
||||
virtual nsresult Focus(nsIDOMEvent* aEvent);
|
||||
virtual nsresult Blur(nsIDOMEvent* aEvent);
|
||||
|
||||
protected:
|
||||
virtual nsIFrame* GetFrame();
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
// not a com pointer. We don't own the listener
|
||||
// it is the callers responsibility to remove the listener
|
||||
// otherwise we will get into circular referencing problems
|
||||
nsIAccessibleEventListener* mListener;
|
||||
nsCOMPtr<nsIContent> mCurrentFocus;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,717 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; 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.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsSelectAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsMutableAccessible.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsIDOMMenuListener.h"
|
||||
#include "nsIDOMEventReceiver.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
class nsSelectChildAccessible : public nsAccessible,
|
||||
public nsIDOMMenuListener
|
||||
{
|
||||
public:
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
nsSelectChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsSelectChildAccessible();
|
||||
|
||||
NS_IMETHOD GetAccNextSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccValue(PRUnichar **_retval);
|
||||
|
||||
virtual nsIAccessible* CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
// popup listener
|
||||
NS_IMETHOD Create(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Close(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Destroy(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Action(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD Broadcast(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD CommandUpdate(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
nsresult HandleEvent(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
nsCOMPtr<nsIContent> mSelectContent;
|
||||
PRBool mRegistered;
|
||||
PRBool mOpen;
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(nsSelectChildAccessible, nsAccessible, nsIDOMMenuListener)
|
||||
|
||||
class nsSelectWindowAccessible : public nsAccessible,
|
||||
public nsIDOMMenuListener
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
nsSelectWindowAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aPrev, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsSelectWindowAccessible();
|
||||
|
||||
NS_IMETHOD GetAccParent(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccNextSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccPreviousSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccLastChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccFirstChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccChildCount(PRInt32 *_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccState(PRUint32 *_retval);
|
||||
NS_IMETHOD GetAccExtState(PRUint32 *_retval);
|
||||
|
||||
// popup listener
|
||||
NS_IMETHOD Create(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Close(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Destroy(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Action(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD Broadcast(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD CommandUpdate(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
nsresult HandleEvent(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
|
||||
// helpers
|
||||
virtual nsIFrame* GetBoundsFrame();
|
||||
|
||||
nsCOMPtr<nsIAccessible> mParent;
|
||||
nsCOMPtr<nsIAccessible> mPrev;
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
PRBool mRegistered;
|
||||
PRBool mOpen;
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(nsSelectWindowAccessible, nsAccessible, nsIDOMMenuListener)
|
||||
|
||||
class nsSelectListAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
|
||||
nsSelectListAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsSelectListAccessible() {}
|
||||
|
||||
NS_IMETHOD GetAccParent(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccNextSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccPreviousSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height);
|
||||
|
||||
virtual void GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList);
|
||||
virtual nsIAccessible* CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
nsCOMPtr<nsIAccessible> mParent;
|
||||
};
|
||||
|
||||
class nsListChildAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
|
||||
nsListChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsListChildAccessible() {}
|
||||
|
||||
NS_IMETHOD GetAccParent(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
|
||||
virtual void GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList);
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIAccessible> mParent;
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
nsCOMPtr<nsIContent> mSelectContent;
|
||||
};
|
||||
|
||||
//---------
|
||||
|
||||
nsSelectAccessible::nsSelectAccessible(nsIAtom* aPopupAtom,
|
||||
nsIAccessible* aAccessible,
|
||||
nsIContent* aContent,
|
||||
nsIWeakReference* aShell)
|
||||
:nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mPopupAtom = aPopupAtom;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccValue(PRUnichar **_retval)
|
||||
{
|
||||
// our value is our first child's value. Which is the combo boxes text.
|
||||
nsCOMPtr<nsIAccessible> text;
|
||||
nsresult rv = GetAccFirstChild(getter_AddRefs(text));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = nsnull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (!text) {
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
// look at our role
|
||||
return text->GetAccValue(_retval);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("combo box"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
// get the last child. Wrap it with a connector that connects it to the window accessible
|
||||
nsCOMPtr<nsIAccessible> last;
|
||||
nsresult rv = nsAccessible::GetAccLastChild(getter_AddRefs(last));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (!last) {
|
||||
// we have a parent but not previous
|
||||
*_retval = new nsSelectWindowAccessible(mPopupAtom, this, nsnull, nsnull, mContent, mPresShell);
|
||||
} else {
|
||||
*_retval = last;
|
||||
}
|
||||
|
||||
NS_ADDREF(*_retval);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
// get the last child. Wrap it with a connector that connects it to the window accessible
|
||||
nsCOMPtr<nsIAccessible> first;
|
||||
nsresult rv = nsAccessible::GetAccFirstChild(getter_AddRefs(first));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (!first) {
|
||||
*_retval = new nsSelectWindowAccessible(mPopupAtom, this, nsnull, nsnull, mContent, mPresShell);
|
||||
} else {
|
||||
*_retval = first;
|
||||
}
|
||||
|
||||
NS_ADDREF(*_retval);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectAccessible::CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewLastAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectAccessible::CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsSelectChildAccessible(mPopupAtom, mContent, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
nsresult rv = nsAccessible::GetAccChildCount(_retval);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
// always have one more that is our window child
|
||||
(*_retval)++;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//--------------------
|
||||
|
||||
nsSelectChildAccessible::nsSelectChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell):
|
||||
nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mPopupAtom = aPopupAtom;
|
||||
mSelectContent = aSelectContent;
|
||||
mRegistered = PR_FALSE;
|
||||
mOpen = PR_FALSE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccValue(PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUnichar* string = nsnull;
|
||||
|
||||
// look at our role
|
||||
rv = nsAccessible::GetAccRole(&string);
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = nsnull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsAutoString role(string);
|
||||
|
||||
// if its the text in the combo box then
|
||||
// its value should be its name.
|
||||
if (role.EqualsIgnoreCase("text")) {
|
||||
rv = nsAccessible::GetAccName(_retval);
|
||||
} else {
|
||||
rv = nsAccessible::GetAccValue(_retval);
|
||||
}
|
||||
|
||||
delete string;
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUnichar* string = nsnull;
|
||||
|
||||
// look at our role
|
||||
rv = nsAccessible::GetAccRole(&string);
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = nsnull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsAutoString role(string);
|
||||
|
||||
// any text in the combo box is static
|
||||
if (role.EqualsIgnoreCase("text")) {
|
||||
// if it the comboboxes text. Make it static
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("static text"));
|
||||
} else {
|
||||
rv = nsAccessible::GetAccRole(_retval);
|
||||
}
|
||||
|
||||
delete string;
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUnichar* string = nsnull;
|
||||
|
||||
// look at our role
|
||||
nsAccessible::GetAccRole(&string);
|
||||
nsAutoString role(string);
|
||||
|
||||
// if button then we need to make the name be open or close
|
||||
if (role.EqualsIgnoreCase("push button"))
|
||||
{
|
||||
// if its a button and not already registered,
|
||||
// register ourselves as a popup listener
|
||||
if (!mRegistered) {
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mSelectContent);
|
||||
if (!eventReceiver) {
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
eventReceiver->AddEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
|
||||
mRegistered = PR_TRUE;
|
||||
}
|
||||
|
||||
// get the current state open or closed
|
||||
// set _retval to it.
|
||||
// notice its supposed to be reversed. Close if opened
|
||||
// and Open if closed.
|
||||
|
||||
if (mOpen)
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Close"));
|
||||
else
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Open"));
|
||||
|
||||
} else {
|
||||
/*rv = nsAccessible::GetAccName(_retval);*/
|
||||
rv = NS_ERROR_NOT_IMPLEMENTED;
|
||||
*_retval = nsnull;
|
||||
}
|
||||
|
||||
delete string;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
nsSelectChildAccessible::~nsSelectChildAccessible()
|
||||
{
|
||||
if (mRegistered) {
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mSelectContent);
|
||||
if (eventReceiver)
|
||||
eventReceiver->RemoveEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::Create(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_TRUE;
|
||||
printf("Open\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::Destroy(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::Close(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectChildAccessible::CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewPreviousAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectChildAccessible::CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsSelectChildAccessible(mPopupAtom, mSelectContent, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
nsCOMPtr<nsIAccessible> next;
|
||||
nsresult rv = nsAccessible::GetAccNextSibling(getter_AddRefs(next));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (!next) {
|
||||
// ok no more siblings. Lets create our window
|
||||
nsCOMPtr<nsIAccessible> parent;
|
||||
GetAccParent(getter_AddRefs(parent));
|
||||
|
||||
*_retval = new nsSelectWindowAccessible(mPopupAtom, parent, nsnull, nsnull, mSelectContent, mPresShell);
|
||||
} else {
|
||||
*_retval = next;
|
||||
}
|
||||
|
||||
NS_ADDREF(*_retval);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//---------------------
|
||||
|
||||
|
||||
nsSelectWindowAccessible::nsSelectWindowAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aPrev, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
:nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mParent = aParent;
|
||||
mPrev = aPrev;
|
||||
mPopupAtom = aPopupAtom;
|
||||
mRegistered = PR_FALSE;
|
||||
mOpen = PR_FALSE;
|
||||
}
|
||||
|
||||
nsSelectWindowAccessible::~nsSelectWindowAccessible()
|
||||
{
|
||||
if (mRegistered) {
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mContent);
|
||||
if (eventReceiver)
|
||||
eventReceiver->RemoveEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::Create(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_TRUE;
|
||||
printf("Open\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::Destroy(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::Close(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccState(PRUint32 *_retval)
|
||||
{
|
||||
// not not already one register ourselves as a popup listener
|
||||
|
||||
if (!mRegistered) {
|
||||
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mContent);
|
||||
if (!eventReceiver) {
|
||||
*_retval = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
nsresult rv = eventReceiver->AddEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = 0;
|
||||
return rv;
|
||||
}
|
||||
|
||||
mRegistered = PR_TRUE;
|
||||
}
|
||||
|
||||
// if open we are visible if closed we are invisible
|
||||
// set _retval to it.
|
||||
if (mOpen)
|
||||
*_retval |= STATE_DEFAULT;
|
||||
else
|
||||
*_retval |= STATE_INVISIBLE;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccExtState(PRUint32 *_retval)
|
||||
{
|
||||
*_retval=0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("window"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mParent;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccPreviousSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mPrev;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = new nsSelectListAccessible(mPopupAtom, this, nsnull, mContent, mPresShell);
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = new nsSelectListAccessible(mPopupAtom, this, nsnull, mContent, mPresShell);
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
*_retval = 1;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
*x = *y = *width = *height = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
*/
|
||||
|
||||
nsIFrame* nsSelectWindowAccessible::GetBoundsFrame()
|
||||
{
|
||||
// get our frame
|
||||
nsIFrame* frame = GetFrame();
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
// get its first popup child that should be the window
|
||||
frame->FirstChild(context, mPopupAtom, &frame);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
//----------
|
||||
|
||||
|
||||
nsSelectListAccessible::nsSelectListAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
:nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mPopupAtom = aPopupAtom;
|
||||
mParent = aParent;
|
||||
}
|
||||
|
||||
void nsSelectListAccessible::GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(mContent, &frame);
|
||||
if (aFrame == frame)
|
||||
aList = mPopupAtom;
|
||||
else
|
||||
aList = nsnull;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
return mParent->AccGetBounds(x,y,width,height);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mParent;
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("list"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccPreviousSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectListAccessible::CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsListChildAccessible(mPopupAtom, mContent, this, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectListAccessible::CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsListChildAccessible(mPopupAtom, mContent, this, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
//--------
|
||||
|
||||
nsListChildAccessible::nsListChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell):
|
||||
nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mParent = aParent;
|
||||
mPopupAtom = aPopupAtom;
|
||||
mSelectContent = aSelectContent;
|
||||
}
|
||||
|
||||
nsIAccessible* nsListChildAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsListChildAccessible(mPopupAtom, mSelectContent, mParent, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
void nsListChildAccessible::GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(mSelectContent, &frame);
|
||||
if (aFrame == frame)
|
||||
aList = mPopupAtom;
|
||||
else
|
||||
aList = nsnull;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsListChildAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("list item"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsListChildAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mParent;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; 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.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef __nsSelectAccessible_h__
|
||||
#define __nsSelectAccessible_h__
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIAtom.h"
|
||||
|
||||
class nsSelectAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
|
||||
nsSelectAccessible(nsIAtom* aPopupAtom, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
NS_IMETHOD GetAccLastChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccFirstChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccValue(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccChildCount(PRInt32 *_retval);
|
||||
|
||||
virtual ~nsSelectAccessible() {}
|
||||
virtual nsIAccessible* CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,175 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsHTMLFormControlAccessible.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIDOMHTMLInputElement.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsHTMLAtoms.h"
|
||||
#include "nsIDOMHTMLButtonElement.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
nsHTMLFormControlAccessible::nsHTMLFormControlAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsLeafDOMAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccName (); */
|
||||
NS_IMETHODIMP nsHTMLFormControlAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
// go up tree get name of label if there is one.
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccState (); */
|
||||
NS_IMETHODIMP nsHTMLFormControlAccessible::GetAccState(PRUint32 *_retval)
|
||||
{
|
||||
// can be
|
||||
// focusable, focused, checked
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
|
||||
PRBool checked = PR_FALSE;
|
||||
element->GetChecked(&checked);
|
||||
*_retval = (checked ? STATE_CHECKED : 0);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// --- checkbox -----
|
||||
|
||||
nsHTMLCheckboxAccessible::nsHTMLCheckboxAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsHTMLFormControlAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLCheckboxAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("check box"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLCheckboxAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
// check or uncheck
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
|
||||
PRBool checked = PR_FALSE;
|
||||
element->GetChecked(&checked);
|
||||
if (checked)
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Check"));
|
||||
else
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("UnCheck"));
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void accDoDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLCheckboxAccessible::AccDoDefaultAction()
|
||||
{
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
PRBool checked = PR_FALSE;
|
||||
element->GetChecked(&checked);
|
||||
element->SetChecked(checked ? PR_FALSE : PR_TRUE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//------ Radio button -------
|
||||
|
||||
nsHTMLRadioButtonAccessible::nsHTMLRadioButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsHTMLFormControlAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLRadioButtonAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Select"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLRadioButtonAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("radio button"));
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsHTMLRadioButtonAccessible::AccDoDefaultAction()
|
||||
{
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
element->Click();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// ----- Button -----
|
||||
|
||||
nsHTMLButtonAccessible::nsHTMLButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsHTMLFormControlAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Press"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("push button"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> button = do_QueryInterface(mNode);
|
||||
|
||||
if (!button)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsAutoString name;
|
||||
button->GetValue(name);
|
||||
name.CompressWhitespace();
|
||||
|
||||
*_retval = name.ToNewUnicode();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::AccDoDefaultAction()
|
||||
{
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
element->Click();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric D Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef _nsHTMLFormControlAccessible_H_
|
||||
#define _nsHTMLFormControlAccessible_H_
|
||||
|
||||
#include "nsGenericAccessible.h"
|
||||
|
||||
class nsICheckboxControlFrame;
|
||||
|
||||
/* Accessible for supporting for controls
|
||||
* supports:
|
||||
* - walking up to get name from label
|
||||
* - support basic state
|
||||
*/
|
||||
class nsHTMLFormControlAccessible : public nsLeafDOMAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLFormControlAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccState(PRUint32 *_retval);
|
||||
};
|
||||
|
||||
class nsHTMLCheckboxAccessible : public nsHTMLFormControlAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLCheckboxAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccDefaultAction(PRUnichar **_retval);
|
||||
NS_IMETHOD AccDoDefaultAction(void);
|
||||
};
|
||||
|
||||
class nsHTMLRadioButtonAccessible : public nsHTMLFormControlAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLRadioButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccDefaultAction(PRUnichar **_retval);
|
||||
NS_IMETHOD AccDoDefaultAction(void);
|
||||
};
|
||||
|
||||
class nsHTMLButtonAccessible : public nsHTMLFormControlAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccDefaultAction(PRUnichar **_retval);
|
||||
NS_IMETHOD AccDoDefaultAction(void);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,51 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsHTMLTextAccessible.h"
|
||||
#include "nsICheckboxControlFrame.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsIFrame.h"
|
||||
|
||||
nsHTMLTextAccessible::nsHTMLTextAccessible(nsIPresShell* aShell, nsIDOMNode* aDomNode):
|
||||
nsLeafDOMAccessible(aShell, aDomNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccName (); */
|
||||
NS_IMETHODIMP nsHTMLTextAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
nsAutoString value;
|
||||
mNode->GetNodeValue(value);
|
||||
value.CompressWhitespace();
|
||||
*_retval = value.ToNewUnicode();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLTextAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
nsAutoString role(NS_LITERAL_STRING("text"));
|
||||
*_retval = role.ToNewUnicode();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
/* -*- 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 _nsHTMLTextAccessible_H_
|
||||
#define _nsHTMLTextAccessible_H_
|
||||
|
||||
#include "nsGenericAccessible.h"
|
||||
|
||||
class nsIWeakReference;
|
||||
class nsITextControlFrame;
|
||||
|
||||
class nsHTMLTextAccessible : public nsLeafDOMAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLTextAccessible(nsIPresShell* aShell, nsIDOMNode* aDomNode);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIDOMNode> mDomNode;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,53 +0,0 @@
|
||||
#!gmake
|
||||
#
|
||||
# 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):
|
||||
|
||||
DEPTH=..\..
|
||||
MODULE=accessibility
|
||||
LIBRARY_NAME=accessibility_s
|
||||
|
||||
CPP_OBJS=\
|
||||
.\$(OBJDIR)\nsAccessible.obj \
|
||||
.\$(OBJDIR)\nsRootAccessible.obj \
|
||||
.\$(OBJDIR)\nsMutableAccessible.obj \
|
||||
.\$(OBJDIR)\nsAccessibilityService.obj \
|
||||
.\$(OBJDIR)\nsSelectAccessible.obj \
|
||||
.\$(OBJDIR)\nsGenericAccessible.obj \
|
||||
.\$(OBJDIR)\nsHTMLFormControlAccessible.obj \
|
||||
.\$(OBJDIR)\nsHTMLTextAccessible.obj \
|
||||
$(NULL)
|
||||
|
||||
LINCS= \
|
||||
-I..\..\layout\html\forms\public \
|
||||
-I..\..\layout\html\forms\src \
|
||||
-I..\..\layout\html\base\src \
|
||||
$(NULL)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
install:: $(LIBRARY)
|
||||
$(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib
|
||||
|
||||
clobber::
|
||||
rm -f $(DIST)\lib\$(LIBRARY_NAME).lib
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,252 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; 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.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsIAccessibilityService.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsMutableAccessible.h"
|
||||
#include "nsHTMLFormControlAccessible.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsSelectAccessible.h"
|
||||
#include "nsHTMLTextAccessible.h"
|
||||
|
||||
//--------------------
|
||||
|
||||
|
||||
nsAccessibilityService::nsAccessibilityService()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
nsAccessibilityService::~nsAccessibilityService()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS1(nsAccessibilityService, nsIAccessibilityService);
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsIAccessibilityService methods:
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateRootAccessible(nsISupports* aPresContext, nsISupports* aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* f = NS_STATIC_CAST(nsIFrame*, aFrame);
|
||||
|
||||
nsCOMPtr<nsIPresContext> c = do_QueryInterface(aPresContext);
|
||||
NS_ASSERTION(c,"Error non prescontext passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresShell> s;
|
||||
c->GetShell(getter_AddRefs(s));
|
||||
|
||||
NS_ASSERTION(s,"Error not presshell!!");
|
||||
|
||||
nsCOMPtr<nsIWeakReference> wr = getter_AddRefs(NS_GetWeakReference(s));
|
||||
|
||||
*_retval = new nsRootAccessible(wr,f);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateMutableAccessible(nsISupports* aNode, nsIMutableAccessible **_retval)
|
||||
{
|
||||
*_retval = new nsMutableAccessible(aNode);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateHTMLBlockAccessible(nsIAccessible* aAccessible, nsIDOMNode* node, nsISupports* aPresContext, nsIAccessible **_retval)
|
||||
{
|
||||
nsCOMPtr<nsIContent> n = do_QueryInterface(node);
|
||||
NS_ASSERTION(n,"Error non nsIContent passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresContext> c = do_QueryInterface(aPresContext);
|
||||
NS_ASSERTION(c,"Error non prescontext passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresShell> s;
|
||||
c->GetShell(getter_AddRefs(s));
|
||||
|
||||
NS_ASSERTION(s,"Error not presshell!!");
|
||||
|
||||
nsCOMPtr<nsIWeakReference> wr = getter_AddRefs(NS_GetWeakReference(s));
|
||||
|
||||
*_retval = new nsHTMLBlockAccessible(aAccessible, n,wr);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::CreateHTMLSelectAccessible(nsIAtom* aPopupAtom, nsIDOMNode* node, nsISupports* aPresContext, nsIAccessible **_retval)
|
||||
{
|
||||
nsCOMPtr<nsIContent> n = do_QueryInterface(node);
|
||||
NS_ASSERTION(n,"Error non nsIContent passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresContext> c = do_QueryInterface(aPresContext);
|
||||
NS_ASSERTION(c,"Error non prescontext passed to accessible factory!!!");
|
||||
|
||||
nsCOMPtr<nsIPresShell> s;
|
||||
c->GetShell(getter_AddRefs(s));
|
||||
|
||||
nsCOMPtr<nsIWeakReference> wr = getter_AddRefs(NS_GetWeakReference(s));
|
||||
|
||||
*_retval = new nsSelectAccessible(aPopupAtom, nsnull, n, wr);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLCheckboxAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLCheckboxAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
*_retval = new nsHTMLCheckboxAccessible(shell,node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLCheckboxAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLRadioButtonAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
|
||||
*_retval = new nsHTMLRadioButtonAccessible(shell,node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLCheckboxAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLButtonAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
*_retval = new nsHTMLButtonAccessible(shell,node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* nsIAccessible createHTMLTextAccessible (in nsISupports aPresShell, in nsISupports aFrame); */
|
||||
NS_IMETHODIMP nsAccessibilityService::CreateHTMLTextAccessible(nsISupports *aFrame, nsIAccessible **_retval)
|
||||
{
|
||||
nsIFrame* frame;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = GetInfo(aFrame, &frame, getter_AddRefs(shell), getter_AddRefs(node));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
*_retval = new nsHTMLTextAccessible(shell, node);
|
||||
if (*_retval) {
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
} else
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessibilityService::GetInfo(nsISupports* aFrame, nsIFrame** aRealFrame, nsIPresShell** aShell, nsIDOMNode** aNode)
|
||||
{
|
||||
*aRealFrame = NS_STATIC_CAST(nsIFrame*, aFrame);
|
||||
nsCOMPtr<nsIContent> content;
|
||||
(*aRealFrame)->GetContent(getter_AddRefs(content));
|
||||
nsCOMPtr<nsIDOMNode> node = do_QueryInterface(content);
|
||||
*aNode = node;
|
||||
NS_ADDREF(*aNode);
|
||||
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
content->GetDocument(*getter_AddRefs(document));
|
||||
|
||||
#ifdef DEBUG
|
||||
PRInt32 shells = document->GetNumberOfShells();
|
||||
NS_ASSERTION(shells > 0,"Error no shells!");
|
||||
#endif
|
||||
|
||||
*aShell = document->GetShellAt(0);
|
||||
NS_IF_ADDREF(*aShell);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
nsresult
|
||||
NS_NewAccessibilityService(nsIAccessibilityService** aResult)
|
||||
{
|
||||
NS_PRECONDITION(aResult != nsnull, "null ptr");
|
||||
if (! aResult)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsAccessibilityService* a = new nsAccessibilityService();
|
||||
if (a == nsnull)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
NS_ADDREF(a);
|
||||
*aResult = a;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef __nsAccessibilityService_h__
|
||||
#define __nsAccessibilityService_h__
|
||||
|
||||
#include "nsIAccessibilityService.h"
|
||||
class nsIFrame;
|
||||
class nsIPresShell;
|
||||
class nsIDOMNode;
|
||||
|
||||
class nsAccessibilityService : public nsIAccessibilityService
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
// nsIAccessibilityService methods:
|
||||
NS_DECL_NSIACCESSIBILITYSERVICE
|
||||
|
||||
// nsAccessibilityService methods:
|
||||
nsAccessibilityService();
|
||||
virtual ~nsAccessibilityService();
|
||||
|
||||
public:
|
||||
|
||||
private:
|
||||
NS_IMETHOD GetInfo(nsISupports* aFrame, nsIFrame** aRealFrame, nsIPresShell** aShell, nsIDOMNode** aContent);
|
||||
|
||||
};
|
||||
|
||||
#endif /* __nsIccessibilityService_h__ */
|
||||
@@ -1,995 +0,0 @@
|
||||
/* -*- 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):
|
||||
*/
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIScrollableView.h"
|
||||
#include "nsRootAccessible.h"
|
||||
|
||||
//#define DEBUG_LEAKS
|
||||
|
||||
#ifdef DEBUG_LEAKS
|
||||
static gnsAccessibles = 0;
|
||||
#endif
|
||||
|
||||
|
||||
class nsFrameTreeWalker {
|
||||
public:
|
||||
nsFrameTreeWalker(nsIPresContext* aPresContext, nsAccessible* aOwner);
|
||||
nsIFrame* GetNextSibling(nsIFrame* aFrame);
|
||||
nsIFrame* GetPreviousSibling(nsIFrame* aFrame);
|
||||
nsIFrame* GetParent(nsIFrame* aFrame);
|
||||
nsIFrame* GetFirstChild(nsIFrame* aFrame);
|
||||
nsIFrame* GetLastChild(nsIFrame* aFrame);
|
||||
nsIFrame* GetChildBefore(nsIFrame* aParent, nsIFrame* aChild);
|
||||
PRInt32 GetCount(nsIFrame* aFrame);
|
||||
|
||||
static PRBool ShouldSkip(nsIPresContext* aContext, nsIAtom* aList, nsIFrame* aStart, nsIFrame* aNext);
|
||||
static void GetAccessible(nsIFrame* aFrame, nsCOMPtr<nsIAccessible>& aAccessible, nsCOMPtr<nsIContent>& aContent);
|
||||
|
||||
nsCOMPtr<nsIPresContext> mPresContext;
|
||||
nsCOMPtr<nsIAccessible> mAccessible;
|
||||
nsCOMPtr<nsIContent> mContent;
|
||||
nsAccessible* mOwner;
|
||||
};
|
||||
|
||||
nsFrameTreeWalker::nsFrameTreeWalker(nsIPresContext* aPresContext, nsAccessible* aOwner)
|
||||
{
|
||||
mPresContext = aPresContext;
|
||||
mOwner = aOwner;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetParent(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get parent\n");
|
||||
|
||||
nsIFrame* parent = nsnull;
|
||||
aFrame->GetParent(&parent);
|
||||
|
||||
// if no parent then we hit the root
|
||||
// just return that top frame
|
||||
if (!parent) {
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return aFrame;
|
||||
}
|
||||
|
||||
GetAccessible(parent, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
return parent;
|
||||
|
||||
return GetParent(parent);
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetNextSibling(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get next\n");
|
||||
|
||||
// get next sibling
|
||||
nsIFrame* next = nsnull;
|
||||
aFrame->GetNextSibling(&next);
|
||||
nsIAtom* list = nsnull;
|
||||
mOwner->GetListAtomForFrame(aFrame, list);
|
||||
|
||||
|
||||
// skip any frames with the same content node
|
||||
while(ShouldSkip(mPresContext, list, aFrame, next))
|
||||
next->GetNextSibling(&next);
|
||||
|
||||
|
||||
// if failed
|
||||
if (!next)
|
||||
{
|
||||
// if parent has content
|
||||
nsIFrame* parent = nsnull;
|
||||
aFrame->GetParent(&parent);
|
||||
|
||||
// if no parent fail
|
||||
if (!parent) {
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
// fail if we reach a parent that is accessible
|
||||
GetAccessible(parent, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
{
|
||||
// fail
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
} else {
|
||||
// next on parent
|
||||
nsIFrame* n = GetNextSibling(parent);
|
||||
if (ShouldSkip(mPresContext, list, aFrame, n))
|
||||
return GetNextSibling(n);
|
||||
else
|
||||
return n;
|
||||
}
|
||||
}
|
||||
|
||||
// if next has content
|
||||
GetAccessible(next, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
{
|
||||
// done
|
||||
return next;
|
||||
}
|
||||
|
||||
// if next doesn't have node
|
||||
|
||||
// call first on next
|
||||
nsIFrame* first = GetFirstChild(next);
|
||||
|
||||
// if found
|
||||
if (first) {
|
||||
if (ShouldSkip(mPresContext, list, aFrame, first))
|
||||
return GetNextSibling(first);
|
||||
else
|
||||
return first;
|
||||
}
|
||||
|
||||
// call next on next
|
||||
nsIFrame* n = GetNextSibling(next);
|
||||
if (ShouldSkip(mPresContext, list, aFrame, next))
|
||||
return GetNextSibling(n);
|
||||
else
|
||||
return n;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetFirstChild(nsIFrame* aFrame)
|
||||
{
|
||||
|
||||
//printf("Get first\n");
|
||||
|
||||
// get first child
|
||||
nsIFrame* child = nsnull;
|
||||
nsIAtom* list = nsnull;
|
||||
mOwner->GetListAtomForFrame(aFrame, list);
|
||||
aFrame->FirstChild(mPresContext, list, &child);
|
||||
|
||||
while(child)
|
||||
{
|
||||
// if first has a content node
|
||||
GetAccessible(child, mAccessible, mContent);
|
||||
if (mAccessible)
|
||||
{
|
||||
// done
|
||||
return child;
|
||||
} else {
|
||||
// call first on child
|
||||
nsIFrame* first = GetFirstChild(child);
|
||||
|
||||
// if succeeded
|
||||
if (first)
|
||||
{
|
||||
// return child
|
||||
return first;
|
||||
}
|
||||
}
|
||||
|
||||
// get next sibling
|
||||
nsIFrame* next;
|
||||
child->GetNextSibling(&next);
|
||||
|
||||
// skip children with duplicate content nodes
|
||||
nsIAtom* list = nsnull;
|
||||
mOwner->GetListAtomForFrame(child, list);
|
||||
|
||||
while(ShouldSkip(mPresContext, list, child, next))
|
||||
next->GetNextSibling(&next);
|
||||
|
||||
child = next;
|
||||
}
|
||||
|
||||
// fail
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetChildBefore(nsIFrame* aParent, nsIFrame* aChild)
|
||||
{
|
||||
nsIFrame* child = GetFirstChild(aParent);
|
||||
|
||||
// if the child is not us
|
||||
if (child == aChild) {
|
||||
mAccessible = nsnull;
|
||||
mContent = nsnull;
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
nsIFrame* prev = child;
|
||||
nsCOMPtr<nsIContent> prevContent = mContent;
|
||||
nsCOMPtr<nsIAccessible> prevAccessible = mAccessible;
|
||||
|
||||
while(child)
|
||||
{
|
||||
child = GetNextSibling(child);
|
||||
|
||||
if (child == aChild)
|
||||
break;
|
||||
|
||||
prev = child;
|
||||
prevContent = mContent;
|
||||
prevAccessible = mAccessible;
|
||||
}
|
||||
|
||||
mAccessible = prevAccessible;
|
||||
mContent = prevContent;
|
||||
return prev;
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetPreviousSibling(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get previous\n");
|
||||
|
||||
nsIFrame* parent = GetParent(aFrame);
|
||||
|
||||
return GetChildBefore(parent, aFrame);
|
||||
}
|
||||
|
||||
nsIFrame* nsFrameTreeWalker::GetLastChild(nsIFrame* aFrame)
|
||||
{
|
||||
//printf("Get last\n");
|
||||
|
||||
return GetChildBefore(aFrame, nsnull);
|
||||
}
|
||||
|
||||
PRInt32 nsFrameTreeWalker::GetCount(nsIFrame* aFrame)
|
||||
{
|
||||
|
||||
//printf("Get count\n");
|
||||
nsIFrame* child = GetFirstChild(aFrame);
|
||||
|
||||
PRInt32 count = 0;
|
||||
while(child)
|
||||
{
|
||||
count++;
|
||||
child = GetNextSibling(child);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
void nsFrameTreeWalker::GetAccessible(nsIFrame* aFrame, nsCOMPtr<nsIAccessible>& aAccessible, nsCOMPtr<nsIContent>& aContent)
|
||||
{
|
||||
aContent = nsnull;
|
||||
aAccessible = nsnull;
|
||||
|
||||
aFrame->GetContent(getter_AddRefs(aContent));
|
||||
|
||||
if (!aContent)
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
aContent->GetDocument(*getter_AddRefs(document));
|
||||
if (!document)
|
||||
return;
|
||||
|
||||
PRInt32 shells = document->GetNumberOfShells();
|
||||
NS_ASSERTION(shells > 0,"Error no shells!");
|
||||
nsIPresShell* shell = document->GetShellAt(0);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(aContent, &frame);
|
||||
|
||||
if (!frame)
|
||||
return;
|
||||
|
||||
aAccessible = do_QueryInterface(aFrame);
|
||||
|
||||
if (!aAccessible)
|
||||
aAccessible = do_QueryInterface(aContent);
|
||||
|
||||
// if (aAccessible)
|
||||
// printf("Found accessible!\n");
|
||||
}
|
||||
|
||||
PRBool nsFrameTreeWalker::ShouldSkip(nsIPresContext* aContext, nsIAtom* aList, nsIFrame* aStart, nsIFrame* aNext)
|
||||
{
|
||||
if (!aStart || !aNext)
|
||||
return PR_FALSE;
|
||||
|
||||
// is content the same? If so skip it
|
||||
nsCOMPtr<nsIContent> content1;
|
||||
nsCOMPtr<nsIContent> content2;
|
||||
|
||||
aStart->GetContent(getter_AddRefs(content1));
|
||||
aNext->GetContent(getter_AddRefs(content2));
|
||||
|
||||
if (content1 == content2 && content1 != nsnull) {
|
||||
// does it have childen? It it does then don't skip it
|
||||
nsIFrame* child = nsnull;
|
||||
aNext->FirstChild(aContext, aList, &child);
|
||||
if (child)
|
||||
return PR_FALSE;
|
||||
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class nsAccessible
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------
|
||||
// construction
|
||||
//-----------------------------------------------------
|
||||
nsAccessible::nsAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
|
||||
// get frame and node
|
||||
mContent = aContent;
|
||||
mAccessible = aAccessible;
|
||||
mPresShell = aShell;
|
||||
|
||||
#ifdef DEBUG_LEAKS
|
||||
printf("nsAccessibles=%d\n", ++gnsAccessibles);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// destruction
|
||||
//-----------------------------------------------------
|
||||
nsAccessible::~nsAccessible()
|
||||
{
|
||||
#ifdef DEBUG_LEAKS
|
||||
printf("nsAccessibles=%d\n", --gnsAccessibles);
|
||||
#endif
|
||||
}
|
||||
|
||||
//NS_IMPL_ISUPPORTS2(nsAccessible, nsIAccessible, nsIAccessibleWidgetAccess);
|
||||
NS_IMPL_ISUPPORTS1(nsAccessible, nsIAccessible);
|
||||
|
||||
/* readonly attribute nsIAccessible accParent; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccParent(nsIAccessible * *aAccParent)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccParent(aAccParent);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
walker.GetParent(GetFrame());
|
||||
|
||||
// if no content or accessible then we hit the root
|
||||
if (!walker.mContent || !walker.mAccessible)
|
||||
{
|
||||
*aAccParent = new nsRootAccessible(mPresShell);
|
||||
NS_ADDREF(*aAccParent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*aAccParent = CreateNewParentAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccParent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*aAccParent = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
/* readonly attribute nsIAccessible accNextSibling; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccNextSibling(nsIAccessible * *aAccNextSibling)
|
||||
{
|
||||
// delegate
|
||||
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccNextSibling(aAccNextSibling);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
|
||||
nsIFrame* next = walker.GetNextSibling(GetFrame());
|
||||
|
||||
if (next && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccNextSibling = CreateNewNextAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccNextSibling);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccNextSibling = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accPreviousSibling; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccPreviousSibling(nsIAccessible * *aAccPreviousSibling)
|
||||
{
|
||||
// delegate
|
||||
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccPreviousSibling(aAccPreviousSibling);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
nsIFrame* prev = walker.GetPreviousSibling(GetFrame());
|
||||
|
||||
if (prev && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccPreviousSibling = CreateNewPreviousAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccPreviousSibling);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccPreviousSibling = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accFirstChild; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccFirstChild(nsIAccessible * *aAccFirstChild)
|
||||
{
|
||||
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccFirstChild(aAccFirstChild);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
nsIFrame* child = walker.GetFirstChild(GetFrame());
|
||||
|
||||
if (child && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccFirstChild = CreateNewFirstAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccFirstChild);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccFirstChild = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accFirstChild; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccLastChild(nsIAccessible * *aAccLastChild)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccLastChild(aAccLastChild);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
nsIFrame* last = walker.GetLastChild(GetFrame());
|
||||
|
||||
if (last && walker.mAccessible && walker.mContent)
|
||||
{
|
||||
*aAccLastChild = CreateNewLastAccessible(walker.mAccessible, walker.mContent, mPresShell);
|
||||
NS_ADDREF(*aAccLastChild);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
*aAccLastChild = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute long accChildCount; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccChildCount(PRInt32 *aAccChildCount)
|
||||
{
|
||||
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccChildCount(aAccChildCount);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
if (context) {
|
||||
nsFrameTreeWalker walker(context, this);
|
||||
*aAccChildCount = walker.GetCount(GetFrame());
|
||||
} else
|
||||
*aAccChildCount = 0;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccName(PRUnichar * *aAccName)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccName(aAccName);
|
||||
if (NS_SUCCEEDED(rv) && *aAccName != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
*aAccName = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccDefaultAction(PRUnichar * *aDefaultAction)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccDefaultAction(aDefaultAction);
|
||||
if (NS_SUCCEEDED(rv) && *aDefaultAction != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
*aDefaultAction = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessible::SetAccName(const PRUnichar * aAccName)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->SetAccName(aAccName);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* attribute wstring accValue; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccValue(PRUnichar * *aAccValue)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccValue(aAccValue);
|
||||
|
||||
if (NS_SUCCEEDED(rv) && *aAccValue != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
*aAccValue = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessible::SetAccValue(const PRUnichar * aAccValue) { return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
/* readonly attribute wstring accDescription; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccDescription(PRUnichar * *aAccDescription)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccDescription(aAccDescription);
|
||||
if (NS_SUCCEEDED(rv) && *aAccDescription != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accRole; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccRole(PRUnichar * *aAccRole)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccRole(aAccRole);
|
||||
if (NS_SUCCEEDED(rv) && *aAccRole != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accState; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccState(PRUint32 *aAccState)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible)
|
||||
return mAccessible->GetAccState(aAccState);
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessible::GetAccExtState(PRUint32 *aAccExtState)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible)
|
||||
return mAccessible->GetAccExtState(aAccExtState);
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accHelp; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccHelp(PRUnichar * *aAccHelp)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->GetAccHelp(aAccHelp);
|
||||
if (NS_SUCCEEDED(rv) && *aAccHelp != nsnull)
|
||||
return rv;
|
||||
}
|
||||
|
||||
// failed? Lets do some default behavior
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* readonly attribute boolean accFocused; */
|
||||
NS_IMETHODIMP nsAccessible::GetAccFocused(PRBool *aAccFocused) { return NS_OK; }
|
||||
|
||||
/* nsIAccessible accGetChildAt (in long x, in long y); */
|
||||
NS_IMETHODIMP nsAccessible::AccGetAt(PRInt32 tx, PRInt32 ty, nsIAccessible **_retval)
|
||||
{
|
||||
PRInt32 x,y,w,h;
|
||||
AccGetBounds(&x,&y,&w,&h);
|
||||
if (tx > x && tx < x + w && ty > y && ty < y + h)
|
||||
{
|
||||
nsCOMPtr<nsIAccessible> child;
|
||||
nsCOMPtr<nsIAccessible> next;
|
||||
GetAccFirstChild(getter_AddRefs(child));
|
||||
PRInt32 cx,cy,cw,ch;
|
||||
|
||||
while(child) {
|
||||
child->AccGetBounds(&cx,&cy,&cw,&ch);
|
||||
|
||||
if (tx > cx && tx < cx + cw && ty > cy && ty < cy + ch)
|
||||
{
|
||||
*_retval = child;
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
child->GetAccNextSibling(getter_AddRefs(next));
|
||||
child = next;
|
||||
}
|
||||
|
||||
|
||||
*_retval = this;
|
||||
NS_ADDREF(this);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void accNavigateRight (); */
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateRight(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
/* void navigateLeft (); */
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateLeft(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
/* void navigateUp (); */
|
||||
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateUp(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
/* void navigateDown (); */
|
||||
NS_IMETHODIMP nsAccessible::AccNavigateDown(nsIAccessible **_retval) { return NS_OK; }
|
||||
|
||||
|
||||
/* void addSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccAddSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccAddSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void removeSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccRemoveSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccRemoveSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void extendSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccExtendSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccExtendSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void takeSelection (); */
|
||||
NS_IMETHODIMP nsAccessible::AccTakeSelection(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccTakeSelection();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void takeFocus (); */
|
||||
NS_IMETHODIMP nsAccessible::AccTakeFocus(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccTakeFocus();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void doDefaultAction (); */
|
||||
NS_IMETHODIMP nsAccessible::AccDoDefaultAction(void)
|
||||
{
|
||||
// delegate
|
||||
if (mAccessible) {
|
||||
nsresult rv = mAccessible->AccDoDefaultAction();
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void accGetBounds (out long x, out long y, out long width, out long height); */
|
||||
NS_IMETHODIMP nsAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
nsIFrame* frame = GetBoundsFrame();
|
||||
|
||||
if (!frame || !context)
|
||||
{
|
||||
*x = *y = *width = *height = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// sum up all rects of frames with the same content node
|
||||
nsRect r;
|
||||
nsIFrame* start = frame;
|
||||
nsIFrame* next = nsnull;
|
||||
start->GetNextSibling(&next);
|
||||
|
||||
start->GetRect(r);
|
||||
|
||||
while (nsFrameTreeWalker::ShouldSkip(context,nsnull, start, next))
|
||||
{
|
||||
nsRect r2;
|
||||
next->GetRect(r2);
|
||||
r.UnionRect(r,r2);
|
||||
next->GetNextSibling(&next);
|
||||
}
|
||||
|
||||
nsPoint offset(r.x,r.y);
|
||||
|
||||
frame->GetParent(&frame);
|
||||
|
||||
nsPoint pos(0,0);
|
||||
while(frame) {
|
||||
nsIScrollableView* scrollingView;
|
||||
nsIView* view;
|
||||
// XXX hack
|
||||
frame->GetView(context, &view);
|
||||
if (view) {
|
||||
nsresult result = view->QueryInterface(NS_GET_IID(nsIScrollableView), (void**)&scrollingView);
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
nscoord xoff = 0;
|
||||
nscoord yoff = 0;
|
||||
scrollingView->GetScrollPosition(xoff, yoff);
|
||||
offset.x -= xoff;
|
||||
offset.y -= yoff;
|
||||
}
|
||||
}
|
||||
|
||||
frame->GetOrigin(pos);
|
||||
offset += pos;
|
||||
frame->GetParent(&frame);
|
||||
}
|
||||
|
||||
float t2p;
|
||||
context->GetTwipsToPixels(&t2p);
|
||||
|
||||
*x = (PRInt32)(offset.x*t2p);
|
||||
*y = (PRInt32)(offset.y*t2p);
|
||||
*width = (PRInt32)(r.width*t2p);
|
||||
*height = (PRInt32)(r.height*t2p);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// helpers
|
||||
|
||||
nsIFrame* nsAccessible::GetBoundsFrame()
|
||||
{
|
||||
return GetFrame();
|
||||
}
|
||||
|
||||
nsIFrame* nsAccessible::GetFrame()
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(mContent, &frame);
|
||||
return frame;
|
||||
}
|
||||
|
||||
void nsAccessible::GetPresContext(nsCOMPtr<nsIPresContext>& aContext)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
|
||||
if (shell) {
|
||||
shell->GetPresContext(getter_AddRefs(aContext));
|
||||
} else
|
||||
aContext = nsnull;
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewParentAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
|
||||
// ------- nsHTMLBlockAccessible ------
|
||||
|
||||
nsHTMLBlockAccessible::nsHTMLBlockAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell):nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
nsIAccessible* nsHTMLBlockAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsHTMLBlockAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
/* nsIAccessible accGetAt (in long x, in long y); */
|
||||
NS_IMETHODIMP nsHTMLBlockAccessible::AccGetAt(PRInt32 tx, PRInt32 ty, nsIAccessible **_retval)
|
||||
{
|
||||
PRInt32 x,y,w,h;
|
||||
AccGetBounds(&x,&y,&w,&h);
|
||||
if (tx > x && tx < x + w && ty > y && ty < y + h)
|
||||
{
|
||||
nsCOMPtr<nsIAccessible> child;
|
||||
nsCOMPtr<nsIAccessible> smallestChild;
|
||||
PRInt32 smallestArea = -1;
|
||||
nsCOMPtr<nsIAccessible> next;
|
||||
GetAccFirstChild(getter_AddRefs(child));
|
||||
PRInt32 cx,cy,cw,ch;
|
||||
|
||||
while(child) {
|
||||
child->AccGetBounds(&cx,&cy,&cw,&ch);
|
||||
|
||||
// ok if there are multiple frames the contain the point
|
||||
// and they overlap then pick the smallest. We need to do this
|
||||
// for text frames.
|
||||
if (tx > cx && tx < cx + cw && ty > cy && ty < cy + ch)
|
||||
{
|
||||
if (smallestArea == -1 || cw*ch < smallestArea) {
|
||||
smallestArea = cw*ch;
|
||||
smallestChild = child;
|
||||
}
|
||||
}
|
||||
child->GetAccNextSibling(getter_AddRefs(next));
|
||||
child = next;
|
||||
}
|
||||
|
||||
if (smallestChild != nsnull)
|
||||
{
|
||||
*_retval = smallestChild;
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*_retval = this;
|
||||
NS_ADDREF(this);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
/* -*- 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 _nsAccessible_H_
|
||||
#define _nsAccessible_H_
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsIAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsWeakReference.h"
|
||||
|
||||
class nsIFrame;
|
||||
|
||||
class nsAccessible : public nsIAccessible
|
||||
// public nsIAccessibleWidgetAccess
|
||||
{
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
// nsIAccessibilityService methods:
|
||||
NS_DECL_NSIACCESSIBLE
|
||||
|
||||
//NS_IMETHOD AccGetWidget(nsIWidget**);
|
||||
|
||||
public:
|
||||
nsAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsAccessible();
|
||||
|
||||
virtual void GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList) { aList = nsnull; }
|
||||
|
||||
protected:
|
||||
virtual nsIFrame* GetFrame();
|
||||
virtual nsIFrame* GetBoundsFrame();
|
||||
virtual void GetPresContext(nsCOMPtr<nsIPresContext>& aContext);
|
||||
virtual nsIAccessible* CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewParentAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIContent> mContent;
|
||||
nsCOMPtr<nsIWeakReference> mPresShell;
|
||||
nsCOMPtr<nsIAccessible> mAccessible;
|
||||
};
|
||||
|
||||
/* Special Accessible that knows how to handle hit detection for flowing text */
|
||||
class nsHTMLBlockAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
nsHTMLBlockAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
NS_IMETHOD AccGetAt(PRInt32 x, PRInt32 y, nsIAccessible **_retval);
|
||||
protected:
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aFrame, nsIWeakReference* aShell);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,335 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsGenericAccessible.h"
|
||||
#include "nsIEventStateManager.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIWeakReference.h"
|
||||
|
||||
/* Implementation file */
|
||||
NS_IMPL_ISUPPORTS1(nsGenericAccessible, nsIAccessible)
|
||||
|
||||
nsGenericAccessible::nsGenericAccessible()
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
/* member initializers and constructor code */
|
||||
}
|
||||
|
||||
nsGenericAccessible::~nsGenericAccessible()
|
||||
{
|
||||
/* destructor code */
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccParent (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccNextSibling (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccPreviousSibling (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccPreviousSibling(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccFirstChild (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccLastChild (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* long getAccChildCount (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccName (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccValue (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccValue(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void setAccName (in wstring name); */
|
||||
NS_IMETHODIMP nsGenericAccessible::SetAccName(const PRUnichar *name)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void setAccValue (in wstring value); */
|
||||
NS_IMETHODIMP nsGenericAccessible::SetAccValue(const PRUnichar *value)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccDescription (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccDescription(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccState (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccState(PRUint32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccHelp (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccHelp(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* boolean getAccFocused (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccFocused(PRBool *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accGetAt (in long x, in long y); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccGetAt(PRInt32 x, PRInt32 y, nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateRight (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateRight(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateLeft (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateLeft(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateUp (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateUp(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* nsIAccessible accNavigateDown (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccNavigateDown(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accGetBounds (out long x, out long y, out long width, out long height); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accAddSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccAddSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accRemoveSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccRemoveSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accExtendSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccExtendSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accTakeSelection (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccTakeSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accTakeFocus (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccTakeFocus()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void accDoDefaultAction (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::AccDoDefaultAction()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* unsigned long getAccExtState (); */
|
||||
NS_IMETHODIMP nsGenericAccessible::GetAccExtState(PRUint32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
//-------------
|
||||
// nsDOMAccessible
|
||||
//-------------
|
||||
|
||||
nsDOMAccessible::nsDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode)
|
||||
{
|
||||
mPresShell = getter_AddRefs(NS_GetWeakReference(aShell));
|
||||
mNode = aNode;
|
||||
}
|
||||
|
||||
|
||||
/* void accRemoveSelection (); */
|
||||
NS_IMETHODIMP nsDOMAccessible::AccRemoveSelection()
|
||||
{
|
||||
nsCOMPtr<nsISelectionController> control = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsISelection> selection;
|
||||
nsresult rv = control->GetSelection(nsISelectionController::SELECTION_NORMAL, getter_AddRefs(selection));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> parent;
|
||||
rv = mNode->GetParentNode(getter_AddRefs(parent));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = selection->Collapse(parent, 0);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void accTakeSelection (); */
|
||||
NS_IMETHODIMP nsDOMAccessible::AccTakeSelection()
|
||||
{
|
||||
nsCOMPtr<nsISelectionController> control = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsISelection> selection;
|
||||
nsresult rv = control->GetSelection(nsISelectionController::SELECTION_NORMAL, getter_AddRefs(selection));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> parent;
|
||||
rv = mNode->GetParentNode(getter_AddRefs(parent));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
PRInt32 offsetInParent = 0;
|
||||
nsCOMPtr<nsIDOMNode> child;
|
||||
rv = parent->GetFirstChild(getter_AddRefs(child));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> next;
|
||||
|
||||
while(child)
|
||||
{
|
||||
if (child == mNode) {
|
||||
// Collapse selection to just before desired element,
|
||||
rv = selection->Collapse(parent, offsetInParent);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
// then extend it to just after
|
||||
rv = selection->Extend(parent, offsetInParent+1);
|
||||
return rv;
|
||||
}
|
||||
|
||||
child->GetNextSibling(getter_AddRefs(next));
|
||||
child = next;
|
||||
offsetInParent++;
|
||||
}
|
||||
|
||||
// didn't find a child
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
/* void accTakeFocus (); */
|
||||
NS_IMETHODIMP nsDOMAccessible::AccTakeFocus()
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
shell->GetPresContext(getter_AddRefs(context));
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(mNode);
|
||||
content->SetFocus(context);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------
|
||||
// nsLeafFrameAccessible
|
||||
//-------------
|
||||
|
||||
nsLeafDOMAccessible::nsLeafDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsDOMAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccFirstChild (); */
|
||||
NS_IMETHODIMP nsLeafDOMAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* nsIAccessible getAccLastChild (); */
|
||||
NS_IMETHODIMP nsLeafDOMAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* long getAccChildCount (); */
|
||||
NS_IMETHODIMP nsLeafDOMAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
*_retval = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric D Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef _nsGenericAccessible_H_
|
||||
#define _nsGenericAccessible_H_
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsIAccessible.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
class nsIWeakReference;
|
||||
|
||||
/**
|
||||
* Basic implementation
|
||||
* supports nothing
|
||||
*/
|
||||
class nsGenericAccessible : public nsIAccessible
|
||||
{
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIACCESSIBLE
|
||||
|
||||
public:
|
||||
nsGenericAccessible();
|
||||
virtual ~nsGenericAccessible();
|
||||
};
|
||||
|
||||
/**
|
||||
* And accessible that observes a dom node
|
||||
* supports:
|
||||
* - selection
|
||||
* - focus
|
||||
*/
|
||||
class nsDOMAccessible : public nsGenericAccessible
|
||||
{
|
||||
public:
|
||||
nsDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
|
||||
NS_IMETHOD AccTakeSelection(void);
|
||||
NS_IMETHOD AccTakeFocus(void);
|
||||
NS_IMETHOD AccRemoveSelection(void);
|
||||
|
||||
protected:
|
||||
nsIWeakReference* mPresShell;
|
||||
nsCOMPtr<nsIDOMNode> mNode;
|
||||
};
|
||||
|
||||
/* Leaf version of DOM Accessible
|
||||
* has no children
|
||||
*/
|
||||
class nsLeafDOMAccessible : public nsDOMAccessible
|
||||
{
|
||||
public:
|
||||
nsLeafDOMAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
|
||||
NS_IMETHOD GetAccFirstChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccLastChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccChildCount(PRInt32 *_retval);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,175 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsHTMLFormControlAccessible.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIDOMHTMLInputElement.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsHTMLAtoms.h"
|
||||
#include "nsIDOMHTMLButtonElement.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
nsHTMLFormControlAccessible::nsHTMLFormControlAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsLeafDOMAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccName (); */
|
||||
NS_IMETHODIMP nsHTMLFormControlAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
// go up tree get name of label if there is one.
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* wstring getAccState (); */
|
||||
NS_IMETHODIMP nsHTMLFormControlAccessible::GetAccState(PRUint32 *_retval)
|
||||
{
|
||||
// can be
|
||||
// focusable, focused, checked
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
|
||||
PRBool checked = PR_FALSE;
|
||||
element->GetChecked(&checked);
|
||||
*_retval = (checked ? STATE_CHECKED : 0);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// --- checkbox -----
|
||||
|
||||
nsHTMLCheckboxAccessible::nsHTMLCheckboxAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsHTMLFormControlAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLCheckboxAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("check box"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLCheckboxAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
// check or uncheck
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
|
||||
PRBool checked = PR_FALSE;
|
||||
element->GetChecked(&checked);
|
||||
if (checked)
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Check"));
|
||||
else
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("UnCheck"));
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void accDoDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLCheckboxAccessible::AccDoDefaultAction()
|
||||
{
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
PRBool checked = PR_FALSE;
|
||||
element->GetChecked(&checked);
|
||||
element->SetChecked(checked ? PR_FALSE : PR_TRUE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//------ Radio button -------
|
||||
|
||||
nsHTMLRadioButtonAccessible::nsHTMLRadioButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsHTMLFormControlAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLRadioButtonAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Select"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLRadioButtonAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("radio button"));
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsHTMLRadioButtonAccessible::AccDoDefaultAction()
|
||||
{
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
element->Click();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// ----- Button -----
|
||||
|
||||
nsHTMLButtonAccessible::nsHTMLButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode):
|
||||
nsHTMLFormControlAccessible(aShell, aNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccDefaultAction (); */
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Press"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("push button"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> button = do_QueryInterface(mNode);
|
||||
|
||||
if (!button)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsAutoString name;
|
||||
button->GetValue(name);
|
||||
name.CompressWhitespace();
|
||||
|
||||
*_retval = name.ToNewUnicode();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsHTMLButtonAccessible::AccDoDefaultAction()
|
||||
{
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> element = do_QueryInterface(mNode);
|
||||
element->Click();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric D Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef _nsHTMLFormControlAccessible_H_
|
||||
#define _nsHTMLFormControlAccessible_H_
|
||||
|
||||
#include "nsGenericAccessible.h"
|
||||
|
||||
class nsICheckboxControlFrame;
|
||||
|
||||
/* Accessible for supporting for controls
|
||||
* supports:
|
||||
* - walking up to get name from label
|
||||
* - support basic state
|
||||
*/
|
||||
class nsHTMLFormControlAccessible : public nsLeafDOMAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLFormControlAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccState(PRUint32 *_retval);
|
||||
};
|
||||
|
||||
class nsHTMLCheckboxAccessible : public nsHTMLFormControlAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLCheckboxAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccDefaultAction(PRUnichar **_retval);
|
||||
NS_IMETHOD AccDoDefaultAction(void);
|
||||
};
|
||||
|
||||
class nsHTMLRadioButtonAccessible : public nsHTMLFormControlAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLRadioButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccDefaultAction(PRUnichar **_retval);
|
||||
NS_IMETHOD AccDoDefaultAction(void);
|
||||
};
|
||||
|
||||
class nsHTMLButtonAccessible : public nsHTMLFormControlAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLButtonAccessible(nsIPresShell* aShell, nsIDOMNode* aNode);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccDefaultAction(PRUnichar **_retval);
|
||||
NS_IMETHOD AccDoDefaultAction(void);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,51 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
* Author: Eric Vaughan (evaughan@netscape.com)
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsHTMLTextAccessible.h"
|
||||
#include "nsICheckboxControlFrame.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsIFrame.h"
|
||||
|
||||
nsHTMLTextAccessible::nsHTMLTextAccessible(nsIPresShell* aShell, nsIDOMNode* aDomNode):
|
||||
nsLeafDOMAccessible(aShell, aDomNode)
|
||||
{
|
||||
}
|
||||
|
||||
/* wstring getAccName (); */
|
||||
NS_IMETHODIMP nsHTMLTextAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
nsAutoString value;
|
||||
mNode->GetNodeValue(value);
|
||||
value.CompressWhitespace();
|
||||
*_retval = value.ToNewUnicode();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* wstring getAccRole (); */
|
||||
NS_IMETHODIMP nsHTMLTextAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
nsAutoString role(NS_LITERAL_STRING("text"));
|
||||
*_retval = role.ToNewUnicode();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
/* -*- 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 _nsHTMLTextAccessible_H_
|
||||
#define _nsHTMLTextAccessible_H_
|
||||
|
||||
#include "nsGenericAccessible.h"
|
||||
|
||||
class nsIWeakReference;
|
||||
class nsITextControlFrame;
|
||||
|
||||
class nsHTMLTextAccessible : public nsLeafDOMAccessible
|
||||
{
|
||||
|
||||
public:
|
||||
nsHTMLTextAccessible(nsIPresShell* aShell, nsIDOMNode* aDomNode);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIDOMNode> mDomNode;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,263 +0,0 @@
|
||||
/* -*- 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):
|
||||
*/
|
||||
|
||||
#include "nsMutableAccessible.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsMutableAccessible, nsIAccessible)
|
||||
|
||||
nsMutableAccessible::nsMutableAccessible(nsISupports* aNode)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
NS_ASSERTION(aNode,"We must have a valid node!!");
|
||||
mNode = aNode;
|
||||
mNameNodeValue = PR_FALSE;
|
||||
mNameStringSet = PR_FALSE;
|
||||
mRole = NS_LITERAL_STRING("unknown");
|
||||
mIsLeaf = PR_FALSE;
|
||||
}
|
||||
|
||||
nsMutableAccessible::~nsMutableAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::SetIsLeaf(PRBool aLeaf)
|
||||
{
|
||||
mIsLeaf = aLeaf;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void SetNodeAsNodeValue (); */
|
||||
NS_IMETHODIMP nsMutableAccessible::SetNameAsNodeValue()
|
||||
{
|
||||
mNameNodeValue = PR_TRUE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void SetName (in wstring name); */
|
||||
NS_IMETHODIMP nsMutableAccessible::SetName(const PRUnichar *aName)
|
||||
{
|
||||
mName = aName;
|
||||
mNameStringSet = PR_TRUE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void SetNameAsAttribute (in nsIAtom atom); */
|
||||
NS_IMETHODIMP nsMutableAccessible::SetNameAsAttribute(nsIAtom *aAttribute)
|
||||
{
|
||||
mNameAttribute = aAttribute;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void SetNameAsAttribute (in nsIAtom atom); */
|
||||
NS_IMETHODIMP nsMutableAccessible::SetRole(const PRUnichar *aRole)
|
||||
{
|
||||
mRole = aRole;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccPreviousSibling(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
if (mIsLeaf) {
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
if (mIsLeaf) {
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
if (mIsLeaf) {
|
||||
*_retval = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
nsAutoString value;
|
||||
|
||||
if (mNameNodeValue) {
|
||||
// see if we can get nodevalue
|
||||
nsCOMPtr<nsIDOMNode> node = do_QueryInterface(mNode);
|
||||
if (node) {
|
||||
node->GetNodeValue(value);
|
||||
value.CompressWhitespace();
|
||||
} else {
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
} else if (mNameStringSet) {
|
||||
value = mName;
|
||||
} else if (mNameAttribute) {
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(mNode);
|
||||
content->GetAttribute(kNameSpaceID_None, mNameAttribute, value);
|
||||
value.CompressWhitespace();
|
||||
} else {
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
*_retval = value.ToNewUnicode();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccValue(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::SetAccName(const PRUnichar *name)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::SetAccValue(const PRUnichar *value)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccDescription(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = mRole.ToNewUnicode();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccState(PRUint32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccExtState(PRUint32 *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccDefaultAction(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccHelp(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::GetAccFocused(PRBool *_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccGetAt(PRInt32 x, PRInt32 y, nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccNavigateRight(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccNavigateLeft(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccNavigateUp(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccNavigateDown(nsIAccessible **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccAddSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccRemoveSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccExtendSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccTakeSelection()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccTakeFocus()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMutableAccessible::AccDoDefaultAction()
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/* -*- 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 _nsMutableAccessible_H_
|
||||
#define _nsMutableAccessible_H_
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include "nsIMutableAccessible.h"
|
||||
|
||||
class nsMutableAccessible : public nsIMutableAccessible
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIACCESSIBLE
|
||||
NS_DECL_NSIMUTABLEACCESSIBLE
|
||||
|
||||
nsMutableAccessible(nsISupports* aNode);
|
||||
virtual ~nsMutableAccessible();
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsISupports> mNode;
|
||||
nsAutoString mName;
|
||||
nsAutoString mRole;
|
||||
nsCOMPtr<nsIAtom> mNameAttribute;
|
||||
PRPackedBool mNameNodeValue;
|
||||
PRPackedBool mNameStringSet;
|
||||
PRPackedBool mIsLeaf;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,199 +0,0 @@
|
||||
/* -*- 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):
|
||||
*/
|
||||
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIDOMEventTarget.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIDOMEventReceiver.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(nsRootAccessible)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIAccessibleEventReceiver)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessibleEventReceiver)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsAccessible)
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsRootAccessible, nsAccessible);
|
||||
NS_IMPL_RELEASE_INHERITED(nsRootAccessible, nsAccessible);
|
||||
|
||||
//-----------------------------------------------------
|
||||
// construction
|
||||
//-----------------------------------------------------
|
||||
nsRootAccessible::nsRootAccessible(nsIWeakReference* aShell, nsIFrame* aFrame):nsAccessible(nsnull,nsnull,aShell)
|
||||
{
|
||||
// mFrame = aFrame;
|
||||
mListener = nsnull;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// destruction
|
||||
//-----------------------------------------------------
|
||||
nsRootAccessible::~nsRootAccessible()
|
||||
{
|
||||
RemoveAccessibleEventListener(mListener);
|
||||
}
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHODIMP nsRootAccessible::GetAccName(PRUnichar * *aAccName)
|
||||
{
|
||||
*aAccName = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// helpers
|
||||
nsIFrame* nsRootAccessible::GetFrame()
|
||||
{
|
||||
//if (!mFrame) {
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* root = nsnull;
|
||||
if (shell)
|
||||
shell->GetRootFrame(&root);
|
||||
|
||||
return root;
|
||||
//}
|
||||
|
||||
// return mFrame;
|
||||
}
|
||||
|
||||
nsIAccessible* nsRootAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return new nsHTMLBlockAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
/* readonly attribute nsIAccessible accParent; */
|
||||
NS_IMETHODIMP nsRootAccessible::GetAccParent(nsIAccessible * *aAccParent)
|
||||
{
|
||||
*aAccParent = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* readonly attribute wstring accRole; */
|
||||
NS_IMETHODIMP nsRootAccessible::GetAccRole(PRUnichar * *aAccRole)
|
||||
{
|
||||
*aAccRole = ToNewUnicode(NS_LITERAL_STRING("client"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void addAccessibleEventListener (in nsIAccessibleEventListener aListener); */
|
||||
NS_IMETHODIMP nsRootAccessible::AddAccessibleEventListener(nsIAccessibleEventListener *aListener)
|
||||
{
|
||||
if (!mListener)
|
||||
{
|
||||
// add an event listener to the document
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
shell->GetDocument(getter_AddRefs(document));
|
||||
|
||||
nsCOMPtr<nsIDOMEventReceiver> receiver;
|
||||
if (NS_SUCCEEDED(document->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(receiver))) && receiver)
|
||||
{
|
||||
nsresult rv = receiver->AddEventListenerByIID(NS_STATIC_CAST(nsIDOMFocusListener *, this), NS_GET_IID(nsIDOMFocusListener));
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to register listener");
|
||||
}
|
||||
}
|
||||
|
||||
// create a weak reference to the listener
|
||||
mListener = aListener;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void removeAccessibleEventListener (in nsIAccessibleEventListener aListener); */
|
||||
NS_IMETHODIMP nsRootAccessible::RemoveAccessibleEventListener(nsIAccessibleEventListener *aListener)
|
||||
{
|
||||
if (mListener)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
if (!shell)
|
||||
return NS_OK;
|
||||
|
||||
shell->GetDocument(getter_AddRefs(document));
|
||||
|
||||
nsCOMPtr<nsIDOMEventReceiver> erP;
|
||||
if (NS_SUCCEEDED(document->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(erP))) && erP)
|
||||
{
|
||||
nsresult rv = erP->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMFocusListener *, this), NS_GET_IID(nsIDOMFocusListener));
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to register listener");
|
||||
}
|
||||
}
|
||||
|
||||
mListener = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
nsresult nsRootAccessible::HandleEvent(nsIDOMEvent* aEvent)
|
||||
{
|
||||
if (mListener) {
|
||||
nsCOMPtr<nsIDOMEventTarget> t;
|
||||
aEvent->GetOriginalTarget(getter_AddRefs(t));
|
||||
|
||||
// create and accessible for the target
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(t);
|
||||
|
||||
if (!content)
|
||||
return NS_OK;
|
||||
|
||||
if (mCurrentFocus == content)
|
||||
return NS_OK;
|
||||
|
||||
mCurrentFocus = content;
|
||||
|
||||
nsIFrame* frame = nsnull;
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
shell->GetPrimaryFrameFor(content, &frame);
|
||||
|
||||
if (!frame)
|
||||
return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIAccessible> a = do_QueryInterface(frame);
|
||||
|
||||
if (!a)
|
||||
a = do_QueryInterface(content);
|
||||
|
||||
nsCOMPtr<nsIAccessible> na = CreateNewAccessible(a, content, mPresShell);
|
||||
|
||||
mListener->HandleEvent(nsIAccessibleEventListener::EVENT_FOCUS, na);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsRootAccessible::Focus(nsIDOMEvent* aEvent)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsRootAccessible::Blur(nsIDOMEvent* aEvent)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
/* -*- 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 _nsRootAccessible_H_
|
||||
#define _nsRootAccessible_H_
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsIAccessibleEventReceiver.h"
|
||||
#include "nsIAccessibleEventListener.h"
|
||||
#include "nsIDOMFocusListener.h"
|
||||
|
||||
class nsRootAccessible : public nsAccessible,
|
||||
public nsIAccessibleEventReceiver,
|
||||
public nsIDOMFocusListener
|
||||
|
||||
{
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
public:
|
||||
nsRootAccessible(nsIWeakReference* aShell, nsIFrame* aFrame = nsnull);
|
||||
virtual ~nsRootAccessible();
|
||||
|
||||
/* attribute wstring accName; */
|
||||
NS_IMETHOD GetAccName(PRUnichar * *aAccName);
|
||||
NS_IMETHOD GetAccParent(nsIAccessible * *aAccParent);
|
||||
NS_IMETHOD GetAccRole(PRUnichar * *aAccRole);
|
||||
|
||||
// ----- nsIAccessibleEventReceiver ------
|
||||
|
||||
NS_IMETHOD AddAccessibleEventListener(nsIAccessibleEventListener *aListener);
|
||||
NS_IMETHOD RemoveAccessibleEventListener(nsIAccessibleEventListener *aListener);
|
||||
|
||||
// ----- nsIDOMEventListener --------
|
||||
virtual nsresult HandleEvent(nsIDOMEvent* anEvent);
|
||||
virtual nsresult Focus(nsIDOMEvent* aEvent);
|
||||
virtual nsresult Blur(nsIDOMEvent* aEvent);
|
||||
|
||||
protected:
|
||||
virtual nsIFrame* GetFrame();
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
// not a com pointer. We don't own the listener
|
||||
// it is the callers responsibility to remove the listener
|
||||
// otherwise we will get into circular referencing problems
|
||||
nsIAccessibleEventListener* mListener;
|
||||
nsCOMPtr<nsIContent> mCurrentFocus;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,717 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; 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.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsSelectAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsMutableAccessible.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsIDOMMenuListener.h"
|
||||
#include "nsIDOMEventReceiver.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
class nsSelectChildAccessible : public nsAccessible,
|
||||
public nsIDOMMenuListener
|
||||
{
|
||||
public:
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
nsSelectChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsSelectChildAccessible();
|
||||
|
||||
NS_IMETHOD GetAccNextSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccValue(PRUnichar **_retval);
|
||||
|
||||
virtual nsIAccessible* CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
// popup listener
|
||||
NS_IMETHOD Create(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Close(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Destroy(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Action(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD Broadcast(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD CommandUpdate(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
nsresult HandleEvent(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
nsCOMPtr<nsIContent> mSelectContent;
|
||||
PRBool mRegistered;
|
||||
PRBool mOpen;
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(nsSelectChildAccessible, nsAccessible, nsIDOMMenuListener)
|
||||
|
||||
class nsSelectWindowAccessible : public nsAccessible,
|
||||
public nsIDOMMenuListener
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
nsSelectWindowAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aPrev, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsSelectWindowAccessible();
|
||||
|
||||
NS_IMETHOD GetAccParent(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccNextSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccPreviousSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccLastChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccFirstChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccChildCount(PRInt32 *_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccState(PRUint32 *_retval);
|
||||
NS_IMETHOD GetAccExtState(PRUint32 *_retval);
|
||||
|
||||
// popup listener
|
||||
NS_IMETHOD Create(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Close(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Destroy(nsIDOMEvent* aEvent);
|
||||
NS_IMETHOD Action(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD Broadcast(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
NS_IMETHOD CommandUpdate(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
nsresult HandleEvent(nsIDOMEvent* aEvent) { return NS_OK; }
|
||||
|
||||
// helpers
|
||||
virtual nsIFrame* GetBoundsFrame();
|
||||
|
||||
nsCOMPtr<nsIAccessible> mParent;
|
||||
nsCOMPtr<nsIAccessible> mPrev;
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
PRBool mRegistered;
|
||||
PRBool mOpen;
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(nsSelectWindowAccessible, nsAccessible, nsIDOMMenuListener)
|
||||
|
||||
class nsSelectListAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
|
||||
nsSelectListAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsSelectListAccessible() {}
|
||||
|
||||
NS_IMETHOD GetAccParent(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccNextSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccPreviousSibling(nsIAccessible **_retval);
|
||||
NS_IMETHOD AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height);
|
||||
|
||||
virtual void GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList);
|
||||
virtual nsIAccessible* CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
nsCOMPtr<nsIAccessible> mParent;
|
||||
};
|
||||
|
||||
class nsListChildAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
|
||||
nsListChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual ~nsListChildAccessible() {}
|
||||
|
||||
NS_IMETHOD GetAccParent(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
|
||||
virtual void GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList);
|
||||
virtual nsIAccessible* CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIAccessible> mParent;
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
nsCOMPtr<nsIContent> mSelectContent;
|
||||
};
|
||||
|
||||
//---------
|
||||
|
||||
nsSelectAccessible::nsSelectAccessible(nsIAtom* aPopupAtom,
|
||||
nsIAccessible* aAccessible,
|
||||
nsIContent* aContent,
|
||||
nsIWeakReference* aShell)
|
||||
:nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mPopupAtom = aPopupAtom;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccValue(PRUnichar **_retval)
|
||||
{
|
||||
// our value is our first child's value. Which is the combo boxes text.
|
||||
nsCOMPtr<nsIAccessible> text;
|
||||
nsresult rv = GetAccFirstChild(getter_AddRefs(text));
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = nsnull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (!text) {
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
// look at our role
|
||||
return text->GetAccValue(_retval);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("combo box"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
// get the last child. Wrap it with a connector that connects it to the window accessible
|
||||
nsCOMPtr<nsIAccessible> last;
|
||||
nsresult rv = nsAccessible::GetAccLastChild(getter_AddRefs(last));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (!last) {
|
||||
// we have a parent but not previous
|
||||
*_retval = new nsSelectWindowAccessible(mPopupAtom, this, nsnull, nsnull, mContent, mPresShell);
|
||||
} else {
|
||||
*_retval = last;
|
||||
}
|
||||
|
||||
NS_ADDREF(*_retval);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
// get the last child. Wrap it with a connector that connects it to the window accessible
|
||||
nsCOMPtr<nsIAccessible> first;
|
||||
nsresult rv = nsAccessible::GetAccFirstChild(getter_AddRefs(first));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (!first) {
|
||||
*_retval = new nsSelectWindowAccessible(mPopupAtom, this, nsnull, nsnull, mContent, mPresShell);
|
||||
} else {
|
||||
*_retval = first;
|
||||
}
|
||||
|
||||
NS_ADDREF(*_retval);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectAccessible::CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewLastAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectAccessible::CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsSelectChildAccessible(mPopupAtom, mContent, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
nsresult rv = nsAccessible::GetAccChildCount(_retval);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
// always have one more that is our window child
|
||||
(*_retval)++;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//--------------------
|
||||
|
||||
nsSelectChildAccessible::nsSelectChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell):
|
||||
nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mPopupAtom = aPopupAtom;
|
||||
mSelectContent = aSelectContent;
|
||||
mRegistered = PR_FALSE;
|
||||
mOpen = PR_FALSE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccValue(PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUnichar* string = nsnull;
|
||||
|
||||
// look at our role
|
||||
rv = nsAccessible::GetAccRole(&string);
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = nsnull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsAutoString role(string);
|
||||
|
||||
// if its the text in the combo box then
|
||||
// its value should be its name.
|
||||
if (role.EqualsIgnoreCase("text")) {
|
||||
rv = nsAccessible::GetAccName(_retval);
|
||||
} else {
|
||||
rv = nsAccessible::GetAccValue(_retval);
|
||||
}
|
||||
|
||||
delete string;
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUnichar* string = nsnull;
|
||||
|
||||
// look at our role
|
||||
rv = nsAccessible::GetAccRole(&string);
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = nsnull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsAutoString role(string);
|
||||
|
||||
// any text in the combo box is static
|
||||
if (role.EqualsIgnoreCase("text")) {
|
||||
// if it the comboboxes text. Make it static
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("static text"));
|
||||
} else {
|
||||
rv = nsAccessible::GetAccRole(_retval);
|
||||
}
|
||||
|
||||
delete string;
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUnichar* string = nsnull;
|
||||
|
||||
// look at our role
|
||||
nsAccessible::GetAccRole(&string);
|
||||
nsAutoString role(string);
|
||||
|
||||
// if button then we need to make the name be open or close
|
||||
if (role.EqualsIgnoreCase("push button"))
|
||||
{
|
||||
// if its a button and not already registered,
|
||||
// register ourselves as a popup listener
|
||||
if (!mRegistered) {
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mSelectContent);
|
||||
if (!eventReceiver) {
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
eventReceiver->AddEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
|
||||
mRegistered = PR_TRUE;
|
||||
}
|
||||
|
||||
// get the current state open or closed
|
||||
// set _retval to it.
|
||||
// notice its supposed to be reversed. Close if opened
|
||||
// and Open if closed.
|
||||
|
||||
if (mOpen)
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Close"));
|
||||
else
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("Open"));
|
||||
|
||||
} else {
|
||||
/*rv = nsAccessible::GetAccName(_retval);*/
|
||||
rv = NS_ERROR_NOT_IMPLEMENTED;
|
||||
*_retval = nsnull;
|
||||
}
|
||||
|
||||
delete string;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
nsSelectChildAccessible::~nsSelectChildAccessible()
|
||||
{
|
||||
if (mRegistered) {
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mSelectContent);
|
||||
if (eventReceiver)
|
||||
eventReceiver->RemoveEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::Create(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_TRUE;
|
||||
printf("Open\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::Destroy(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::Close(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectChildAccessible::CreateNewNextAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
return CreateNewPreviousAccessible(aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectChildAccessible::CreateNewPreviousAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsSelectChildAccessible(mPopupAtom, mSelectContent, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectChildAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
nsCOMPtr<nsIAccessible> next;
|
||||
nsresult rv = nsAccessible::GetAccNextSibling(getter_AddRefs(next));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (!next) {
|
||||
// ok no more siblings. Lets create our window
|
||||
nsCOMPtr<nsIAccessible> parent;
|
||||
GetAccParent(getter_AddRefs(parent));
|
||||
|
||||
*_retval = new nsSelectWindowAccessible(mPopupAtom, parent, nsnull, nsnull, mSelectContent, mPresShell);
|
||||
} else {
|
||||
*_retval = next;
|
||||
}
|
||||
|
||||
NS_ADDREF(*_retval);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//---------------------
|
||||
|
||||
|
||||
nsSelectWindowAccessible::nsSelectWindowAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aPrev, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
:nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mParent = aParent;
|
||||
mPrev = aPrev;
|
||||
mPopupAtom = aPopupAtom;
|
||||
mRegistered = PR_FALSE;
|
||||
mOpen = PR_FALSE;
|
||||
}
|
||||
|
||||
nsSelectWindowAccessible::~nsSelectWindowAccessible()
|
||||
{
|
||||
if (mRegistered) {
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mContent);
|
||||
if (eventReceiver)
|
||||
eventReceiver->RemoveEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::Create(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_TRUE;
|
||||
printf("Open\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::Destroy(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::Close(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mOpen = PR_FALSE;
|
||||
printf("Close\n");
|
||||
|
||||
/* TBD send state change event */
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccState(PRUint32 *_retval)
|
||||
{
|
||||
// not not already one register ourselves as a popup listener
|
||||
|
||||
if (!mRegistered) {
|
||||
|
||||
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(mContent);
|
||||
if (!eventReceiver) {
|
||||
*_retval = 0;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
nsresult rv = eventReceiver->AddEventListener(NS_LITERAL_STRING("create"), this, PR_TRUE);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
*_retval = 0;
|
||||
return rv;
|
||||
}
|
||||
|
||||
mRegistered = PR_TRUE;
|
||||
}
|
||||
|
||||
// if open we are visible if closed we are invisible
|
||||
// set _retval to it.
|
||||
if (mOpen)
|
||||
*_retval |= STATE_DEFAULT;
|
||||
else
|
||||
*_retval |= STATE_INVISIBLE;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccExtState(PRUint32 *_retval)
|
||||
{
|
||||
*_retval=0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("window"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mParent;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccPreviousSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mPrev;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccLastChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = new nsSelectListAccessible(mPopupAtom, this, nsnull, mContent, mPresShell);
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccFirstChild(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = new nsSelectListAccessible(mPopupAtom, this, nsnull, mContent, mPresShell);
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::GetAccChildCount(PRInt32 *_retval)
|
||||
{
|
||||
*_retval = 1;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
NS_IMETHODIMP nsSelectWindowAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
*x = *y = *width = *height = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
*/
|
||||
|
||||
nsIFrame* nsSelectWindowAccessible::GetBoundsFrame()
|
||||
{
|
||||
// get our frame
|
||||
nsIFrame* frame = GetFrame();
|
||||
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
GetPresContext(context);
|
||||
|
||||
// get its first popup child that should be the window
|
||||
frame->FirstChild(context, mPopupAtom, &frame);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
//----------
|
||||
|
||||
|
||||
nsSelectListAccessible::nsSelectListAccessible(nsIAtom* aPopupAtom, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
:nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mPopupAtom = aPopupAtom;
|
||||
mParent = aParent;
|
||||
}
|
||||
|
||||
void nsSelectListAccessible::GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(mContent, &frame);
|
||||
if (aFrame == frame)
|
||||
aList = mPopupAtom;
|
||||
else
|
||||
aList = nsnull;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::AccGetBounds(PRInt32 *x, PRInt32 *y, PRInt32 *width, PRInt32 *height)
|
||||
{
|
||||
return mParent->AccGetBounds(x,y,width,height);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mParent;
|
||||
NS_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccName(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("list"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccPreviousSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsSelectListAccessible::GetAccNextSibling(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectListAccessible::CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsListChildAccessible(mPopupAtom, mContent, this, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
nsIAccessible* nsSelectListAccessible::CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsListChildAccessible(mPopupAtom, mContent, this, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
//--------
|
||||
|
||||
nsListChildAccessible::nsListChildAccessible(nsIAtom* aPopupAtom, nsIContent* aSelectContent, nsIAccessible* aParent, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell):
|
||||
nsAccessible(aAccessible, aContent, aShell)
|
||||
{
|
||||
mParent = aParent;
|
||||
mPopupAtom = aPopupAtom;
|
||||
mSelectContent = aSelectContent;
|
||||
}
|
||||
|
||||
nsIAccessible* nsListChildAccessible::CreateNewAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell)
|
||||
{
|
||||
NS_ASSERTION(aAccessible && aContent,"Error not accessible or content");
|
||||
return new nsListChildAccessible(mPopupAtom, mSelectContent, mParent, aAccessible, aContent, aShell);
|
||||
}
|
||||
|
||||
void nsListChildAccessible::GetListAtomForFrame(nsIFrame* aFrame, nsIAtom*& aList)
|
||||
{
|
||||
nsCOMPtr<nsIPresShell> shell = do_QueryReferent(mPresShell);
|
||||
nsIFrame* frame = nsnull;
|
||||
shell->GetPrimaryFrameFor(mSelectContent, &frame);
|
||||
if (aFrame == frame)
|
||||
aList = mPopupAtom;
|
||||
else
|
||||
aList = nsnull;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsListChildAccessible::GetAccRole(PRUnichar **_retval)
|
||||
{
|
||||
*_retval = ToNewUnicode(NS_LITERAL_STRING("list item"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsListChildAccessible::GetAccParent(nsIAccessible **_retval)
|
||||
{
|
||||
*_retval = mParent;
|
||||
NS_IF_ADDREF(*_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; 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.
|
||||
*
|
||||
* Original Author: David W. Hyatt (hyatt@netscape.com)
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef __nsSelectAccessible_h__
|
||||
#define __nsSelectAccessible_h__
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIAtom.h"
|
||||
|
||||
class nsSelectAccessible : public nsAccessible
|
||||
{
|
||||
public:
|
||||
|
||||
nsSelectAccessible(nsIAtom* aPopupAtom, nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
NS_IMETHOD GetAccLastChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccFirstChild(nsIAccessible **_retval);
|
||||
NS_IMETHOD GetAccName(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccValue(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccRole(PRUnichar **_retval);
|
||||
NS_IMETHOD GetAccChildCount(PRInt32 *_retval);
|
||||
|
||||
virtual ~nsSelectAccessible() {}
|
||||
virtual nsIAccessible* CreateNewFirstAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
virtual nsIAccessible* CreateNewLastAccessible(nsIAccessible* aAccessible, nsIContent* aContent, nsIWeakReference* aShell);
|
||||
|
||||
nsCOMPtr<nsIAtom> mPopupAtom;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
3875
mozilla/cmd/winfe/fegui.cpp
Executable file
3875
mozilla/cmd/winfe/fegui.cpp
Executable file
File diff suppressed because it is too large
Load Diff
2031
mozilla/cmd/winfe/nsapp.cpp
Normal file
2031
mozilla/cmd/winfe/nsapp.cpp
Normal file
File diff suppressed because it is too large
Load Diff
123
mozilla/cmd/winfe/stdafx.h
Normal file
123
mozilla/cmd/winfe/stdafx.h
Normal file
@@ -0,0 +1,123 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef STDAFX_PCH
|
||||
#define STDAFX_PCH
|
||||
|
||||
#define OEMRESOURCE
|
||||
|
||||
#if defined(DEBUG_blythe)
|
||||
// Set up a flag specific to WFE developers in the client
|
||||
#define DEBUG_WFE
|
||||
#endif
|
||||
|
||||
/* Very windows specific includes.
|
||||
*/
|
||||
/* MFC, KFC, RUN DMC, whatever */
|
||||
#include <afxwin.h>
|
||||
#include <afxext.h>
|
||||
#include <afxpriv.h>
|
||||
#include <afxole.h>
|
||||
#include <afxdisp.h>
|
||||
#include <afxodlgs.h>
|
||||
#ifdef _WIN32
|
||||
#include <afxcmn.h>
|
||||
#endif
|
||||
|
||||
/* More XP than anything */
|
||||
#include "xp.h"
|
||||
#include "fe_proto.h"
|
||||
#include "fe_rgn.h"
|
||||
#include "libi18n.h"
|
||||
#include "xlate.h"
|
||||
#include "ntypes.h"
|
||||
#ifdef EDITOR
|
||||
#include "edttypes.h"
|
||||
#endif
|
||||
#include "xpassert.h"
|
||||
#include "lo_ele.h"
|
||||
#include "layers.h"
|
||||
|
||||
/* Standard C includes */
|
||||
#ifndef _WIN32
|
||||
#include <dos.h>
|
||||
#endif
|
||||
#include <malloc.h>
|
||||
#include <direct.h>
|
||||
#include <stdarg.h>
|
||||
#include <time.h>
|
||||
#include <io.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#ifdef DEBUG
|
||||
#include <assert.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
/* Very windows specific includes.
|
||||
*/
|
||||
/* WFE needs a layout file */
|
||||
extern "C" {
|
||||
#include "layout.h"
|
||||
}
|
||||
|
||||
/* Some common defines. */
|
||||
#ifndef _AFXDLL
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
/* All front end forward declarations needed to compile. */
|
||||
#include "forward.h"
|
||||
|
||||
/* Front end Casting macros. */
|
||||
#include "cast.h"
|
||||
|
||||
/* General purpose utilities. */
|
||||
#include "feutil.h"
|
||||
|
||||
/* afxData/sysInfo */
|
||||
#include "sysinfo.h"
|
||||
|
||||
/* Some defines we like everywhere. */
|
||||
#include "resource.h"
|
||||
#include "defaults.h"
|
||||
|
||||
/* The application include and
|
||||
* Commonly used, rarely changed headers */
|
||||
#include "ncapiurl.h"
|
||||
#include "genedit.h"
|
||||
#include "genframe.h"
|
||||
#include "genview.h"
|
||||
#include "gendoc.h"
|
||||
#include "intlwin.h"
|
||||
#include "mozilla.h"
|
||||
#include "cxwin.h"
|
||||
#include "winproto.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#ifdef assert
|
||||
#undef assert
|
||||
#endif
|
||||
#define assert(x) ASSERT(x)
|
||||
#endif
|
||||
|
||||
#endif /* STDAFX_PCH */
|
||||
@@ -1,33 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
class nsISelection;
|
||||
class nsIDocument;
|
||||
|
||||
class nsCopySupport
|
||||
{
|
||||
// class of static helper functions for copy support
|
||||
public:
|
||||
static nsresult HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 aClipboardID);
|
||||
};
|
||||
@@ -1,227 +0,0 @@
|
||||
/* -*- 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nsCopySupport.h"
|
||||
#include "nsIDocumentEncoder.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIClipboard.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIEventStateManager.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIDOMNSHTMLInputElement.h"
|
||||
#include "nsIDOMNSHTMLTextAreaElement.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#ifdef IBMBIDI
|
||||
#include "nsIUBidiUtils.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
static NS_DEFINE_CID(kUBidiUtilCID, NS_UNICHARBIDIUTIL_CID);
|
||||
#endif
|
||||
|
||||
static NS_DEFINE_CID(kCClipboardCID, NS_CLIPBOARD_CID);
|
||||
static NS_DEFINE_CID(kCTransferableCID, NS_TRANSFERABLE_CID);
|
||||
static NS_DEFINE_CID(kHTMLConverterCID, NS_HTMLFORMATCONVERTER_CID);
|
||||
static NS_DEFINE_CID(kTextEncoderCID, NS_TEXT_ENCODER_CID);
|
||||
|
||||
// private clipboard data flavors for html copy, used by editor when pasting
|
||||
#define kHTMLContext "text/_moz_htmlcontext"
|
||||
#define kHTMLInfo "text/_moz_htmlinfo"
|
||||
|
||||
|
||||
nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 aClipboardID)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsCOMPtr<nsIDocumentEncoder> docEncoder;
|
||||
|
||||
docEncoder = do_CreateInstance(NS_HTMLCOPY_ENCODER_CONTRACTID);
|
||||
NS_ENSURE_TRUE(docEncoder, NS_ERROR_FAILURE);
|
||||
|
||||
rv = docEncoder->Init(aDoc, NS_LITERAL_STRING("text/html"), 0);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = docEncoder->SetSelection(aSel);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsAutoString mimeType;
|
||||
rv = docEncoder->GetMimeType(mimeType);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsAutoString buffer, parents, info;
|
||||
PRBool bIsHTMLCopy = PR_FALSE;
|
||||
if (mimeType.EqualsWithConversion("text/html"))
|
||||
bIsHTMLCopy = PR_TRUE;
|
||||
|
||||
if (bIsHTMLCopy)
|
||||
{
|
||||
// encode the selection as html with contextual info
|
||||
rv = docEncoder->EncodeToStringWithContext(buffer, parents, info);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
}
|
||||
else
|
||||
{
|
||||
// encode the selection
|
||||
rv = docEncoder->EncodeToString(buffer);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
#ifdef IBMBIDI //ahmed
|
||||
rv = NS_OK;
|
||||
PRBool arabicCharset;
|
||||
|
||||
nsCOMPtr<nsIDocument> doc = do_QueryInterface(aDoc);
|
||||
if (doc) {
|
||||
nsIPresShell* shell = doc->GetShellAt(0);
|
||||
if (shell) {
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
shell->GetPresContext(getter_AddRefs(context) );
|
||||
if (context) {
|
||||
context->IsArabicEncoding(arabicCharset);
|
||||
if (arabicCharset) {
|
||||
nsCOMPtr<nsIUBidiUtils> bidiUtils = do_GetService("@mozilla.org/intl/unicharbidiutil;1");
|
||||
PRUint32 bidiOptions;
|
||||
PRBool isVisual;
|
||||
PRBool isBidiSystem;
|
||||
|
||||
context->GetBidi(&bidiOptions);
|
||||
context->IsVisualMode(isVisual);
|
||||
context->GetIsBidiSystem(isBidiSystem);
|
||||
if ( (GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions) == IBMBIDI_CLIPBOARDTEXTMODE_LOGICAL)&&(isVisual)//&&(isBidiSystem)
|
||||
) {
|
||||
nsAutoString newBuffer;
|
||||
if (isBidiSystem) {
|
||||
#if 0 // Until we finalize the conversion routine
|
||||
if (GET_BIDI_OPTION_DIRECTION(bidiOptions) == IBMBIDI_TEXTDIRECTION_LTR) {
|
||||
bidiUtils->Conv_FE_06_WithReverse(buffer, newBuffer);
|
||||
}
|
||||
if (GET_BIDI_OPTION_DIRECTION(bidiOptions) == IBMBIDI_TEXTDIRECTION_RTL) {
|
||||
bidiUtils->Conv_FE_06 (buffer, newBuffer);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else { //nonbidisystem
|
||||
bidiUtils->HandleNumbers(buffer, newBuffer);//ahmed
|
||||
}
|
||||
buffer = newBuffer;
|
||||
}
|
||||
//Mohamed
|
||||
else {
|
||||
#if 0 // Until we finalize the conversion routine
|
||||
nsAutoString bidiCharset;
|
||||
context->GetBidiCharset(bidiCharset);
|
||||
if (bidiCharset.EqualsIgnoreCase("UTF-8") || (!isVisual)) {
|
||||
if ( (GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions) == IBMBIDI_CLIPBOARDTEXTMODE_VISUAL) || (!isBidiSystem) ) {
|
||||
nsAutoString newBuffer;
|
||||
bidiUtils->Conv_06_FE_WithReverse(buffer, newBuffer, GET_BIDI_OPTION_DIRECTION(bidiOptions));
|
||||
bidiUtils->HandleNumbers(newBuffer, buffer);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // IBMBIDI
|
||||
|
||||
// Get the Clipboard
|
||||
NS_WITH_SERVICE(nsIClipboard, clipboard, kCClipboardCID, &rv);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if ( clipboard )
|
||||
{
|
||||
// Create a transferable for putting data on the Clipboard
|
||||
nsCOMPtr<nsITransferable> trans = do_CreateInstance(kCTransferableCID);
|
||||
if ( trans )
|
||||
{
|
||||
if (bIsHTMLCopy)
|
||||
{
|
||||
// set up the data converter
|
||||
nsCOMPtr<nsIFormatConverter> htmlConverter = do_CreateInstance(kHTMLConverterCID);
|
||||
NS_ENSURE_TRUE(htmlConverter, NS_ERROR_FAILURE);
|
||||
trans->SetConverter(htmlConverter);
|
||||
}
|
||||
|
||||
// get wStrings to hold clip data
|
||||
nsCOMPtr<nsISupportsWString> dataWrapper, contextWrapper, infoWrapper;
|
||||
dataWrapper = do_CreateInstance(NS_SUPPORTS_WSTRING_CONTRACTID);
|
||||
NS_ENSURE_TRUE(dataWrapper, NS_ERROR_FAILURE);
|
||||
if (bIsHTMLCopy)
|
||||
{
|
||||
contextWrapper = do_CreateInstance(NS_SUPPORTS_WSTRING_CONTRACTID);
|
||||
NS_ENSURE_TRUE(contextWrapper, NS_ERROR_FAILURE);
|
||||
infoWrapper = do_CreateInstance(NS_SUPPORTS_WSTRING_CONTRACTID);
|
||||
NS_ENSURE_TRUE(infoWrapper, NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
// populate the strings
|
||||
dataWrapper->SetData ( NS_CONST_CAST(PRUnichar*,buffer.GetUnicode()) );
|
||||
if (bIsHTMLCopy)
|
||||
{
|
||||
contextWrapper->SetData ( NS_CONST_CAST(PRUnichar*,parents.GetUnicode()) );
|
||||
infoWrapper->SetData ( NS_CONST_CAST(PRUnichar*,info.GetUnicode()) );
|
||||
}
|
||||
|
||||
// QI the data object an |nsISupports| so that when the transferable holds
|
||||
// onto it, it will addref the correct interface.
|
||||
nsCOMPtr<nsISupports> genericDataObj ( do_QueryInterface(dataWrapper) );
|
||||
if (bIsHTMLCopy)
|
||||
{
|
||||
if (buffer.Length())
|
||||
{
|
||||
// Add the html DataFlavor to the transferable
|
||||
trans->AddDataFlavor(kHTMLMime);
|
||||
trans->SetTransferData(kHTMLMime, genericDataObj, buffer.Length()*2);
|
||||
}
|
||||
if (parents.Length())
|
||||
{
|
||||
// Add the htmlcontext DataFlavor to the transferable
|
||||
trans->AddDataFlavor(kHTMLContext);
|
||||
genericDataObj = do_QueryInterface(contextWrapper);
|
||||
trans->SetTransferData(kHTMLContext, genericDataObj, parents.Length()*2);
|
||||
}
|
||||
if (info.Length())
|
||||
{
|
||||
// Add the htmlinfo DataFlavor to the transferable
|
||||
trans->AddDataFlavor(kHTMLInfo);
|
||||
genericDataObj = do_QueryInterface(infoWrapper);
|
||||
trans->SetTransferData(kHTMLInfo, genericDataObj, info.Length()*2);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (buffer.Length())
|
||||
{
|
||||
// Add the unicode DataFlavor to the transferable
|
||||
trans->AddDataFlavor(kUnicodeMime);
|
||||
trans->SetTransferData(kUnicodeMime, genericDataObj, buffer.Length()*2);
|
||||
}
|
||||
}
|
||||
// put the transferable on the clipboard
|
||||
clipboard->SetData(trans, nsnull, aClipboardID);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
/* -*- 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 nsIHTMLContent_h___
|
||||
#define nsIHTMLContent_h___
|
||||
|
||||
#include "nsIXMLContent.h"
|
||||
#include "nsHTMLValue.h"
|
||||
class nsString;
|
||||
class nsIFrame;
|
||||
class nsIStyleRule;
|
||||
class nsIMutableStyleContext;
|
||||
class nsIPresContext;
|
||||
class nsIHTMLMappedAttributes;
|
||||
class nsIURI;
|
||||
|
||||
// IID for the nsIHTMLContent class
|
||||
#define NS_IHTMLCONTENT_IID \
|
||||
{ 0xb9e110b0, 0x94d6, 0x11d1, \
|
||||
{0x89, 0x5c, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
|
||||
|
||||
typedef void (*nsMapAttributesFunc)(const nsIHTMLMappedAttributes* aAttributes,
|
||||
nsIMutableStyleContext* aContext,
|
||||
nsIPresContext* aPresContext);
|
||||
|
||||
// Abstract interface for all html content
|
||||
class nsIHTMLContent : public nsIXMLContent
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTMLCONTENT_IID)
|
||||
|
||||
/**
|
||||
* If this html content is a container, then compact asks it to minimize
|
||||
* it's storage usage.
|
||||
*/
|
||||
NS_IMETHOD Compact() = 0;
|
||||
|
||||
NS_IMETHOD SetHTMLAttribute(nsIAtom* aAttribute,
|
||||
const nsHTMLValue& aValue,
|
||||
PRBool aNotify) = 0;
|
||||
|
||||
NS_IMETHOD GetHTMLAttribute(nsIAtom* aAttribute,
|
||||
nsHTMLValue& aValue) const = 0;
|
||||
NS_IMETHOD GetAttributeMappingFunctions(nsMapAttributesFunc& aFontMapFunc,
|
||||
nsMapAttributesFunc& aMapFunc) const = 0;
|
||||
|
||||
NS_IMETHOD AttributeToString(nsIAtom* aAttribute,
|
||||
const nsHTMLValue& aValue,
|
||||
nsAWritableString& aResult) const = 0;
|
||||
|
||||
NS_IMETHOD StringToAttribute(nsIAtom* aAttribute,
|
||||
const nsAReadableString& aValue,
|
||||
nsHTMLValue& aResult) = 0;
|
||||
|
||||
/**
|
||||
* Get the base URL for any relative URLs within this piece
|
||||
* of content. Generally, this is the document's base URL,
|
||||
* but certain content carries a local base for backward
|
||||
* compatibility.
|
||||
*/
|
||||
NS_IMETHOD GetBaseURL(nsIURI*& aBaseURL) const = 0;
|
||||
|
||||
/**
|
||||
* Get the base target for any links within this piece
|
||||
* of content. Generally, this is the document's base target,
|
||||
* but certain content carries a local base for backward
|
||||
* compatibility.
|
||||
*/
|
||||
NS_IMETHOD GetBaseTarget(nsAWritableString& aBaseTarget) const = 0;
|
||||
};
|
||||
|
||||
#endif /* nsIHTMLContent_h___ */
|
||||
22
mozilla/include/Makefile
Normal file
22
mozilla/include/Makefile
Normal file
@@ -0,0 +1,22 @@
|
||||
#! gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
#
|
||||
|
||||
DEPTH = ..
|
||||
|
||||
include $(DEPTH)/config/rules.mk
|
||||
664
mozilla/include/abcom.h
Normal file
664
mozilla/include/abcom.h
Normal file
@@ -0,0 +1,664 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AB_COM_H_
|
||||
#define _AB_COM_H_
|
||||
|
||||
#include "xp_core.h"
|
||||
#include "msgcom.h"
|
||||
#include "abdefn.h"
|
||||
#include "dirprefs.h"
|
||||
|
||||
#ifdef XP_CPLUSPLUS
|
||||
class AB_Pane;
|
||||
class AB_ContainerPane;
|
||||
class AB_ContainerInfo;
|
||||
class AB_MailingListPane;
|
||||
class AB_PersonPane;
|
||||
#else
|
||||
typedef struct AB_Pane AB_Pane;
|
||||
typedef struct AB_ContainerPane AB_ContainerPane;
|
||||
typedef struct AB_ContainerInfo AB_ContainerInfo;
|
||||
typedef struct AB_MailingListPane AB_MailingListPane;
|
||||
typedef struct AB_PersonPane AB_PersonPane;
|
||||
#endif
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
#define AB_API extern "C"
|
||||
|
||||
#if defined(XP_MAC)
|
||||
#define FE_IMPLEMENTS_SHOW_PROPERTY_SHEET
|
||||
#endif
|
||||
|
||||
const ABID AB_ABIDUNKNOWN = 0; /* Find a better home for this somewhere! */
|
||||
|
||||
/* new errors added by mscott for the 2 pane AB UI. I will eventually name this enumerated type AB_Error */
|
||||
enum
|
||||
{
|
||||
AB_SUCCESS = 0,
|
||||
AB_FAILURE,
|
||||
AB_INVALID_PANE,
|
||||
AB_INVALID_CONTAINER,
|
||||
AB_INVALID_ATTRIBUTE,
|
||||
AB_OUT_OF_MEMORY
|
||||
};
|
||||
|
||||
/* these are the types of possible containers */
|
||||
typedef enum
|
||||
{
|
||||
AB_LDAPContainer,
|
||||
AB_MListContainer, /* a mailing list */
|
||||
AB_PABContainer /* a personal AB */
|
||||
} AB_ContainerType;
|
||||
|
||||
/* AB_ContainerAttributes define the types of information FEs can ask the BE about
|
||||
a AB_ContainerInfo in the ABContainerPane. */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
attribContainerType, /* mailing list? LDAP directory? PAB? */
|
||||
attribName, /* the name for the container */
|
||||
attribNumChildren, /* how many child containers does this container have? */
|
||||
attribDepth, /* container depth in the overall hierarchy. 0 == root ctr, 1 == one level below a root container, etc. */
|
||||
attribContainerInfo /* FEs might want to get the container Info * for a line in the container pane */
|
||||
} AB_ContainerAttribute;
|
||||
|
||||
typedef struct AB_ContainerAttribValue
|
||||
{
|
||||
AB_ContainerAttribute attrib; /* used to determine value of the union */
|
||||
union{
|
||||
char * string;
|
||||
int32 number; /* used by numchildren & depth */
|
||||
AB_ContainerType containerType;
|
||||
AB_ContainerInfo * container;
|
||||
} u;
|
||||
} AB_ContainerAttribValue;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
AB_Drag_Not_Allowed = 0x00000000,
|
||||
AB_Require_Copy = 0x00000001,
|
||||
AB_Require_Move = 0x00000002,
|
||||
AB_Default_Drag = 0xFFFFFFFF
|
||||
} AB_DragEffect;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
AB_attribUnknown = 0, /* unrecognized attribute */
|
||||
AB_attribEntryType, /* mailing list or person entry */
|
||||
AB_attribEntryID,
|
||||
AB_attribFullName,
|
||||
AB_attribNickName,
|
||||
AB_attribGivenName, /* all of the following are person entry specific */
|
||||
AB_attribMiddleName,
|
||||
AB_attribFamilyName,
|
||||
AB_attribCompanyName,
|
||||
AB_attribLocality,
|
||||
AB_attribRegion,
|
||||
AB_attribEmailAddress,
|
||||
AB_attribInfo,
|
||||
AB_attribHTMLMail,
|
||||
AB_attribExpandedName,
|
||||
AB_attribTitle,
|
||||
AB_attribPOAddress,
|
||||
AB_attribStreetAddress,
|
||||
AB_attribZipCode,
|
||||
AB_attribCountry,
|
||||
AB_attribWorkPhone,
|
||||
AB_attribFaxPhone,
|
||||
AB_attribHomePhone,
|
||||
AB_attribDistName,
|
||||
AB_attribSecurity,
|
||||
AB_attribCoolAddress,
|
||||
AB_attribUseServer,
|
||||
AB_attribPager,
|
||||
AB_attribCellularPhone,
|
||||
AB_attribDisplayName,
|
||||
AB_attribWinCSID, /* character set id */
|
||||
AB_attribOther /* any attrib with this value or higher is always a string type (our dyanmic attributes) */
|
||||
} AB_AttribID;
|
||||
|
||||
/* WARNING!!! WILL BE PHASING THIS STRUCTURE OUT!!!! */
|
||||
typedef struct AB_EntryAttributeItem{
|
||||
AB_AttribID id;
|
||||
char * description; /* resource string specifying a user-readable descript for the attrib i.e. "First Name" */
|
||||
XP_Bool sortable; /* is this attribute sortable? (may help FEs display the column if they know if it can be sorted or not */
|
||||
}AB_EntryAttributeItem;
|
||||
|
||||
typedef enum{
|
||||
AB_MailingList = 0,
|
||||
AB_Person
|
||||
} AB_EntryType;
|
||||
|
||||
typedef struct AB_AttributeValue
|
||||
{
|
||||
AB_AttribID attrib; /* we need this to know how to read the union */
|
||||
union{
|
||||
char * string;
|
||||
XP_Bool boolValue;
|
||||
AB_EntryType entryType; /* mailing list or person entry */
|
||||
int16 shortValue; /* use for server type or WinCSID field */
|
||||
} u;
|
||||
} AB_AttributeValue;
|
||||
|
||||
|
||||
/* New Column ID structure used to abstract the columns in the AB_Pane used by the FEs from the attributes thos columns actually
|
||||
represent. */
|
||||
typedef enum{
|
||||
AB_ColumnID0 = 0,
|
||||
AB_ColumnID1,
|
||||
AB_ColumnID2,
|
||||
AB_ColumnID3,
|
||||
AB_ColumnID4,
|
||||
AB_ColumnID5,
|
||||
AB_ColumnID6,
|
||||
AB_NumberOfColumns /* make sure this is always the last one!! */
|
||||
} AB_ColumnID;
|
||||
|
||||
typedef struct AB_ColumnInfo{
|
||||
AB_AttribID attribID; /* the attrib ID this column is displaying */
|
||||
char * displayString; /* column display string */
|
||||
XP_Bool sortable; /* is this column attribute sortable? i.e. phone number is not! */
|
||||
} AB_ColumnInfo;
|
||||
|
||||
|
||||
/**********************************************************************************************
|
||||
FE Call back functions. We'll show the types here...NOTE: FEs must now register their call back
|
||||
functions through these APIs so the back end knows which return to use.
|
||||
*********************************************************************************************/
|
||||
|
||||
/* FEs must register this function with the appropriate pane, it is called by the back end in
|
||||
response to the following commands: AB_PropertiesCmd, AB_AddUserCmd, AB_AddMailingListCmd */
|
||||
|
||||
/* typedef int AB_ShowPropertySheetForEntryFunc (MSG_Pane * pane, AB_EntryType entryType); */
|
||||
typedef int AB_ShowPropertySheetForEntryFunc (MSG_Pane * pane, MWContext * context);
|
||||
|
||||
int AB_SetShowPropertySheetForEntryFunc(
|
||||
MSG_Pane * abPane,
|
||||
AB_ShowPropertySheetForEntryFunc * func);
|
||||
|
||||
|
||||
/* BE sets the type for the DIR_Server and hands it to the FEs to be displayed & filled out in a
|
||||
pane. It is called by the back end in response to the following commands: AB_PropertiesCmd,
|
||||
AB_NewLDAPDirectory, AB_NewAddressBook. */
|
||||
|
||||
typedef int AB_ShowPropertySheetForDirFunc(DIR_Server * server, MWContext * context, XP_Bool newDirectory /* is it a new directory? */);
|
||||
|
||||
int AB_SetShowPropertySheetForDirFunc(
|
||||
MSG_Pane * abcPane, /* container pane */
|
||||
AB_ShowPropertySheetForDirFunc * func);
|
||||
|
||||
|
||||
/***************************************************************************************
|
||||
DON'T USE THIS FUNCTION!!!! THIS WILL BE PHASING OUT!!!!!! #mscott 01/21/98
|
||||
This is a callback into the FE instructing them to bring up a person entry pane or a
|
||||
mailing list pane. The back end has already created the pane. A type is included to let the FE
|
||||
determine if the pane is a mailing list or person entry pane. In addition, in the case of a mailing list
|
||||
pane, the FE must still initialize the mailing list pane before it can be used
|
||||
***************************************************************************************/
|
||||
#ifdef FE_IMPLEMENTS_SHOW_PROPERTY_SHEET
|
||||
extern int FE_ShowPropertySheetForAB2(
|
||||
MSG_Pane * pane, /* BE created mailing list or person entry pane */
|
||||
AB_EntryType entryType); /* mailing list or person entry */
|
||||
#endif
|
||||
|
||||
/***************************************************************************************
|
||||
None pane-specific APIs. These function work on many panes
|
||||
***************************************************************************************/
|
||||
|
||||
int AB_ClosePane(MSG_Pane * pane);
|
||||
|
||||
/****************************************************************************************
|
||||
Address Book Pane General APIs - creating, initializing, closing, changing containers,
|
||||
searching, etc.
|
||||
*****************************************************************************************/
|
||||
|
||||
int AB_CreateABPane(
|
||||
MSG_Pane ** abPane,
|
||||
MWContext * context,
|
||||
MSG_Master * master);
|
||||
|
||||
int AB_InitializeABPane(
|
||||
MSG_Pane * abPane,
|
||||
AB_ContainerInfo * abContainer);
|
||||
|
||||
|
||||
/* to change the container the abPane is currently displaying */
|
||||
int AB_ChangeABContainer(
|
||||
MSG_Pane * abPane,
|
||||
AB_ContainerInfo * container); /* the new containerInfo to display */
|
||||
|
||||
int AB_GetEntryIndex(
|
||||
MSG_Pane * abPane,
|
||||
ABID id, /* entry id in the database */
|
||||
MSG_ViewIndex * index); /* FE allocated, BE fills with index */
|
||||
|
||||
int AB_GetABIDForIndex(
|
||||
MSG_Pane * abPane,
|
||||
MSG_ViewIndex index,
|
||||
ABID * id); /* FE allocated. BE fills with the id you want */
|
||||
|
||||
int AB_SearchDirectoryAB2(
|
||||
MSG_Pane * abPane,
|
||||
char * searchString);
|
||||
|
||||
int AB_LDAPSearchResultsAB2(
|
||||
MSG_Pane * abPane,
|
||||
MSG_ViewIndex index,
|
||||
int32 num);
|
||||
|
||||
int AB_FinishSearchAB2(MSG_Pane * abPane);
|
||||
|
||||
int AB_CommandAB2(
|
||||
MSG_Pane * srcPane, /* NOTE: this can be a ABpane or an ABContainerPane!!! you can delete containers & entries */
|
||||
AB_CommandType command, /* delete or mailto are the only currently supported commands */
|
||||
MSG_ViewIndex * indices,
|
||||
int32 numIndices);
|
||||
|
||||
int AB_CommandStatusAB2(
|
||||
MSG_Pane * srcPane, /* NOTE: Can be an ABPane or an ABContainerPane!! */
|
||||
AB_CommandType command,
|
||||
MSG_ViewIndex * indices,
|
||||
int32 numIndices,
|
||||
XP_Bool * selectable_p,
|
||||
MSG_COMMAND_CHECK_STATE * selected_p,
|
||||
const char ** displayString,
|
||||
XP_Bool * plural_p);
|
||||
|
||||
/* still need to add registering and unregistering compose windows */
|
||||
|
||||
/****************************************************************************************
|
||||
AB_ContainerInfo General APIs - adding users and a sender. Doesn't require a pane.
|
||||
*****************************************************************************************/
|
||||
int AB_AddUserAB2(
|
||||
AB_ContainerInfo * abContainer, /* the container to add the person to */
|
||||
AB_AttributeValue * values, /* FE defined array of attribute values for the new user. FE must free this array */
|
||||
uint16 numItems,
|
||||
ABID * entryID); /* BE returns the ABID for this new user */
|
||||
|
||||
int AB_AddUserWithUIAB2(
|
||||
AB_ContainerInfo * abContainer,
|
||||
AB_AttributeValue * values,
|
||||
uint16 numItems,
|
||||
XP_Bool lastOneToAdd);
|
||||
|
||||
int AB_AddSenderAB2(
|
||||
AB_ContainerInfo * abContainer,
|
||||
char * author,
|
||||
char * url);
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
Drag and Drop Related APIs - vcards, ab lines, containers, etc.
|
||||
*****************************************************************************************/
|
||||
|
||||
int AB_DragEntriesIntoContainer(
|
||||
MSG_Pane * srcPane, /* could be an ABPane or ABCPane */
|
||||
const MSG_ViewIndex * srcIndices, /* indices of items to be dragged */
|
||||
int32 numIndices,
|
||||
AB_ContainerInfo * destContainer,
|
||||
AB_DragEffect request); /* copy or move? */
|
||||
|
||||
/* FE's should call this function to determine if the drag & drop they want to perform is
|
||||
valid or not. I would recommend calling it before the FE actually performs the drag & drop call */
|
||||
AB_DragEffect AB_DragEntriesIntoContainerStatus(
|
||||
MSG_Pane * abPane,
|
||||
const MSG_ViewIndex * indices,
|
||||
int32 numIndices,
|
||||
AB_ContainerInfo * destContainer,
|
||||
AB_DragEffect request); /* do you want to do a move? a copy? default drag? */
|
||||
|
||||
/****************************************************************************************
|
||||
Importing and Exporting - ABs from files, vcards...
|
||||
*****************************************************************************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
AB_Filename, /* char * in import and export APIs contain an FE allocated/freed filename */
|
||||
AB_PromptForFileName, /* prompt for file name on import or export */
|
||||
AB_Vcard,
|
||||
AB_CommaList, /* comma separated list of email addresses */
|
||||
AB_RawData /* we don't know what it is, will try to extract email addresses */
|
||||
} AB_ImportExportType;
|
||||
|
||||
int AB_ImportData(
|
||||
AB_ContainerInfo * destContainer,
|
||||
const char * buffer, /* could be a filename or NULL (if type = prompt for filename) or a block of data to be imported */
|
||||
int32 bufSize, /* how big is the buffer? */
|
||||
AB_ImportExportType dataType); /* valid types: All */
|
||||
|
||||
/* returns TRUE if the container accepts imports of the data type and FALSE otherwise */
|
||||
XP_Bool AB_ImportDataStatus(
|
||||
AB_ContainerInfo * destContainer,
|
||||
AB_ImportExportType dataType);
|
||||
|
||||
/* exporting always occurs to a file unless the data type is vcard. Only valid export data types are: vcard,
|
||||
filename, prompt for filename */
|
||||
|
||||
int AB_ExportData(
|
||||
AB_ContainerInfo * srcContainer,
|
||||
char ** buffer, /* filename or NULL. Or if type = Vcard, the BE allocated vcard. FE responosible for freeing it?? */
|
||||
int32 * bufSize, /* ignored unless VCard is data type in which case FE allocates, BE fills */
|
||||
AB_ImportExportType dataType); /* valid types: filename, prompt for filename, vcard */
|
||||
|
||||
/****************************************************************************************
|
||||
ABContainer Pane --> Creation, Loading, getting line data for each container.
|
||||
*****************************************************************************************/
|
||||
int AB_CreateContainerPane(
|
||||
MSG_Pane ** abContainerPane, /* BE will pass back ptr to pane through this */
|
||||
MWContext * context,
|
||||
MSG_Master * master);
|
||||
|
||||
int AB_InitializeContainerPane(MSG_Pane * abContainerPane);
|
||||
|
||||
/* this will return MSG_VIEWINDEXNONE if the container info is not in the pane */
|
||||
MSG_ViewIndex AB_GetIndexForContainer(
|
||||
MSG_Pane * abContainerPane,
|
||||
AB_ContainerInfo * container); /* container you want the index for */
|
||||
|
||||
/* this will return NULL if the index is invalid */
|
||||
AB_ContainerInfo * AB_GetContainerForIndex(
|
||||
MSG_Pane * abContainerPane,
|
||||
const MSG_ViewIndex index);
|
||||
|
||||
/* the following set of APIs support getting/setting container pane line data out such as the container's
|
||||
name, type, etc. We are going to try a particular discipline for memory management of AB_ContainerAttribValues.
|
||||
For APIs which get an attribute value, the BE will actually allocate the struct. To free the space, the FE should
|
||||
call AB_FreeContainerAttribValue. For any API which sets an attribute value, the FE is responsible for allocating and
|
||||
de-allocating the data. */
|
||||
|
||||
int AB_GetContainerAttributeForPane(
|
||||
MSG_Pane * abContainerPane,
|
||||
MSG_ViewIndex index, /* index of container you want information for */
|
||||
AB_ContainerAttribute attrib, /* attribute FE wants to know */
|
||||
AB_ContainerAttribValue ** value); /* BE allocates struct. FE should call AB_FreeContainerAttribValue to free space when done */
|
||||
|
||||
int AB_SetContainerAttributeForPane(
|
||||
MSG_Pane * abContainerPane,
|
||||
MSG_ViewIndex index,
|
||||
AB_ContainerAttribValue * value); /* FE handles all memory allocation! */
|
||||
|
||||
int AB_GetContainerAttribute(
|
||||
AB_ContainerInfo * ctr,
|
||||
AB_ContainerAttribute attrib,
|
||||
AB_ContainerAttribValue ** value); /* BE allocates struct. FE should call AB_FreeContainerAttribValue to free space when donee */
|
||||
|
||||
int AB_SetContainerAttribute(
|
||||
AB_ContainerInfo * ctr,
|
||||
AB_ContainerAttribValue * value); /* FE handles all memory allocateion / deallocation! */
|
||||
|
||||
int AB_GetContainerAttributes(
|
||||
AB_ContainerInfo * ctr,
|
||||
AB_ContainerAttribute * attribsArray,
|
||||
AB_ContainerAttribValue ** valuesArray,
|
||||
uint16 * numItems);
|
||||
|
||||
int AB_SetContainerAttributes(
|
||||
AB_ContainerInfo * ctr,
|
||||
AB_ContainerAttribValue * valuesArray,
|
||||
uint16 numItems);
|
||||
|
||||
/* getting and setting multiple container attributes on a per container pane basis */
|
||||
int AB_GetContainerAttributesForPane(
|
||||
MSG_Pane * abContainerPane,
|
||||
MSG_ViewIndex index,
|
||||
AB_ContainerAttribute * attribsArray,
|
||||
AB_ContainerAttribValue ** valuesArray,
|
||||
uint16 * numItems);
|
||||
|
||||
int AB_SetContainerAttributesForPane(
|
||||
MSG_Pane * abContainerPane,
|
||||
MSG_ViewIndex index,
|
||||
AB_ContainerAttribValue * valuesArray,
|
||||
uint16 numItems);
|
||||
|
||||
int AB_FreeContainerAttribValue(AB_ContainerAttribValue * value); /* BE will free the attribute value */
|
||||
|
||||
int AB_FreeContainerAttribValues(AB_ContainerAttribValue * valuesArray, uint16 numItems);
|
||||
|
||||
XP_Bool AB_IsStringContainerAttribValue(AB_ContainerAttribValue * value); /* use this to determine if your attrib is a string attrib */
|
||||
|
||||
|
||||
/* Use the following two functions to build the combo box in the Address Window of all the root level containers.
|
||||
You first ask for the number of root level (PABs and LDAP directories). Use this number to allocate an array of
|
||||
AB_ContainerInfo ptrs. Give this array to the back end and we will fill it. FE can destroy array when done with it.
|
||||
FE shoud NOT be deleting the individual AB_ContainerInfo ptrs. */
|
||||
|
||||
int AB_GetNumRootContainers(
|
||||
MSG_Pane * abContainerPane,
|
||||
int32 * numRootContainers);
|
||||
|
||||
int AB_GetOrderedRootContainers(
|
||||
MSG_Pane * abContainerPane,
|
||||
AB_ContainerInfo ** ctrArray, /* FE Allocated & Freed */
|
||||
int32 * numCtrs); /* in - # of elements in ctrArray. out - BE fills with # root containers stored in ctrArray */
|
||||
|
||||
/* sometimes you want to get a handle on the DIR_Sever for a particular container. Both return NULL if for some
|
||||
reason there wasn't a DIR_Server. If the container is a mailing list, returns DIR_Server of the PAB the list is in.
|
||||
NOTE: If you modify any of the DIR_Server properties, you should call AB_UpdateDIRServerForContainer to make sure that the container
|
||||
(and hence any pane views on the container) are updated */
|
||||
|
||||
DIR_Server * AB_GetDirServerForContainer(AB_ContainerInfo * container);
|
||||
|
||||
/* Please don't call this function. It is going away!!! Use AB_UpdateDirServerForContainerPane instead!! */
|
||||
int AB_UpdateDIRServerForContainer(AB_ContainerInfo * container);
|
||||
|
||||
/* will create a new container in the container pane if the directory does not already exist. Otherwise updates the
|
||||
directory's container in the pane */
|
||||
int AB_UpdateDIRServerForContainerPane(
|
||||
MSG_Pane * abContainerPane,
|
||||
DIR_Server * directory);
|
||||
|
||||
|
||||
/*******************************************************************************************************************
|
||||
Old Column Header APIs. These will be phased out!!! Please don't use them
|
||||
******************************************************************************************************************/
|
||||
|
||||
int AB_GetNumEntryAttributesForContainer(
|
||||
AB_ContainerInfo * container,
|
||||
uint16 * numItems); /* BE will fill this integer with the number of available attributes for the container */
|
||||
|
||||
int AB_GetEntryAttributesForContainer(
|
||||
AB_ContainerInfo * container,
|
||||
AB_EntryAttributeItem * items, /* FE allocated array which BE fills with values */
|
||||
uint16 * maxItems); /* FE passes in # elements allocated in array. BE returns # elements filled in array */
|
||||
|
||||
/********************************************************************************************************************
|
||||
Our New Column Header APIs. We'll be phasing out AB_GetNumEntryAttributesForContainer and AB_GetEntryAttributesForContainer
|
||||
********************************************************************************************************************/
|
||||
|
||||
AB_ColumnInfo * AB_GetColumnInfo(
|
||||
AB_ContainerInfo * container,
|
||||
AB_ColumnID columnID);
|
||||
|
||||
int AB_GetNumColumnsForContainer(AB_ContainerInfo * container);
|
||||
|
||||
int AB_GetColumnAttribIDs(
|
||||
AB_ContainerInfo * container,
|
||||
AB_AttribID * attribIDs, /* FE allocated array of attribs. BE fills with values */
|
||||
int * numAttribs); /* FE passes in # elements allocated in array. BE returns # elements filled */
|
||||
|
||||
int AB_FreeColumnInfo(AB_ColumnInfo * columnInfo);
|
||||
|
||||
/****************************************************************************************
|
||||
AB Pane List Data -> how to get ab pane line attributes such as name, address, phone, etc.
|
||||
*****************************************************************************************/
|
||||
|
||||
/* to actually get an entry attribute */
|
||||
|
||||
int AB_GetEntryAttributeForPane(
|
||||
MSG_Pane * abPane,
|
||||
MSG_ViewIndex index,
|
||||
AB_AttribID attrib, /* what attribute do you want? */
|
||||
AB_AttributeValue ** valueArray); /* BE handles memory allocation. FE must call AB_FreeEntryAttributeValue when done */
|
||||
|
||||
int AB_GetEntryAttribute(
|
||||
AB_ContainerInfo * container,
|
||||
ABID entryid, /* an identifier or key used to name the object in the container */
|
||||
AB_AttribID attrib, /* attribute type the FE wants to know */
|
||||
AB_AttributeValue ** valueArray); /* BE handles memory allocation. FE must call AB_FreeEntryAttributeValue when done */
|
||||
|
||||
int AB_SetEntryAttribute(
|
||||
AB_ContainerInfo * container,
|
||||
ABID entryid, /* an identifier or key used to name the object in the container */
|
||||
AB_AttributeValue * value); /* FE handles all memory allocation */
|
||||
|
||||
int AB_SetEntryAttributeForPane(
|
||||
MSG_Pane * abPane,
|
||||
MSG_ViewIndex index,
|
||||
AB_AttributeValue * value); /* FE handles all memory allocation */
|
||||
|
||||
/* we also allow you to set entry attributes in batch by passing in an array of attribute values */
|
||||
int AB_SetEntryAttributes(
|
||||
AB_ContainerInfo * container,
|
||||
ABID entryID,
|
||||
AB_AttributeValue * valuesArray, /* FE allocated array of attribute values to set */
|
||||
uint16 numItems); /* FE passes in # items in array */
|
||||
|
||||
int AB_SetEntryAttributesForPane(
|
||||
MSG_Pane * abPane,
|
||||
MSG_ViewIndex index,
|
||||
AB_AttributeValue * valuesArray,
|
||||
uint16 numItems);
|
||||
|
||||
int AB_GetEntryAttributes(
|
||||
AB_ContainerInfo * container,
|
||||
ABID entryID,
|
||||
AB_AttribID * attribs, /* FE allocated array of attribs that you want */
|
||||
AB_AttributeValue ** values, /* BE allocates & fills an array of values for the input array of attribs */
|
||||
uint16 * numItems); /* IN: size of attribs array. OUT: # of values in value array */
|
||||
|
||||
int AB_GetEntryAttributesForPane(
|
||||
MSG_Pane * abPane,
|
||||
MSG_ViewIndex index,
|
||||
AB_AttribID * attribs, /* FE allocated array of attribs that you want */
|
||||
AB_AttributeValue ** values,
|
||||
uint16 * numItems);
|
||||
|
||||
/* Memory allocation APIs for setting/getting entry attribute values */
|
||||
int AB_FreeEntryAttributeValue(AB_AttributeValue * value /* pointer to a value */);
|
||||
int AB_FreeEntryAttributeValues(AB_AttributeValue * values /* array of values */, uint16 numItems);
|
||||
|
||||
int AB_CopyEntryAttributeValue(
|
||||
AB_AttributeValue * srcValue, /* already allocated attribute value you want to copy from */
|
||||
AB_AttributeValue * destValue); /* already allocated attribute value you want to copy into */
|
||||
|
||||
XP_Bool AB_IsStringEntryAttributeValue(AB_AttributeValue * value);
|
||||
|
||||
/****************************************************************************************
|
||||
Sorting
|
||||
*****************************************************************************************/
|
||||
|
||||
/* sorting by first name is a global setting. It is set per abPane and does not change
|
||||
when you load a new container into the abPane */
|
||||
|
||||
XP_Bool AB_GetSortByFirstNameAB2(MSG_Pane * abPane); /* is the pane sorting by first name? */
|
||||
|
||||
void AB_SortByFirstNameAB2(
|
||||
MSG_Pane * abPane,
|
||||
XP_Bool sortByFirstName); /* true for sort by first, false for last first */
|
||||
|
||||
/* Insert our sort by column stuff here */
|
||||
int AB_SortByAttribute(
|
||||
MSG_Pane * abPane,
|
||||
AB_AttribID id, /* attribute we want to sort by */
|
||||
XP_Bool sortAscending);
|
||||
|
||||
int AB_GetPaneSortedByAB2(
|
||||
MSG_Pane * abPane,
|
||||
AB_AttribID * attribID); /* BE fills with the attribute we are sorting by */
|
||||
|
||||
|
||||
XP_Bool AB_GetPaneSortedAscendingAB2(MSG_Pane * abPane);
|
||||
|
||||
/*****************************************************************************************
|
||||
APIs for the Mailing List Pane. In addition to these, the mailing list pane responds to
|
||||
previous AB APIs such as AB_Close, MSG_GetNumLines().
|
||||
****************************************************************************************/
|
||||
int AB_InitializeMailingListPaneAB2(MSG_Pane * mailingListPane);
|
||||
|
||||
AB_ContainerInfo * AB_GetContainerForMailingList(MSG_Pane * mailingListPane);
|
||||
|
||||
/* this could return ABID = 0 for a new entry that is not in the database */
|
||||
ABID AB_GetABIDForMailingListIndex(
|
||||
MSG_Pane * mailingListPane,
|
||||
const MSG_ViewIndex index);
|
||||
|
||||
MSG_ViewIndex AB_GetMailingListIndexForABID(
|
||||
MSG_Pane * mailingListPane,
|
||||
ABID entryID); /* this function could return MSG_VIEWINDEXNONE if entryID = 0 or not in list */
|
||||
|
||||
/* Use these two APIs to get Mailing List ENTRY attributes (i.e. people or other mailing list attributes in this mailing list) */
|
||||
int AB_SetMailingListEntryAttributes(
|
||||
MSG_Pane * pane,
|
||||
const MSG_ViewIndex index,
|
||||
AB_AttributeValue * valuesArray, /* FE allocated array of attribute values you want to set */
|
||||
uint16 numItems);
|
||||
|
||||
int AB_GetMailingListEntryAttributes(
|
||||
MSG_Pane * mailingListPane,
|
||||
const MSG_ViewIndex index,
|
||||
AB_AttribID * attribs, /* FE allocated & freed array of attribs you want */
|
||||
AB_AttributeValue ** values, /* BE allocates & fills values for the input array of attribs */
|
||||
uint16 * numItems); /* FE provides # attribs in array. BE fills with # values returned in values */
|
||||
|
||||
/* Use these two APIs to Set and Get the Mailing List properties. */
|
||||
int AB_GetMailingListAttributes(
|
||||
MSG_Pane * mailingListPane,
|
||||
AB_AttribID * attribs, /* FE allocated array of attribs */
|
||||
AB_AttributeValue ** values, /* BE allocates & fills values. FE must call a free to the back end */
|
||||
uint16 * numItems);
|
||||
|
||||
int AB_SetMailingListAttributes(
|
||||
MSG_Pane * mailingListPane,
|
||||
AB_AttributeValue * valuesArray, /* FE allocated array of attribute values you want to set */
|
||||
uint16 numItems);
|
||||
|
||||
|
||||
/*******************************************************************************************
|
||||
APIs for the person entry pane aka the person property sheets. The person entry pane is created
|
||||
by the back end and given to the front end in the call FE_ShowPropertySheetFor. In the current
|
||||
incarnation, person atributes are set and retrieved through the person entry pane and NOT through
|
||||
the AB_ContainerInfo the person is in. If you "cheat" and go through the container directly, you may
|
||||
not be getting the correct information. When the person entry pane is committed, the changes are pushed
|
||||
back into the container. During the commit process, if it is a new person then a new entry is made in the
|
||||
database.
|
||||
********************************************************************************************/
|
||||
AB_ContainerInfo * AB_GetContainerForPerson(MSG_Pane * personPane);
|
||||
|
||||
ABID AB_GetABIDForPerson(MSG_Pane * personPane); /* could return 0 if new user */
|
||||
|
||||
/* get and set the person attributes here */
|
||||
int AB_SetPersonEntryAttributes(
|
||||
MSG_Pane * personPane,
|
||||
AB_AttributeValue * valuesArray,
|
||||
uint16 numItems);
|
||||
|
||||
int AB_GetPersonEntryAttributes(
|
||||
MSG_Pane * personPane,
|
||||
AB_AttribID * attribs, /* FE allocted & freed array of attribs they want */
|
||||
AB_AttributeValue ** values, /* BE allocates & fills values */
|
||||
uint16 * numItems); /* in - FE provides # of attribs. out - BE fills with # values */
|
||||
|
||||
int AB_CommitChanges(MSG_Pane * pane); /* commits changes to a mailing list pane or a person entry pane! */
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* _AB_COM_H */
|
||||
200
mozilla/include/abdefn.h
Normal file
200
mozilla/include/abdefn.h
Normal file
@@ -0,0 +1,200 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ABDefn_H_
|
||||
#define _ABDefn_H_
|
||||
|
||||
/* max lengths for address book fields */
|
||||
const int kMaxFullNameLength = 256; /* common name */
|
||||
const int kMaxNameLength = 64; /* given, middle, family */
|
||||
const int kMaxCompanyLength = 128; /* company name */
|
||||
const int kMaxLocalityLength = 128; /* city */
|
||||
const int kMaxRegionLength = 128; /* state */
|
||||
const int kMaxCountryLength = 128; /* state */
|
||||
const int kMaxEmailAddressLength = 256;
|
||||
const int kMaxInfo = 1024;
|
||||
const int kMaxTitle = 64;
|
||||
const int kMaxAddress = 128;
|
||||
const int kMaxZipCode = 40;
|
||||
const int kMaxPhone = 32;
|
||||
const int32 kMaxDN = 32768;
|
||||
const int kMaxCoolAddress = 256;
|
||||
const int kMaxAddressEntry = 1000;
|
||||
|
||||
const short kDefaultDLS = 0;
|
||||
const short kSpecificDLS = 1;
|
||||
const short kHostOrIPAddress = 2;
|
||||
|
||||
typedef uint32 ABID;
|
||||
|
||||
/* This structure represents a single line in the address book pane
|
||||
*/
|
||||
typedef struct AB_EntryLineTag
|
||||
{
|
||||
ABID entryType; /* type of entry either person or list */
|
||||
char fullname[256];
|
||||
char emailAddress[256];
|
||||
char companyName[128];
|
||||
char nickname[64];
|
||||
char locality[128];
|
||||
char workPhone[32];
|
||||
#ifdef XP_CPLUSPLUS
|
||||
public:
|
||||
void Initialize();
|
||||
#endif
|
||||
} AB_EntryLine;
|
||||
|
||||
typedef struct PersonEntryTag {
|
||||
char * pNickName;
|
||||
char * pGivenName;
|
||||
char * pMiddleName;
|
||||
char * pFamilyName;
|
||||
char * pCompanyName;
|
||||
char * pLocality;
|
||||
char * pRegion;
|
||||
char * pEmailAddress;
|
||||
char * pInfo;
|
||||
XP_Bool HTMLmail;
|
||||
char * pTitle;
|
||||
char * pPOAddress;
|
||||
char * pAddress;
|
||||
char * pZipCode;
|
||||
char * pCountry;
|
||||
char * pWorkPhone;
|
||||
char * pFaxPhone;
|
||||
char * pHomePhone;
|
||||
char * pDistName;
|
||||
short Security;
|
||||
char * pCoolAddress;
|
||||
short UseServer;
|
||||
int16 WinCSID;
|
||||
|
||||
|
||||
#ifdef XP_CPLUSPLUS
|
||||
public:
|
||||
void Initialize();
|
||||
void CleanUp();
|
||||
#endif
|
||||
} PersonEntry;
|
||||
|
||||
|
||||
typedef struct MailingListEntryTag {
|
||||
char * pFullName;
|
||||
char * pNickName;
|
||||
char * pInfo;
|
||||
char * pDistName;
|
||||
int16 WinCSID;
|
||||
|
||||
#ifdef XP_CPLUSPLUS
|
||||
|
||||
public:
|
||||
void Initialize();
|
||||
void CleanUp();
|
||||
#endif
|
||||
} MailingListEntry;
|
||||
|
||||
const ABID ABTypeAll = 35;
|
||||
const ABID ABTypePerson = 36;
|
||||
const ABID ABTypeList = 37;
|
||||
|
||||
const unsigned long ABTypeEntry = 0x70634944; /* ASCII - 'pcID' */
|
||||
const unsigned long ABFullName = 0x636E2020; /* ASCII - 'cn ' */
|
||||
const unsigned long ABNickname = 0x6E69636B; /* ASCII - 'nick' */
|
||||
const unsigned long ABEmailAddress = 0x6D61696C; /* ASCII - 'mail' */
|
||||
const unsigned long ABLocality = 0x6C6F6320; /* ASCII - 'loc ' */
|
||||
const unsigned long ABCompany = 0x6F726720; /* ASCII - 'org ' */
|
||||
|
||||
/* defines for vcard support */
|
||||
#define vCardClipboardFormat "+//ISBN 1-887687-00-9::versit::PDI//vCard"
|
||||
#define vCardMimeFormat "text/x-vcard"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
||||
/* FILE MENU
|
||||
=========
|
||||
*/
|
||||
AB_NewMessageCmd, /* Send a new message to the selected entries */
|
||||
|
||||
AB_ImportCmd, /* import a file into the address book */
|
||||
|
||||
AB_SaveCmd, /* export to a file */
|
||||
|
||||
AB_CloseCmd, /* close the address book window */
|
||||
|
||||
AB_NewAddressBook, /* Create a new personal address book */
|
||||
|
||||
AB_NewLDAPDirectory, /* Create a new LDAP directory */
|
||||
|
||||
|
||||
/* EDIT MENU
|
||||
=========
|
||||
*/
|
||||
|
||||
AB_UndoCmd, /* Undoes the last operation. */
|
||||
|
||||
AB_RedoCmd, /* Redoes the last undone operation. */
|
||||
|
||||
AB_DeleteCmd, /* Causes the given entries to be
|
||||
deleted. */
|
||||
|
||||
AB_DeleteAllCmd, /* Causes all occurrences of the given entries to be deleted. */
|
||||
|
||||
AB_LDAPSearchCmd, /* Perform an LDAP search */
|
||||
|
||||
|
||||
/* VIEW/SORT MENUS
|
||||
===============
|
||||
*/
|
||||
|
||||
AB_SortByTypeCmd, /* Sort alphabetized by type. */
|
||||
AB_SortByFullNameCmd, /* Sort alphabetizedby full name. */
|
||||
AB_SortByLocality, /* Sort by state */
|
||||
AB_SortByNickname, /* Sort by nickname */
|
||||
AB_SortByEmailAddress, /* Sort by email address */
|
||||
AB_SortByCompanyName, /* Sort by email address */
|
||||
AB_SortAscending, /* Sort current column ascending */
|
||||
AB_SortDescending, /* Sort current column descending */
|
||||
|
||||
/* these are the new sort command IDs added for the 2 pane AB. Use these instead of the previous ones...*/
|
||||
AB_SortByColumnID0,
|
||||
AB_SortByColumnID1,
|
||||
AB_SortByColumnID2,
|
||||
AB_SortByColumnID3,
|
||||
AB_SortByColumnID4,
|
||||
AB_SortByColumnID5,
|
||||
AB_SortByColumnID6,
|
||||
|
||||
/* ITEM MENU
|
||||
============
|
||||
*/
|
||||
|
||||
AB_AddUserCmd, /* Add a user to the address book */
|
||||
AB_AddMailingListCmd, /* Add a mailing list to the address book */
|
||||
AB_PropertiesCmd, /* Get the properties of an entry */
|
||||
AB_CallCmd, /* Call the entry using CallPoint */
|
||||
|
||||
AB_ImportLdapEntriesCmd, /* Add a user to the AB from an LDAP directory */
|
||||
|
||||
/* Mailing List Pane Specific Commands!!! */
|
||||
AB_InsertLineCmd, /* Insert a blank entry line into the mailing list pane */
|
||||
AB_ReplaceLineCmd /* Replace the entry in the mailing list pane with a blank entry */
|
||||
|
||||
} AB_CommandType;
|
||||
|
||||
#endif
|
||||
449
mozilla/include/addrbook.h
Normal file
449
mozilla/include/addrbook.h
Normal file
@@ -0,0 +1,449 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef _AddrBook_H_
|
||||
#define _AddrBook_H_
|
||||
|
||||
#include "xp_core.h"
|
||||
#include "msgcom.h"
|
||||
#include "abdefn.h"
|
||||
#include "dirprefs.h"
|
||||
|
||||
#ifdef XP_CPLUSPLUS
|
||||
class MLPane;
|
||||
class ABPane;
|
||||
class AddressPane;
|
||||
class ABook;
|
||||
#else
|
||||
typedef struct MLPane MLPane;
|
||||
typedef struct ABPane ABPane;
|
||||
typedef struct AddressPane AddressPane;
|
||||
typedef struct ABook ABook;
|
||||
#endif
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
#define AB_kGromitDbFileName "da5id.nab"
|
||||
#define AB_CONFIG_USE_GROMIT_FILE_FORMAT 1
|
||||
|
||||
/****************************************************************************/
|
||||
/* Get the address book .*/
|
||||
/****************************************************************************/
|
||||
ABook* FE_GetAddressBook(MSG_Pane* pane);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This is a callback into the FE to bring up a modal property sheet */
|
||||
/* for modifying an existing entry or creating a new one from a */
|
||||
/* person structure. If entryId != MSG_MESSAGEIDNONE then it is the */
|
||||
/* entryID of the entry to modify. Each FE should Return TRUE if the user */
|
||||
/* hit ok return FALSE if they hit cancel and return -1 if there was a */
|
||||
/* problem creating the window or something */
|
||||
/****************************************************************************/
|
||||
int FE_ShowPropertySheetFor (MWContext* context, ABID entryID,
|
||||
PersonEntry* pPerson);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Return whether or not to attach the users */
|
||||
/* vcard to outgoing messages */
|
||||
/****************************************************************************/
|
||||
XP_Bool AB_AttachUsersvCard(void);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Convert the address book error code to .*/
|
||||
/****************************************************************************/
|
||||
int AB_ConvertABErrToMKErr(uint32 err);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Create and initialize the address book pane which is the a view on an */
|
||||
/* address book. It will provide a sorted list of all the address book */
|
||||
/* entries ids . This is intended to be used in a two step */
|
||||
/* process of create and then initialize */
|
||||
/****************************************************************************/
|
||||
int AB_InitAddressBookPane(ABPane** ppABookPane,
|
||||
DIR_Server* dir,
|
||||
ABook* pABook,
|
||||
MWContext* context,
|
||||
MSG_Master* master,
|
||||
unsigned long sortBy,
|
||||
XP_Bool sortForward);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Create the address book pane which is the a view on an */
|
||||
/* address book. */
|
||||
/****************************************************************************/
|
||||
int AB_CreateAddressBookPane(ABPane** ppABookPane,
|
||||
MWContext* context,
|
||||
MSG_Master* master);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Initialize the address book pane which is the a view on an */
|
||||
/* address book. It will provide a sorted list of all the address book */
|
||||
/* entries ids .*/
|
||||
/****************************************************************************/
|
||||
int AB_InitializeAddressBookPane(ABPane* ppABookPane,
|
||||
DIR_Server* dir,
|
||||
ABook* pABook,
|
||||
unsigned long sortBy,
|
||||
XP_Bool sortForward);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Close the address book pane. Called when the view on an address book */
|
||||
/* is being closed */
|
||||
/****************************************************************************/
|
||||
int AB_CloseAddressBookPane(ABPane** ppABookPane);
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Create and initialize a mailing list pane which is the a view on an */
|
||||
/* mailing list. It will provide a sorted view of all the entries in a */
|
||||
/* mailing list. This is intended to be used in as a one one step process */
|
||||
/****************************************************************************/
|
||||
int AB_InitMailingListPane(MLPane** ppABookPane,
|
||||
ABID* listID,
|
||||
DIR_Server* dir,
|
||||
ABook* pABook,
|
||||
MWContext* context,
|
||||
MSG_Master* master,
|
||||
unsigned long sortBy,
|
||||
XP_Bool sortForward);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Create a mailing list pane which is the a view on an */
|
||||
/* mailing list. This is intended to be used in a two step */
|
||||
/* process of create and then initialize */
|
||||
/****************************************************************************/
|
||||
int AB_CreateMailingListPane(MLPane** ppABookPane,
|
||||
MWContext* context,
|
||||
MSG_Master* master);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Initialize a mailing list pane which is the a view on an */
|
||||
/* mailing list. It will provide a sorted view of all the entries in a */
|
||||
/* mailing list.*/
|
||||
/****************************************************************************/
|
||||
int AB_InitializeMailingListPane(MLPane* pABookPane,
|
||||
ABID* listID,
|
||||
DIR_Server* dir,
|
||||
ABook* pABook);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Close the mailing list pane. Called when the view on an mailing list */
|
||||
/* is being closed */
|
||||
/****************************************************************************/
|
||||
int AB_CloseMailingListPane(MLPane** ppMLPane);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Register a compose window with the address book */
|
||||
/* The composition pane should do this everytime it opens */
|
||||
/* so that name completion can take place */
|
||||
/****************************************************************************/
|
||||
int AB_RegisterComposeWindow(ABook* pABook, DIR_Server* directory);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Unregister a compose window with the address book */
|
||||
/* The composition pane should do this when it is getting closed */
|
||||
/****************************************************************************/
|
||||
int AB_UnregisterComposeWindow(ABook* pABook, DIR_Server* directory);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Change the Current directory */
|
||||
/****************************************************************************/
|
||||
int AB_ChangeDirectory(ABPane* pABookPane, DIR_Server* directory);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Begin a search on the LDAP directory */
|
||||
/****************************************************************************/
|
||||
int AB_SearchDirectory(ABPane* pABookPane, char* searchString);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Process LDAP search results*/
|
||||
/****************************************************************************/
|
||||
int AB_LDAPSearchResults(ABPane* pABookPane, MSG_ViewIndex index, int32 num);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Finish an LDAP search */
|
||||
/****************************************************************************/
|
||||
int AB_FinishSearch(ABPane* pABookPane, MWContext* context);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Create and initialize the address book database */
|
||||
/****************************************************************************/
|
||||
int AB_InitAddressBook(DIR_Server* directory, ABook** ppABook);
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Create and initialize the address book database */
|
||||
/* upgrading the old html address book if we need to*/
|
||||
/****************************************************************************/
|
||||
int AB_InitializeAddressBook(DIR_Server* directory, ABook** ppABook,
|
||||
const char * pOldHTMLBook);
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Close the address book database */
|
||||
/****************************************************************************/
|
||||
int AB_CloseAddressBook(ABook** ppABook);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Add a person entry to the database */
|
||||
/****************************************************************************/
|
||||
int AB_AddUser(DIR_Server* dir, ABook* pABook, PersonEntry* pPerson,
|
||||
ABID* entryID);
|
||||
int AB_AddUserWithUI (MWContext *context, PersonEntry *person,
|
||||
DIR_Server *pab, XP_Bool lastOneToAdd);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Add an entry to the database from a url*/
|
||||
/****************************************************************************/
|
||||
int AB_AddSenderToAddBook(ABook* pABook, MWContext* context, char* author,
|
||||
char* url);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Add a mailing list to the database */
|
||||
/****************************************************************************/
|
||||
int AB_AddMailingList(DIR_Server* dir, ABook* pABook,
|
||||
MailingListEntry* pABList, ABID* entryID);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Perform a command on the selected indices */
|
||||
/* Right now this will only work on delete and mail to */
|
||||
/****************************************************************************/
|
||||
int AB_Command (ABPane* pane, AB_CommandType command,
|
||||
MSG_ViewIndex* indices, int32 numindices);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Before the front end displays any menu (each time), it should call this */
|
||||
/* function for each command on that menu to determine how it should be */
|
||||
/* displayed. */
|
||||
/****************************************************************************/
|
||||
int AB_CommandStatus (ABPane* pane,
|
||||
AB_CommandType command,
|
||||
MSG_ViewIndex* indices, int32 numindices,
|
||||
XP_Bool *selectable_p,
|
||||
MSG_COMMAND_CHECK_STATE *selected_p,
|
||||
const char **display_string,
|
||||
XP_Bool *plural_p);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Get and Set how full names are constructed for people entries */
|
||||
/* first last or last first */
|
||||
/****************************************************************************/
|
||||
XP_Bool AB_GetSortByFirstName(ABook* pABook);
|
||||
void AB_SetSortByFirstName(ABook* pABook, XP_Bool sortby);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Import Export various formats that will prompt for filename */
|
||||
/****************************************************************************/
|
||||
int AB_ImportFromFile(ABPane* pABookPane, MWContext* context);
|
||||
int AB_ExportToFile(ABPane* pABookPane, MWContext* context);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This is only used right now for drop/paste of a vcard */
|
||||
/****************************************************************************/
|
||||
int AB_ImportFromVcard(AddressPane* pABookPane, const char* pVcard);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This is only used right now for drop of a vcard */
|
||||
/* It it a helper function that can be called by the FE to */
|
||||
/* convert a vcard to an valid rfc822 address that can be used */
|
||||
/* in the address widget of the compose window */
|
||||
/****************************************************************************/
|
||||
int AB_ConvertVCardsToExpandedName(ABook* pABook, const char* vCardString,
|
||||
XP_List ** ppEntries, int32 * numEntries);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Import Export various formats that wont do any prompting */
|
||||
/* This is needed for the command line interface and automatic upgrading */
|
||||
/****************************************************************************/
|
||||
int AB_ImportFromFileNamed(ABook* pABook, char* filename);
|
||||
int AB_ExportToFileNamed(ABook* pABook, char* filename);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This function is only called from the backend. */
|
||||
/* It is used to process the addbook url that is only used in mimevcrd.c */
|
||||
/* It probably will never be called by an FE */
|
||||
/****************************************************************************/
|
||||
int AB_ImportFromVcardURL(ABook* pABook, MWContext* context, const char* pVcard);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This will create a buffer with a vcard in it. It is used for constructing */
|
||||
/* a buffer that can be used in drag/drop or copy to the clipboard */
|
||||
/****************************************************************************/
|
||||
int AB_ExportToVCard(ABook* pABook, DIR_Server* dir, ABID entryID,
|
||||
char** ppVcard);
|
||||
int AB_ExportToVCardFromPerson(ABook* pABook, PersonEntry* pPerson,
|
||||
char** ppVcard);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This will create a temp file for a vcard. This function is only called */
|
||||
/* from the backend compose window for constructing a vcard attachment */
|
||||
/* It probably will never be called by an FE */
|
||||
/****************************************************************************/
|
||||
int AB_ExportToVCardTempFile(ABook* pABook, DIR_Server* dir, ABID entryID,
|
||||
char** filename);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Operations on panes/view */
|
||||
/****************************************************************************/
|
||||
|
||||
/****************************************************************************/
|
||||
/* Get the unique database id at a particular pane index */
|
||||
/****************************************************************************/
|
||||
ABID AB_GetEntryIDAt(AddressPane* pABookPane, uint32 index);
|
||||
uint32 AB_GetIndexOfEntryID (AddressPane* pABookPane, ABID entryID);
|
||||
int AB_GetEntryLine (ABPane * pABookPane, uint32 index,
|
||||
AB_EntryLine * pEntryLine);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Get info about how a pane is sorted */
|
||||
/****************************************************************************/
|
||||
XP_Bool AB_GetPaneSortedAscending(ABPane * pABookPane);
|
||||
ABID AB_GetPaneSortedBy(ABPane * pABookPane);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Get number of entries */
|
||||
/* For the address book you can ask for ALL, people, or mailing lists */
|
||||
/* For mailing list panes you will only be returned ALL */
|
||||
/****************************************************************************/
|
||||
int AB_GetEntryCount(DIR_Server* dir, ABook* pABook, uint32* count,
|
||||
ABID etype, ABID listID);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Modify information for an entry (person or mailing list) */
|
||||
/****************************************************************************/
|
||||
int AB_ModifyUser(DIR_Server* dir, ABook* pABook, ABID entryID, PersonEntry* pPerson);
|
||||
int AB_ModifyMailingList(DIR_Server* dir, ABook* pABook, ABID entryID,
|
||||
MailingListEntry* pEntry);
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Modify information for a mailing list that has been modified */
|
||||
/* but not committed in a mailing list pane */
|
||||
/****************************************************************************/
|
||||
int AB_ModifyMailingListAndEntries(MLPane* pMLPane, MailingListEntry* pABList);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Modify information for a mailing list that has been modified */
|
||||
/* but not committed in a mailing list pane. Some of the error checking */
|
||||
/* that was perfomed in add/replace in a mailing list had to be moved to */
|
||||
/* here. The fe's should be calling this function instead of the one above */
|
||||
/****************************************************************************/
|
||||
int AB_ModifyMailingListAndEntriesWithChecks(MLPane* pMLPane, MailingListEntry* pList,
|
||||
MSG_ViewIndex *index, MSG_ViewIndex begIndex);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Get information for every entry (person or mailing list) */
|
||||
/****************************************************************************/
|
||||
int AB_GetType(DIR_Server* dir, ABook* pABook, ABID entryID, ABID* type);
|
||||
int AB_GetFullName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetNickname(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Get information for every person entry */
|
||||
/****************************************************************************/
|
||||
int AB_GetGivenName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetMiddleName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetFamilyName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetCompanyName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetLocality(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetRegion(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetEmailAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* paddress);
|
||||
int AB_GetInfo(DIR_Server* dir, ABook* pABook, ABID entryID, char* pinfo);
|
||||
int AB_GetHTMLMail(DIR_Server* dir, ABook* pABook, ABID entryID, XP_Bool* pHTML);
|
||||
int AB_GetExpandedName(DIR_Server* dir, ABook* pABook, ABID entryID, char** pname);
|
||||
int AB_GetTitle(DIR_Server* dir, ABook* pABook, ABID entryID, char* ptitle);
|
||||
int AB_GetPOAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* ppoaddress);
|
||||
int AB_GetStreetAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* pstreet);
|
||||
int AB_GetZipCode(DIR_Server* dir, ABook* pABook, ABID entryID, char* pzip);
|
||||
int AB_GetCountry(DIR_Server* dir, ABook* pABook, ABID entryID, char* pcountry);
|
||||
int AB_GetWorkPhone(DIR_Server* dir, ABook* pABook, ABID entryID, char* pphone);
|
||||
int AB_GetFaxPhone(DIR_Server* dir, ABook* pABook, ABID entryID, char* pphone);
|
||||
int AB_GetHomePhone(DIR_Server* dir, ABook* pABook, ABID entryID, char* pphone);
|
||||
int AB_GetDistName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
|
||||
int AB_GetSecurity(DIR_Server* dir, ABook* pABook, ABID entryID, short* security);
|
||||
int AB_GetCoolAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* paddress);
|
||||
int AB_GetUseServer(DIR_Server* dir, ABook* pABook, ABID entryID, short* use);
|
||||
|
||||
int AB_GetEntryIDForPerson(DIR_Server* dir, ABook* pABook, ABID* entryID,
|
||||
PersonEntry* pPerson);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Add/Remove entries for a mailing list */
|
||||
/****************************************************************************/
|
||||
int AB_GetEntryCountInMailingList(MLPane* pMLPane, uint32* count);
|
||||
int AB_AddIDToMailingListAt(MLPane* pMLPane, ABID entryID, MSG_ViewIndex index);
|
||||
int AB_RemoveIDFromMailingListAt(MLPane* pMLPane, MSG_ViewIndex index);
|
||||
int AB_ReplaceIDInMailingListAt(MLPane* pMLPane, ABID entryID, MSG_ViewIndex index);
|
||||
int AB_AddPersonToMailingListAt(MLPane* pMLPane, PersonEntry* person,
|
||||
MSG_ViewIndex index, ABID* entryID);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Find index to first entry in a pane that matches the typedown */
|
||||
/****************************************************************************/
|
||||
int AB_GetIndexMatchingTypedown(ABPane* pABookPane,
|
||||
MSG_ViewIndex* index, const char* aValue, MSG_ViewIndex startIndex);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Return the id of the name/nickname entries that match a string. If we */
|
||||
/* find a nickname that uniquely matches then return otherwise check the */
|
||||
/* full name field. */
|
||||
/****************************************************************************/
|
||||
int AB_GetIDForNameCompletion(ABook* pABook, DIR_Server* dir, ABID* entryID,
|
||||
ABID* field, const char* aValue);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Return a string of expanded addresses from the address book */
|
||||
/****************************************************************************/
|
||||
char* AB_ExpandHeaderString(ABook* pABook, const char* addresses,
|
||||
XP_Bool expandfull);
|
||||
|
||||
/****************************************************************************/
|
||||
/* Return the ids of mailing lists that a entry is a member of */
|
||||
/* This was mentioned at one time as a requirement in the ui but it may */
|
||||
/* go away */
|
||||
/****************************************************************************/
|
||||
int AB_GetMailingListsContainingID(ABook* pABook, MSG_ViewIndex* plist,
|
||||
ABID entryID);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This should not be called by any of the fes. I placed it here so it */
|
||||
/* could be called in the backend by other functions such as those in libmsg */
|
||||
/* This allows for an increase in performance when adding a bunch of entries */
|
||||
/* to the database */
|
||||
/****************************************************************************/
|
||||
int AB_SetIsImporting(ABook* pABook, XP_Bool isImporting);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This should not be called by any of the fes. I placed it here so it */
|
||||
/* could be called in the backend by other functions in libmsg */
|
||||
/* This will set the wantsHTML boolean to be set for all address book */
|
||||
/* entries with that match the name and email address. */
|
||||
/****************************************************************************/
|
||||
int AB_SetHTMLForPerson(DIR_Server* dir, ABook* pABook, PersonEntry* pPerson);
|
||||
|
||||
/****************************************************************************/
|
||||
/* This should not be called by any of the fes. I placed it here so it */
|
||||
/* could be called in the backend by other functions in libmsg */
|
||||
/* This will break a name apart into first name and last name. */
|
||||
/* Be sure and set the WinCSID in the person structure */
|
||||
/****************************************************************************/
|
||||
int AB_BreakApartFirstName (ABook* pABook, PersonEntry* pPerson);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif
|
||||
7878
mozilla/include/allxpstr.h
Normal file
7878
mozilla/include/allxpstr.h
Normal file
File diff suppressed because it is too large
Load Diff
7878
mozilla/include/allxpstr.rc
Normal file
7878
mozilla/include/allxpstr.rc
Normal file
File diff suppressed because it is too large
Load Diff
700
mozilla/include/bkmks.h
Normal file
700
mozilla/include/bkmks.h
Normal file
@@ -0,0 +1,700 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef BKMKS_H
|
||||
#define BKMKS_H
|
||||
|
||||
#include "xp_mcom.h"
|
||||
#include "ntypes.h"
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
#define BM_LAST_CELL 0xFFFF /* See BMFE_RefreshCells */
|
||||
|
||||
typedef time_t BM_Date;
|
||||
|
||||
typedef enum {
|
||||
BM_Cmd_Invalid, /* XFE in particular likes to have an invalid
|
||||
ID code as one of the entries here...*/
|
||||
|
||||
BM_Cmd_Open, /* Open a new bookmark file. */
|
||||
|
||||
BM_Cmd_ImportBookmarks, /* Import entries from another bookmark
|
||||
file. */
|
||||
|
||||
BM_Cmd_SaveAs, /* Save these bookmarks into another file. */
|
||||
|
||||
BM_Cmd_Close, /* Close the bookmarks window. (NYI ###) */
|
||||
|
||||
BM_Cmd_Undo, /* Undo the last command. */
|
||||
BM_Cmd_Redo, /* Redo the last undone command. */
|
||||
|
||||
BM_Cmd_Cut, /* Cut the selected bookmarks. */
|
||||
BM_Cmd_Copy, /* Copy the selected bookmarks. */
|
||||
BM_Cmd_Paste, /* Paste in the most recent cut/copy. */
|
||||
BM_Cmd_Delete, /* Delete the selected bookmarks without
|
||||
affecting the clipboard. */
|
||||
|
||||
BM_Cmd_SelectAllBookmarks, /* Select every bookmark in the window. */
|
||||
|
||||
BM_Cmd_Find, /* Find a string. */
|
||||
|
||||
BM_Cmd_FindAgain, /* Find the same string again. */
|
||||
|
||||
BM_Cmd_BookmarkProps, /* Bring up the properties window. */
|
||||
|
||||
BM_Cmd_GotoBookmark, /* Load the selected bookmark in a browser
|
||||
window. */
|
||||
|
||||
/* Sort the bookmarks. NYI### */
|
||||
BM_Cmd_Sort_Name,
|
||||
BM_Cmd_Sort_Name_Asc,
|
||||
|
||||
BM_Cmd_Sort_Address,
|
||||
BM_Cmd_Sort_Address_Asc,
|
||||
|
||||
BM_Cmd_Sort_AddDate,
|
||||
BM_Cmd_Sort_AddDate_Asc,
|
||||
|
||||
BM_Cmd_Sort_LastVisit,
|
||||
BM_Cmd_Sort_LastVisit_Asc,
|
||||
|
||||
BM_Cmd_Sort_Natural,
|
||||
|
||||
|
||||
BM_Cmd_InsertBookmark, /* Insert a new bookmark (or a new address if
|
||||
in addressbook). */
|
||||
|
||||
BM_Cmd_InsertHeader, /* Insert a new header. */
|
||||
|
||||
BM_Cmd_InsertSeparator, /* Insert a separator. */
|
||||
|
||||
BM_Cmd_MakeAlias, /* Make an alias of this bookmark. */
|
||||
|
||||
BM_Cmd_SetAddHeader, /* Make the current header be the one where new
|
||||
bookmarks are added. */
|
||||
|
||||
BM_Cmd_SetMenuHeader /* Make the current header be the one which the
|
||||
pulldown menu is created from. */
|
||||
|
||||
} BM_CommandType;
|
||||
#define BM_Cmd_SortBookmarks BM_Cmd_Sort_Name
|
||||
|
||||
typedef enum
|
||||
{
|
||||
BM_Sort_NONE = -1,
|
||||
|
||||
BM_Sort_Name,
|
||||
BM_Sort_Name_Asc,
|
||||
|
||||
BM_Sort_Address,
|
||||
BM_Sort_Address_Asc,
|
||||
|
||||
BM_Sort_AddDate,
|
||||
BM_Sort_AddDate_Asc,
|
||||
|
||||
BM_Sort_LastVisit,
|
||||
BM_Sort_LastVisit_Asc,
|
||||
|
||||
BM_Sort_Natural
|
||||
|
||||
} BM_SortType;
|
||||
|
||||
/* The various types of bookmark entries (as returned by BM_GetType). */
|
||||
|
||||
typedef uint16 BM_Type;
|
||||
|
||||
#define BM_TYPE_HEADER 0x0001
|
||||
#define BM_TYPE_URL 0x0002
|
||||
#define BM_TYPE_ADDRESS 0x0004
|
||||
#define BM_TYPE_SEPARATOR 0x0008
|
||||
#define BM_TYPE_ALIAS 0x0010
|
||||
|
||||
|
||||
/* This represents one line in the bookmarks window -- a URL, a
|
||||
separater, an addressbook entry, a header, etc. It's also already
|
||||
defined in ntypes.h, and some compilers bitch and moan about seeing it
|
||||
twice, so I've commented it out here. */
|
||||
/* typedef struct BM_Entry_struct BM_Entry; */
|
||||
|
||||
|
||||
|
||||
/* information for the find dialog */
|
||||
typedef struct BM_FindInfo {
|
||||
char* textToFind;
|
||||
XP_Bool checkNickname; /* Meaningful only in addressbook */
|
||||
XP_Bool checkName;
|
||||
XP_Bool checkLocation;
|
||||
XP_Bool checkDescription;
|
||||
XP_Bool matchCase;
|
||||
XP_Bool matchWholeWord;
|
||||
|
||||
BM_Entry* lastEntry;
|
||||
} BM_FindInfo;
|
||||
|
||||
struct BM_Entry_Focus {
|
||||
BM_Entry* saveFocus;
|
||||
XP_Bool foundSelection;
|
||||
};
|
||||
|
||||
extern XP_Bool BM_IsHeader(BM_Entry* entry);
|
||||
extern XP_Bool BM_IsUrl(BM_Entry* entry);
|
||||
extern XP_Bool BM_IsAddress(BM_Entry* entry);
|
||||
extern XP_Bool BM_IsSeparator(BM_Entry* entry);
|
||||
extern XP_Bool BM_IsAlias(BM_Entry* entry);
|
||||
extern XP_Bool BM_IsFolded(BM_Entry* entry);
|
||||
extern XP_Bool BM_IsSelected(BM_Entry* entry);
|
||||
|
||||
|
||||
/* Returns the state of whether this is a "changed URL"; that is, a URL whose
|
||||
contents have apparently changed since we last visited it. */
|
||||
|
||||
#define BM_CHANGED_YES 1
|
||||
#define BM_CHANGED_NO 0
|
||||
#define BM_CHANGED_UNKNOWN -1
|
||||
|
||||
extern int32 BM_GetChangedState(BM_Entry* entry);
|
||||
|
||||
|
||||
|
||||
/* Get/Set the header that is to be the root of the pulldown menu. */
|
||||
extern BM_Entry* BM_GetMenuHeader(MWContext* context);
|
||||
extern void BM_SetMenuHeader(MWContext* context, BM_Entry* entry);
|
||||
|
||||
/* Get/Set the header that is to be the container of new items added from
|
||||
browser windows. */
|
||||
extern BM_Entry* BM_GetAddHeader(MWContext* context);
|
||||
extern void BM_SetAddHeader(MWContext* context, BM_Entry* entry);
|
||||
|
||||
|
||||
typedef void (*EntryFunc)(MWContext* context, BM_Entry* entry, void* closure);
|
||||
|
||||
|
||||
/* Executes the given function on every single entry in the bookmark file. */
|
||||
extern void BM_EachEntryDo(MWContext* context, EntryFunc func, void* closure);
|
||||
|
||||
/* Executes the given function for every entry that is selected. */
|
||||
extern void BM_EachSelectedEntryDo(MWContext* context, EntryFunc func,
|
||||
void* closure);
|
||||
|
||||
/* Executes the given function for every entry that is selected and is not a
|
||||
descendent of a header that is not folded or selected. */
|
||||
extern void BM_EachProperSelectedEntryDo(MWContext* context, EntryFunc func,
|
||||
void* closure, struct BM_Entry_Focus* bmFocus);
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Front end stubs -- each FE needs to implement these. */
|
||||
|
||||
/* Refresh each cell between and including first and last in the bookmarks
|
||||
widget (if now is TRUE, the FE is expected to redraw them BEFORE returning,
|
||||
otherwise the FE can simply invalidate them and wait for the redraw to
|
||||
happen). If BM_LAST_CELL is passed in as last, then it means paint from
|
||||
the first to the end. */
|
||||
extern void BMFE_RefreshCells(MWContext* context, int32 first, int32 last,
|
||||
XP_Bool now);
|
||||
|
||||
|
||||
/* Resize the widget to accomodate "visibleCount" number of entries vertically
|
||||
and the width of widest entry the actual widget should NOT change size, just
|
||||
the size of the scrollable area under it */
|
||||
extern void BMFE_SyncDisplay(MWContext* context);
|
||||
|
||||
|
||||
/* measure the item and assign the width and height required to draw it into
|
||||
the widget into width and height. This is used only by BM_WidestEntry(); if
|
||||
you don't need that call, you can just make this an empty stub. */
|
||||
extern void BMFE_MeasureEntry(MWContext* context, BM_Entry* entry,
|
||||
uint32* width, uint32* height);
|
||||
|
||||
/* Save the given bucket o' bits as the clipboard. This same bucket needs to
|
||||
be returned later if BMFE_GetClipContents() is called. */
|
||||
extern void BMFE_SetClipContents(MWContext* context, void* buffer,
|
||||
int32 length);
|
||||
|
||||
|
||||
/* return the clipboard contents */
|
||||
extern void* BMFE_GetClipContents(MWContext* context, int32* length);
|
||||
|
||||
|
||||
/* Copy the selected items from a history window to the clipboard (as bookmarks) */
|
||||
extern char *BM_ClipCopyHistorySelection( void *pHistCsr, uint32 *pSelections, int iCount, int *pSize, XP_Bool bLongFormat );
|
||||
|
||||
/* Insert the block into the list */
|
||||
extern void BM_DropBlockL( MWContext *pContext, char *pData, BM_Entry *firstSelected );
|
||||
|
||||
/* Create the bookmarks property window. If one already exists, just bring it
|
||||
to the front. This will always be immediately followed by a call to
|
||||
BMFE_EditItem(). */
|
||||
extern void BMFE_OpenBookmarksWindow(MWContext* context);
|
||||
|
||||
|
||||
/* Edit the given item in the bookmarks property window. If there is no
|
||||
bookmarks property window currently, then the FE should ignore this call.
|
||||
If the bookmarks property window is currently displaying some other entry,
|
||||
then it should save any changes made to that entry (by calling BM_SetName,
|
||||
etc.) before loading up this entry. */
|
||||
extern void BMFE_EditItem(MWContext* context, BM_Entry* entry);
|
||||
|
||||
/* The given entry is no longer valid (i.e., the user just deleted it). So,
|
||||
the given pointer is about to become invalid, and the FE should remove any
|
||||
references to it it may have. In particular, if it is the one being edited
|
||||
in the bookmarks property window, then the FE should clear that window. */
|
||||
extern void BMFE_EntryGoingAway(MWContext* context, BM_Entry* entry);
|
||||
|
||||
|
||||
/* The user has requested to view the given url. Show it to him in, using some
|
||||
appropriate context. Url may be targeted to a different window */
|
||||
extern void BMFE_GotoBookmark(MWContext* context,
|
||||
const char* url, const char* target);
|
||||
|
||||
|
||||
/* Create the find dialog, and fill it in as specified in the given
|
||||
structure. When the user hits the "Find" button in the dialog, call
|
||||
BM_DoFindBookmark. */
|
||||
extern void* BMFE_OpenFindWindow(MWContext* context, BM_FindInfo* findInfo);
|
||||
|
||||
|
||||
/* Make sure that the given entry is visible. */
|
||||
extern void BMFE_ScrollIntoView(MWContext* context, BM_Entry* entry);
|
||||
|
||||
|
||||
/* The list of bookmarks has changed somehow, so any "bookmarks" menu needs to
|
||||
be recreated. This should be a cheap call, just setting a flag in the FE so
|
||||
that it knows to recreate the menu later (like, when the user tries to view
|
||||
it). Recreating it immediately would be bad, because this can get called
|
||||
much more often than is reasonable. */
|
||||
extern void BMFE_BookmarkMenuInvalid(MWContext* context);
|
||||
|
||||
|
||||
/* We're in the process of doing a What's Changed operation. The What's
|
||||
Changed window should update to display the URL, the percentage (calculate
|
||||
as done*100/total), and the total estimated time (given here as a
|
||||
pre-formatted string). The What's Changed window should end up looking
|
||||
something like this:
|
||||
|
||||
Checking <URL>... (<13> left)
|
||||
{===================== } (progress bar)
|
||||
|
||||
Estimated time remaining: <2 hours 13 minutes>
|
||||
(Remaining time depends on the sites selected and
|
||||
the network traffic).
|
||||
|
||||
|
||||
[ Cancel ]
|
||||
|
||||
It's up to the FE to notice the first time this is called and change its
|
||||
window to display the info instead of the initial What's Changed screen.
|
||||
|
||||
If the user ever hits Cancel (or does something equivilant, like destroys
|
||||
the window), the FE must call BM_CancelWhatsChanged(). */
|
||||
|
||||
extern void BMFE_UpdateWhatsChanged(MWContext* context,
|
||||
const char* url, /* If NULL, just display
|
||||
"Checking..." */
|
||||
int32 done, int32 total,
|
||||
const char* totaltime);
|
||||
|
||||
|
||||
|
||||
/* We've finished processing What's Changed. The What's Changed window should
|
||||
change to display the summary of what happened. It should look something
|
||||
like this:
|
||||
|
||||
Done checking <157> Bookmarks.
|
||||
<134> documents were reached.
|
||||
<27> documents have changed and are marked in blue.
|
||||
|
||||
[ OK ]
|
||||
|
||||
When the user clicks on the OK, the FE should just take down the window.
|
||||
(It doesn't matter if the FE calls BM_CancelWhatsChanged(); it will be a
|
||||
no-op in this situtation.) */
|
||||
|
||||
extern void BMFE_FinishedWhatsChanged(MWContext* context, int32 totalchecked,
|
||||
int32 numreached, int32 numchanged);
|
||||
|
||||
#ifdef XP_WIN
|
||||
/* The current bookmarks file is about to change */
|
||||
extern void BMFE_ChangingBookmarksFile(void);
|
||||
|
||||
/* The current bookmarks file has been changed */
|
||||
extern void BMFE_ChangedBookmarksFile(void);
|
||||
#endif
|
||||
|
||||
#ifdef XP_UNIX
|
||||
/* Use these to know when to allow refresh */
|
||||
extern void BMFE_StartBatch(MWContext* context);
|
||||
extern void BMFE_EndBatch(MWContext* context);
|
||||
#endif
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
|
||||
|
||||
/* Initialize a new bookmarks context. (returns negative on failure) */
|
||||
extern int BM_InitializeBookmarksContext(MWContext* context);
|
||||
|
||||
|
||||
/* Prepare to destroy a bookmarks context. Will save any changes that have
|
||||
been made. */
|
||||
extern void BM_CleanupBookmarksContext(MWContext* context);
|
||||
|
||||
|
||||
/* Set some FE data to associate with a bookmarks context. */
|
||||
extern void BM_SetFEData(MWContext* context, void* data);
|
||||
|
||||
/* Get the FE data previously associated with a context. */
|
||||
extern void* BM_GetFEData(MWContext* context);
|
||||
|
||||
|
||||
/* Create a new url entry. */
|
||||
extern BM_Entry* BM_NewUrl(const char* name, const char* address,
|
||||
const char* content_type, BM_Date last_visit);
|
||||
|
||||
/* Create a new header. */
|
||||
extern BM_Entry* BM_NewHeader(const char* name);
|
||||
|
||||
|
||||
/* Create a copy of an existing bookmark. If the bookmark is a folder
|
||||
it will also contain a copy of all of the bookmarks in the folder.*/
|
||||
extern BM_Entry* BM_CopyBookmark(MWContext* context, BM_Entry* original);
|
||||
|
||||
/* Frees an entry. This should never be called unless you are sure the entry
|
||||
has not been added to some header, and is not the object of some alias. In
|
||||
other words, be sure nothing could possibly have a pointer to this it.
|
||||
If the object is a header, this will also free all of its descendents. */
|
||||
extern void BM_FreeEntry(MWContext* context, BM_Entry* entry);
|
||||
|
||||
|
||||
/* Get the type of this bookmark. (Returns one of the BM_TYPE_* values.) */
|
||||
extern BM_Type BM_GetType(BM_Entry* entry);
|
||||
|
||||
extern char* BM_GetName(BM_Entry* entry);
|
||||
|
||||
extern char* BM_GetAddress(BM_Entry* entry);
|
||||
extern char* BM_GetTarget(BM_Entry* entry, XP_Bool recurse);
|
||||
extern char* BM_GetDescription(BM_Entry* entry);
|
||||
|
||||
extern char* BM_GetNickName(BM_Entry* entry); /* Only meaningful in address
|
||||
book. */
|
||||
|
||||
/* Get the full name and address of the given entry (which must be an
|
||||
address book entry or header). Result is returned in a newly allocated
|
||||
string; free it with XP_FREE() when through. */
|
||||
extern char* BM_GetFullAddress(MWContext* context, BM_Entry* entry);
|
||||
|
||||
/* These return prettily formated info about the bookmark. They each
|
||||
return the result in a staticly allocated string, so if you call the
|
||||
same function twice the results get stomped. */
|
||||
extern char* BM_PrettyLastVisitedDate(BM_Entry* entry);
|
||||
extern char* BM_PrettyAddedOnDate(BM_Entry* entry);
|
||||
extern char* BM_PrettyAliasCount(MWContext* context, BM_Entry* entry);
|
||||
|
||||
|
||||
/* Get the root node of a context. */
|
||||
extern BM_Entry* BM_GetRoot(MWContext* context);
|
||||
|
||||
|
||||
/* Given a node, return the first of its children (if any). */
|
||||
extern BM_Entry* BM_GetChildren(BM_Entry* entry);
|
||||
|
||||
/* Given a node, return the next node that has the same parent (if any). */
|
||||
extern BM_Entry* BM_GetNext(BM_Entry* entry);
|
||||
|
||||
/* Given a node, returns its parent (or NULL if this is the root) */
|
||||
extern BM_Entry* BM_GetParent(BM_Entry* entry);
|
||||
|
||||
/* Does this node have a sibling somewhere below it? */
|
||||
extern XP_Bool BM_HasNext(BM_Entry* entry);
|
||||
|
||||
/* Does this node have a sibling somewhere above it? Note that there is *not*
|
||||
an API to actually get that sibling, as this is not a simple call. However,
|
||||
determing the existance of such a child is easy, and that's what Windows
|
||||
needs to paint its pipes. */
|
||||
extern XP_Bool BM_HasPrev(BM_Entry* entry);
|
||||
|
||||
|
||||
|
||||
/* Routines to change the name/address/description of an entry. These routines
|
||||
will take care of updating the display as necessary. */
|
||||
extern void BM_SetName(MWContext* context, BM_Entry* entry,
|
||||
const char* newName);
|
||||
extern void BM_SetAddress(MWContext* context, BM_Entry* entry,
|
||||
const char* newAddress);
|
||||
extern void BM_SetTarget(MWContext* context, BM_Entry* entry,
|
||||
const char* newTarget);
|
||||
extern void BM_SetDescription(MWContext* context, BM_Entry* entry,
|
||||
const char* newDesc);
|
||||
|
||||
/* Only meaningful in addressbook (on an address or header or alias to same) */
|
||||
extern XP_Bool BM_SetNickName(MWContext* context, BM_Entry* entry,
|
||||
const char* newName);
|
||||
|
||||
/* The user just hit "Cancel" on the properties window, which was editing
|
||||
the given item. This gives the bookmarks code a chance to delete the
|
||||
item if it was just newly created. */
|
||||
extern void BM_CancelEdit(MWContext* context, BM_Entry* entry);
|
||||
|
||||
|
||||
/* fold or unfold the header according to "fold" and all its subfolders if
|
||||
foldAll is TRUE */
|
||||
extern void BM_FoldHeader(MWContext* context, BM_Entry* entry, XP_Bool fold,
|
||||
XP_Bool refresh, XP_Bool foldAll);
|
||||
|
||||
|
||||
/* clear all the selection flags, and cause a redisplay if refresh is set. */
|
||||
extern void BM_ClearAllSelection(MWContext* context, XP_Bool refresh);
|
||||
|
||||
/* Clear all the child selections of the passes header and redisplay if refresh
|
||||
is set. */
|
||||
extern void BM_ClearAllChildSelection(MWContext* context, BM_Entry* at,
|
||||
XP_Bool refresh);
|
||||
|
||||
/* Select everything. */
|
||||
extern void BM_SelectAll(MWContext* context, XP_Bool refresh);
|
||||
|
||||
|
||||
/* selects the item, call BMFE_Refresh on it if "refresh" and calls
|
||||
BM_ClearSelection first if extend is FALSE */
|
||||
extern void BM_SelectItem(MWContext* context, BM_Entry* item, XP_Bool refresh,
|
||||
XP_Bool extend, XP_Bool select);
|
||||
|
||||
/* Adds a range of bookmarks to the current selection. To be called by the FE
|
||||
when the user Shift-Clicks in the window. This will unselect everything and
|
||||
then select a range of bookmarks, from the last bookmark that was selected
|
||||
with BM_SelectItem to the one given here. */
|
||||
extern void BM_SelectRangeTo(MWContext* context, BM_Entry* item);
|
||||
|
||||
/* toggles the selected state of the item, call BMFE_Refresh on it if "refresh"
|
||||
and calls BM_ClearSelection if extend is FALSE */
|
||||
extern void BM_ToggleItem(MWContext* context, BM_Entry* item, XP_Bool refresh,
|
||||
XP_Bool extend );
|
||||
|
||||
/* returns the first selected entry */
|
||||
extern BM_Entry* BM_FirstSelectedItem(MWContext* context);
|
||||
|
||||
|
||||
extern BM_Date BM_GetLastVisited(BM_Entry *);
|
||||
extern BM_Date BM_GetAdditionDate(BM_Entry *);
|
||||
|
||||
/* return the number of bookmarks */
|
||||
extern int32 BM_GetCount(MWContext* context);
|
||||
|
||||
/* return the number of visible bookmarks */
|
||||
extern int32 BM_GetVisibleCount(MWContext* context);
|
||||
|
||||
/* returns an integer index of the item in the list */
|
||||
extern int32 BM_GetIndex(MWContext* context, BM_Entry* item);
|
||||
|
||||
/* returns an integer index of the item in the list and does not pay attention
|
||||
to the is_folded value */
|
||||
extern int32 BM_GetUnfoldedIndex(MWContext* context, BM_Entry* item);
|
||||
|
||||
/* returns the object associated with the index returned by BM_GetIndex() */
|
||||
extern BM_Entry* BM_AtIndex(MWContext* context, int32 index);
|
||||
|
||||
/* returns the object associated with the index returned by
|
||||
BM_GetUnfoldedIndex() */
|
||||
extern BM_Entry* BM_AtUnfoldedIndex(MWContext* context, int32 index);
|
||||
|
||||
|
||||
/* returns an integer depth of the item in the list starting
|
||||
at zero */
|
||||
extern int32 BM_GetDepth(MWContext* context, BM_Entry* item);
|
||||
|
||||
|
||||
/* Execute a find operation according to the data in the given structure. This
|
||||
will cause the appropriate entry to be selected and made visible. */
|
||||
extern void BM_DoFindBookmark(MWContext* context, BM_FindInfo* findInfo);
|
||||
|
||||
/* For addressbook only: find and return the entry (if any) for the e-mail
|
||||
address within the given mailto: url. (used by libmsg) */
|
||||
extern BM_Entry* BM_FindAddress(MWContext* context, const char* mailtourl);
|
||||
|
||||
|
||||
/* For addressbook only: edit the entry for the e-mail address within the
|
||||
given mailto: url, creating the entry if necessary. (used by libmsg) */
|
||||
extern void BM_EditAddress(MWContext* context, const char* mailtourl);
|
||||
|
||||
|
||||
/* For addressbook only: if the given list of addresses includes a nickname
|
||||
from the addresses, then return a new string with the addresses expanded.
|
||||
If expandfull is True, then all mailing list entries are expanded too,
|
||||
otherwise, mailing list entries are only expanded to include their name.
|
||||
(used by libmsg). */
|
||||
extern char* BM_ExpandHeaderString(MWContext* context, const char* value,
|
||||
XP_Bool expandfull);
|
||||
|
||||
|
||||
/* Checks every bookmark context for a url and updates the last accessed
|
||||
time. (For use by global history code; FE's probably don't need this.) */
|
||||
extern void BM_UpdateBookmarksTime(URL_Struct* URL_s, BM_Date cur_time);
|
||||
|
||||
/* returns TRUE if the second argument is a direct descendent of the first
|
||||
argument, returns FALSE otherwise */
|
||||
extern XP_Bool BM_IsDescendent(MWContext* context, BM_Entry* parent,
|
||||
BM_Entry* possible_child);
|
||||
|
||||
|
||||
/* The front end can use this call to determine what the indentation depth is
|
||||
needed to display all the icons in the bookmarks. The XFE uses this to
|
||||
dynamically resize the icon column. In true C style, the number returned is
|
||||
actually one bigger than the biggest depth the FE will ever get. */
|
||||
extern int BM_GetMaxDepth(MWContext* context);
|
||||
|
||||
|
||||
/* This is called during a drag operation. The user is dragging some bookmarks
|
||||
and is currently pointing at the given line. (If under is True, then the
|
||||
user is really pointing between the given line and the next line.) This
|
||||
returns TRUE if the FE should draw a box around the given line, and FALSE if
|
||||
it should underline it. */
|
||||
extern XP_Bool BM_IsDragEffectBox(MWContext* context, int line, XP_Bool under);
|
||||
|
||||
|
||||
/* Actually do a drop in a drag-n-drop reordering operation. The arguments are
|
||||
the same as BM_IsDragEffectBox(); the selected items will be moved. */
|
||||
extern void BM_DoDrop(MWContext* ctnx, int line, XP_Bool under);
|
||||
|
||||
|
||||
|
||||
|
||||
/* find and return the widest visible entry in the bookmarks tree. This makes
|
||||
sense only if your FE has defined a meaningful BMFE_MeasureEntry(). */
|
||||
extern BM_Entry* BM_WidestEntry(MWContext* context);
|
||||
|
||||
|
||||
|
||||
/* insert an item after another item in the bm if the insert_after item is NULL
|
||||
or not found the item will be inserted at the end of the list */
|
||||
extern void BM_InsertItemAfter(MWContext* context, BM_Entry* insert_after,
|
||||
BM_Entry* insertee);
|
||||
|
||||
/* insert an item in a header if "insert_after" is a Header type, or after the
|
||||
item if "insert after" is not a header type. if the insert_after item is
|
||||
NULL or not found the item will be inserted at the end of the bm */
|
||||
extern void BM_InsertItemInHeaderOrAfterItem(MWContext* context,
|
||||
BM_Entry* insert_after,
|
||||
BM_Entry* insertee );
|
||||
|
||||
/* Cause the given item to be inserted at the end of the given header. The
|
||||
header passed in here is usually BM_GetAddHeader(). */
|
||||
extern void BM_AppendToHeader(MWContext* context, BM_Entry* header,
|
||||
BM_Entry* entry);
|
||||
|
||||
extern void BM_PrependChildToHeader(MWContext* context, BM_Entry* parent, BM_Entry* child);
|
||||
|
||||
/* Removes the given item from bookmarks without deleting it*/
|
||||
extern void BM_RemoveChildFromHeader(MWContext* context, BM_Entry* parent, BM_Entry* child);
|
||||
|
||||
/* Cause the given bookmark to be displayed in a browser window somewhere.
|
||||
The given item must be an URL (BM_IsUrl must return TRUE). */
|
||||
extern void BM_GotoBookmark(MWContext* context, BM_Entry* item);
|
||||
|
||||
|
||||
/* Reads the hostlist from disk, what else? Pass in the bm filename and a
|
||||
relative URL which represents the original location of the html file. If
|
||||
you are reading the default bm you should pass in a file URL of the form
|
||||
file://localhost/PATH */
|
||||
extern void BM_ReadBookmarksFromDisk(MWContext* context, const char* filename,
|
||||
const char* relative_url);
|
||||
|
||||
/* saves the bm to a file. If the given filename is NULL, then save it back to
|
||||
where it was loaded from and only if changes have been made. Returns
|
||||
negative on failure. */
|
||||
extern int32 BM_SaveBookmarks(MWContext* context, const char* filename);
|
||||
|
||||
|
||||
/* Returns the filename that the bookmarks are saved in. */
|
||||
extern const char* BM_GetFileName(MWContext* context);
|
||||
|
||||
/* read in a new bookmarks file (esp for LI use). */
|
||||
extern void BM_Open_File(MWContext* context, char* newFile);
|
||||
|
||||
/* ability to set the modified to true or false (esp for LI use). */
|
||||
extern void BM_SetModified(MWContext* context, XP_Bool mod);
|
||||
|
||||
/* Whether the file will be written when Save is called. */
|
||||
extern XP_Bool BM_Modified(MWContext* context);
|
||||
|
||||
/* Convert a number of selections in a bm list into a block of memory that the
|
||||
user can use for cut and paste operations */
|
||||
extern char* BM_ConvertSelectionsToBlock(MWContext* context,
|
||||
XP_Bool bLongFormat,
|
||||
int32* lTotalLen);
|
||||
|
||||
/* Take a block of memory and insert the bm items it represents into the
|
||||
current bm */
|
||||
extern void BM_InsertBlockAt(MWContext* context, char* pOriginalBlock,
|
||||
BM_Entry* addTo, XP_Bool bLongFormat,
|
||||
int32 lTotalLen);
|
||||
|
||||
|
||||
/* select all aliases for an entry */
|
||||
extern void BM_SelectAliases(MWContext* context, BM_Entry* forEntry );
|
||||
|
||||
|
||||
/* Count how many aliases there are to the given entry. */
|
||||
extern int32 BM_CountAliases(MWContext* context, BM_Entry* forEntry);
|
||||
|
||||
|
||||
/* Make an alias for each of the currently selected entries. */
|
||||
extern void BM_MakeAliases(MWContext* context);
|
||||
|
||||
|
||||
/* Returns the real item that an alias points to. The given entry must be an
|
||||
alias (BM_IsAlias must return TRUE on it). */
|
||||
extern BM_Entry* BM_GetAliasOriginal(BM_Entry*);
|
||||
|
||||
|
||||
|
||||
/* Start a What's Changed operation. Before calling this routine, it's up to
|
||||
the FE to present a dialog like this when What's Changed starts:
|
||||
|
||||
Look for documents that have changed on:
|
||||
(o) All bookmarks
|
||||
( ) Selected bookmarks
|
||||
|
||||
[ Start Checking ] [ Cancel ]
|
||||
|
||||
Then the FE calls this routine when the user clicks Start Checking. The FE
|
||||
will immediately get called via BMFE_UpdateWhatsChanged(), and the FE should
|
||||
change the dialog box's appearance to match. */
|
||||
extern int BM_StartWhatsChanged(MWContext* context,
|
||||
XP_Bool do_only_selected);
|
||||
|
||||
|
||||
/* Cancel a running What's Changed operation. */
|
||||
extern int BM_CancelWhatsChanged(MWContext* context);
|
||||
|
||||
|
||||
|
||||
/* Returns whether the given command can be executed right now. Should be
|
||||
used to decide whether to disable a menu item for this command. */
|
||||
extern XP_Bool BM_FindCommandStatus(MWContext* context,
|
||||
BM_CommandType command);
|
||||
|
||||
/* Execute the given command. */
|
||||
extern void BM_ObeyCommand(MWContext* context, BM_CommandType command );
|
||||
|
||||
/* Clean up the undo queue */
|
||||
void BM_ResetUndo(MWContext * context);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* BMLIST_H */
|
||||
159
mozilla/include/cdefs.h
Normal file
159
mozilla/include/cdefs.h
Normal file
@@ -0,0 +1,159 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Berkeley Software Design, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)cdefs.h 8.7 (Berkeley) 1/21/94
|
||||
*/
|
||||
|
||||
#ifndef _CDEFS_H_
|
||||
#define _CDEFS_H_
|
||||
|
||||
#ifdef __BEGIN_DECLS
|
||||
#undef __BEGIN_DECLS
|
||||
#endif
|
||||
#ifdef __END_DECLS
|
||||
#undef __END_DECLS
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define __BEGIN_DECLS extern "C" {
|
||||
#define __END_DECLS }
|
||||
#else
|
||||
#define __BEGIN_DECLS
|
||||
#define __END_DECLS
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
|
||||
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
|
||||
* The __CONCAT macro is a bit tricky -- make sure you don't put spaces
|
||||
* in between its arguments. __CONCAT can also concatenate double-quoted
|
||||
* strings produced by the __STRING macro, but this only works with ANSI C.
|
||||
*/
|
||||
#undef __P
|
||||
#undef __CONCAT
|
||||
#undef __STRING
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus) || defined(_WINDOWS) || defined(XP_OS2)
|
||||
#define __P(protos) protos /* full-blown ANSI C */
|
||||
#define __CONCAT(x,y) x ## y
|
||||
#define __STRING(x) #x
|
||||
|
||||
#define __const const /* define reserved names to standard */
|
||||
#define __signed signed
|
||||
#define __volatile volatile
|
||||
#ifndef _WINDOWS
|
||||
#if defined(__cplusplus)
|
||||
#define __inline inline /* convert to C++ keyword */
|
||||
#else
|
||||
#ifndef __GNUC__
|
||||
#define __inline /* delete GCC keyword */
|
||||
#endif /* !__GNUC__ */
|
||||
#endif /* !__cplusplus */
|
||||
#endif /* !_WINDOWS */
|
||||
|
||||
#else /* !(__STDC__ || __cplusplus) */
|
||||
#define __P(protos) () /* traditional C preprocessor */
|
||||
#define __CONCAT(x,y) x/**/y
|
||||
#define __STRING(x) "x"
|
||||
|
||||
#ifndef __GNUC__
|
||||
#define __const /* delete pseudo-ANSI C keywords */
|
||||
#define __inline
|
||||
#define __signed
|
||||
#define __volatile
|
||||
/*
|
||||
* In non-ANSI C environments, new programs will want ANSI-only C keywords
|
||||
* deleted from the program and old programs will want them left alone.
|
||||
* When using a compiler other than gcc, programs using the ANSI C keywords
|
||||
* inline, signed etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
|
||||
* When using "gcc -traditional", we assume that this is the intent; if
|
||||
* __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
|
||||
*/
|
||||
#ifndef NO_ANSI_KEYWORDS
|
||||
#define inline /* delete ANSI C keywords */
|
||||
#define signed
|
||||
#define volatile
|
||||
#endif
|
||||
#endif /* !__GNUC__ */
|
||||
#endif /* !(__STDC__ || __cplusplus) */
|
||||
|
||||
/*
|
||||
* GCC1 and some versions of GCC2 declare dead (non-returning) and
|
||||
* pure (no side effects) functions using "volatile" and "const";
|
||||
* unfortunately, these then cause warnings under "-ansi -pedantic".
|
||||
* GCC2 uses a new, peculiar __attribute__((attrs)) style. All of
|
||||
* these work for GNU C++ (modulo a slight glitch in the C++ grammar
|
||||
* in the distribution version of 2.5.5).
|
||||
*/
|
||||
#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5
|
||||
#define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */
|
||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
||||
#define __dead __volatile
|
||||
#define __pure __const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Delete pseudo-keywords wherever they are not available or needed. */
|
||||
#ifndef __dead
|
||||
#define __dead
|
||||
#define __pure
|
||||
#endif
|
||||
|
||||
#ifdef AIXV3
|
||||
/* Wont compile without const. Need a cleaner way to handle this. */
|
||||
#ifdef const
|
||||
#undef const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* !_CDEFS_H_ */
|
||||
76
mozilla/include/cgi.h
Normal file
76
mozilla/include/cgi.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef __cgi_h_
|
||||
#define __cgi_h_
|
||||
|
||||
/*
|
||||
** CGI assist library. Portability layer for writing correctly behaving
|
||||
** CGI programs.
|
||||
*/
|
||||
#include "ds.h"
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/*
|
||||
** Read in the input, generating a single long string out of it. CGI
|
||||
** programs normally get the value of various forms elements as input.
|
||||
*/
|
||||
extern char *CGI_GatherInput(FILE *in);
|
||||
|
||||
/*
|
||||
** Given a null terminated string, compress it in place, converting
|
||||
** "funny characters" into their ascii equivalent. Maps "+" to space and
|
||||
** %xx to the binary version of xx, where xx is a pair of hex digits.
|
||||
*/
|
||||
extern void CGI_CompressString(char *s);
|
||||
|
||||
/*
|
||||
** Convert a string into an argument vector. This seperates the incoming
|
||||
** string into pieces, and calls CGI_CompressString to compress the
|
||||
** pieces. This allocates memory for the return value only.
|
||||
*/
|
||||
extern char **CGI_ConvertStringToArgVec(char *string, int *argcp);
|
||||
|
||||
/*
|
||||
** Look for the variable called "name" in the argv. Return a pointer to
|
||||
** the value portion of the variable if found, zero otherwise. this does
|
||||
** not malloc memory.
|
||||
*/
|
||||
extern char *CGI_GetVariable(char *name, int argc, char **argv);
|
||||
|
||||
/* Return non-zero if the variable string is not empty */
|
||||
#define CGI_IsEmpty(var) (!(var) || ((var)[0] == 0))
|
||||
|
||||
/*
|
||||
** Return true if the server that started the cgi running is using
|
||||
** security (https).
|
||||
*/
|
||||
extern DSBool CGI_IsSecureServer(void);
|
||||
|
||||
/*
|
||||
** Concatenate strings to produce a single string.
|
||||
*/
|
||||
extern char *CGI_Cat(char *, ...);
|
||||
|
||||
/* Escape a string, cgi style */
|
||||
char *CGI_Escape(char *in);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* __cgi_h_ */
|
||||
59
mozilla/include/client.h
Normal file
59
mozilla/include/client.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* This file should be included after xp_mcom.h
|
||||
*
|
||||
* All definitions for intermodule communications in the Netscape
|
||||
* client should be contained in this file
|
||||
*/
|
||||
|
||||
#ifndef _CLIENT_H_
|
||||
#define _CLIENT_H_
|
||||
|
||||
#define NEW_FE_CONTEXT_FUNCS
|
||||
|
||||
/* include header files needed for prototypes/etc */
|
||||
|
||||
#include "xp_mcom.h"
|
||||
|
||||
#include "ntypes.h" /* typedefs for commonly used Netscape data structures */
|
||||
#include "fe_proto.h" /* all the standard FE functions */
|
||||
#include "proto.h" /* library functions */
|
||||
|
||||
/* global data structures */
|
||||
#include "structs.h"
|
||||
#include "merrors.h"
|
||||
|
||||
#ifndef XP_MAC /* don't include everything in the world */
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
/* include other bits of the Netscape client library */
|
||||
#include "lo_ele.h" /* Layout structures */
|
||||
#include "net.h"
|
||||
#include "gui.h"
|
||||
#include "shist.h"
|
||||
#include "hotlist.h"
|
||||
#include "glhist.h"
|
||||
#include "mime.h"
|
||||
|
||||
#endif /* !XP_MAC */
|
||||
|
||||
#endif /* _CLIENT_H_ */
|
||||
|
||||
220
mozilla/include/csid.h
Normal file
220
mozilla/include/csid.h
Normal file
@@ -0,0 +1,220 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/* csid.h */
|
||||
|
||||
#ifndef _CSID_H_
|
||||
#define _CSID_H_
|
||||
|
||||
/* Codeset type */
|
||||
#define SINGLEBYTE 0x0000 /* 0000 0000 0000 0000 = 0 */
|
||||
#define MULTIBYTE 0x0100 /* 0000 0001 0000 0000 = 256 */
|
||||
#define STATEFUL 0x0200 /* 0000 0010 0000 0000 = 512 */
|
||||
#define WIDECHAR 0x0300 /* 0000 0011 0000 0000 = 768 */
|
||||
#define CODESET_MASK 0x0F00 /* 0000 1111 0000 0000 = 3840 */
|
||||
|
||||
/*
|
||||
* Check for double byte encodings
|
||||
* (should distinguish 2 byte from true multibyte)
|
||||
*/
|
||||
#define IS_16BIT_ENCODING(x) (((x)&CODESET_MASK) == MULTIBYTE)
|
||||
|
||||
/* line-break on spaces */
|
||||
#define CS_SPACE 0x0400 /* 0000 0100 0000 0000 = 1024 */
|
||||
|
||||
/* Auto Detect Mode */
|
||||
#define CS_AUTO 0x0800 /* 0000 1000 0000 0000 = 2048 */
|
||||
|
||||
|
||||
/* Code Set IDs */
|
||||
/* CS_DEFAULT: used if no charset param in header */
|
||||
/* CS_UNKNOWN: used for unrecognized charset */
|
||||
|
||||
/* type id */
|
||||
#define CS_DEFAULT (SINGLEBYTE | 0) /* 0 */
|
||||
#define CS_ASCII (SINGLEBYTE | 1) /* 1 */
|
||||
#define CS_LATIN1 (SINGLEBYTE | 2) /* 2 */
|
||||
#define CS_JIS (STATEFUL | 3) /* 515 */
|
||||
#define CS_SJIS (MULTIBYTE | 4) /* 260 */
|
||||
#define CS_EUCJP (MULTIBYTE | 5) /* 261 */
|
||||
|
||||
#define CS_JIS_AUTO (CS_AUTO|STATEFUL | 3) /* 2563 */
|
||||
#define CS_SJIS_AUTO (CS_AUTO|MULTIBYTE | 4) /* 2308 */
|
||||
#define CS_EUCJP_AUTO (CS_AUTO|MULTIBYTE | 5) /* 2309 */
|
||||
|
||||
#define CS_MAC_ROMAN (SINGLEBYTE | 6) /* 6 */
|
||||
#define CS_BIG5 (MULTIBYTE | 7) /* 263 */
|
||||
#define CS_GB_8BIT (MULTIBYTE | 8) /* 264 */
|
||||
#define CS_CNS_8BIT (MULTIBYTE | 9) /* 265 */
|
||||
#define CS_LATIN2 (SINGLEBYTE | 10) /* 10 */
|
||||
#define CS_MAC_CE (SINGLEBYTE | 11) /* 11 */
|
||||
|
||||
#define CS_KSC_8BIT (MULTIBYTE|CS_SPACE | 12) /* 1292 */
|
||||
#define CS_KSC_8BIT_AUTO (CS_AUTO | MULTIBYTE|CS_SPACE | 12)
|
||||
|
||||
#define CS_2022_KR (STATEFUL | 13) /* 525 */
|
||||
#define CS_8859_3 (SINGLEBYTE | 14) /* 14 */
|
||||
#define CS_8859_4 (SINGLEBYTE | 15) /* 15 */
|
||||
#define CS_8859_5 (SINGLEBYTE | 16) /* 16 ISO Cyrillic */
|
||||
#define CS_8859_6 (SINGLEBYTE | 17) /* 17 ISO Arabic */
|
||||
#define CS_8859_7 (SINGLEBYTE | 18) /* 18 ISO Greek */
|
||||
#define CS_8859_8 (SINGLEBYTE | 19) /* 19 ISO Hebrew */
|
||||
#define CS_8859_9 (SINGLEBYTE | 20) /* 20 */
|
||||
#define CS_SYMBOL (SINGLEBYTE | 21) /* 21 */
|
||||
#define CS_DINGBATS (SINGLEBYTE | 22) /* 22 */
|
||||
#define CS_DECTECH (SINGLEBYTE | 23) /* 23 */
|
||||
#define CS_CNS11643_1 (MULTIBYTE | 24) /* 280 */
|
||||
#define CS_CNS11643_2 (MULTIBYTE | 25) /* 281 */
|
||||
#define CS_JISX0208 (MULTIBYTE | 26) /* 282 */
|
||||
#define CS_JISX0201 (SINGLEBYTE | 27) /* 27 */
|
||||
#define CS_KSC5601 (MULTIBYTE | 28) /* 284 */
|
||||
#define CS_TIS620 (SINGLEBYTE | 29) /* 29 */
|
||||
#define CS_JISX0212 (MULTIBYTE | 30) /* 286 */
|
||||
#define CS_GB2312 (MULTIBYTE | 31) /* 287 */
|
||||
#define CS_UCS2 (WIDECHAR | 32) /* 810 */
|
||||
#define CS_UCS4 (WIDECHAR | 33) /* 811 */
|
||||
#define CS_UTF8 (MULTIBYTE | 34) /* 290 */
|
||||
#define CS_UTF7 (STATEFUL | 35) /* 35 */
|
||||
#define CS_NPC (MULTIBYTE | 36) /* 292 */
|
||||
#define CS_X_BIG5 (MULTIBYTE | 37) /* 293 */
|
||||
#define CS_USRDEF2 (SINGLEBYTE | 38) /* 38 */
|
||||
|
||||
#define CS_KOI8_R (SINGLEBYTE | 39) /* 39 */
|
||||
#define CS_MAC_CYRILLIC (SINGLEBYTE | 40) /* 40 */
|
||||
#define CS_CP_1251 (SINGLEBYTE | 41) /* 41 CP1251 Windows Cyrillic */
|
||||
#define CS_MAC_GREEK (SINGLEBYTE | 42) /* 42 */
|
||||
/* CS_CP_1253 should be deleted, we should use CS_8859_7 instead */
|
||||
#define CS_CP_1253 (SINGLEBYTE | 43) /* 43 CP1253 Windows Greek */
|
||||
#define CS_CP_1250 (SINGLEBYTE | 44) /* 44 CP1250 Windows C. Europe */
|
||||
/* CS_CP_1254 should be deleted, we should use CS_8859_9 instead */
|
||||
#define CS_CP_1254 (SINGLEBYTE | 45) /* 45 CP1254 Windows Turkish */
|
||||
#define CS_MAC_TURKISH (SINGLEBYTE | 46) /* 46 */
|
||||
#define CS_GB2312_11 (MULTIBYTE | 47) /* 303 */
|
||||
#define CS_JISX0208_11 (MULTIBYTE | 48) /* 304 */
|
||||
#define CS_KSC5601_11 (MULTIBYTE | 49) /* 305 */
|
||||
#define CS_CNS11643_1110 (MULTIBYTE | 50) /* 306 */
|
||||
#define CS_UCS2_SWAP (WIDECHAR | 51) /* 819 */
|
||||
#define CS_IMAP4_UTF7 (STATEFUL | 52) /* 564 */
|
||||
#define CS_CP_850 (SINGLEBYTE | 53) /* 53 PC Latin 1 */
|
||||
#define CS_CP_852 (SINGLEBYTE | 54) /* 54 PC Latin 2 */
|
||||
#define CS_CP_855 (SINGLEBYTE | 55) /* 55 PC Cyrillic */
|
||||
#define CS_CP_857 (SINGLEBYTE | 56) /* 56 PC Turkish */
|
||||
#define CS_CP_862 (SINGLEBYTE | 57) /* 57 PC Hebrew */
|
||||
#define CS_CP_864 (SINGLEBYTE | 58) /* 58 PC Arabic */
|
||||
#define CS_CP_866 (SINGLEBYTE | 59) /* 59 PC Russian */
|
||||
#define CS_CP_874 (SINGLEBYTE | 60) /* 60 PC Thai */
|
||||
#define CS_CP_1257 (SINGLEBYTE | 61) /* 61 Windows Baltic */
|
||||
#define CS_CP_1258 (SINGLEBYTE | 62) /* 62 Windows Vietnamese */
|
||||
#define INTL_CHAR_SET_MAX 63 /* must be highest + 1 */
|
||||
|
||||
|
||||
#define CS_USER_DEFINED_ENCODING (SINGLEBYTE | 254) /* 254 */
|
||||
#define CS_UNKNOWN (SINGLEBYTE | 255) /* 255 */
|
||||
|
||||
#define IS_UTF8_CSID(x) (((x)&0xFF)== (CS_UTF8&0xFF))
|
||||
#define IS_UNICODE_CSID(x) \
|
||||
( (((x)&0xFF)== (CS_UCS2&0xFF)) \
|
||||
|| (((x)&0xFF)== (CS_UTF8&0xFF)) \
|
||||
|| (((x)&0xFF)== (CS_UTF7&0xFF)) )
|
||||
|
||||
/* The trigger is passing the parameter to
|
||||
PA_FetchParamValue() to satisfy its signature */
|
||||
#ifdef XP_MAC
|
||||
#define CS_FE_ASCII CS_MAC_ROMAN
|
||||
#else
|
||||
#define CS_FE_ASCII CS_LATIN1
|
||||
#endif
|
||||
|
||||
|
||||
/* Codeset # sorted by number */
|
||||
#if 0
|
||||
|
||||
0 CS_DEFAULT 0
|
||||
1 CS_ASCII 1
|
||||
2 CS_LATIN1 2
|
||||
6 CS_MAC_ROMAN 6
|
||||
10 CS_LATIN2 10
|
||||
11 CS_MAC_CE 11
|
||||
14 CS_8859_3 14
|
||||
15 CS_8859_4 15
|
||||
16 CS_8859_5 16
|
||||
17 CS_8859_6 17
|
||||
18 CS_8859_7 18
|
||||
19 CS_8859_8 19
|
||||
20 CS_8859_9 20
|
||||
21 CS_SYMBOL 21
|
||||
22 CS_DINGBATS 22
|
||||
23 CS_DECTECH 23
|
||||
27 CS_JISX0201 27
|
||||
29 CS_TIS620 29
|
||||
35 CS_UTF7 35
|
||||
38 CS_USRDEF2 38
|
||||
39 CS_KOI8_R 39
|
||||
40 CS_MAC_CYRILLIC 40
|
||||
41 CS_CP_1251 41
|
||||
42 CS_MAC_GREEK 42
|
||||
43 CS_CP_1253 43
|
||||
44 CS_CP_1250 44
|
||||
45 CS_CP_1254 45
|
||||
46 CS_MAC_TURKISH 46
|
||||
53 CS_CP_850 53
|
||||
54 CS_CP_852 54
|
||||
55 CS_CP_855 55
|
||||
56 CS_CP_857 56
|
||||
57 CS_CP_862 57
|
||||
58 CS_CP_864 58
|
||||
59 CS_CP_866 59
|
||||
59 CS_CP_874 60
|
||||
60 CS_CP_1257 61
|
||||
61 CS_CP_1258 62
|
||||
62 INTL_CHAR_SET_MAX 63
|
||||
254 CS_USER_DEFINED_ENCODING 254
|
||||
255 CS_UNKNOWN 255
|
||||
260 CS_SJIS 260
|
||||
261 CS_EUCJP 261
|
||||
263 CS_BIG5 263
|
||||
264 CS_GB_8BIT 264
|
||||
265 CS_CNS_8BIT 265
|
||||
280 CS_CNS11643_1 280
|
||||
281 CS_CNS11643_2 281
|
||||
282 CS_JISX0208 282
|
||||
284 CS_KSC5601 284
|
||||
286 CS_JISX0212 286
|
||||
287 CS_GB2312 287
|
||||
290 CS_UTF8 290
|
||||
292 CS_NPC 292
|
||||
293 CS_X_BIG5 293
|
||||
303 CS_GB2312_11 303
|
||||
304 CS_JISX0208_11 304
|
||||
305 CS_KSC5601_11 305
|
||||
306 CS_CNS11643_1110 306
|
||||
515 CS_JIS 515
|
||||
525 CS_2022_KR 525
|
||||
564 CS_IMAP4_UTF7 564
|
||||
810 CS_UCS2 810
|
||||
811 CS_UCS4 811
|
||||
819 CS_UCS2_SWAP 819
|
||||
1292 CS_KSC_8BIT 1292
|
||||
2308 CS_SJIS_AUTO 2308
|
||||
2309 CS_EUCJP_AUTO 2309
|
||||
2563 CS_JIS_AUTO 2563
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _CSID_H_ */
|
||||
36
mozilla/include/ctxtfunc.h
Normal file
36
mozilla/include/ctxtfunc.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/* the context function table
|
||||
*
|
||||
* This was typedef'd to ContextFuncs in structs.h
|
||||
*/
|
||||
#ifndef _ContextFunctions_
|
||||
#define _ContextFunctions_
|
||||
|
||||
#include "il_types.h"
|
||||
#include "cl_types.h"
|
||||
#include "xp_obs.h"
|
||||
|
||||
struct _ContextFuncs {
|
||||
#define MAKE_FE_FUNCS_STRUCT
|
||||
#include "mk_cx_fn.h"
|
||||
};
|
||||
|
||||
#endif /* _ContextFunctions_ */
|
||||
|
||||
41
mozilla/include/cvactive.h
Normal file
41
mozilla/include/cvactive.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef CV_ACTIVE
|
||||
#define CV_ACTIVE
|
||||
|
||||
#include "net.h"
|
||||
|
||||
/* define a constant to be passed to CV_MakeMultipleDocumentStream
|
||||
* as the data_object to signify that it should return
|
||||
* MK_END_OF_MULTIPART_MESSAGE when it gets to the end
|
||||
* of the multipart instead of waiting for the complete
|
||||
* function to be called
|
||||
*/
|
||||
#define CVACTIVE_SIGNAL_AT_END_OF_MULTIPART 999
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
extern NET_StreamClass *
|
||||
CV_MakeMultipleDocumentStream (int format_out,
|
||||
void *data_object,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id);
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* CV_ACTIVE */
|
||||
223
mozilla/include/dirprefs.h
Normal file
223
mozilla/include/dirprefs.h
Normal file
@@ -0,0 +1,223 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef _DIRPREFS_H_
|
||||
#define _DIRPREFS_H_
|
||||
|
||||
#define kCurrentListVersion 1
|
||||
|
||||
/* DIR_Server.dirType */
|
||||
typedef enum
|
||||
{
|
||||
LDAPDirectory,
|
||||
HTMLDirectory,
|
||||
PABDirectory
|
||||
} DirectoryType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
cn,
|
||||
givenname,
|
||||
sn,
|
||||
mail,
|
||||
telephonenumber,
|
||||
o,
|
||||
ou,
|
||||
l,
|
||||
street,
|
||||
auth,
|
||||
custom1,
|
||||
custom2,
|
||||
custom3,
|
||||
custom4,
|
||||
custom5
|
||||
} DIR_AttributeId;
|
||||
|
||||
|
||||
typedef struct _DIR_ReplicationInfo DIR_ReplicationInfo;
|
||||
|
||||
|
||||
typedef struct DIR_Server
|
||||
{
|
||||
char *description; /* human readable name */
|
||||
char *serverName; /* network host name */
|
||||
char *searchBase; /* DN suffix to search at */
|
||||
char *fileName; /* XP path name of local DB */
|
||||
char *prefId; /* name of this server's tree in JS prefs */
|
||||
int port; /* network port number */
|
||||
int maxHits; /* maximum number of hits to return */
|
||||
XP_Bool isSecure; /* use SSL? */
|
||||
XP_Bool saveResults;
|
||||
XP_Bool efficientWildcards; /* server can match substrings */
|
||||
char *lastSearchString; /* required if saving results */
|
||||
DirectoryType dirType;
|
||||
uint32 flags;
|
||||
|
||||
/* site-configurable attributes and filters */
|
||||
XP_List *customFilters;
|
||||
XP_List *customAttributes;
|
||||
char *tokenSeps;
|
||||
XP_Bool stopFiltersOnHit;
|
||||
XP_Bool isOffline;
|
||||
|
||||
/* site-configurable list of attributes whose values are DNs */
|
||||
char **dnAttributes;
|
||||
int dnAttributesCount;
|
||||
|
||||
/* site-configurable list of attributes we shouldn't display in HTML */
|
||||
char **suppressedAttributes;
|
||||
int suppressedAttributesCount;
|
||||
|
||||
/* site-configurable list of attributes for the Basic Search dialog */
|
||||
DIR_AttributeId *basicSearchAttributes;
|
||||
int basicSearchAttributesCount;
|
||||
|
||||
/* site-configurable URL to open LDAP results */
|
||||
char *customDisplayUrl;
|
||||
|
||||
/* authentication fields */
|
||||
XP_Bool enableAuth; /* Use DN and password when binding? */
|
||||
XP_Bool savePassword; /* Remember the DN and password we gave? */
|
||||
char *authDn; /* DN to give to authenticate as */
|
||||
char *password; /* Password for the DN */
|
||||
|
||||
/* replication fields */
|
||||
DIR_ReplicationInfo *replInfo;
|
||||
|
||||
} DIR_Server;
|
||||
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/* Return the list of directory servers
|
||||
* each front end hangs on to the list
|
||||
*/
|
||||
XP_List * FE_GetDirServers(void);
|
||||
|
||||
/* Since the strings in DIR_Server are allocated, we have bottleneck
|
||||
* routines to help with memory mgmt
|
||||
*/
|
||||
int DIR_CopyServer (DIR_Server *in, DIR_Server **out);
|
||||
int DIR_DeleteServer (DIR_Server *);
|
||||
int DIR_InitServer (DIR_Server *);
|
||||
|
||||
int DIR_ValidateServer (DIR_Server *);
|
||||
XP_Bool DIR_AreServersSame (DIR_Server *first, DIR_Server *second);
|
||||
int DIR_DeleteServerList(XP_List *wholeList);
|
||||
|
||||
int DIR_GetLdapServers (XP_List *wholeList, XP_List *subList);
|
||||
int DIR_ReorderLdapServers (XP_List *wholeList);
|
||||
|
||||
/* These two routines should be called to initialize and save
|
||||
* directory preferences from the XP Java Script preferences
|
||||
*/
|
||||
int DIR_GetServerPreferences (XP_List **list, const char* pabFile);
|
||||
int DIR_SaveServerPreferences (XP_List *wholeList);
|
||||
|
||||
/* This routine will clean up files for deleted directories */
|
||||
int DIR_CleanUpServerPreferences(XP_List *deletedList);
|
||||
|
||||
|
||||
#if 1
|
||||
|
||||
/* Returns a pointer into the list (not allocated, so don't free) */
|
||||
int DIR_GetPersonalAddressBook (XP_List *wholeList, DIR_Server **pab);
|
||||
int DIR_GetComposeNameCompletionAddressBook (XP_List *wholeList, DIR_Server **cab);
|
||||
|
||||
#else
|
||||
|
||||
/* Returns an allocated list of all personal address books, excluding
|
||||
* LDAP directories, replicated directories, and CABs
|
||||
*/
|
||||
XP_List *DIR_GetPersonalAddressBooks (XP_List *wholeList);
|
||||
XP_List *DIR_GetAddressBooksForCompletion (XP_List *wholeList);
|
||||
|
||||
#endif
|
||||
|
||||
void DIR_GetServerFileName(char** filename, const char* leafName);
|
||||
void DIR_SetServerFileName(DIR_Server* pServer, const char* leafName);
|
||||
|
||||
/* APIs for site-configurability of LDAP attribute names and
|
||||
* search filter behavior.
|
||||
*
|
||||
* Strings are NOT allocated, and arrays are NULL-terminated
|
||||
*/
|
||||
const char *DIR_GetAttributeName (DIR_Server *server, DIR_AttributeId id);
|
||||
const char **DIR_GetAttributeStrings (DIR_Server *server, DIR_AttributeId id);
|
||||
const char *DIR_GetFirstAttributeString (DIR_Server *server, DIR_AttributeId id);
|
||||
const char *DIR_GetFilterString (DIR_Server *server);
|
||||
const char *DIR_GetTokenSeparators (DIR_Server *server);
|
||||
XP_Bool DIR_RepeatFilterForTokens (DIR_Server *server, const char *filter);
|
||||
XP_Bool DIR_SubstStarsForSpaces (DIR_Server *server, const char *filter);
|
||||
XP_Bool DIR_UseCustomAttribute (DIR_Server *server, DIR_AttributeId id);
|
||||
|
||||
XP_Bool DIR_IsDnAttribute (DIR_Server *s, const char *attr);
|
||||
XP_Bool DIR_IsAttributeExcludedFromHtml (DIR_Server *s, const char *attr);
|
||||
|
||||
int DIR_AttributeNameToId (const char *attrName, DIR_AttributeId *id);
|
||||
|
||||
/* APIs for authentication */
|
||||
void DIR_SetAuthDN (DIR_Server *s, const char *dn);
|
||||
void DIR_SetPassword (DIR_Server *s, const char *password);
|
||||
|
||||
/* APIs for unescaping LDAP special chars */
|
||||
char *DIR_Unescape (const char *src, XP_Bool makeHtml);
|
||||
XP_Bool DIR_IsEscapedAttribute (DIR_Server *s, const char *attrib);
|
||||
|
||||
/* APIs for replication */
|
||||
int DIR_ValidateRootDSE (DIR_Server *s, int32 gen, int32 first, int32 last);
|
||||
|
||||
/* API for building a URL */
|
||||
char *DIR_BuildUrl (DIR_Server *s, const char *dn, XP_Bool forAddToAB);
|
||||
|
||||
/* Flags manipulation */
|
||||
|
||||
#define DIR_AUTO_COMPLETE_ENABLED 0x00000001
|
||||
#define DIR_ENABLE_AUTH 0x00000002
|
||||
#define DIR_SAVE_PASSWORD 0x00000004
|
||||
#define DIR_UTF8_DISABLED 0x00000008 /* not used by the FEs */
|
||||
#define DIR_IS_SECURE 0x00000010
|
||||
#define DIR_SAVE_RESULTS 0x00000020 /* not used by the FEs */
|
||||
#define DIR_EFFICIENT_WILDCARDS 0x00000040 /* not used by the FEs */
|
||||
#define DIR_LDAPV3_SUPPORTED 0x00000080 /* not used by the FEs */
|
||||
#define DIR_LDAPV3_NOT_SUPPORTED 0x00000100 /* not used by the FEs */
|
||||
#define DIR_VIRTUAL_LISTBOX_SUPPORTED 0x00000200 /* not used by the FEs */
|
||||
#define DIR_VIRTUAL_LISTBOX_NOT_SUPPORTED 0x00000400 /* not used by the FEs */
|
||||
|
||||
void DIR_SetAutoCompleteEnabled (XP_List *list, DIR_Server *server, XP_Bool onOrOff);
|
||||
|
||||
XP_Bool DIR_TestFlag (DIR_Server *server, uint32 flag);
|
||||
void DIR_SetFlag (DIR_Server *server, uint32 flag);
|
||||
void DIR_ClearFlag (DIR_Server *server, uint32 flag);
|
||||
void DIR_ForceFlag (DIR_Server *server, uint32 flag, XP_Bool forceOnOrOff);
|
||||
|
||||
char *DIR_ConvertToServerCharSet (DIR_Server *s, char *src, int16 srcCsid);
|
||||
char *DIR_ConvertFromServerCharSet (DIR_Server *s, char *src, int16 dstCsid);
|
||||
|
||||
#ifdef MOZ_LDAP
|
||||
|
||||
/* Does the LDAP client lib work for SSL */
|
||||
#include "ldap.h"
|
||||
int DIR_SetupSecureConnection (LDAP *ld);
|
||||
|
||||
#endif /* MOZ_LDAP */
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
|
||||
#endif /* dirprefs.h */
|
||||
267
mozilla/include/ds.h
Normal file
267
mozilla/include/ds.h
Normal file
@@ -0,0 +1,267 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef __DS_h_
|
||||
#define __DS_h_
|
||||
#ifdef XP_WIN32
|
||||
#include <windows.h>
|
||||
#endif /* XP_WIN32 */
|
||||
|
||||
#ifdef XP_OS2
|
||||
#define INCL_WIN
|
||||
#define INCL_GPI
|
||||
#define TID OS2TID /* global rename in OS2 H's! */
|
||||
#include <os2.h>
|
||||
#undef TID /* and restore */
|
||||
#endif
|
||||
|
||||
#include "xp_mcom.h"
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/* Typedefs */
|
||||
typedef struct DSArrayStr DSArray;
|
||||
typedef struct DSLinkStr DSLink;
|
||||
typedef struct DSListStr DSList;
|
||||
typedef struct DSArenaStr DSArena;
|
||||
|
||||
#define DS_MIN(a,b) ((a)<(b)?(a):(b))
|
||||
#define DS_MAX(a,b) ((a)>(b)?(a):(b))
|
||||
|
||||
/*
|
||||
** Your basic boolean. Done as an enum to cause compiler warnings when a
|
||||
** boolean procedure doesn't return the right value.
|
||||
** LISA SEZ: Please do not use this; use PRBool instead. Eventually
|
||||
** (as soon as I can "make it so") DSBool is going away in favor of PRBool.
|
||||
*/
|
||||
typedef enum DSBoolEnum {
|
||||
DSTrue = 1,
|
||||
DSFalse = 0
|
||||
} DSBool;
|
||||
|
||||
/*
|
||||
** A status code. Status's are used by procedures that return status
|
||||
** values. Again the motivation is so that a compiler can generate
|
||||
** warnings when return values are wrong. Correct testing of status codes:
|
||||
**
|
||||
** DSStatus rv;
|
||||
** rv = some_function (some_argument);
|
||||
** if (rv != DSSuccess)
|
||||
** do_an_error_thing();
|
||||
**
|
||||
*/
|
||||
typedef enum DSStatusEnum {
|
||||
DSWouldBlock = -2,
|
||||
DSFailure = -1,
|
||||
DSSuccess = 0
|
||||
} DSStatus;
|
||||
|
||||
/*
|
||||
** A comparison code. Used for procedures that return comparision
|
||||
** values. Again the motivation is so that a compiler can generate
|
||||
** warnings when return values are wrong.
|
||||
*/
|
||||
typedef enum DSComparisonEnum {
|
||||
DSLessThan = -1,
|
||||
DSEqual = 0,
|
||||
DSGreaterThan = 1
|
||||
} DSComparison;
|
||||
|
||||
typedef void (*DSElementFreeFunc)(void *e1, DSBool freeit);
|
||||
typedef int (*DSElementCompareFunc)(void *e1, void *e2);
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
/*
|
||||
** Simple variable length array of pointers. The array keeps a NULL
|
||||
** pointer at the end of the array.
|
||||
*/
|
||||
struct DSArrayStr {
|
||||
void **things;
|
||||
DSElementFreeFunc freeElement;
|
||||
};
|
||||
|
||||
extern DSArray *DS_CreateArray(int slots);
|
||||
extern DSStatus DS_GrowArray(DSArray *da, int slots);
|
||||
extern void DS_SetArrayMethods(DSArray *da, DSElementFreeFunc free);
|
||||
extern void DS_DestroyArray(DSArray *da, DSBool freeit);
|
||||
extern void DS_Sort(DSArray *da, DSElementCompareFunc compare);
|
||||
extern int DS_Elements(DSArray *da);
|
||||
extern DSStatus DS_AddElement(DSArray *da, void *element);
|
||||
extern void DS_RemoveElement(DSArray *da, void *element);
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
/*
|
||||
** Circular linked list. Each link contains a pointer to the object that
|
||||
** is actually in the list.
|
||||
*/
|
||||
struct DSLinkStr {
|
||||
DSLink *next;
|
||||
DSLink *prev;
|
||||
void *thing;
|
||||
};
|
||||
|
||||
struct DSListStr {
|
||||
DSLink link;
|
||||
};
|
||||
|
||||
#define DS_InitList(lst) \
|
||||
{ \
|
||||
(lst)->link.next = &(lst)->link; \
|
||||
(lst)->link.prev = &(lst)->link; \
|
||||
(lst)->link.thing = 0; \
|
||||
}
|
||||
|
||||
#define DS_ListEmpty(lst) \
|
||||
((lst)->link.next == &(lst)->link)
|
||||
|
||||
#define DS_ListHead(lst) \
|
||||
((lst)->link.next)
|
||||
|
||||
#define DS_ListTail(lst) \
|
||||
((lst)->link.prev)
|
||||
|
||||
#define DS_ListIterDone(lst,lnk) \
|
||||
((lnk) == &(lst)->link)
|
||||
|
||||
#define DS_AppendLink(lst,lnk) \
|
||||
{ \
|
||||
(lnk)->next = &(lst)->link; \
|
||||
(lnk)->prev = (lst)->link.prev; \
|
||||
(lst)->link.prev->next = (lnk); \
|
||||
(lst)->link.prev = (lnk); \
|
||||
}
|
||||
|
||||
#define DS_InsertLink(lst,lnk) \
|
||||
{ \
|
||||
(lnk)->next = (lst)->link.next; \
|
||||
(lnk)->prev = &(lst)->link; \
|
||||
(lst)->link.next->prev = (lnk); \
|
||||
(lst)->link.next = (lnk); \
|
||||
}
|
||||
|
||||
#define DS_RemoveLink(lnk) \
|
||||
{ \
|
||||
(lnk)->next->prev = (lnk)->prev; \
|
||||
(lnk)->prev->next = (lnk)->next; \
|
||||
(lnk)->next = 0; \
|
||||
(lnk)->prev = 0; \
|
||||
}
|
||||
|
||||
extern DSLink *DS_NewLink(void *thing);
|
||||
extern DSLink *DS_FindLink(DSList *lst, void *thing);
|
||||
extern void DS_DestroyLink(DSLink *lnk, DSBool freeit);
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
/*
|
||||
** Memory manager
|
||||
*/
|
||||
|
||||
/*
|
||||
** at one time XP_Block was a float* to force clients to cast things
|
||||
** before use. Now DSBlock is defined since that will be most convenient
|
||||
** for almost all uses.
|
||||
*/
|
||||
|
||||
typedef unsigned char *DSBlock;
|
||||
/*
|
||||
** Allocate some memory. Always allocates at least one byte of memory.
|
||||
*/
|
||||
extern void *DS_Alloc(size_t bytes);
|
||||
|
||||
/*
|
||||
** Reallocate some memory, growing or shrinking the memory.
|
||||
*/
|
||||
extern void *DS_Realloc(void *oldptr, size_t bytes);
|
||||
|
||||
/*
|
||||
** Allocate and then zero some memory. Always allocates at least one byte
|
||||
** of memory.
|
||||
*/
|
||||
extern void *DS_Zalloc(size_t bytes);
|
||||
|
||||
/*
|
||||
** Allocate a block of memory. Always allocates at least one byte of
|
||||
** memory.
|
||||
*/
|
||||
extern DSBlock DS_AllocBlock(size_t bytes);
|
||||
|
||||
/*
|
||||
** Reallocate a block of memory, growing or shrinking the memory block.
|
||||
*/
|
||||
extern DSBlock DS_ReallocBlock(DSBlock block, size_t newBytes);
|
||||
|
||||
/*
|
||||
** Free a block of memory. Safe to use on null pointers.
|
||||
*/
|
||||
extern void DS_FreeBlock(DSBlock block);
|
||||
|
||||
/*
|
||||
** Free a chunk of memory. Safe to use on null pointers.
|
||||
*/
|
||||
extern void DS_Free(void *ptr);
|
||||
|
||||
/*
|
||||
** Zero and then free a chunk of memory. Safe to use on null pointers.
|
||||
*/
|
||||
extern void DS_Zfree(void *ptr, size_t bytes);
|
||||
|
||||
/*
|
||||
* Low cost Malloc Arenas.
|
||||
*
|
||||
* The chunks are a linked list.
|
||||
* The beginning of each chunk is a pointer to the next chunk.
|
||||
*/
|
||||
struct DSArenaStr {
|
||||
unsigned long chunkSize; /* size of each chunk */
|
||||
unsigned int refCount; /* reference count */
|
||||
void ** firstChunk; /* pointer to first chunk */
|
||||
void ** lastChunk; /* pointer to last chunk */
|
||||
void * pLast; /* last item allocated */
|
||||
void * pCur; /* beginning of free area */
|
||||
void * pCurEnd; /* end of free area in current chunk */
|
||||
};
|
||||
|
||||
/* make a new arena */
|
||||
extern DSArena *
|
||||
DS_NewArena(unsigned long chunkSize);
|
||||
|
||||
/* destroy an arena, and free all memory associated with it */
|
||||
extern void
|
||||
DS_FreeArena(DSArena *arena, DSBool zero);
|
||||
|
||||
/* malloc a chunk of data from the arena */
|
||||
extern void *
|
||||
DS_ArenaAlloc(DSArena *arena, unsigned long size);
|
||||
|
||||
/* malloc a chunk of data from the arena, zero filling it */
|
||||
extern void *
|
||||
DS_ArenaZalloc(DSArena *arena, unsigned long size);
|
||||
|
||||
/* change the size of an object, works best if it was the last object
|
||||
* allocated
|
||||
*/
|
||||
extern void *
|
||||
DS_ArenaGrow(DSArena *arena, void *pOld, unsigned long oldsize,
|
||||
unsigned long newsize);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* __DS_h_ */
|
||||
33
mozilla/include/dserr.h
Normal file
33
mozilla/include/dserr.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef __DS_ERR_h_
|
||||
#define __DS_ERR_h_
|
||||
|
||||
#define DS_ERROR_BASE (-0x1000)
|
||||
#define DS_ERROR_LIMIT (DS_ERROR_BASE + 1000)
|
||||
|
||||
#define IS_DS_ERROR(code) \
|
||||
(((code) >= DS_ERROR_BASE) && ((code) < DS_ERROR_LIMIT))
|
||||
|
||||
/*
|
||||
** DS library error codes
|
||||
*/
|
||||
#define DS_ERROR_OUT_OF_MEMORY (DS_ERROR_BASE + 0)
|
||||
|
||||
#endif /* __DS_ERR_h_ */
|
||||
1378
mozilla/include/edt.h
Normal file
1378
mozilla/include/edt.h
Normal file
File diff suppressed because it is too large
Load Diff
653
mozilla/include/edttypes.h
Normal file
653
mozilla/include/edttypes.h
Normal file
@@ -0,0 +1,653 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* File defines external editor types.
|
||||
*
|
||||
* These types are remapped internally to the editor.
|
||||
*/
|
||||
|
||||
#ifndef _edt_types_h_
|
||||
#define _edt_types_h_
|
||||
|
||||
#ifndef EDITOR_TYPES
|
||||
#define ED_Element void
|
||||
#define ED_Buffer void
|
||||
#define ED_TagCursor void
|
||||
#define ED_BitArray void
|
||||
#endif
|
||||
|
||||
#include "xp_core.h"
|
||||
|
||||
/* Number of "Netscape Colors" All are in
|
||||
* Color cube
|
||||
*/
|
||||
#define MAX_NS_COLORS 70
|
||||
|
||||
typedef int32 ED_BufferOffset;
|
||||
|
||||
/*
|
||||
* Handle to Internal structure used for maintaining links.
|
||||
*/
|
||||
typedef struct ED_Link* ED_LinkId;
|
||||
#define ED_LINK_ID_NONE 0
|
||||
|
||||
/* this id is passed to FE_GetImageData.. when it returns, we know to pass
|
||||
* the call to EDT_SetImageData
|
||||
*/
|
||||
#define ED_IMAGE_LOAD_HACK_ID -10
|
||||
|
||||
typedef enum {
|
||||
ED_ELEMENT_NONE, /* Not returned from EDT_GetCurrentElement, needed to have a "not known" value */
|
||||
ED_ELEMENT_SELECTION, /* a selection instead of a single element */
|
||||
ED_ELEMENT_TEXT,
|
||||
ED_ELEMENT_IMAGE,
|
||||
ED_ELEMENT_HRULE,
|
||||
ED_ELEMENT_UNKNOWN_TAG,
|
||||
ED_ELEMENT_TARGET,
|
||||
ED_ELEMENT_TABLE, /* Keep these at the end so we can use type >= ED_ELEMENT_TABLE to test for any of them */
|
||||
ED_ELEMENT_CELL,
|
||||
ED_ELEMENT_ROW, /* May not need these. Currently returning ED_ELEMENT_CELL instead */
|
||||
ED_ELEMENT_COL
|
||||
} ED_ElementType;
|
||||
|
||||
typedef enum {
|
||||
ED_CARET_BEFORE = 0,
|
||||
ED_CARET_AFTER = 1
|
||||
} ED_CaretObjectPosition;
|
||||
|
||||
#define TF_NONE 0
|
||||
#define TF_BOLD 1
|
||||
#define TF_ITALIC 2
|
||||
#define TF_FIXED 4
|
||||
#define TF_SUPER 8
|
||||
#define TF_SUB 0x10
|
||||
#define TF_STRIKEOUT 0x20
|
||||
#define TF_BLINK 0x40
|
||||
#define TF_FONT_COLOR 0x80 /* set if font has color */
|
||||
#define TF_FONT_SIZE 0x100 /* set if font has size */
|
||||
#define TF_HREF 0x200
|
||||
#define TF_SERVER 0x400
|
||||
#define TF_SCRIPT 0x800
|
||||
#define TF_STYLE 0x1000
|
||||
#define TF_UNDERLINE 0x2000
|
||||
#define TF_FONT_FACE 0x4000
|
||||
#define TF_NOBREAK 0x8000
|
||||
#define TF_SPELL 0x10000
|
||||
#define TF_INLINEINPUT 0x20000
|
||||
#define TF_INLINEINPUTTHICK 0x40000
|
||||
#define TF_INLINEINPUTDOTTED 0x80000
|
||||
#define TF_FONT_WEIGHT 0x100000
|
||||
#define TF_FONT_POINT_SIZE 0x200000
|
||||
|
||||
typedef int32 ED_TextFormat; /* Prefered type for the editor text format. */
|
||||
typedef ED_TextFormat ED_ETextFormat; /* Alias for old code. Remove when possible. */
|
||||
|
||||
/* Similar to ED_TextFormat. Used when multiple cells are represented in EDT_TableCellData */
|
||||
|
||||
#define CF_NONE 0
|
||||
#define CF_ALIGN 1
|
||||
#define CF_VALIGN 2
|
||||
#define CF_COLSPAN 4
|
||||
#define CF_ROWSPAN 8
|
||||
#define CF_HEADER 0x10
|
||||
#define CF_NOWRAP 0x20
|
||||
#define CF_WIDTH 0x40
|
||||
#define CF_HEIGHT 0x80
|
||||
#define CF_BACK_COLOR 0x100
|
||||
#define CF_BACK_IMAGE 0x200
|
||||
#define CF_BACK_NOSAVE 0x400
|
||||
#define CF_EXTRA_HTML 0x800
|
||||
|
||||
typedef int32 ED_CellFormat; /* Prefered type for the editor cell format. */
|
||||
|
||||
/*
|
||||
* The names here are confusing, and have a historical basis that is
|
||||
* lost in the mists of time. The trouble is that the "ED_ALIGN_CENTER"
|
||||
* tag is really "abscenter", while the ED_ALIGN_ABSCENTER tag is
|
||||
* really "center". (and the same for the TOP and BOTTOM tags.)
|
||||
*
|
||||
* Someday, if we have a lot of spare time we could switch the names.
|
||||
*/
|
||||
|
||||
/* CLM: Swapped bottom and center tags -- should match latest extensions now?
|
||||
* Note: BASELINE is not written out (this is default display mode)
|
||||
*/
|
||||
typedef enum {
|
||||
ED_ALIGN_DEFAULT = -1,
|
||||
ED_ALIGN_CENTER = 0, /* abscenter */
|
||||
ED_ALIGN_LEFT = 1, /* left */
|
||||
ED_ALIGN_RIGHT = 2, /* right */
|
||||
ED_ALIGN_TOP = 3, /* texttop */
|
||||
ED_ALIGN_BOTTOM = 4, /* absbottom */
|
||||
ED_ALIGN_BASELINE = 5, /* baseline */
|
||||
ED_ALIGN_ABSCENTER = 6, /* center */
|
||||
ED_ALIGN_ABSBOTTOM = 7, /* bottom */
|
||||
ED_ALIGN_ABSTOP = 8 /* top */
|
||||
} ED_Alignment;
|
||||
|
||||
|
||||
/*------------------- TABLE SIZING AND SELECTION --------------------*/
|
||||
|
||||
/* SizeStyle defines */
|
||||
#define ED_SIZE_NONE 0
|
||||
#define ED_SIZE_TOP 0x0001
|
||||
#define ED_SIZE_RIGHT 0x0002
|
||||
#define ED_SIZE_BOTTOM 0x0004
|
||||
#define ED_SIZE_LEFT 0x0008
|
||||
#define ED_SIZE_ADD_ROWS 0x0010
|
||||
#define ED_SIZE_ADD_COLS 0x0020
|
||||
|
||||
/* Hotspot at corners */
|
||||
#define ED_SIZE_TOP_RIGHT (ED_SIZE_TOP | ED_SIZE_RIGHT)
|
||||
#define ED_SIZE_BOTTOM_RIGHT (ED_SIZE_BOTTOM | ED_SIZE_RIGHT)
|
||||
#define ED_SIZE_TOP_LEFT (ED_SIZE_TOP | ED_SIZE_LEFT)
|
||||
#define ED_SIZE_BOTTOM_LEFT (ED_SIZE_BOTTOM | ED_SIZE_LEFT)
|
||||
|
||||
typedef intn ED_SizeStyle;
|
||||
|
||||
typedef enum { /* Return value for EDT_GetTableHitRegion) */
|
||||
ED_HIT_NONE,
|
||||
ED_HIT_SEL_TABLE, /* Upper left corner */
|
||||
ED_HIT_SEL_COL, /* Near top table border */
|
||||
ED_HIT_SEL_ROW, /* Near left table border */
|
||||
ED_HIT_SEL_CELL, /* Near top cell border */
|
||||
ED_HIT_SEL_ALL_CELLS, /* Upper left corner when Ctrl is pressed */
|
||||
ED_HIT_SIZE_TABLE_WIDTH, /* Near right table border */
|
||||
ED_HIT_SIZE_TABLE_HEIGHT, /* Near bottom table border */
|
||||
ED_HIT_SIZE_COL, /* Near right border of a cell and between columns */
|
||||
ED_HIT_SIZE_ROW, /* Near bottom border of a cell and between columns */
|
||||
ED_HIT_ADD_ROWS, /* Lower left corner */
|
||||
ED_HIT_ADD_COLS, /* Lower right corner */
|
||||
ED_HIT_DRAG_TABLE, /* Near bottom border and between rows when table or cell is already selected */
|
||||
ED_HIT_CHANGE_COLSPAN, /* Near Right border of cell having COLSPAN (Not used yet) */
|
||||
ED_HIT_CHANGE_ROWSPAN /* Bottom edge of cell having ROWSPAN (Not used yet) */
|
||||
} ED_HitType;
|
||||
|
||||
typedef enum { /* Return types for EDT_GetTableDragDropRegion */
|
||||
ED_DROP_NONE, /* Don't allow drop - when pasting wouldn't change anything */
|
||||
ED_DROP_NORMAL, /* No special table behavior - do the same as any HTML drop */
|
||||
ED_DROP_INSERT_BEFORE, /* Between columns - near left border of cell when source = column */
|
||||
ED_DROP_INSERT_AFTER, /* Between columns - near right border of cell when source = column */
|
||||
ED_DROP_INSERT_ABOVE, /* Between rows - near top border of cell when source = row */
|
||||
ED_DROP_INSERT_BELOW, /* Between rows - near bottom border of cell when source = row */
|
||||
ED_DROP_REPLACE_CELL, /* Inside cell - when we want to replace cell contents */
|
||||
ED_DROP_APPEND_CONTENTS /* Inside cell - when we append to existing contents */
|
||||
} ED_DropType;
|
||||
|
||||
struct _EDT_DragTableData {
|
||||
ED_HitType iSourceType; /* One of the ED_HIT_SEL_... enums */
|
||||
ED_DropType iDropType; /* One of above enum values */
|
||||
LO_Element *pFirstSelectedCell; /* First cell in source being dragged */
|
||||
LO_Element *pDragOverCell; /* Cell being dragged over */
|
||||
intn iRows; /* Number of rows */
|
||||
intn iColumns; /* and columns in selection */
|
||||
int32 X; /* Location to place highlighting or make caret */
|
||||
int32 Y; /* to show where to drop cells */
|
||||
int32 iWidth;
|
||||
int32 iHeight;
|
||||
};
|
||||
typedef struct _EDT_DragTableData EDT_DragTableData;
|
||||
|
||||
|
||||
typedef enum { /* Return values from EDT_GetMergeCellsType */
|
||||
ED_MERGE_NONE,
|
||||
ED_MERGE_NEXT_CELL,
|
||||
ED_MERGE_SELECTED_CELLS
|
||||
} ED_MergeType;
|
||||
|
||||
/* Used with EDT_ChangeTableSelection to tell if we should move
|
||||
* to next Cell, Row, or Columns along with changing the selected cells
|
||||
*/
|
||||
typedef enum {
|
||||
ED_MOVE_NONE,
|
||||
ED_MOVE_PREV,
|
||||
ED_MOVE_NEXT
|
||||
} ED_MoveSelType;
|
||||
|
||||
/*--------------------------- HREF --------------------------------*/
|
||||
|
||||
struct _EDT_HREFData {
|
||||
char *pURL;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_HREFData EDT_HREFData;
|
||||
|
||||
/*--------------------------- Image --------------------------------*/
|
||||
|
||||
struct _EDT_ImageData {
|
||||
XP_Bool bIsMap;
|
||||
/* char *pUseMap; created with XP_ALLOC() Now in pExtra, hardts */
|
||||
ED_Alignment align;
|
||||
char *pSrc;
|
||||
char *pLowSrc;
|
||||
char *pName;
|
||||
char *pAlt;
|
||||
int32 iWidth;
|
||||
int32 iHeight;
|
||||
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE, else = pixels (default) */
|
||||
XP_Bool bHeightPercent;
|
||||
int32 iHSpace;
|
||||
int32 iVSpace;
|
||||
int32 iBorder;
|
||||
/* Added hardts */
|
||||
XP_Bool bNoSave;
|
||||
/* Added by CLM: */
|
||||
int32 iOriginalWidth; /* Width and Height we got on initial loading */
|
||||
int32 iOriginalHeight;
|
||||
EDT_HREFData *pHREFData;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_ImageData EDT_ImageData;
|
||||
|
||||
/*--------------------------- Target --------------------------------*/
|
||||
|
||||
struct _EDT_TargetData {
|
||||
char *pName;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_TargetData EDT_TargetData;
|
||||
|
||||
/*--------------------------- Character --------------------------------*/
|
||||
#define ED_FONT_POINT_SIZE_DEFAULT 0
|
||||
#define ED_FONT_POINT_SIZE_MIN 1
|
||||
#define ED_FONT_POINT_SIZE_MAX 1000
|
||||
|
||||
#define ED_FONT_WEIGHT_MIN 100
|
||||
#define ED_FONT_WEIGHT_NORMAL 400
|
||||
#define ED_FONT_WEIGHT_BOLD 700
|
||||
#define ED_FONT_WEIGHT_MAX 900
|
||||
|
||||
enum {
|
||||
ED_FONT_VARIABLE,
|
||||
ED_FONT_FIXED,
|
||||
ED_FONT_LOCAL
|
||||
};
|
||||
|
||||
struct _EDT_CharacterData {
|
||||
ED_TextFormat mask; /* bits to set or get */
|
||||
ED_TextFormat values; /* values of the bits in the mask */
|
||||
LO_Color *pColor; /* color if mask bit is set */
|
||||
int32 iSize; /* size if mask bit is set */
|
||||
EDT_HREFData *pHREFData; /* href if mask bit is set */
|
||||
ED_LinkId linkId; /* internal use only */
|
||||
char* pFontFace; /* FontFace name */
|
||||
int16 iWeight; /* font weight range = 100-900, 400=Normal, 700=Bold*/
|
||||
int16 iPointSize; /* not sure what default is! Use 0 to mean "default" */
|
||||
};
|
||||
|
||||
typedef struct _EDT_CharacterData EDT_CharacterData;
|
||||
|
||||
/*--------------------------- Horizonal Rule --------------------------------*/
|
||||
|
||||
struct _EDT_HorizRuleData {
|
||||
ED_Alignment align; /* only allows left and right alignment */
|
||||
int32 size; /* value 1 to 100 indicates line thickness */
|
||||
int32 iWidth; /* CM: default = 100% */
|
||||
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE(default), else = pixels */
|
||||
XP_Bool bNoShade;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_HorizRuleData EDT_HorizRuleData;
|
||||
|
||||
/*--------------------------- ContainerData --------------------------------*/
|
||||
|
||||
struct _EDT_ContainerData {
|
||||
ED_Alignment align; /* only allows left and right alignment */
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_ContainerData EDT_ContainerData;
|
||||
|
||||
/*--------------------------- TableData --------------------------------*/
|
||||
|
||||
struct _EDT_TableData {
|
||||
ED_Alignment align; /* ED_ALIGN_LEFT, ED_ALIGN_ABSCENTER, ED_ALIGN_RIGHT */
|
||||
ED_Alignment malign; /* margin alignment: ED_ALIGN_DEFAULT, ED_ALIGN_LEFT, ED_ALIGN_RIGHT */
|
||||
XP_Bool bUseCols; /* TRUE means COLS= will be output, which speeds up layout in 4.0 */
|
||||
int32 iRows;
|
||||
int32 iColumns;
|
||||
XP_Bool bBorderWidthDefined;
|
||||
int32 iBorderWidth;
|
||||
int32 iCellSpacing;
|
||||
int32 iCellPadding;
|
||||
int32 iInterCellSpace;
|
||||
XP_Bool bWidthDefined;
|
||||
XP_Bool bWidthPercent;
|
||||
int32 iWidth;
|
||||
int32 iWidthPixels;
|
||||
XP_Bool bHeightDefined;
|
||||
XP_Bool bHeightPercent;
|
||||
int32 iHeight;
|
||||
int32 iHeightPixels;
|
||||
LO_Color *pColorBackground; /* null in the default case */
|
||||
char *pBackgroundImage; /* null in the default case */
|
||||
XP_Bool bBackgroundNoSave;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_TableData EDT_TableData;
|
||||
|
||||
/* iTableMode param for SetTableMode() */
|
||||
#define ED_TABLE_PERCENT 0x0001 /* Convert table and all cells to use % of parent width */
|
||||
#define ED_TABLE_PIXELS 0x0002 /* Convert table and all cells to use absolute pixels */
|
||||
#define ED_TABLE_USE_CELL_WIDTH 0x0004 /* Set WIDTH param for all cells (facilitates table resizing) */
|
||||
#define ED_TABLE_NO_CELL_WIDTH 0x0008 /* Remove WIDTH param for all cells */
|
||||
#define ED_TABLE_USE_COLS 0x0010 /* Set COLS param for table (use only 1st row for column widths) */
|
||||
#define ED_TABLE_NO_COLS 0x0020 /* Remove COLS param for table (all cell widths used) */
|
||||
|
||||
/*--------------------------- TableCaptionData --------------------------------*/
|
||||
|
||||
struct _EDT_TableCaptionData {
|
||||
ED_Alignment align;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_TableCaptionData EDT_TableCaptionData;
|
||||
|
||||
/*--------------------------- TableRowData --------------------------------*/
|
||||
|
||||
struct _EDT_TableRowData {
|
||||
ED_Alignment align;
|
||||
ED_Alignment valign;
|
||||
LO_Color *pColorBackground; /* null in the default case */
|
||||
char *pBackgroundImage; /* null in the default case */
|
||||
XP_Bool bBackgroundNoSave;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_TableRowData EDT_TableRowData;
|
||||
|
||||
/*--------------------------- TableCellData --------------------------------*/
|
||||
|
||||
struct _EDT_TableCellData {
|
||||
ED_CellFormat mask; /* bits to tell us what we know for all cells */
|
||||
ED_HitType iSelectionType; /* Either: ED_HIT_SEL_CELL, ED_HIT_SEL_COL, ED_HIT_SEL_ROW, or ED_HIT_NONE */
|
||||
intn iSelectedCount; /* Number of cells selected. Usually >= 1 */
|
||||
ED_Alignment align;
|
||||
ED_Alignment valign;
|
||||
int32 iColSpan;
|
||||
int32 iRowSpan;
|
||||
XP_Bool bHeader; /* TRUE == th, FALSE == td */
|
||||
XP_Bool bNoWrap;
|
||||
int32 X;
|
||||
int32 Y;
|
||||
intn iRow;
|
||||
XP_Bool bWidthDefined;
|
||||
XP_Bool bWidthPercent;
|
||||
int32 iWidth;
|
||||
int32 iWidthPixels;
|
||||
XP_Bool bHeightDefined;
|
||||
XP_Bool bHeightPercent;
|
||||
int32 iHeight;
|
||||
int32 iHeightPixels;
|
||||
LO_Color *pColorBackground; /* null in the default case */
|
||||
char *pBackgroundImage; /* null in the default case */
|
||||
XP_Bool bBackgroundNoSave;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_TableCellData EDT_TableCellData;
|
||||
|
||||
/*--------------------------- LayerData --------------------------------*/
|
||||
|
||||
struct _EDT_LayerData {
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_LayerData EDT_LayerData;
|
||||
|
||||
/*--------------------------- DivisionData --------------------------------*/
|
||||
|
||||
struct _EDT_DivisionData {
|
||||
ED_Alignment align;
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_DivisionData EDT_DivisionData;
|
||||
|
||||
/*--------------------------- Page Properties --------------------------------*/
|
||||
struct _EDT_MetaData {
|
||||
XP_Bool bHttpEquiv; /* true, http-equiv="fdsfds", false name="fdsfds" */
|
||||
char *pName; /* http-equiv's or name's value */
|
||||
char *pContent;
|
||||
};
|
||||
|
||||
typedef struct _EDT_MetaData EDT_MetaData;
|
||||
|
||||
struct _EDT_PageData {
|
||||
LO_Color *pColorBackground; /* null in the default case */
|
||||
LO_Color *pColorLink;
|
||||
LO_Color *pColorText;
|
||||
LO_Color *pColorFollowedLink;
|
||||
LO_Color *pColorActiveLink;
|
||||
char *pBackgroundImage;
|
||||
XP_Bool bBackgroundNoSave;
|
||||
char *pFontDefURL; /* For Web Fonts. */
|
||||
XP_Bool bFontDefNoSave;
|
||||
char *pTitle;
|
||||
XP_Bool bKeepImagesWithDoc;
|
||||
};
|
||||
|
||||
typedef struct _EDT_PageData EDT_PageData;
|
||||
|
||||
typedef enum {
|
||||
ED_COLOR_BACKGROUND,
|
||||
ED_COLOR_LINK,
|
||||
ED_COLOR_TEXT,
|
||||
ED_COLOR_FOLLOWED_LINK
|
||||
} ED_EColor;
|
||||
|
||||
/*
|
||||
* CLM: Java and PlugIn data structures
|
||||
*/
|
||||
struct _EDT_ParamData {
|
||||
char *pName;
|
||||
char *pValue;
|
||||
};
|
||||
typedef struct _EDT_ParamData EDT_ParamData;
|
||||
|
||||
typedef int32 EDT_ParamID;
|
||||
|
||||
struct _EDT_PlugInData {
|
||||
EDT_ParamID ParamID; /* Identifies which Param list is associated */
|
||||
char *pSrc;
|
||||
XP_Bool bHidden;
|
||||
ED_Alignment align;
|
||||
int32 iWidth;
|
||||
int32 iHeight;
|
||||
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE, else = pixels default) */
|
||||
XP_Bool bHeightPercent;
|
||||
XP_Bool bForegroundPalette; /* PC systems only. For controling 256-color palette wars */
|
||||
int32 iHSpace;
|
||||
int32 iVSpace;
|
||||
int32 iBorder;
|
||||
};
|
||||
typedef struct _EDT_PlugInData EDT_PlugInData;
|
||||
|
||||
struct _EDT_JavaData {
|
||||
EDT_ParamID ParamID;
|
||||
char *pCode;
|
||||
char *pCodebase;
|
||||
char *pName;
|
||||
ED_Alignment align;
|
||||
char *pSrc;
|
||||
int32 iWidth;
|
||||
int32 iHeight;
|
||||
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE, else = pixels default) */
|
||||
XP_Bool bHeightPercent;
|
||||
int32 iHSpace;
|
||||
int32 iVSpace;
|
||||
int32 iBorder;
|
||||
};
|
||||
typedef struct _EDT_JavaData EDT_JavaData;
|
||||
|
||||
/* CLM: Error codes for file writing
|
||||
* Return 0 if no error
|
||||
*/
|
||||
typedef enum {
|
||||
ED_ERROR_NONE,
|
||||
ED_ERROR_READ_ONLY, /* File is marked read-only */
|
||||
ED_ERROR_BLOCKED, /* Can't write at this time, edit buffer blocked */
|
||||
ED_ERROR_BAD_URL, /* URL was not a "file:" type or no string */
|
||||
ED_ERROR_FILE_OPEN,
|
||||
ED_ERROR_FILE_WRITE,
|
||||
ED_ERROR_CREATE_BAKNAME,
|
||||
ED_ERROR_DELETE_BAKFILE,
|
||||
ED_ERROR_FILE_RENAME_TO_BAK,
|
||||
ED_ERROR_CANCEL,
|
||||
ED_ERROR_FILE_EXISTS, /* We really didn't save -- file existed and no overwrite */
|
||||
ED_ERROR_SRC_NOT_FOUND,
|
||||
ED_ERROR_FILE_READ,
|
||||
|
||||
/* The following are used internally by the editor and will not be passed to the front end. */
|
||||
ED_ERROR_PUBLISHING, /* When netlib encounters an error http or ftp publishing. */
|
||||
ED_ERROR_TAPEFS_COMPLETION /* The tape file system for saving encountered an error when
|
||||
the Complete() method was called. E.g. an error sending a
|
||||
mail message. */
|
||||
} ED_FileError;
|
||||
|
||||
typedef enum {
|
||||
ED_TAG_OK,
|
||||
ED_TAG_UNOPENED,
|
||||
ED_TAG_UNCLOSED,
|
||||
ED_TAG_UNTERMINATED_STRING,
|
||||
ED_TAG_PREMATURE_CLOSE,
|
||||
ED_TAG_TAGNAME_EXPECTED
|
||||
} ED_TagValidateResult;
|
||||
|
||||
typedef enum {
|
||||
ED_LIST_TYPE_DEFAULT,
|
||||
ED_LIST_TYPE_DIGIT,
|
||||
ED_LIST_TYPE_BIG_ROMAN,
|
||||
ED_LIST_TYPE_SMALL_ROMAN,
|
||||
ED_LIST_TYPE_BIG_LETTERS,
|
||||
ED_LIST_TYPE_SMALL_LETTERS,
|
||||
ED_LIST_TYPE_CIRCLE,
|
||||
ED_LIST_TYPE_SQUARE,
|
||||
ED_LIST_TYPE_DISC,
|
||||
ED_LIST_TYPE_CITE /* For Mail Quoting */
|
||||
} ED_ListType;
|
||||
|
||||
|
||||
struct _EDT_ListData {
|
||||
/* This should be TagType, but there are problems with the include file dependencies. */
|
||||
int8 iTagType; /* P_UNUM_LIST, P_NUM_LIST, P_BLOCKQUOTE, */
|
||||
/* P_DIRECTOR, P_MENU, P_DESC_LIST */
|
||||
XP_Bool bCompact;
|
||||
ED_ListType eType;
|
||||
int32 iStart; /* automatically maps, start is one */
|
||||
char *pBaseURL; /* If an ED_LIST_TYPE_CITE, this is the URL from the enclosing <BASE> tag.
|
||||
Don't expose this to users because not actually written out in the HTML. */
|
||||
char *pExtra;
|
||||
};
|
||||
|
||||
typedef struct _EDT_ListData EDT_ListData;
|
||||
|
||||
typedef enum {
|
||||
ED_BREAK_NORMAL, /* just break the line, ignore images */
|
||||
ED_BREAK_LEFT, /* break so it passes the image on the left */
|
||||
ED_BREAK_RIGHT, /* break past the right image */
|
||||
ED_BREAK_BOTH /* break past both images */
|
||||
} ED_BreakType;
|
||||
|
||||
typedef enum {
|
||||
ED_SAVE_OVERWRITE_THIS,
|
||||
ED_SAVE_OVERWRITE_ALL,
|
||||
ED_SAVE_DONT_OVERWRITE_THIS,
|
||||
ED_SAVE_DONT_OVERWRITE_ALL,
|
||||
ED_SAVE_CANCEL
|
||||
} ED_SaveOption;
|
||||
|
||||
/* After saving, what to do with the editor buffer. */
|
||||
typedef enum {
|
||||
ED_FINISHED_GOTO_NEW, /* Point the editor to the location of the
|
||||
newly saved document. */
|
||||
ED_FINISHED_REVERT_BUFFER, /* Revert the buffer to the state before
|
||||
the save operation began. */
|
||||
ED_FINISHED_SAVE_DRAFT, /* Like ED_FINISHED_REVERT_BUFFER, except clears the dirty flag
|
||||
on success. */
|
||||
ED_FINISHED_MAIL_SEND /* If we succeed we're going to throw the buffer
|
||||
away, so don't revert it. If failure, revert the buffer.
|
||||
Used for mail compose, we don't
|
||||
want the editor to start any operation that
|
||||
causes problems when libmsg destroys the editor
|
||||
context. */
|
||||
} ED_SaveFinishedOption;
|
||||
|
||||
|
||||
/* For FE_SaveDialogCreate */
|
||||
typedef enum {
|
||||
ED_SAVE_DLG_SAVE_LOCAL, /* "saving files to local disk" */
|
||||
ED_SAVE_DLG_PUBLISH, /* "uploading files to remote server" */
|
||||
ED_SAVE_DLG_PREPARE_PUBLISH /* "preparing files to publish" */
|
||||
} ED_SaveDialogType;
|
||||
|
||||
typedef int32 EDT_ClipboardResult;
|
||||
#define EDT_COP_OK 0
|
||||
#define EDT_COP_DOCUMENT_BUSY 1
|
||||
#define EDT_COP_SELECTION_EMPTY 2
|
||||
#define EDT_COP_SELECTION_CROSSES_TABLE_DATA_CELL 3
|
||||
/* For the result EDT_COP_CLIPBOARD_BAD the XP code has already
|
||||
* given the user an error dialog. So FE code should not
|
||||
* give an additional error dialog. (Only occurs on
|
||||
* paste and paste-like operations.)
|
||||
*/
|
||||
#define EDT_COP_CLIPBOARD_BAD 4
|
||||
|
||||
|
||||
#ifdef FIND_REPLACE
|
||||
|
||||
#define ED_FIND_FIND_ALL_WORDS 1 /* used to enumerate all words in a */
|
||||
/* buffer */
|
||||
#define ED_FIND_MATCH_CASE 2 /* default is to ignore case */
|
||||
#define ED_FIND_REPLACE 4 /* call back the replace routine */
|
||||
#define ED_FIND_WHOLE_BUFFER 8 /* start search from the top */
|
||||
#define ED_FIND_REVERSE 0x10 /* reverse search from this point */
|
||||
|
||||
typedef intn ED_FindFlags;
|
||||
|
||||
typedef void (*EDT_PFReplaceFunc)( void *pMWContext,
|
||||
char *pFoundWord,
|
||||
char **pReplaceWord );
|
||||
|
||||
struct _EDT_FindAndReplaceData {
|
||||
char* pSearchString;
|
||||
ED_FindFlags fflags;
|
||||
EDT_PFReplaceFunc pfReplace;
|
||||
};
|
||||
|
||||
typedef struct _EDT_FindAndReplaceData EDT_FindAndReplaceData;
|
||||
|
||||
#endif /* FIND_REPLACE */
|
||||
|
||||
/* Callback function for image encoder */
|
||||
|
||||
typedef int32 EDT_ImageEncoderReference;
|
||||
typedef unsigned char EDT_ImageEncoderStatus;
|
||||
#define ED_IMAGE_ENCODER_OK 0
|
||||
#define ED_IMAGE_ENCODER_USER_CANCELED 1
|
||||
#define ED_IMAGE_ENCODER_EXCEPTION 2
|
||||
|
||||
typedef void (*EDT_ImageEncoderCallbackFn)(EDT_ImageEncoderStatus status, void* hook);
|
||||
|
||||
#endif
|
||||
1274
mozilla/include/fe_proto.h
Normal file
1274
mozilla/include/fe_proto.h
Normal file
File diff suppressed because it is too large
Load Diff
133
mozilla/include/fe_rgn.h
Normal file
133
mozilla/include/fe_rgn.h
Normal file
@@ -0,0 +1,133 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/* Region-related definitions and prototypes */
|
||||
|
||||
#ifndef _FE_RGN_H_
|
||||
#define _FE_RGN_H_
|
||||
|
||||
#ifdef LAYERS
|
||||
|
||||
#include "xp_core.h"
|
||||
#include "xp_rect.h"
|
||||
/******************Definitions and Types************/
|
||||
|
||||
/* For Windows only: Should we use the MFC CRgn class for region stuff? */
|
||||
#ifdef XP_WIN
|
||||
#undef FE_RGN_USE_MFC
|
||||
#endif /* XP_WIN */
|
||||
|
||||
#ifdef XP_WIN
|
||||
|
||||
#ifdef FE_RGN_USE_MFC
|
||||
#define FE_GetMDRegion(rgn) ((CRgn *)rgn)
|
||||
#else
|
||||
/*
|
||||
* Note that the resultant CRgn * does not have to be
|
||||
* explicitly deleted. It is considered a temporary object
|
||||
* by the MFC and is deleted the next time we have idle
|
||||
* time in the event loop.
|
||||
*/
|
||||
#define FE_GetMDRegion(rgn) ((HRGN)rgn)
|
||||
#endif /* FE_RGN_USE_MFC */
|
||||
|
||||
#elif defined(XP_UNIX)
|
||||
#define FE_GetMDRegion(rgn) ((Region)rgn)
|
||||
#elif defined(XP_MAC)
|
||||
#define FE_GetMDRegion(rgn) ((RgnHandle)rgn)
|
||||
#else
|
||||
#define FE_GetMDRegion(rgn) (rgn)
|
||||
#endif /* XP_WIN */
|
||||
|
||||
#ifdef XP_WIN
|
||||
#define FE_MAX_REGION_COORDINATE 0x7FFFFFFF
|
||||
#else
|
||||
#define FE_MAX_REGION_COORDINATE 0x7FFF
|
||||
#endif
|
||||
|
||||
/* Setting the clip region to this effectively unsets the clip */
|
||||
#define FE_NULL_REGION NULL
|
||||
|
||||
#define FE_CLEAR_REGION(region) \
|
||||
do {FE_SubtractRegion((region), (region), (region)); } while (0)
|
||||
|
||||
/* Function called by FE_ForEachRectInRegion */
|
||||
typedef void (*FE_RectInRegionFunc)(void *closure, XP_Rect *rect);
|
||||
|
||||
/*******************Prototypes**********************/
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
extern FE_Region FE_CreateRegion(void);
|
||||
|
||||
/* Creates a region from a rectangle. Returns */
|
||||
/* NULL if region can't be created. */
|
||||
extern FE_Region FE_CreateRectRegion(XP_Rect *rect);
|
||||
|
||||
/* Destroys region. */
|
||||
extern void FE_DestroyRegion(FE_Region region);
|
||||
|
||||
/* Makes a copy of a region. If dst is NULL, creates a new region */
|
||||
extern FE_Region FE_CopyRegion(FE_Region src, FE_Region dst);
|
||||
|
||||
/* Set an existing region to a rectangle */
|
||||
extern FE_Region FE_SetRectRegion(FE_Region region, XP_Rect *rect);
|
||||
|
||||
/* dst = src1 intersect sr2 */
|
||||
/* dst can be one of src1 or src2 */
|
||||
extern void FE_IntersectRegion(FE_Region src1, FE_Region src2, FE_Region dst);
|
||||
|
||||
/* dst = src1 union src2 */
|
||||
/* dst can be one of src1 or src2 */
|
||||
extern void FE_UnionRegion(FE_Region src1, FE_Region src2, FE_Region dst);
|
||||
|
||||
/* dst = src1 - src2 */
|
||||
/* dst can be one of src1 or src2 */
|
||||
extern void FE_SubtractRegion(FE_Region src1, FE_Region src2, FE_Region dst);
|
||||
|
||||
/* Returns TRUE if the region contains no pixels */
|
||||
extern XP_Bool FE_IsEmptyRegion(FE_Region region);
|
||||
|
||||
/* Returns the bounding rectangle of the region */
|
||||
extern void FE_GetRegionBoundingBox(FE_Region region, XP_Rect *bbox);
|
||||
|
||||
/* TRUE if rgn1 == rgn2 */
|
||||
extern XP_Bool FE_IsEqualRegion(FE_Region rgn1, FE_Region rgn2);
|
||||
|
||||
/* Moves a region by the specified offsets */
|
||||
extern void FE_OffsetRegion(FE_Region region, int32 xOffset, int32 yOffset);
|
||||
|
||||
/* Is any part of the rectangle in the specified region */
|
||||
extern XP_Bool FE_RectInRegion(FE_Region region, XP_Rect *rect);
|
||||
|
||||
/* For each rectangle that makes up this region, call the func */
|
||||
extern void FE_ForEachRectInRegion(FE_Region region,
|
||||
FE_RectInRegionFunc func,
|
||||
void * closure);
|
||||
|
||||
#ifdef DEBUG
|
||||
extern void FE_HighlightRect(void *context, XP_Rect *rect, int how_much);
|
||||
extern void FE_HighlightRegion(void *context, FE_Region region, int how_much);
|
||||
#endif /* DEBUG */
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* LAYERS */
|
||||
|
||||
#endif /* _FE_RGN_H_ */
|
||||
222
mozilla/include/fullsoft.h
Normal file
222
mozilla/include/fullsoft.h
Normal file
@@ -0,0 +1,222 @@
|
||||
/*--------------------------------------------------------------------
|
||||
* fullsoft.h
|
||||
*
|
||||
* Created: 10/15/97
|
||||
* Author: Matt Kendall
|
||||
*
|
||||
* Copyright (C) 1997-98, Full Circle Software, Inc., All Rights Reserved
|
||||
*
|
||||
* Full Circle "Spiral" Application API Definition
|
||||
* - mkk 1/19/98 renamed from "spiral.h" to "fullsoft.h"
|
||||
*
|
||||
*--------------------------------------------------------------------*/
|
||||
#if !defined(__FULLSOFT_H)
|
||||
#define __FULLSOFT_H
|
||||
|
||||
/* define NO_FC_API to disable all calls to the Full Circle library */
|
||||
/* define FC_TRACE to enable the Full Circle TRACE macro */
|
||||
/* define FC_ASSERT to enable the Full Circle ASSERT macro */
|
||||
/* define FC_TRACE_PARAM to enable the Full Circle TRACE_PARAM macro */
|
||||
/* define FC_ASSERT_PARAM to enable the Full Circle TRACE_PARAM macro */
|
||||
|
||||
#if !defined(FAR)
|
||||
#define FAR
|
||||
#endif /* !FAR */
|
||||
|
||||
#if !defined(FCAPI)
|
||||
#define FCAPI
|
||||
#endif /* defined FCAPI */
|
||||
|
||||
|
||||
typedef const char FAR * FC_KEY ;
|
||||
typedef const char FAR * FC_TRIGGER ;
|
||||
typedef unsigned long FC_DATE ;
|
||||
typedef unsigned long FC_UINT32 ;
|
||||
typedef void FAR * FC_PVOID ;
|
||||
typedef const char FAR * FC_STRING ;
|
||||
typedef void FAR * FC_CONTEXT ;
|
||||
|
||||
#define FC_CONTEXT_NONE ((FC_CONTEXT) -1)
|
||||
|
||||
typedef enum {
|
||||
FC_DATA_TYPE_BINARY,
|
||||
FC_DATA_TYPE_STRING,
|
||||
FC_DATA_TYPE_INTEGER,
|
||||
FC_DATA_TYPE_DATE,
|
||||
FC_DATA_TYPE_COUNTER
|
||||
} FC_DATA_TYPE ;
|
||||
|
||||
typedef enum {
|
||||
FC_ERROR_OK = 0,
|
||||
FC_ERROR_CANT_INITIALIZE,
|
||||
FC_ERROR_NOT_INITIALIZED,
|
||||
FC_ERROR_ALREADY_INITIALIZED,
|
||||
FC_ERROR_FAILED,
|
||||
FC_ERROR_OUT_OF_MEMORY,
|
||||
FC_ERROR_INVALID_PARAMETER
|
||||
} FC_ERROR ;
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* define NO_FC_API to disable all calls to the Full Circle library */
|
||||
|
||||
#if !defined(NO_FC_API)
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCInitialize( void ) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCCreateKey(
|
||||
FC_KEY key,
|
||||
FC_DATA_TYPE type,
|
||||
FC_UINT32 first_count,
|
||||
FC_UINT32 last_count,
|
||||
FC_UINT32 max_element_size) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCCreatePersistentKey(
|
||||
FC_KEY key,
|
||||
FC_DATA_TYPE type,
|
||||
FC_UINT32 first_count,
|
||||
FC_UINT32 last_count,
|
||||
FC_UINT32 max_element_size) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCAddDataToKey(
|
||||
FC_KEY key,
|
||||
FC_PVOID buffer,
|
||||
FC_UINT32 data_length) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCAddIntToKey(
|
||||
FC_KEY key,
|
||||
FC_UINT32 data) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCAddStringToKey(
|
||||
FC_KEY key,
|
||||
FC_STRING string) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCAddDateToKey(
|
||||
FC_KEY key,
|
||||
FC_DATE date) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCSetCounter(
|
||||
FC_KEY key,
|
||||
FC_UINT32 value) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCIncrementCounter(
|
||||
FC_KEY key,
|
||||
FC_UINT32 value) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCRegisterMemory(
|
||||
FC_KEY key,
|
||||
FC_DATA_TYPE type,
|
||||
FC_PVOID buffer,
|
||||
FC_UINT32 length,
|
||||
FC_UINT32 dereference_count,
|
||||
FC_CONTEXT context) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCUnregisterMemory( FC_CONTEXT context ) ;
|
||||
|
||||
FC_ERROR FCAPI
|
||||
FCTrigger( FC_TRIGGER trigger ) ;
|
||||
|
||||
void FCAPI
|
||||
FCTrace(FC_STRING fmt, ... ) ;
|
||||
|
||||
void FCAPI
|
||||
FCAssert() ;
|
||||
|
||||
void FCAPI
|
||||
FCTraceParam(
|
||||
FC_UINT32 track,
|
||||
FC_UINT32 level,
|
||||
FC_STRING fmt,
|
||||
... ) ;
|
||||
|
||||
void FCAPI
|
||||
FCAssertParam(
|
||||
FC_UINT32 track,
|
||||
FC_UINT32 level ) ;
|
||||
|
||||
#if defined(FC_ASSERT)
|
||||
#if defined(ASSERT)
|
||||
#undef ASSERT
|
||||
#endif /* defined ASSERT */
|
||||
#define ASSERT(a) { if( !(a) ) FCAssert() ; }
|
||||
#endif /* FC_ASSERT */
|
||||
|
||||
#if defined(FC_TRACE)
|
||||
#if defined(TRACE)
|
||||
#undef TRACE
|
||||
#endif /* defined TRACE */
|
||||
#define TRACE FCTrace
|
||||
#endif /* FC_TRACE */
|
||||
|
||||
#if defined(FC_ASSERT_PARAM)
|
||||
#if defined(ASSERT_PARAM)
|
||||
#undef ASSERT_PARAM
|
||||
#endif /* defined ASSERT_PARAM */
|
||||
#define ASSERT_PARAM(a,b,c) { if ( !(c) ) FCAssertParam(a,b) ; }
|
||||
#endif /* FC_ASSERT_PARAM */
|
||||
|
||||
#if defined(FC_TRACE_PARAM)
|
||||
#if defined(TRACE_PARAM)
|
||||
#undef TRACE_PARAM
|
||||
#endif /* defined TRACE_PARAM */
|
||||
#define TRACE_PARAM FCTraceParam
|
||||
#endif /* FC_TRACE_PARAM */
|
||||
|
||||
#else /* NO_FC_API */
|
||||
|
||||
#define FCInitialize() FC_ERROR_OK
|
||||
#define FCCreateKey(a,b,c,d,e) FC_ERROR_OK
|
||||
#define FCCreatePersistentKey(a,b,c,d,e) FC_ERROR_OK
|
||||
#define FCAddDataToKey(a,b,c) FC_ERROR_OK
|
||||
#define FCAddIntToKey(a,b) FC_ERROR_OK
|
||||
#define FCAddStringToKey(a,b) FC_ERROR_OK
|
||||
#define FCAddDateToKey(a,b) FC_ERROR_OK
|
||||
#define FCRegisterMemory(a,b,c,d,e,f) FC_ERROR_OK
|
||||
#define FCUnregisterMemory(a) FC_ERROR_OK
|
||||
#define FCTrigger(a) FC_ERROR_OK
|
||||
#define FCSetCounter(a,b) FC_ERROR_OK
|
||||
#define FCIncrementCounter(a,b) FC_ERROR_OK
|
||||
|
||||
#if defined(FC_ASSERT)
|
||||
#define ASSERT(f) ((void)0)
|
||||
#endif /* FC_ASSERT */
|
||||
|
||||
#if defined(FC_TRACE)
|
||||
void FCAPI FCTrace(FC_STRING fmt,...) ;
|
||||
#define TRACE 1 ? (void)0 : FCTrace
|
||||
#endif /* FC_TRACE */
|
||||
|
||||
#if defined(FC_ASSERT_PARAM)
|
||||
#define ASSERT_PARAM(a,b,c) ((void)0)
|
||||
#endif /* FC_ASSERT_PARAM */
|
||||
|
||||
#if defined(FC_TRACE_PARAM)
|
||||
void FCAPI FCTraceParam(
|
||||
FC_UINT32 track,
|
||||
FC_UINT32 level,
|
||||
FC_STRING fmt,
|
||||
... ) ;
|
||||
|
||||
#define TRACE_PARAM 1 ? (void) 0 : FCTraceParam
|
||||
#endif /* FC_TRACE_PARAM */
|
||||
|
||||
#endif /* NO_FC_API */
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __FULLSOFT_H */
|
||||
231
mozilla/include/garray.h
Normal file
231
mozilla/include/garray.h
Normal file
@@ -0,0 +1,231 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Warning: This is a C++ file.
|
||||
//
|
||||
//
|
||||
// This implements cross platform Growable arrays of Pointers.
|
||||
//
|
||||
#ifndef _GARRAY_H_
|
||||
#define _GARRAY_H_
|
||||
|
||||
//
|
||||
// On Unix (well at least Solaris) we are having troubles with
|
||||
// templates, so hey, we won't use them...djw.
|
||||
//
|
||||
// On Mac we are having troubles as well, so add me to the list.
|
||||
// Now, why even have templates?...jar
|
||||
//
|
||||
#if ! ( defined(XP_WIN16) || defined(XP_UNIX) || defined(XP_MAC) )
|
||||
#define TEMPLATE_SUPPORT 1
|
||||
#endif
|
||||
|
||||
|
||||
class CXP_GrowableArray {
|
||||
protected:
|
||||
void **m_pData;
|
||||
int m_iSize;
|
||||
int m_iAllocSize;
|
||||
|
||||
int NewSize( int iMinSize){
|
||||
int iNewSize = MAX( m_iAllocSize,16) ;
|
||||
while( iNewSize < iMinSize ){
|
||||
iNewSize = iNewSize+iNewSize;
|
||||
}
|
||||
return iNewSize;
|
||||
}
|
||||
|
||||
//
|
||||
// this is the routine that does the actual work. Should be in
|
||||
// its own file.
|
||||
//
|
||||
void GuaranteeSize(int iSize){
|
||||
if(m_iAllocSize <= iSize){
|
||||
int iNewSize = NewSize( iSize );
|
||||
if( m_iAllocSize ){
|
||||
void ** pNewData = new void*[iNewSize];
|
||||
XP_BCOPY( m_pData, pNewData, m_iAllocSize * sizeof(void*) );
|
||||
delete [] m_pData;
|
||||
m_pData = pNewData;
|
||||
}
|
||||
else{
|
||||
m_pData = new void*[iNewSize];
|
||||
}
|
||||
m_iAllocSize = iNewSize;
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
CXP_GrowableArray(int iStartSize=0): m_pData(0),m_iSize(0),m_iAllocSize(0){
|
||||
if( iStartSize ){
|
||||
GuaranteeSize( iStartSize );
|
||||
}
|
||||
};
|
||||
|
||||
~CXP_GrowableArray(){ delete [] m_pData; }
|
||||
|
||||
int Size(){ return m_iSize; }
|
||||
|
||||
void SetSize( int iSize ){
|
||||
GuaranteeSize( iSize );
|
||||
m_iSize = iSize;
|
||||
}
|
||||
|
||||
void* operator[](int nIndex) const { return m_pData[nIndex]; }
|
||||
void*& operator[](int nIndex){ return m_pData[nIndex]; }
|
||||
|
||||
int Add(void* newElement){
|
||||
GuaranteeSize(m_iSize+1);
|
||||
m_pData[m_iSize] = newElement;
|
||||
/* Return index to last item in list */
|
||||
return m_iSize++;
|
||||
}
|
||||
|
||||
int Delete( int nIndex ){
|
||||
if( nIndex < m_iSize )
|
||||
{
|
||||
for( int i = nIndex; i < m_iSize-1; i++ )
|
||||
{
|
||||
/* Suffle remaining pointers down */
|
||||
m_pData[nIndex] = m_pData[nIndex+1];
|
||||
}
|
||||
m_iSize--;
|
||||
}
|
||||
/* Return index to last item in list */
|
||||
return (m_iSize-1);
|
||||
}
|
||||
|
||||
int Delete( void* element ){
|
||||
for( int i = 0; i < m_iSize; i++ )
|
||||
{
|
||||
if( m_pData[i] == element )
|
||||
{
|
||||
return Delete(i);
|
||||
}
|
||||
}
|
||||
return (m_iSize-1);
|
||||
}
|
||||
|
||||
int Find( void* element ){
|
||||
for( int i = 0; i < m_iSize; i++ )
|
||||
{
|
||||
if( m_pData[i] == element )
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void Empty(){
|
||||
m_iSize = 0;
|
||||
}
|
||||
};
|
||||
|
||||
class CXP_PtrStack : public CXP_GrowableArray{
|
||||
public:
|
||||
int m_iTop;
|
||||
CXP_PtrStack(): m_iTop(-1){}
|
||||
Bool IsEmpty(){ return m_iTop == -1; }
|
||||
void Push( void* t ){
|
||||
if( ++m_iTop >= Size() ) {
|
||||
Add( t );
|
||||
}
|
||||
else {
|
||||
(*this)[m_iTop] = t;
|
||||
}
|
||||
}
|
||||
void* Top(){ return (*this)[m_iTop]; }
|
||||
void* Pop(){ return (*this)[m_iTop--];}
|
||||
void Reset(){ m_iTop = -1; }
|
||||
int StackSize() { return m_iTop + 1; }
|
||||
};
|
||||
|
||||
#ifdef TEMPLATE_SUPPORT
|
||||
|
||||
template<class PTRTYPE>
|
||||
class TXP_GrowableArray: public CXP_GrowableArray {
|
||||
public:
|
||||
PTRTYPE operator[](int nIndex) const { return (PTRTYPE)(int32)m_pData[nIndex]; }
|
||||
PTRTYPE& operator[](int nIndex){ return *(PTRTYPE*)&m_pData[nIndex]; }
|
||||
int Add(PTRTYPE newElement){ return CXP_GrowableArray::Add( (void*) newElement ); }
|
||||
};
|
||||
|
||||
#define Declare_GrowableArray(NAME,PTRTYPE) \
|
||||
typedef TXP_GrowableArray<PTRTYPE> TXP_GrowableArray_##NAME;
|
||||
|
||||
#else
|
||||
|
||||
#define Declare_GrowableArray(NAME,PTRTYPE) \
|
||||
class TXP_GrowableArray_##NAME: public CXP_GrowableArray { \
|
||||
public: \
|
||||
PTRTYPE operator[](int nIndex) const { return (PTRTYPE)(int32)m_pData[nIndex]; }\
|
||||
PTRTYPE& operator[](int nIndex){ return *(PTRTYPE*)&m_pData[nIndex]; } \
|
||||
int Add(PTRTYPE newElement){ return CXP_GrowableArray::Add( (void*) newElement ); } \
|
||||
}; \
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
//
|
||||
// PtrStack Imlementation
|
||||
//
|
||||
#ifdef TEMPLATE_SUPPORT
|
||||
template<class PTRTYPE>
|
||||
class TXP_PtrStack : public TXP_GrowableArray<PTRTYPE> {
|
||||
public:
|
||||
int m_iTop;
|
||||
TXP_PtrStack(): m_iTop(-1){}
|
||||
Bool IsEmpty(){ return m_iTop == -1; }
|
||||
void Push( PTRTYPE t ){
|
||||
if( ++m_iTop >= Size() ) {
|
||||
Add( t );
|
||||
}
|
||||
else {
|
||||
(*this)[m_iTop] = t;
|
||||
}
|
||||
}
|
||||
PTRTYPE Top(){ return (*this)[m_iTop]; }
|
||||
PTRTYPE Pop(){ return (*this)[m_iTop--];}
|
||||
void Reset(){ m_iTop = -1; }
|
||||
int StackSize(){ return m_iTop + 1; }
|
||||
};
|
||||
|
||||
#define Declare_PtrStack(NAME,PTRTYPE) \
|
||||
typedef TXP_PtrStack<PTRTYPE> TXP_PtrStack_##NAME;
|
||||
|
||||
#else // No template support
|
||||
|
||||
#define Declare_PtrStack(NAME, PTRTYPE) \
|
||||
class TXP_PtrStack_##NAME : public CXP_PtrStack { \
|
||||
public: \
|
||||
void Push( PTRTYPE t ){ CXP_PtrStack::Push((void*)(int32)t); } \
|
||||
PTRTYPE Top(){ return (PTRTYPE)(int32)CXP_PtrStack::Top(); } \
|
||||
PTRTYPE Pop(){ return (PTRTYPE)(int32)CXP_PtrStack::Pop(); } \
|
||||
PTRTYPE operator[](int nIndex) const { return (PTRTYPE)(int32)m_pData[nIndex]; }\
|
||||
PTRTYPE& operator[](int nIndex){ return *(PTRTYPE*)&m_pData[nIndex]; } \
|
||||
int Add(PTRTYPE newElement){ return CXP_GrowableArray::Add( (void*)(int32)newElement ); } \
|
||||
}; \
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
188
mozilla/include/glhist.h
Normal file
188
mozilla/include/glhist.h
Normal file
@@ -0,0 +1,188 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef GLHIST_H
|
||||
#define GLHIST_H
|
||||
|
||||
#include "ntypes.h"
|
||||
|
||||
typedef enum gh_SortColumn
|
||||
{
|
||||
eGH_NoSort = -1,
|
||||
eGH_NameSort,
|
||||
eGH_LocationSort,
|
||||
eGH_FirstDateSort,
|
||||
eGH_LastDateSort,
|
||||
eGH_VisitCountSort
|
||||
}gh_SortColumn;
|
||||
|
||||
typedef struct _gh_HistEntry
|
||||
{
|
||||
char * address;
|
||||
time_t last_accessed;
|
||||
time_t first_accessed;
|
||||
int32 iCount;
|
||||
int32 iFlags;
|
||||
char * pszName;
|
||||
}gh_HistEntry;
|
||||
|
||||
typedef struct _gh_HistEntryData
|
||||
{
|
||||
time_t last_accessed;
|
||||
time_t first_accessed;
|
||||
int32 iCount;
|
||||
int32 iFlags;
|
||||
char * pszName;
|
||||
}gh_HistEntryData;
|
||||
|
||||
typedef enum gh_FilterOp
|
||||
{
|
||||
eGH_FOEquals,
|
||||
eGH_FOEqualsNot,
|
||||
|
||||
eGH_FOGreater,
|
||||
eGH_FOGreaterEqual,
|
||||
eGH_FOLess,
|
||||
eGH_FOLessEqual,
|
||||
|
||||
eGH_FOHas,
|
||||
eGH_FOHasNot
|
||||
}gh_FilterOp;
|
||||
|
||||
typedef enum gh_FilterLogOp
|
||||
{
|
||||
eGH_FLOAnd,
|
||||
eGH_FLOOr
|
||||
}gh_FilterLogOp;
|
||||
|
||||
typedef struct _gh_FilterCondition
|
||||
{
|
||||
enum gh_SortColumn enCol;
|
||||
enum gh_FilterOp enOp;
|
||||
|
||||
union
|
||||
{
|
||||
char * pszTest;
|
||||
int32 iTest;
|
||||
} tests;
|
||||
}gh_FilterCondition;
|
||||
|
||||
typedef struct _gh_Filter
|
||||
{
|
||||
int32 iNumConditions;
|
||||
gh_FilterCondition * pConditions;
|
||||
gh_FilterLogOp * enOps;
|
||||
}gh_Filter;
|
||||
|
||||
typedef struct _gh_NotifyMsg
|
||||
{
|
||||
int32 iNotifyMsg;
|
||||
char * pszKey;
|
||||
void * pUserData;
|
||||
} gh_NotifyMsg;
|
||||
|
||||
typedef void * GHHANDLE;
|
||||
typedef void * GHURHANDLE;
|
||||
|
||||
#define GH_NOTIFY_UPDATE 1
|
||||
#define GH_NOTIFY_DELETE 2
|
||||
|
||||
#ifdef XP_WIN
|
||||
typedef int (__cdecl *GHISTORY_NOTIFYPROC)( gh_NotifyMsg *pMsg );
|
||||
#else
|
||||
typedef int (*GHISTORY_NOTIFYPROC)( gh_NotifyMsg *pMsg );
|
||||
#endif
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/* if the url was found in the global history then the then number of seconds since
|
||||
* the last access is returned. if the url is not found -1 is returned
|
||||
*/
|
||||
extern int GH_CheckGlobalHistory(char * url);
|
||||
|
||||
/* add or update the url in the global history
|
||||
*/
|
||||
extern void GH_UpdateGlobalHistory(URL_Struct * URL_s);
|
||||
|
||||
/* save the global history to a file and remove the list from memory
|
||||
*/
|
||||
/*extern void GH_CleanupGlobalHistory(void);*/
|
||||
|
||||
/* save the global history to a file and remove the list from memory
|
||||
*/
|
||||
extern void GH_SaveGlobalHistory(void);
|
||||
|
||||
/* free the global history list
|
||||
*/
|
||||
extern void GH_FreeGlobalHistory(void);
|
||||
|
||||
/* clear the entire global history list
|
||||
*/
|
||||
extern void GH_ClearGlobalHistory(void);
|
||||
|
||||
#if defined(XP_MAC) || defined(XP_UNIX)
|
||||
/* set the maximum time for an object in the Global history in
|
||||
* number of seconds
|
||||
*/
|
||||
extern void GH_SetGlobalHistoryTimeout(int32 timeout_interval);
|
||||
#endif
|
||||
|
||||
/* start global history tracking
|
||||
*/
|
||||
extern void GH_InitGlobalHistory(void);
|
||||
|
||||
/* create an HTML stream and push a bunch of HTML about
|
||||
* the global history
|
||||
*
|
||||
* returns -1
|
||||
*/
|
||||
extern int NET_DisplayGlobalHistoryInfoAsHTML( MWContext *context, URL_Struct *URL_s, int format_out );
|
||||
|
||||
/*
|
||||
// Context/Handle based functions to retrieve a pseudo cursor on the
|
||||
// Global History list (using a specified sort/index).
|
||||
*/
|
||||
extern GHHANDLE GH_GetContext( enum gh_SortColumn enGHSort,
|
||||
gh_Filter * pFilter,
|
||||
GHISTORY_NOTIFYPROC pfNotifyProc,
|
||||
GHURHANDLE hUR,
|
||||
void * pUserData );
|
||||
extern void GH_ReleaseContext( GHHANDLE pContext, Bool bReleaseUR );
|
||||
extern gh_HistEntry * GH_GetRecord( GHHANDLE pContext, uint32 uRow );
|
||||
extern void GH_DeleteRecord( GHHANDLE pContext, uint32 uRow, Bool bGroup );
|
||||
extern uint32 GH_GetNumRecords( GHHANDLE pContext );
|
||||
extern gh_SortColumn GH_GetSortField( GHHANDLE pContext );
|
||||
extern int GH_UpdateURLTitle( URL_Struct *pUrl, char *pszTitle, Bool bFrameCell );
|
||||
extern int32 GH_GetRecordNum( GHHANDLE pContext, char *pszLocation );
|
||||
extern int GH_GetMRUPage( char *pszURL, int iMaxLen );
|
||||
extern void GH_FileSaveAsHTML( GHHANDLE pContext, MWContext *pMWContext );
|
||||
extern GHURHANDLE GH_GetURContext( GHHANDLE pContext );
|
||||
extern void GH_SupportUndoRedo( GHHANDLE pContext );
|
||||
extern void GH_Undo( GHHANDLE pContext );
|
||||
extern void GH_Redo( GHHANDLE pContext );
|
||||
extern Bool GH_CanUndo( GHHANDLE pContext );
|
||||
extern Bool GH_CanRedo( GHHANDLE pContext );
|
||||
|
||||
/* AutoComplete stuff */
|
||||
enum autoCompStatus {foundDone, notFoundDone, stillSearching, dontCallOnIdle};
|
||||
extern enum autoCompStatus urlMatch(const char *criteria, char **result, Bool freshStart, Bool scroll);
|
||||
extern void NET_RegisterEnableUrlMatchCallback(void);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* GLHIST_H */
|
||||
64
mozilla/include/gui.h
Normal file
64
mozilla/include/gui.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef _GUI_H_
|
||||
#define _GUI_H_
|
||||
|
||||
/* These are defined in libnet/mkhttp.c.
|
||||
|
||||
XP_AppName The name of the client program - usually "Netscape", but
|
||||
possibly something else for bundled versions, like the
|
||||
MCI client.
|
||||
|
||||
XP_AppCodeName The name sent at the HTTP vendor ID string; regardless of
|
||||
the value of XP_AppName, this must be "Mozilla" or
|
||||
everything will break.
|
||||
|
||||
XP_AppVersion The version number of the client as a string. This is the
|
||||
string sent along with the vendor ID string, so it should be
|
||||
of the form "1.1N (Windows)" or "1.1N (X11; SunOS 4.1.3)".
|
||||
|
||||
XP_AppLanguage The language of the navigator client. Usually a two-letter
|
||||
code (EN, FR) but could be a 5-letter code for translations
|
||||
where a sub-language designation is appropriate (FR_CA)
|
||||
|
||||
XP_AppPlatform The compiled flavor of the navigator (as opposed to what
|
||||
it may actually be running on).
|
||||
*/
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
#if defined(XP_WIN) || defined(XP_OS2)
|
||||
extern char *XP_AppName, *XP_AppCodeName, *XP_AppVersion;
|
||||
extern char *XP_AppLanguage, *XP_AppPlatform;
|
||||
#else
|
||||
extern const char *XP_AppName, *XP_AppCodeName, *XP_AppVersion;
|
||||
extern const char *XP_AppLanguage, *XP_AppPlatform;
|
||||
#endif
|
||||
XP_END_PROTOS
|
||||
|
||||
/* this define is needed for error message efficiency
|
||||
*
|
||||
* please don't comment it out for UNIX - LJM
|
||||
*/
|
||||
/* this is constant across languages - do NOT localize it */
|
||||
#define XP_CANONICAL_CLIENT_NAME "Netscape"
|
||||
|
||||
/* name of the program */
|
||||
/* XP_LOCAL_CLIENT_NAME was never used consistently: use XP_AppName instead. */
|
||||
|
||||
#endif /* _GUI_H_ */
|
||||
250
mozilla/include/hotlist.h
Normal file
250
mozilla/include/hotlist.h
Normal file
@@ -0,0 +1,250 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef HOTLIST_H
|
||||
#define HOTLIST_H
|
||||
|
||||
#include "xp_mcom.h"
|
||||
#include "ntypes.h"
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
typedef enum HOT_Type {
|
||||
HOT_URLType, HOT_HeaderType, HOT_SeparatorType } HOT_Type;
|
||||
|
||||
typedef struct HotlistStruct_ {
|
||||
HOT_Type type;
|
||||
Bool is_folded; /* if it's a header is it folded? */
|
||||
XP_List *children; /* a list of children, only headers have these */
|
||||
char *name; /* a title */
|
||||
char *address; /* the URL address */
|
||||
char *description; /* random text */
|
||||
time_t last_visit;
|
||||
time_t addition_date;
|
||||
char *content_type;
|
||||
struct HotlistStruct_ *parent; /* My hotlist parent */
|
||||
XP_List *lParent; /* The XP_List object that points to my parent or NULL */
|
||||
} HotlistStruct;
|
||||
|
||||
/* tell the hotlist code that the hotlist has been modified
|
||||
* so that it gets saved the next time SaveHotlist is called
|
||||
*/
|
||||
extern void HOT_SetModified(void);
|
||||
|
||||
/* changes a entry to a header type from a non header type
|
||||
* and vice versa. If the object was a header and
|
||||
* has children, the children will be blown away. (very bad)
|
||||
*/
|
||||
extern void HOT_ChangeEntryType(HotlistStruct * entry, HOT_Type new_type);
|
||||
|
||||
/* Fold or unfold a hotlist header
|
||||
*
|
||||
* set the Boolean to True to fold the list and
|
||||
* False to unfold
|
||||
*/
|
||||
extern void HOT_FoldHeader(HotlistStruct * item, Bool fold);
|
||||
|
||||
/* checks the hotlist for a url and updates the last accessed
|
||||
* time
|
||||
*/
|
||||
extern void HOT_UpdateHotlistTime(URL_Struct *URL_s, time_t cur_time);
|
||||
|
||||
/* Performs regular expression match on hotlist name and address
|
||||
* fields. Returns the found object, or NULL if not
|
||||
* found.
|
||||
*
|
||||
* start_obj specifies the object to start searching
|
||||
* on. The start_num object WILL NOT be searched but all those
|
||||
* after it will be.
|
||||
* To search the whole list give NULL as start_obj.
|
||||
*
|
||||
* If headers became unfolded because of the search then redisplay_all
|
||||
* will be set to TRUE
|
||||
*/
|
||||
extern HotlistStruct * HOT_SearchHotlist(char * search_string,
|
||||
HotlistStruct * start_obj,
|
||||
Bool * redisplay_all);
|
||||
|
||||
/* returns TRUE if the second argument is a direct
|
||||
* descendent of the first argument.
|
||||
*
|
||||
* returns FALSE otherwise
|
||||
*/
|
||||
extern Bool HOT_IsDescendent(HotlistStruct *parent, HotlistStruct *possible_child);
|
||||
|
||||
|
||||
/* Reads the hostlist from disk, what else?
|
||||
*
|
||||
* pass in the hotlist filename and a relative URL which represents
|
||||
* the original location of the html file. If you are reading the
|
||||
* default hotlist you should pass in a file URL of the form
|
||||
* file://localhost/PATH
|
||||
*
|
||||
*/
|
||||
extern void HOT_ReadHotlistFromDisk (char * filename, char * relative_url);
|
||||
|
||||
/* returns an integer index of the item in the list
|
||||
*/
|
||||
extern int HOT_GetIndex(HotlistStruct * item);
|
||||
|
||||
/* returns an integer index of the item in the list
|
||||
* and does not pay attention to the is_folded value
|
||||
*/
|
||||
extern int HOT_GetUnfoldedIndex(HotlistStruct * item);
|
||||
|
||||
/* returns the object associated with the index returned by
|
||||
* HOT_GetIndex()
|
||||
*/
|
||||
extern HotlistStruct * HOT_IndexOf(int index);
|
||||
|
||||
/* returns the object associated with the index returned by
|
||||
* HOT_GetUnfoldedIndex()
|
||||
*/
|
||||
extern HotlistStruct * HOT_UnfoldedIndexOf(int index);
|
||||
|
||||
/* returns an integer depth of the item in the list starting at zero
|
||||
*/
|
||||
extern int HOT_GetDepth(HotlistStruct * item);
|
||||
|
||||
/* return a pointer to the main hotlist list
|
||||
*
|
||||
* returns NULL if nothing has ever been
|
||||
* added to the hotlist
|
||||
*/
|
||||
extern XP_List * HOT_GetHotlistList(void);
|
||||
|
||||
/* saves the hotlist to a configuration file
|
||||
*/
|
||||
extern int HOT_SaveHotlist (char * filename);
|
||||
|
||||
/* Free's the entire hotlist
|
||||
*/
|
||||
extern void HOT_FreeHotlist (void);
|
||||
|
||||
|
||||
/* create a hotlist entry struct and fill it in with
|
||||
* the passed in data
|
||||
*
|
||||
* returns NULL on out of memory error.
|
||||
*/
|
||||
extern HotlistStruct *
|
||||
HOT_CreateEntry(HOT_Type type,
|
||||
const char *name,
|
||||
const char *address,
|
||||
const char *content_type,
|
||||
time_t last_visit);
|
||||
|
||||
/* free's a hotlist entry
|
||||
*/
|
||||
extern void HOT_FreeEntry(HotlistStruct * entry);
|
||||
|
||||
/* create a completely new copy of the entry passed in
|
||||
*/
|
||||
extern HotlistStruct * HOT_CopyEntry(HotlistStruct * entry);
|
||||
|
||||
/* insert an item before another item in the hotlist
|
||||
*
|
||||
* if the insert_before item is NULL or not found the item
|
||||
* will be inserted at the begining of the list
|
||||
*/
|
||||
extern void HOT_InsertItemBefore(HotlistStruct * insert_before, HotlistStruct * insertee);
|
||||
|
||||
/* insert an item after another item in the hotlist
|
||||
*
|
||||
* if the insert_after item is NULL or not found the item
|
||||
* will be inserted at the end of the list
|
||||
*/
|
||||
extern void HOT_InsertItemAfter(HotlistStruct * insert_after, HotlistStruct * insertee);
|
||||
|
||||
/* insert an item in a header if "insert_after" is a
|
||||
* Header type, or after the item if "insert after" is
|
||||
* not a header type.
|
||||
*
|
||||
* if the insert_after item is NULL or not found the item
|
||||
* will be inserted at the end of the hotlist
|
||||
*/
|
||||
extern void
|
||||
HOT_InsertItemInHeaderOrAfterItem(HotlistStruct * insert_after,
|
||||
HotlistStruct * insertee);
|
||||
|
||||
/* remove an item from the hotlist and free's it
|
||||
*
|
||||
* returns TRUE on success, FALSE if not found
|
||||
*/
|
||||
extern Bool HOT_RemoveItem(HotlistStruct * old_item);
|
||||
|
||||
/* remove an item from the hotlist and doesn't free it
|
||||
*
|
||||
* returns TRUE on success, FALSE if not found
|
||||
*/
|
||||
extern Bool HOT_RemoveItemFromList(HotlistStruct * old_item);
|
||||
|
||||
/* move an item up in the list
|
||||
*/
|
||||
extern void HOT_MoveObjectUp(HotlistStruct * item);
|
||||
|
||||
/* move an item down in the list
|
||||
*/
|
||||
extern void HOT_MoveObjectDown(HotlistStruct * item);
|
||||
|
||||
/* returns True if the object can be moved Up
|
||||
* False if the object cannot be moved Up or if
|
||||
* it cannot be found in the list
|
||||
*/
|
||||
extern Bool HOT_ObjectCanGoUp(HotlistStruct * item);
|
||||
|
||||
/* returns True if the object can be moved down
|
||||
* False if the object cannot be moved down or if
|
||||
* it cannot be found in the list
|
||||
*/
|
||||
extern Bool HOT_ObjectCanGoDown(HotlistStruct * item);
|
||||
|
||||
/* Whether the file will be written when Save is called. */
|
||||
extern Bool HOT_Modified(void);
|
||||
|
||||
/*
|
||||
* Gets the top node of the hotlist
|
||||
*/
|
||||
extern HotlistStruct*
|
||||
HOT_GetHotlist (void);
|
||||
|
||||
|
||||
/*
|
||||
* Convert a number of selections in a hotlist list into a block of
|
||||
* memory that the user can use for cut and paste operations
|
||||
*/
|
||||
extern char *
|
||||
HOT_ConvertSelectionsToBlock(HotlistStruct ** list,
|
||||
int iCount,
|
||||
int bLongFormat,
|
||||
int32 * lTotalLen);
|
||||
/*
|
||||
* Take a block of memory and insert the hotlist items it represents into
|
||||
* the current hotlist
|
||||
*/
|
||||
extern void
|
||||
HOT_InsertBlockAt(char * pOriginalBlock,
|
||||
HotlistStruct * item,
|
||||
int bLongFormat,
|
||||
int32 lTotalLen);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* HOTLIST_H */
|
||||
|
||||
|
||||
480
mozilla/include/imap.h
Normal file
480
mozilla/include/imap.h
Normal file
@@ -0,0 +1,480 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
#ifndef __imap__
|
||||
#define __imap__
|
||||
|
||||
#include "structs.h"
|
||||
#include "msgcom.h"
|
||||
|
||||
|
||||
/* used for communication between libmsg and libnet */
|
||||
#define kNoFlags 0x00 /* RFC flags */
|
||||
#define kMarked 0x01
|
||||
#define kUnmarked 0x02
|
||||
#define kNoinferiors 0x04
|
||||
#define kNoselect 0x08
|
||||
#define kImapTrash 0x10 /* Navigator flag */
|
||||
#define kJustExpunged 0x20 /* This update is a post expunge url update. */
|
||||
#define kPersonalMailbox 0x40 /* this mailbox is in the personal namespace */
|
||||
#define kPublicMailbox 0x80 /* this mailbox is in the public namespace */
|
||||
#define kOtherUsersMailbox 0x100 /* this mailbox is in the other users' namespace */
|
||||
|
||||
/* flags for individual messages */
|
||||
/* currently the ui only offers \Seen and \Flagged */
|
||||
#define kNoImapMsgFlag 0x0000
|
||||
#define kImapMsgSeenFlag 0x0001
|
||||
#define kImapMsgAnsweredFlag 0x0002
|
||||
#define kImapMsgFlaggedFlag 0x0004
|
||||
#define kImapMsgDeletedFlag 0x0008
|
||||
#define kImapMsgDraftFlag 0x0010
|
||||
#define kImapMsgRecentFlag 0x0020
|
||||
#define kImapMsgForwardedFlag 0x0040 /* Not always supported, check mailbox folder */
|
||||
#define kImapMsgMDNSentFlag 0x0080 /* Not always supported. check mailbox folder */
|
||||
|
||||
#define kImapMsgSupportUserFlag 0x8000 /* This seems to be the most cost effective way of
|
||||
* piggying back the server support user flag
|
||||
* info.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
kPersonalNamespace = 0,
|
||||
kOtherUsersNamespace,
|
||||
kPublicNamespace,
|
||||
kDefaultNamespace,
|
||||
kUnknownNamespace
|
||||
} EIMAPNamespaceType;
|
||||
|
||||
|
||||
typedef int32 imap_uid;
|
||||
|
||||
#ifdef XP_CPLUSPLUS
|
||||
class TImapFlagAndUidState;
|
||||
#else
|
||||
typedef struct TImapFlagAndUidState TImapFlagAndUidState;
|
||||
#endif
|
||||
|
||||
/* forward declaration */
|
||||
typedef void ImapActiveEntry;
|
||||
|
||||
/* url used to signify that filtering is complete so
|
||||
we can tell the fe that the inbox thread pane is
|
||||
loaded */
|
||||
#define kImapFilteringCompleteURL "Mailbox://?filteringcomplete"
|
||||
|
||||
/* url used to signify that online/offline synch is complete */
|
||||
#define kImapOnOffSynchCompleteURL "Mailbox://?onoffsynchcomplete"
|
||||
|
||||
/* if a url creator does not know the hierarchySeparator, use this */
|
||||
#define kOnlineHierarchySeparatorUnknown ' '
|
||||
|
||||
struct mailbox_spec {
|
||||
int32 folder_UIDVALIDITY;
|
||||
int32 number_of_messages;
|
||||
int32 number_of_unseen_messages;
|
||||
int32 number_of_recent_messages;
|
||||
|
||||
uint32 box_flags;
|
||||
|
||||
char *allocatedPathName;
|
||||
char hierarchySeparator;
|
||||
const char *hostName;
|
||||
|
||||
TNavigatorImapConnection *connection;
|
||||
TImapFlagAndUidState *flagState;
|
||||
|
||||
XP_Bool folderSelected;
|
||||
XP_Bool discoveredFromLsub;
|
||||
|
||||
const char *smtpPostAddress;
|
||||
};
|
||||
|
||||
typedef struct mailbox_spec mailbox_spec;
|
||||
|
||||
|
||||
enum EIMAPSubscriptionUpgradeState {
|
||||
kEverythingDone,
|
||||
kBringUpSubscribeUI
|
||||
};
|
||||
|
||||
enum ImapOnlineCopyState {
|
||||
kInProgress,
|
||||
kSuccessfulCopy,
|
||||
kFailedCopy,
|
||||
kSuccessfulDelete,
|
||||
kFailedDelete,
|
||||
kReadyForAppendData,
|
||||
kFailedAppend
|
||||
};
|
||||
|
||||
struct folder_rename_struct {
|
||||
char *fOldName;
|
||||
char *fNewName;
|
||||
};
|
||||
|
||||
|
||||
typedef struct folder_rename_struct folder_rename_struct;
|
||||
|
||||
|
||||
/* this file defines the syntax of the imap4 url's and offers functions
|
||||
that create url strings. If the functions do not offer enough
|
||||
functionality then let kevin know before you starting creating strings
|
||||
from scratch. */
|
||||
#include "xp_mcom.h"
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/* need mailbox status urls to get the number of message and the
|
||||
number of unread messages */
|
||||
|
||||
/* Selecting a mailbox */
|
||||
/* imap4://HOST?select?MAILBOXPATH */
|
||||
char *CreateImapMailboxSelectUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *undoDeleteIdentifierList);
|
||||
|
||||
/* lite select, used to verify UIDVALIDITY while going on/offline */
|
||||
char *CreateImapMailboxLITESelectUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator);
|
||||
|
||||
/* expunge, used in traditional imap delete model */
|
||||
char *CreateImapMailboxExpungeUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator);
|
||||
|
||||
/* Creating a mailbox */
|
||||
/* imap4://HOST?create?MAILBOXPATH */
|
||||
char *CreateImapMailboxCreateUrl(const char *imapHost, const char *mailbox, char hierarchySeparator);
|
||||
|
||||
/* discover the children of this mailbox */
|
||||
char *CreateImapChildDiscoveryUrl(const char *imapHost, const char *mailbox, char hierarchySeparator);
|
||||
|
||||
/* discover the n-th level children of this mailbox */
|
||||
char *CreateImapLevelChildDiscoveryUrl(const char *imapHost, const char *mailbox, char hierarchySeparator, int n);
|
||||
|
||||
/* discover the mailboxes of this account */
|
||||
char *CreateImapAllMailboxDiscoveryUrl(const char *imapHost);
|
||||
|
||||
/* discover the mailboxes of this account, and the subscribed mailboxes */
|
||||
char *CreateImapAllAndSubscribedMailboxDiscoveryUrl(const char *imapHost);
|
||||
|
||||
/* deleting a mailbox */
|
||||
/* imap4://HOST?delete?MAILBOXPATH */
|
||||
char *CreateImapMailboxDeleteUrl(const char *imapHost, const char *mailbox, char hierarchySeparator);
|
||||
|
||||
/* renaming a mailbox */
|
||||
/* imap4://HOST?rename?OLDNAME?NEWNAME */
|
||||
char *CreateImapMailboxRenameLeafUrl(const char *imapHost,
|
||||
const char *oldBoxPathName,
|
||||
char hierarchySeparator,
|
||||
const char *newBoxLeafName);
|
||||
|
||||
/* renaming a mailbox, moving hierarchy */
|
||||
/* imap4://HOST?movefolderhierarchy?OLDNAME?NEWNAME */
|
||||
/* oldBoxPathName is the old name of the child folder */
|
||||
/* destinationBoxPathName is the name of the new parent */
|
||||
char *CreateImapMailboxMoveFolderHierarchyUrl(const char *imapHost,
|
||||
const char *oldBoxPathName,
|
||||
char oldHierarchySeparator,
|
||||
const char *destinationBoxPathName,
|
||||
char newHierarchySeparator);
|
||||
|
||||
/* listing available mailboxes */
|
||||
/* imap4://HOST?list */
|
||||
char *CreateImapListUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
const char hierarchySeparator);
|
||||
|
||||
/* biff */
|
||||
char *CreateImapBiffUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
uint32 uidHighWater);
|
||||
|
||||
|
||||
|
||||
/* fetching RFC822 messages */
|
||||
/* imap4://HOST?fetch?<UID/SEQUENCE>?MAILBOXPATH?x */
|
||||
/* 'x' is the message UID or sequence number list */
|
||||
/* will set the 'SEEN' flag */
|
||||
char *CreateImapMessageFetchUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *messageIdentifierList,
|
||||
XP_Bool messageIdsAreUID);
|
||||
|
||||
|
||||
/* fetching the headers of RFC822 messages */
|
||||
/* imap4://HOST?header?<UID/SEQUENCE>?MAILBOXPATH?x */
|
||||
/* 'x' is the message UID or sequence number list */
|
||||
/* will not affect the 'SEEN' flag */
|
||||
char *CreateImapMessageHeaderUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *messageIdentifierList,
|
||||
XP_Bool messageIdsAreUID);
|
||||
|
||||
|
||||
/* search an online mailbox */
|
||||
/* imap4://HOST?search?<UID/SEQUENCE>?MAILBOXPATH?SEARCHSTRING */
|
||||
char *CreateImapSearchUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *searchString,
|
||||
XP_Bool messageIdsAreUID);
|
||||
|
||||
/* delete messages */
|
||||
/* imap4://HOST?deletemsg?<UID/SEQUENCE>?MAILBOXPATH?x */
|
||||
/* 'x' is the message UID or sequence number list */
|
||||
char *CreateImapDeleteMessageUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *messageIds,
|
||||
XP_Bool idsAreUids);
|
||||
|
||||
/* delete all messages */
|
||||
/* imap4://HOST?deleteallmsgs?MAILBOXPATH */
|
||||
char *CreateImapDeleteAllMessagesUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator);
|
||||
|
||||
/* store +flags url */
|
||||
/* imap4://HOST?store+flags?<UID/SEQUENCE>?MAILBOXPATH?x?f */
|
||||
/* 'x' is the message UID or sequence number list */
|
||||
/* 'f' is the byte of flags */
|
||||
char *CreateImapAddMessageFlagsUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *messageIds,
|
||||
imapMessageFlagsType flags,
|
||||
XP_Bool idsAreUids);
|
||||
/* store -flags url */
|
||||
/* imap4://HOST?store-flags?<UID/SEQUENCE>?MAILBOXPATH?x?f */
|
||||
/* 'x' is the message UID or sequence number list */
|
||||
/* 'f' is the byte of flags */
|
||||
char *CreateImapSubtractMessageFlagsUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *messageIds,
|
||||
imapMessageFlagsType flags,
|
||||
XP_Bool idsAreUids);
|
||||
|
||||
/* set flags url, make the flags match */
|
||||
char *CreateImapSetMessageFlagsUrl(const char *imapHost,
|
||||
const char *mailbox,
|
||||
char hierarchySeparator,
|
||||
const char *messageIds,
|
||||
imapMessageFlagsType flags,
|
||||
XP_Bool idsAreUids);
|
||||
|
||||
|
||||
/* copy messages from one online box to another */
|
||||
/* imap4://HOST?onlineCopy?<UID/SEQUENCE>?
|
||||
SOURCEMAILBOXPATH?x?DESTINATIONMAILBOXPATH */
|
||||
/* 'x' is the message UID or sequence number list */
|
||||
char *CreateImapOnlineCopyUrl(const char *imapHost,
|
||||
const char *sourceMailbox,
|
||||
char sourceHierarchySeparator,
|
||||
const char *messageIds,
|
||||
const char *destinationMailbox,
|
||||
char destinationHierarchySeparator,
|
||||
XP_Bool idsAreUids,
|
||||
XP_Bool isMove); /* cause delete after copy */
|
||||
|
||||
/* copy a message from an online box to an offline box */
|
||||
/* imap4://HOST?ontooffCopy?SOURCEMAILBOXPATH?number=x?
|
||||
DESTINATIONMAILBOXPATH */
|
||||
/* 'x' is the message sequence number */
|
||||
char *CreateImapOnToOfflineCopyUrl( const char *imapHost,
|
||||
const char *sourceMailbox,
|
||||
char sourceHierarchySeparator,
|
||||
const char *messageIds,
|
||||
const char *destinationMailbox,
|
||||
XP_Bool idsAreUids,
|
||||
XP_Bool isMove); /* cause delete after copy */
|
||||
|
||||
/* copy messages from an offline box to an online box */
|
||||
/* imap4://HOST?offtoonCopy?DESTINATIONMAILBOXPATH */
|
||||
/* the number of messages and their sizes are negotiated later */
|
||||
char *CreateImapOffToOnlineCopyUrl(const char *imapHost,
|
||||
const char *destinationMailbox,
|
||||
char destinationHierarchySeparator);
|
||||
|
||||
/* Subscribe to a mailbox on the given IMAP host */
|
||||
char *CreateIMAPSubscribeMailboxURL(const char *imapHost, const char *mailboxName);
|
||||
|
||||
/* Unsubscribe from a mailbox on the given IMAP host */
|
||||
char *CreateIMAPUnsubscribeMailboxURL(const char *imapHost, const char *mailboxName);
|
||||
|
||||
/* get mail account rul */
|
||||
/* imap4://HOST?NETSCAPE */
|
||||
char *CreateImapManageMailAccountUrl(const char *imapHost);
|
||||
|
||||
/* append message from file */
|
||||
/* imap4://HOST?appendmsgfromfile?MSGFILEPATH?DESTINATIONMAILBOXPATH */
|
||||
char *CreateImapAppendMessageFromFileUrl(const char *imapHost,
|
||||
const char *destinationMailboxPath,
|
||||
const char hierarchySeparator,
|
||||
XP_Bool isDraft);
|
||||
|
||||
/* refresh the ACL for a folder */
|
||||
char *CreateIMAPRefreshACLForFolderURL(const char *imapHost, const char *mailbox);
|
||||
|
||||
/* refresh the ACL for all folders on given host*/
|
||||
char *CreateIMAPRefreshACLForAllFoldersURL(const char *imapHost);
|
||||
|
||||
/* Run the auto-upgrade to IMAP Subscription */
|
||||
char *CreateIMAPUpgradeToSubscriptionURL(const char *imapHost, XP_Bool subscribeToAll);
|
||||
|
||||
NET_StreamClass *CreateIMAPDownloadMessageStream(ImapActiveEntry *ce, uint32 msgSize);
|
||||
|
||||
void UpdateIMAPMailboxInfo(mailbox_spec *adoptedBoxSpec, MWContext *currentContext);
|
||||
|
||||
#define kUidUnknown -1
|
||||
int32 GetUIDValidityForSpecifiedImapFolder(const char *hostName, const char *canonicalimapName, MWContext *currentContext);
|
||||
|
||||
enum EMailboxDiscoverStatus {
|
||||
eContinue,
|
||||
eContinueNew,
|
||||
eListMyChildren,
|
||||
eNewServerDirectory,
|
||||
eCancelled };
|
||||
|
||||
enum EMailboxDiscoverStatus DiscoverIMAPMailbox(mailbox_spec *adoptedBoxSpec, MSG_Master *master, MWContext *currentContext);
|
||||
|
||||
void ReportSuccessOfOnlineCopy(MWContext *currentContext, enum ImapOnlineCopyState copyState);
|
||||
void ReportSuccessOfOnlineDelete(MWContext *currentContext, const char *mailboxName);
|
||||
void ReportFailureOfOnlineCreate(MWContext *currentContext, const char *mailboxName);
|
||||
void ReportSuccessOfOnlineRename(MWContext *currentContext, folder_rename_struct *names);
|
||||
void ReportMailboxDiscoveryDone(MWContext *currentContext, URL_Struct *URL_s);
|
||||
void ReportSuccessOfChildMailboxDiscovery(MWContext *currentContext);
|
||||
void NotifyHeaderFetchCompleted(MWContext *currentContext, TNavigatorImapConnection *imapConnection);
|
||||
|
||||
void ReportLiteSelectUIDVALIDITY(MSG_Pane *receivingPane, uint32 UIDVALIDITY);
|
||||
|
||||
typedef void (UploadCompleteFunctionPointer)(void*);
|
||||
void BeginMessageUpload(MWContext *currentContext,
|
||||
PRFileDesc *ioSocket,
|
||||
UploadCompleteFunctionPointer *completeFunction,
|
||||
void *completionFunctionArgument);
|
||||
|
||||
void IMAP_DoNotDownLoadAnyMessageHeadersForMailboxSelect(TNavigatorImapConnection *connection);
|
||||
void IMAP_DownLoadMessagesForMailboxSelect(TNavigatorImapConnection *connection,
|
||||
uint32 *messageKeys, /* uint32* is adopted */
|
||||
uint32 numberOfKeys);
|
||||
|
||||
void IMAP_DownLoadMessageBodieForMailboxSelect(TNavigatorImapConnection *connection,
|
||||
uint32 *messageKeys, /* uint32* is adopted */
|
||||
uint32 numberOfKeys);
|
||||
|
||||
void IMAP_BodyIdMonitor(TNavigatorImapConnection *connection, XP_Bool enter);
|
||||
|
||||
const char *IMAP_GetCurrentConnectionUrl(TNavigatorImapConnection *connection);
|
||||
|
||||
void IMAP_UploadAppendMessageSize(TNavigatorImapConnection *connection, uint32 msgSize, imapMessageFlagsType flags);
|
||||
void IMAP_ResetAnyCachedConnectionInfo();
|
||||
|
||||
XP_Bool IMAP_CheckNewMail(TNavigatorImapConnection *connection);
|
||||
XP_Bool IMAP_NewMailDetected(TNavigatorImapConnection *connection);
|
||||
|
||||
TImapFlagAndUidState *IMAP_CreateFlagState(int numberOfMessages);
|
||||
void IMAP_DeleteFlagState(TImapFlagAndUidState *state);
|
||||
int IMAP_GetFlagStateNumberOfMessages(TImapFlagAndUidState *state);
|
||||
|
||||
imap_uid IMAP_GetUidOfMessage(int zeroBasedIndex, TImapFlagAndUidState *state);
|
||||
imapMessageFlagsType IMAP_GetMessageFlags(int zeroBasedIndex, TImapFlagAndUidState *state);
|
||||
imapMessageFlagsType IMAP_GetMessageFlagsFromUID(imap_uid uid, XP_Bool *foundIt, TImapFlagAndUidState *state);
|
||||
|
||||
void IMAP_TerminateConnection (TNavigatorImapConnection *connection);
|
||||
|
||||
char *IMAP_CreateOnlineSourceFolderNameFromUrl(const char *url);
|
||||
|
||||
void IMAP_FreeBoxSpec(mailbox_spec *victim);
|
||||
|
||||
const char *IMAP_GetPassword();
|
||||
void IMAP_SetPassword(const char *password);
|
||||
|
||||
/* called once only by MSG_InitMsgLib */
|
||||
void IMAP_StartupImap();
|
||||
|
||||
/* called once only by MSG_ShutdownMsgLib */
|
||||
void IMAP_ShutdownImap();
|
||||
|
||||
/* used to prevent recursive listing of mailboxes during discovery */
|
||||
int64 IMAP_GetTimeStampOfNonPipelinedList();
|
||||
|
||||
/* returns TRUE if either we have a password or we were preAuth'd by SSL certs */
|
||||
XP_Bool IMAP_HaveWeBeenAuthenticated();
|
||||
|
||||
/* used by libmsg when creating an imap message display stream */
|
||||
int IMAP_InitializeImapFeData (ImapActiveEntry * ce);
|
||||
MSG_Pane *IMAP_GetActiveEntryPane(ImapActiveEntry * ce);
|
||||
NET_StreamClass *IMAP_CreateDisplayStream(ImapActiveEntry * ce, XP_Bool clearCacheBit, uint32 msgSize);
|
||||
|
||||
/* used by libmsg when a new message is loaded to interrupt the load of the previous message */
|
||||
void IMAP_PseudoInterruptFetch(MWContext *context);
|
||||
|
||||
void IMAP_URLFinished(URL_Struct *URL_s);
|
||||
|
||||
XP_Bool IMAP_HostHasACLCapability(const char *hostName);
|
||||
|
||||
/**** IMAP Host stuff - used for communication between MSG_IMAPHost (in libmsg) and TImapHostInfo (in libnet) ****/
|
||||
|
||||
/* obsolete? */
|
||||
/*void IMAP_SetNamespacesFromPrefs(const char *hostName, char *personalDir, char *publicDir, char *otherUsersDir);*/
|
||||
|
||||
/* Sets the preference of whether or not we should always explicitly LIST the INBOX for given host */
|
||||
void IMAP_SetShouldAlwaysListInboxForHost(const char *hostName, XP_Bool shouldList);
|
||||
|
||||
/* Gets the number of namespaces in use for a given host */
|
||||
int IMAP_GetNumberOfNamespacesForHost(const char *hostName);
|
||||
|
||||
/* Sets the currently-used default personal namespace for a given host. Used for updating from libnet when
|
||||
we get a NAMESPACE response. */
|
||||
void MSG_SetNamespacePrefixes(MSG_Master *master, const char *hostName, EIMAPNamespaceType type, const char *prefix);
|
||||
|
||||
|
||||
/* Check to see if we need upgrade to IMAP subscription */
|
||||
extern XP_Bool MSG_ShouldUpgradeToIMAPSubscription(MSG_Master *mast);
|
||||
extern void MSG_ReportSuccessOfUpgradeToIMAPSubscription(MWContext *context, enum EIMAPSubscriptionUpgradeState *state);
|
||||
|
||||
/* Adds a set of ACL rights for the given folder on the given host for the given user. If userName is NULL, it means
|
||||
the currently authenticated user (i.e. my rights). */
|
||||
extern void MSG_AddFolderRightsForUser(MSG_Master *master, const char *hostName, const char*mailboxName, const char *userName, const char *rights);
|
||||
|
||||
/* Clears all ACL rights for the given folder on the given host for all users. */
|
||||
extern void MSG_ClearFolderRightsForFolder(MSG_Master *master, const char *hostName, const char *mailboxName);
|
||||
|
||||
/* Refreshes the icon / flags for a given folder, based on new ACL rights */
|
||||
extern void MSG_RefreshFolderRightsViewForFolder(MSG_Master *master, const char *hostName, const char *mailboxName);
|
||||
|
||||
extern XP_Bool MSG_GetFolderNeedsSubscribing(MSG_FolderInfo *folder);
|
||||
|
||||
/* Returns TRUE if this folder needs an auto-refresh of the ACL (on a folder open, for example) */
|
||||
extern XP_Bool MSG_GetFolderNeedsACLListed(MSG_FolderInfo *folder);
|
||||
|
||||
/* Returns TRUE if this folder has NEVER (ever) had an ACL retrieved for it */
|
||||
extern XP_Bool MSG_IsFolderACLInitialized(MSG_Master *master, const char *folderName, const char *hostName);
|
||||
|
||||
extern char *IMAP_SerializeNamespaces(char **prefixes, int len);
|
||||
extern int IMAP_UnserializeNamespaces(const char *str, char **prefixes, int len);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif
|
||||
369
mozilla/include/intl_csi.h
Normal file
369
mozilla/include/intl_csi.h
Normal file
@@ -0,0 +1,369 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/* intl_csi.h */
|
||||
|
||||
#ifndef INTL_CSI_H
|
||||
#define INTL_CSI_H
|
||||
/*
|
||||
Using the i18n Character-Set-Information (CSI) accessor functions:
|
||||
1) include the header file
|
||||
|
||||
#include "intl_csi.h"
|
||||
|
||||
2) get the i18n CSI object (generally from MWContext)
|
||||
|
||||
INTL_CharSetInfo csi = LO_GetDocumentCharacterSetInfo(context);
|
||||
|
||||
3) access (read/set) the data element
|
||||
|
||||
int16 doc_csid = INTL_GetCSIDocCSID(csi);
|
||||
INTL_SetCSIDocCSID(csi, new_doc_csid);
|
||||
|
||||
int16 win_csid = INTL_GetCSIWinCSID(csi);
|
||||
INTL_SetCSIWinCSID(csi, new_win_csid);
|
||||
|
||||
char *mime_name = INTL_GetCSIMimeCharset(csi);
|
||||
INTL_SetCSIMimeCharset(csi, new_mime_charset);
|
||||
|
||||
int16 relayout_flag = INTL_GetCSIRelayoutFlag(csi);
|
||||
INTL_SetCSIRelayoutFlag(csi, new_relayout_flag);
|
||||
|
||||
*/
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
#include "ntypes.h"
|
||||
#include "libi18n.h"
|
||||
|
||||
/**
|
||||
* Cookie for INTL_CSIInfo.
|
||||
*
|
||||
* This is a Magic Cookie to validate the pointer to INTL_CSIInfo in MWContext.
|
||||
*
|
||||
*/
|
||||
#define INTL_TAG 0x494E544C
|
||||
|
||||
/**@name Character Set Information (CSI) */
|
||||
/*@{*/
|
||||
/**
|
||||
* Allocate a new charset info object, and clear it with zeroes.
|
||||
*
|
||||
* @return The new charset info object
|
||||
* @see INTL_CSIInitialize, INTL_CSIDestroy
|
||||
*/
|
||||
PUBLIC INTL_CharSetInfo INTL_CSICreate(void);
|
||||
|
||||
/**
|
||||
* Frees the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @see INTL_CSICreate
|
||||
*/
|
||||
PUBLIC void INTL_CSIDestroy(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets all the charset info object fields to initial values.
|
||||
*
|
||||
* The override, HTTP, HTML META, document and window charset IDs are all set
|
||||
* to CS_DEFAULT. The MIME charset is set to NULL. The relayout flag is set
|
||||
* to METACHARSET_NONE.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @see INTL_CSIInitialize
|
||||
*/
|
||||
PUBLIC void INTL_CSIReset(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Initializes the charset info object.
|
||||
*
|
||||
* <UL>
|
||||
* <LI>
|
||||
* If the given is_metacharset_reload argument is FALSE, INTL_CSIReset is
|
||||
* called, passing the given charset info object.
|
||||
*
|
||||
* <LI>
|
||||
* If the given is_metacharset_reload argument is TRUE, the charset info
|
||||
* object's relayout flag is set to METACHARSET_RELAYOUTDONE.
|
||||
*
|
||||
* <LI>
|
||||
* Otherwise, if the override charset ID is previously set in this object,
|
||||
* it is set in the document charset ID field.
|
||||
*
|
||||
* <LI>
|
||||
* Otherwise, if the given HTTP charset is known, it is set in the HTTP
|
||||
* charset field.
|
||||
*
|
||||
* <LI>
|
||||
* Otherwise, the document charset ID field is set to the given
|
||||
* defaultDocCharSetID, unless the type is mail/news, in which case CS_DEFAULT
|
||||
* is used. This is because the META charset in mail/news is sometimes wrong.
|
||||
*
|
||||
* <LI>
|
||||
* Finally, the window charset ID is set, based on the document charset ID.
|
||||
* </UL>
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param is_metacharset_reload TRUE if it is currently reloading because
|
||||
* the layout code found HTML META charset.
|
||||
* FALSE otherwise.
|
||||
* @param http_charset Specifies the charset name if it is presented in
|
||||
* HTTP Content-Type header
|
||||
* @param type Specifies the context type
|
||||
* @param defaultDocCharSetID Specifies the default document charset ID.
|
||||
* @see
|
||||
*/
|
||||
PUBLIC void INTL_CSIInitialize(
|
||||
INTL_CharSetInfo obj,
|
||||
XP_Bool is_metacharset_reload,
|
||||
char *http_charset,
|
||||
int type,
|
||||
uint16 defaultDocCharSetID
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets HTML META charset info in the given charset info object.
|
||||
*
|
||||
* <UL>
|
||||
* <LI>
|
||||
* If the given charset is unknown, this function returns.
|
||||
*
|
||||
* <LI>
|
||||
* If the given context type is mail or news, this function returns,
|
||||
* since mail/news sometimes has wrong HTML META charsets.
|
||||
*
|
||||
* <LI>
|
||||
* If the relayout flag is set to something other than METACHARSET_NONE, this
|
||||
* function returns, to avoid setting the META charset more than once.
|
||||
*
|
||||
* <LI>
|
||||
* Otherwise, the HTML META charset field is set, and the relayout flag is
|
||||
* set to METACHARSET_HASCHARSET.
|
||||
* If the previous document charset was known,
|
||||
* and was different from the new META charset, the relayout flag is set to
|
||||
* METACHARSET_REQUESTRELAYOUT.
|
||||
* The window charset ID is also checked against the new one.
|
||||
* If they are different, the relayout flag is set to
|
||||
* METACHARSET_REQUESTRELAYOUT.
|
||||
* </UL>
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param charset_tag Specifies the HTML META charset
|
||||
* @param type Specifies the context type
|
||||
* @see INTL_GetCSIMetaDocCSID, INTL_GetCSIRelayoutFlag
|
||||
*/
|
||||
PUBLIC void INTL_CSIReportMetaCharsetTag(
|
||||
INTL_CharSetInfo obj,
|
||||
char *charset_tag,
|
||||
int type
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the context's charset info object.
|
||||
*
|
||||
* @param context Specifies the context
|
||||
* @return The context's charset info object
|
||||
* @see INTL_CSICreate
|
||||
*/
|
||||
PUBLIC INTL_CharSetInfo LO_GetDocumentCharacterSetInfo(
|
||||
MWContext *context
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the document charset ID of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @return The document charset ID
|
||||
* @see INTL_SetCSIDocCSID
|
||||
*/
|
||||
PUBLIC int16 INTL_GetCSIDocCSID(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets the document charset ID field of the given charset info object.
|
||||
*
|
||||
* The document charset ID field is only set if the higher precedence fields
|
||||
* (override, HTTP and META) are all set to CS_DEFAULT.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param docCharSetID Specifies the document charset ID
|
||||
* @see INTL_GetCSIDocCSID
|
||||
*/
|
||||
PUBLIC void INTL_SetCSIDocCSID(
|
||||
INTL_CharSetInfo obj,
|
||||
int16 docCharSetID
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the override document charset ID of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @return The override document charset ID
|
||||
* @see INTL_SetCSIOverrideDocCSID
|
||||
*/
|
||||
PUBLIC int16 INTL_GetCSIOverrideDocCSID(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets the override document charset ID of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param overrideDocCharSetID Specifies the override document charset ID
|
||||
* @see INTL_GetCSIOverrideDocCSID
|
||||
*/
|
||||
PUBLIC void INTL_SetCSIOverrideDocCSID(
|
||||
INTL_CharSetInfo obj,
|
||||
int16 overrideDocCharSetID
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the HTML META document charset ID of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @return The HTML META document charset ID
|
||||
* @see INTL_SetCSIMetaDocCSID
|
||||
*/
|
||||
PUBLIC int16 INTL_GetCSIMetaDocCSID(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets the HTML META document charset ID of the given charset info object.
|
||||
*
|
||||
* The HTML META document charset ID field is only set if the higher precedence
|
||||
* fields (override and HTTP) are all set to CS_DEFAULT.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param metaCharSetID Specifies the HTML META document charset ID
|
||||
* @see INTL_GetCSIMetaDocCSID
|
||||
*/
|
||||
PUBLIC void INTL_SetCSIMetaDocCSID(
|
||||
INTL_CharSetInfo obj,
|
||||
int16 metaCharSetID
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the HTTP document charset ID of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @return The HTTP document charset ID
|
||||
* @see INTL_SetCSIHTTPDocCSID
|
||||
*/
|
||||
PUBLIC int16 INTL_GetCSIHTTPDocCSID(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets the HTTP document charset ID of the given charset info object.
|
||||
*
|
||||
* The HTTP document charset ID field is only set if the higher precedence
|
||||
* field (override) is set to CS_DEFAULT.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param httpDocCharSetID Specifies the HTTP document charset ID
|
||||
* @see INTL_GetCSIHTTPDocCSID
|
||||
*/
|
||||
PUBLIC void INTL_SetCSIHTTPDocCSID(
|
||||
INTL_CharSetInfo obj,
|
||||
int16 httpDocCharSetID
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the window charset ID of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @return The window charset ID
|
||||
* @see INTL_SetCSIWinCSID
|
||||
*/
|
||||
PUBLIC int16 INTL_GetCSIWinCSID(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets the window charset ID field of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param winCharSetID Specifies the window charset ID
|
||||
* @see INTL_GetCSIWinCSID
|
||||
*/
|
||||
PUBLIC void INTL_SetCSIWinCSID(
|
||||
INTL_CharSetInfo obj,
|
||||
int16 winCharSetID
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the MIME charset field of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @return The MIME charset
|
||||
* @see INTL_SetCSIMimeCharset
|
||||
*/
|
||||
PUBLIC char *INTL_GetCSIMimeCharset(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets the MIME charset field of the given charset info object.
|
||||
*
|
||||
* If the charset info object already contains a pointer to a MIME charset,
|
||||
* that charset is freed. Then the given charset is copied, and the copy is
|
||||
* converted to lower case. The copy is then set in the MIME charset field.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param mime_charset Specifies the MIME charset
|
||||
* @see INTL_GetCSIMimeCharset
|
||||
*/
|
||||
PUBLIC void INTL_SetCSIMimeCharset(
|
||||
INTL_CharSetInfo obj,
|
||||
char *mime_charset
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the relayout field of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @return The relayout field
|
||||
* @see INTL_SetCSIRelayoutFlag
|
||||
*/
|
||||
PUBLIC int16 INTL_GetCSIRelayoutFlag(
|
||||
INTL_CharSetInfo obj
|
||||
);
|
||||
|
||||
/**
|
||||
* Sets the relayout field of the given charset info object.
|
||||
*
|
||||
* @param obj Specifies the charset info object
|
||||
* @param relayout Specifies the relayout field
|
||||
* @see INTL_GetCSIRelayoutFlag
|
||||
*/
|
||||
PUBLIC void INTL_SetCSIRelayoutFlag(
|
||||
INTL_CharSetInfo obj,
|
||||
int16 relayout
|
||||
);
|
||||
/*@}*/
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* INTL_CSI_H */
|
||||
176
mozilla/include/itapefs.h
Normal file
176
mozilla/include/itapefs.h
Normal file
@@ -0,0 +1,176 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef ITAPEFS_H
|
||||
#define ITAPEFS_H
|
||||
|
||||
#ifdef EDITOR
|
||||
//
|
||||
// Abstract output file stream.
|
||||
//
|
||||
class IStreamOut {
|
||||
public:
|
||||
IStreamOut();
|
||||
virtual ~IStreamOut();
|
||||
|
||||
virtual void Write( char *pBuffer, int32 iCount )=0;
|
||||
|
||||
// NOTICE: the implementation is not pure. There is a default
|
||||
// implementation that implements this function interms of
|
||||
// 'Write'.
|
||||
virtual int Printf( char * pFormat, ... );
|
||||
|
||||
enum EOutStreamStatus {
|
||||
EOS_NoError,
|
||||
EOS_DeviceFull,
|
||||
EOS_FileError
|
||||
};
|
||||
|
||||
virtual EOutStreamStatus Status(){ return EOS_NoError; }
|
||||
|
||||
// implemented in terms of the interface.
|
||||
void WriteInt( int32 i ){ Write( (char*)&i, sizeof( int32 ) ); }
|
||||
void WriteZString( char* pString);
|
||||
void WritePartialZString( char* pString, int32 start, int32 end);
|
||||
private:
|
||||
char* stream_buffer; // used to implement Printf
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
// Abstract File System
|
||||
//-----------------------------------------------------------------------
|
||||
typedef void
|
||||
EDT_ITapeFileSystemComplete( XP_Bool bSuccess, void *pArg );
|
||||
|
||||
class ITapeFileSystem {
|
||||
PRBool m_FirstBinary; // is the first file really binary, not text?
|
||||
public:
|
||||
ITapeFileSystem() { m_FirstBinary = PR_FALSE; }
|
||||
// ITapeFileSystem::File, ITapeFileSystem::Publish, or
|
||||
// ITapeFileSystem::MailSend,
|
||||
enum {File,Publish,MailSend};
|
||||
virtual intn GetType() = 0;
|
||||
|
||||
// This function is called before anything else. It tells the file
|
||||
// system the base url for the URLs added in AddFile().
|
||||
// An actual file, not a directory.
|
||||
virtual void SetSourceBaseURL( char* pURL )=0;
|
||||
|
||||
// DESCRIPTION:
|
||||
//
|
||||
// Add a name to the file system. It is up to the file system to localize
|
||||
// the name. For example, I could add 'http://home.netsacpe.com/
|
||||
// and the file system might decide that it should be called 'index.html'
|
||||
// if the file system were DOS, the url might be converted to INDEX.HTML
|
||||
//
|
||||
// pMIMEType may be NULL. In this case if the tape file system needs the
|
||||
// MIME type, it must figure it out by itself.
|
||||
//
|
||||
// RETURNS: index of the file (0 based), OR
|
||||
// ITapeFileSystem::Error if an error adding name, OR
|
||||
// ITapeFileSystem::SourceDestSame if adding
|
||||
// this name would result in the source and destination being the same, and thus
|
||||
// no point in copying the file.
|
||||
//
|
||||
// The first file added must be the root HTML document. (It is ok for the root
|
||||
// document to have the same source and dest URL).
|
||||
//
|
||||
virtual intn AddFile( char* pURL, char *pMIMEType, int16 iCharSetID)=0;
|
||||
|
||||
// Return the number of files added to the file system.
|
||||
virtual intn GetNumFiles()=0;
|
||||
|
||||
// Returns the absolute version of the URL given in AddFile(), using the
|
||||
// URL given in SetSourceBaseURL() as the base.
|
||||
// Allocated with XP_STRDUP().
|
||||
virtual char* GetSourceURL(intn iFileIndex)=0;
|
||||
|
||||
// Return the absolute destination of the HTML doc if meaningful, else return
|
||||
// NULL. Almost the same as "GetDestPathURL()+GetDestURL(0)" except that this call
|
||||
// will work before file 0 has been added to the file system.
|
||||
virtual char* GetDestAbsURL()=0;
|
||||
|
||||
// Gets the name of the RELATIVE url to place in the file. String is
|
||||
// allocated with XP_STRDUP();
|
||||
//
|
||||
virtual char* GetDestURL( intn iFileIndex )=0;
|
||||
|
||||
// Return the path URL associated with the ITapeFilesystem or NULL if there is none.
|
||||
// If NULL is returned, all URLs returned by GetDestURL() must be absolute.
|
||||
//
|
||||
// i.e. for a file or remote HTTP based ITapeFileSystem, this is the directory where the images are
|
||||
// stored. For a MHTML ITapeFileSystem this is NULL.
|
||||
//
|
||||
// String is allocated with XP_STRDUP().
|
||||
virtual char* GetDestPathURL() = 0;
|
||||
|
||||
//
|
||||
// Returns the name to display when saving the file, can be the same as
|
||||
// GetURLName. String is allocated with XP_STRDUP();
|
||||
//
|
||||
virtual char* GetHumanName( intn iFileIndex )=0;
|
||||
|
||||
enum {
|
||||
Error = -1, SourceDestSame = -2
|
||||
};
|
||||
|
||||
// Does the file referenced by iFileIndex already exist?
|
||||
// E.g. for the MHTML version, this will always return FALSE.
|
||||
virtual XP_Bool FileExists(intn iFileIndex) = 0;
|
||||
|
||||
// Will we be creating a new non-temporary file on the local machine.
|
||||
// Used to update SiteManager.
|
||||
virtual XP_Bool IsLocalPersistentFile(intn iFileIndex) = 0;
|
||||
|
||||
// ### mwelch Added so that multipart/related message saver can properly construct
|
||||
// messages using quoted/forwarded part data.
|
||||
// Tell the tape file system the mime type of a particular part.
|
||||
// Calling this overrides any previously determined mime type for this part.
|
||||
virtual void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL) = 0;
|
||||
|
||||
//
|
||||
// Opens the output stream. Returns a stream that can be written to or NULL if error. All
|
||||
// 'AddFile's occur before the first OpenStream.
|
||||
// Do not delete the returned stream, just call CloseStream() when done.
|
||||
//
|
||||
virtual IStreamOut *OpenStream( intn iFileIndex )=0;
|
||||
|
||||
virtual void CloseStream( intn iFileIndex )=0;
|
||||
|
||||
// Called on completion, TRUE if completed successfully, FALSE if it failed.
|
||||
// The caller should not reference the ITapeFileSystem after calling Complete().
|
||||
// Caller does not free up memory for ITapeFileSystem, Complete() causes file system to delete itself.
|
||||
//
|
||||
// The tape file system will call pfComplete with pArg and with whether the ITapeFileSystem
|
||||
// completed successfully. Note: the ITapeFileSystem may call pfComplete() with TRUE even if
|
||||
// ITapeFileSystem::Complete() was given FALSE.
|
||||
// pfComplete may be NULL. Call to pfComplete may be synchronous or asynchronous.
|
||||
//
|
||||
// The ITapeFileSystem will call pfComplete(success,pArg) before deleting itself. I.e. the ITapeFileSystem is still valid
|
||||
// when it calls pfComplete().
|
||||
virtual void Complete( Bool bSuccess, EDT_ITapeFileSystemComplete *pfComplete, void *pArg )=0;
|
||||
|
||||
inline PRBool IsFirstBinary(void) { return m_FirstBinary; }
|
||||
inline void SetFirstBinary(void) { m_FirstBinary = PR_TRUE; }
|
||||
inline void ResetFirstBinary(void) { m_FirstBinary = PR_FALSE; }
|
||||
};
|
||||
|
||||
#endif // EDITOR
|
||||
|
||||
#endif
|
||||
139
mozilla/include/libc_r.h
Normal file
139
mozilla/include/libc_r.h
Normal file
@@ -0,0 +1,139 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/* libc_r.h -- macros, defines, etc. to make using reentrant libc calls */
|
||||
/* a bit easier. This was initially done for AIX pthreads, */
|
||||
/* but should be usable for anyone... */
|
||||
|
||||
/* Most of these use locally defined space instead of static library space. */
|
||||
/* Because of this, we use the _INIT_R to declare/allocate space (stack), */
|
||||
/* and the plain routines to actually do it..._WARNING_: avoid allocating */
|
||||
/* memory wherever possible. Memory allocation is fairly expensive, at */
|
||||
/* least on AIX...use arrays instead (which allocate from the stack.) */
|
||||
/* I know the names are a bit strange, but I wanted to be fairly certain */
|
||||
/* that we didn't have any namespace corruption...in general, the inits are */
|
||||
/* R_<name>_INIT_R(), and the actual calls are R_<name>_R(). */
|
||||
|
||||
#ifndef _LIBC_R_H
|
||||
#define _LIBC_R_H
|
||||
|
||||
/************/
|
||||
/* strtok */
|
||||
/************/
|
||||
#define R_STRTOK_INIT_R() \
|
||||
char *r_strtok_r=NULL
|
||||
|
||||
#define R_STRTOK_R(return,source,delim) \
|
||||
return=strtok_r(source,delim,&r_strtok_r)
|
||||
|
||||
#define R_STRTOK_NORET_R(source,delim) \
|
||||
strtok_r(source,delim,&r_strtok_r)
|
||||
|
||||
/**************/
|
||||
/* strerror */
|
||||
/**************/
|
||||
#define R_MAX_STRERROR_LEN_R 8192 /* Straight from limits.h */
|
||||
|
||||
#define R_STRERROR_INIT_R() \
|
||||
char r_strerror_r[R_MAX_STRERROR_LEN_R]
|
||||
|
||||
#define R_STRERROR_R(val) \
|
||||
strerror_r(val,r_strerror_r,R_MAX_STRERROR_LEN_R)
|
||||
|
||||
/*****************/
|
||||
/* time things */
|
||||
/*****************/
|
||||
#define R_ASCTIME_INIT_R() \
|
||||
char r_asctime_r[26]
|
||||
|
||||
#define R_ASCTIME_R(val) \
|
||||
asctime_r(val,r_asctime_r)
|
||||
|
||||
#define R_CTIME_INIT_R() \
|
||||
char r_ctime_r[26]
|
||||
|
||||
#define R_CTIME_R(val) \
|
||||
ctime_r(val,r_ctime_r)
|
||||
|
||||
#define R_GMTIME_INIT_R() \
|
||||
struct tm r_gmtime_r
|
||||
|
||||
#define R_GMTIME_R(time) \
|
||||
gmtime_r(time,&r_gmtime_r)
|
||||
|
||||
#define R_LOCALTIME_INIT_R() \
|
||||
struct tm r_localtime_r
|
||||
|
||||
#define R_LOCALTIME_R(val) \
|
||||
localtime_r(val,&r_localtime_r)
|
||||
|
||||
/***********/
|
||||
/* crypt */
|
||||
/***********/
|
||||
#include <crypt.h>
|
||||
#define R_CRYPT_INIT_R() \
|
||||
CRYPTD r_cryptd_r; \
|
||||
bzero(&r_cryptd_r,sizeof(CRYPTD))
|
||||
|
||||
#define R_CRYPT_R(pass,salt) \
|
||||
crypt_r(pass,salt,&r_cryptd_r)
|
||||
|
||||
/**************/
|
||||
/* pw stuff */
|
||||
/**************/
|
||||
#define R_MAX_PW_LEN_R 1024
|
||||
/* The following must be after the last declaration, but */
|
||||
/* before the first bit of code... */
|
||||
#define R_GETPWNAM_INIT_R(pw_ptr) \
|
||||
struct passwd r_getpwnam_pw_r; \
|
||||
char r_getpwnam_line_r[R_MAX_PW_LEN_R]; \
|
||||
pw_ptr = &r_getpwnam_pw_r
|
||||
|
||||
#define R_GETPWNAM_R(name) \
|
||||
getpwnam_r(name,&r_getpwnam_pw_r,r_getpwnam_line_r,R_MAX_PW_LEN_R)
|
||||
|
||||
/*******************/
|
||||
/* gethost stuff */
|
||||
/*******************/
|
||||
#define R_GETHOSTBYADDR_INIT_R() \
|
||||
struct hostent r_gethostbyaddr_r; \
|
||||
struct hostent_data r_gethostbyaddr_data_r
|
||||
|
||||
#define R_GETHOSTBYADDR_R(addr,len,type,xptr_ent) \
|
||||
bzero(&r_gethostbyaddr_r,sizeof(struct hostent)); \
|
||||
bzero(&r_gethostbyaddr_data_r,sizeof(struct hostent_data)); \
|
||||
xptr_ent = &r_gethostbyaddr_r; \
|
||||
if (gethostbyaddr_r(addr,len,type, \
|
||||
&r_gethostbyaddr_r,&r_gethostbyaddr_data_r) == -1) { \
|
||||
xptr_ent = NULL; \
|
||||
}
|
||||
|
||||
#define R_GETHOSTBYNAME_INIT_R() \
|
||||
struct hostent r_gethostbyname_r; \
|
||||
struct hostent_data r_gethostbyname_data_r
|
||||
|
||||
#define R_GETHOSTBYNAME_R(name,xptr_ent) \
|
||||
bzero(&r_gethostbyname_r,sizeof(struct hostent)); \
|
||||
bzero(&r_gethostbyname_data_r,sizeof(struct hostent_data)); \
|
||||
xptr_ent = &r_gethostbyname_r; \
|
||||
if (gethostbyname_r(name, \
|
||||
&r_gethostbyname_r,&r_gethostbyname_data_r) == -1) { \
|
||||
xptr_ent = NULL; \
|
||||
}
|
||||
|
||||
#endif /* _LIBC_R_H */
|
||||
209
mozilla/include/libcnv.h
Normal file
209
mozilla/include/libcnv.h
Normal file
@@ -0,0 +1,209 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
//"libcnv.h"
|
||||
#ifndef _LIBCNV_H
|
||||
#define _LIBCNV_H
|
||||
#ifndef _IMAGE_CONVERT
|
||||
#error _IMAGE_CONVERT SYMBOL NEEDED BEFORE INCLUSION
|
||||
#endif /*_IMAGE_CONVERT*/
|
||||
|
||||
#ifndef __cplusplus
|
||||
typedef unsigned char BYTE;
|
||||
typedef uint32 DWORD;
|
||||
#endif
|
||||
|
||||
#include "xp_core.h"/*defines of int32 ect*/
|
||||
#include "xp_file.h"
|
||||
#include "xp_mem.h"/*XP_HUGE*/
|
||||
|
||||
#define MAXIMAGEPATHLEN 255
|
||||
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CONV_CANCEL,
|
||||
CONV_OK,
|
||||
CONVERR_INVALIDSOURCE,
|
||||
CONVERR_INVALIDDEST,
|
||||
CONVERR_INVALIDFILEHEADER,
|
||||
CONVERR_INVALIDIMAGEHEADER,
|
||||
CONVERR_INVALIDBITDEPTH,
|
||||
CONVERR_INVALIDCOLORMAP,
|
||||
CONVERR_BADREAD,
|
||||
CONVERR_OUTOFMEMORY,
|
||||
CONVERR_JPEGERROR,
|
||||
CONVERR_COMPRESSED,
|
||||
CONVERR_BADPLANES,
|
||||
CONVERR_BADWRITE,
|
||||
CONVERR_INVALIDPARAMS,
|
||||
CONVERR_UNKNOWN,
|
||||
NUM_CONVERR
|
||||
}CONVERT_IMAGERESULT;
|
||||
|
||||
|
||||
|
||||
typedef BYTE * CONVERT_IMG_ROW;
|
||||
typedef CONVERT_IMG_ROW * CONVERT_IMG_ARRAY;
|
||||
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
conv_unknown,
|
||||
conv_png,
|
||||
conv_jpeg,
|
||||
conv_bmp,
|
||||
conv_pict,
|
||||
conv_xpm,
|
||||
conv_rgb,
|
||||
conv_plugin
|
||||
}convimgenum;
|
||||
|
||||
|
||||
typedef struct tagCONVERT_IMG_STREAM
|
||||
{
|
||||
XP_HUGE_CHAR_PTR m_mem;
|
||||
FILE *m_file;/*used only with type 0 -must allready be opened for read or write does not use current index ect.*/
|
||||
int16 m_type;/*0=CONVERT_FILE 1=CONVERT_MEMORY*/
|
||||
DWORD m_streamsize;/* 0== unlimited */
|
||||
DWORD m_currentindex;
|
||||
}CONVERT_IMG_STREAM;
|
||||
|
||||
|
||||
|
||||
/*Sent in a BITMAP structure*/
|
||||
#define CONVERT_MEMORY 1
|
||||
#define CONVERT_FILE 0
|
||||
|
||||
|
||||
typedef struct tagCONVERT_IMGCONTEXT CONVERT_IMGCONTEXT;
|
||||
typedef struct tagCONVERT_IMG_INFO CONVERT_IMG_INFO;
|
||||
|
||||
typedef CONVERT_IMAGERESULT (*CONVERT_DIALOGIMAGECALLBACK)(CONVERT_IMGCONTEXT *input,
|
||||
CONVERT_IMGCONTEXT *outputarray,
|
||||
CONVERT_IMG_INFO *imginfo,
|
||||
int16 numoutput,
|
||||
CONVERT_IMG_ARRAY imagearray);
|
||||
typedef CONVERT_IMAGERESULT (*CONVERT_COMPLETECALLBACK)(CONVERT_IMGCONTEXT *outputarray,int16 p_numoutputs,void *hook);
|
||||
|
||||
typedef void (*CONVERT_BUFFERCALLBACK)(void *);/*j_common_ptr);*/
|
||||
|
||||
|
||||
|
||||
typedef struct tagCONVERT_CALLBACKS
|
||||
{
|
||||
CONVERT_DIALOGIMAGECALLBACK m_dialogimagecallback;
|
||||
CONVERT_BUFFERCALLBACK m_displaybuffercallback;
|
||||
CONVERT_COMPLETECALLBACK m_completecallback;
|
||||
}CONVERT_CALLBACKS;
|
||||
|
||||
|
||||
|
||||
typedef struct tagCONVERT_IMGCONTEXT
|
||||
{
|
||||
convimgenum m_imagetype;
|
||||
CONVERT_IMG_STREAM m_stream;/*used with m_streamtype 1,2*/
|
||||
int16 m_quality;
|
||||
char m_filename[MAXIMAGEPATHLEN];/*will not be used to open FILE *. used for output. maybe in future will open file?*/
|
||||
CONVERT_CALLBACKS m_callbacks;
|
||||
#ifdef XP_OS2
|
||||
XP_OS2_ARG(void *m_parentwindow);/*used for callbacks to bring up dialog boxes. void * = CWnd *for Windows*/
|
||||
#else
|
||||
XP_WIN_ARG(void *m_parentwindow);/*used for callbacks to bring up dialog boxes. void * = CWnd *for Windows*/
|
||||
#endif
|
||||
void *m_pMWContext;//used for callbacks to insert the image. and for plugins
|
||||
}CONVERT_IMGCONTEXT;
|
||||
|
||||
|
||||
|
||||
typedef struct tagCONVERT_IMG_INFO
|
||||
{
|
||||
BYTE *m_colormap;
|
||||
int16 m_numcolorentries;
|
||||
uint16 m_X_density;
|
||||
uint16 m_Y_density;
|
||||
int16 m_density_unit;
|
||||
int16 m_in_color_space;
|
||||
int16 m_input_components;
|
||||
int16 m_data_precision;
|
||||
int16 m_image_width;/*pixel width*/
|
||||
int16 m_image_height;/*pixel_height*/
|
||||
int16 m_bitsperpixel;
|
||||
int16 m_row_width;/*width in bytes*/
|
||||
int16 m_stride; /*row_width-(pixel_width*bpp)/8 */
|
||||
DWORD m_image_size; /*informational purposes*/
|
||||
}CONVERT_IMG_INFO;
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/****************************/
|
||||
/*API CALLS AND DECLARATIONS*/
|
||||
/****************************/
|
||||
|
||||
/*converts input to p_numoutput many outputs*/
|
||||
/*p_outpuffilenames must be a PREALLOCATED array of char *s at least p_numoutputs char *s these pointers will
|
||||
point to output filenames that YOU will be responsible to destroy!
|
||||
you may pass in null for p_outputfilenames and it wil*/
|
||||
CONVERT_IMAGERESULT convert_stream2image(CONVERT_IMGCONTEXT p_input,CONVERT_IMG_INFO *p_imageinfo,int16 p_numoutputs,char **p_outputfilenames);
|
||||
|
||||
/*quantize_pixels will change the imagearray to have only maxcolors distinct values*/
|
||||
CONVERT_IMAGERESULT convert_quantize_pixels(CONVERT_IMG_ARRAY imagearray,int16 imagewidth,int16 imageheight,int16 maxcolorvalue);
|
||||
|
||||
/*given a imagecontext, it will tell you if it is a png,bmp,gif ect*/
|
||||
convimgenum select_file_type (CONVERT_IMGCONTEXT * p_input);
|
||||
|
||||
/****************************/
|
||||
/*END API CALLS AND DECLARATIONS*/
|
||||
/****************************/
|
||||
|
||||
|
||||
/****************************/
|
||||
/*STREAM DECLARATIONS*/
|
||||
/****************************/
|
||||
|
||||
/*CONV_IMG_FREAD taken from JPEG libraries for independence from common header file*/
|
||||
#define CONV_IMG_FREAD(file,buf,sizeofbuf) \
|
||||
((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
|
||||
|
||||
#define ReadOK(file,buffer,len) (CONV_IMG_FREAD(file,buffer,len) == ((size_t) (len)))
|
||||
|
||||
int16 read_mem_stream(CONVERT_IMG_STREAM *p_stream,void *p_dest,uint16 p_bytecount);
|
||||
BYTE read_mem_stream_byte(CONVERT_IMG_STREAM *p_stream);
|
||||
int16 read_param(CONVERT_IMG_STREAM *p_input,void *p_dest,uint16 p_bytecount);
|
||||
BYTE read_param_byte(CONVERT_IMG_STREAM *p_input);
|
||||
/****************************/
|
||||
/*END STREAM DECLARATIONS*/
|
||||
/****************************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
748
mozilla/include/libevent.h
Normal file
748
mozilla/include/libevent.h
Normal file
@@ -0,0 +1,748 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Header file for event passing between the mozilla thread and
|
||||
* the mocha thread
|
||||
*/
|
||||
|
||||
#ifndef libevent_h___
|
||||
#define libevent_h___
|
||||
|
||||
#include "libmocha.h"
|
||||
#include "prtypes.h"
|
||||
#ifndef NSPR20
|
||||
#include "prevent.h"
|
||||
#else
|
||||
#include "plevent.h"
|
||||
#endif
|
||||
#include "shist.h"
|
||||
#include "fe_proto.h"
|
||||
#include "lo_ele.h"
|
||||
|
||||
NSPR_BEGIN_EXTERN_C
|
||||
|
||||
extern PREventQueue * mozilla_event_queue;
|
||||
|
||||
/*
|
||||
* XXX - should we use the same event values as layer events?
|
||||
*/
|
||||
|
||||
/* Event bits stored in the low end of decoder->event_mask. */
|
||||
#define EVENT_MOUSEDOWN 0x00000001
|
||||
#define EVENT_MOUSEUP 0x00000002
|
||||
#define EVENT_MOUSEOVER 0x00000004 /* user is mousing over a link */
|
||||
#define EVENT_MOUSEOUT 0x00000008 /* user is mousing out of a link */
|
||||
#define EVENT_MOUSEMOVE 0x00000010
|
||||
#define EVENT_MOUSEDRAG 0x00000020
|
||||
#define EVENT_CLICK 0x00000040 /* input element click in progress */
|
||||
#define EVENT_DBLCLICK 0x00000080
|
||||
#define EVENT_KEYDOWN 0x00000100
|
||||
#define EVENT_KEYUP 0x00000200
|
||||
#define EVENT_KEYPRESS 0x00000400
|
||||
#define EVENT_DRAGDROP 0x00000800 /* not yet implemented */
|
||||
#define EVENT_FOCUS 0x00001000 /* input focus event in progress */
|
||||
#define EVENT_BLUR 0x00002000 /* loss of focus event in progress */
|
||||
#define EVENT_SELECT 0x00004000 /* input field selection in progress */
|
||||
#define EVENT_CHANGE 0x00008000 /* field value change in progress */
|
||||
#define EVENT_RESET 0x00010000 /* form submit in progress */
|
||||
#define EVENT_SUBMIT 0x00020000 /* form submit in progress */
|
||||
#define EVENT_SCROLL 0x00040000 /* window is being scrolled */
|
||||
#define EVENT_LOAD 0x00080000 /* layout parsed a loaded document */
|
||||
#define EVENT_UNLOAD 0x00100000
|
||||
#define EVENT_XFER_DONE 0x00200000 /* document has loaded */
|
||||
#define EVENT_ABORT 0x00400000
|
||||
#define EVENT_ERROR 0x00800000
|
||||
#define EVENT_LOCATE 0x01000000
|
||||
#define EVENT_MOVE 0x02000000
|
||||
#define EVENT_RESIZE 0x04000000
|
||||
#define EVENT_FORWARD 0x08000000
|
||||
#define EVENT_HELP 0x10000000 /* for handling of help events */
|
||||
#define EVENT_BACK 0x20000000
|
||||
|
||||
/* #define EVENT_PRINT 0x20000000 *//* To be removed per joki */
|
||||
|
||||
#define STATUS_STOP 0x00000001 /* stop processing */
|
||||
#define STATUS_IGNORE 0x00000002 /* no new messages */
|
||||
|
||||
#define EVENT_ALT_MASK 0x00000001
|
||||
#define EVENT_CONTROL_MASK 0x00000002
|
||||
#define EVENT_SHIFT_MASK 0x00000004
|
||||
#define EVENT_META_MASK 0x00000008
|
||||
|
||||
#define ARGTYPE_NULL 0x00000001
|
||||
#define ARGTYPE_INT32 0x00000002
|
||||
#define ARGTYPE_BOOL 0x00000004
|
||||
#define ARGTYPE_STRING 0x00000008
|
||||
|
||||
#define SIZE_MAX 0x00000001
|
||||
#define SIZE_MIN 0X00000002
|
||||
/*
|
||||
* When the event has been processed by the backend, there will be
|
||||
* a front-end callback that gets called. If the event processed
|
||||
* successfully, the callback will be passed EVENT_OK. If the
|
||||
* event wasn't successful (i.e. the user canceled it) the return
|
||||
* status will be EVENT_CANCEL. If something radical happened
|
||||
* and the front-end should do nothing (i.e. mocha changed the
|
||||
* underlying context) the status will be EVENT_PANIC and the
|
||||
* front end should treat the context and element passed to the
|
||||
* exit routine as bogus
|
||||
*/
|
||||
typedef enum {
|
||||
EVENT_OK,
|
||||
EVENT_CANCEL,
|
||||
EVENT_PANIC
|
||||
} ETEventStatus;
|
||||
|
||||
/*
|
||||
* When a given event gets processed we may need to tell the front
|
||||
* end about it so that they can update the UI / continue the
|
||||
* operation. The context, lo_element, lType and whatever
|
||||
* field are all supplied by the original ET_SendEvent() call.
|
||||
* See ET_SendEvent() for a description of the values for
|
||||
* the status parameter
|
||||
*/
|
||||
typedef void
|
||||
(*ETClosureFunc)(MWContext * pContext, LO_Element * lo_element,
|
||||
int32 lType, void * whatever, ETEventStatus status);
|
||||
|
||||
/*
|
||||
* Someone has initiated a call to LM_EvaluateBuffer(). This function
|
||||
* gets called back with the result
|
||||
*/
|
||||
typedef void
|
||||
(*ETEvalAckFunc)(void * data, char * result_string, size_t result_length,
|
||||
char * wysiwyg_url, char * base_href, Bool valid);
|
||||
|
||||
/*
|
||||
* This function is called back after a layer's state has been restored
|
||||
* in a resize_relayout.
|
||||
*/
|
||||
typedef void
|
||||
(*ETRestoreAckFunc)(void * data, LO_BlockInitializeStruct *param);
|
||||
|
||||
/*
|
||||
* Typedef for a function taking a void pointer and
|
||||
* returning nothing
|
||||
*/
|
||||
typedef void
|
||||
(*ETVoidPtrFunc)(void * data);
|
||||
|
||||
/*
|
||||
* Typedef for a function taking a void pointer and
|
||||
* returning a bool
|
||||
*/
|
||||
typedef PRBool
|
||||
(*ETBoolPtrFunc)(void * data);
|
||||
|
||||
/*
|
||||
* Typedef for a function taking a void pointer and
|
||||
* returning a int32
|
||||
*/
|
||||
typedef int32
|
||||
(*ETIntPtrFunc)(void * data);
|
||||
|
||||
/*
|
||||
* Typedef for a function taking a void pointer and
|
||||
* returning a char *
|
||||
*/
|
||||
typedef char *
|
||||
(*ETStringPtrFunc)(void * data);
|
||||
|
||||
/*
|
||||
* Struct for passing JS typed variable info through C interface calls
|
||||
*/
|
||||
typedef union ArgVal {
|
||||
int32 intArg;
|
||||
XP_Bool boolArg;
|
||||
char * stringArg;
|
||||
} ArgVal;
|
||||
|
||||
typedef struct {
|
||||
uint8 type; /* arg type as defined at top of file */
|
||||
ArgVal value;
|
||||
} JSCompArg;
|
||||
|
||||
/*
|
||||
* Typedef for a function used to verify installed components and
|
||||
* get back components utility functions.
|
||||
*/
|
||||
typedef PRBool
|
||||
(*ETVerifyComponentFunc)(void **active_callback, void **startup_callback);
|
||||
|
||||
/*
|
||||
* Generic function for JS setting values with native calls.
|
||||
*/
|
||||
typedef void
|
||||
(*ETCompPropSetterFunc)(char *name, void *value);
|
||||
|
||||
/*
|
||||
* Generic function for JS getting values from native calls.
|
||||
*/
|
||||
typedef void*
|
||||
(*ETCompPropGetterFunc)(char *name);
|
||||
|
||||
/*
|
||||
* Generic function for JS calling native methods.
|
||||
*/
|
||||
typedef void*
|
||||
(*ETCompMethodFunc)(int32 argc, JSCompArg *argv);
|
||||
|
||||
/* --------------------------------------------------------------------------
|
||||
* Common prologue for talking between the mocha thread and the mozilla
|
||||
* thread
|
||||
*/
|
||||
typedef struct {
|
||||
PREvent event; /* the PREvent structure */
|
||||
MWContext* context; /* context */
|
||||
int32 doc_id; /* doc id of context when event launched */
|
||||
PRPackedBool handle_eagerly;
|
||||
} ETEvent;
|
||||
|
||||
/*
|
||||
* Struct to send back from front end in order to get additional
|
||||
* event information without having to initialize event object
|
||||
* until necessary. Yow, there is a lot of junk in here now
|
||||
* can we make a union out of some of these or are they always
|
||||
* needed?
|
||||
*/
|
||||
typedef struct {
|
||||
ETEvent ce;
|
||||
MochaDecoder * decoder;
|
||||
JSObject * object;
|
||||
int32 type;
|
||||
int32 layer_id;
|
||||
int32 id;
|
||||
LO_Element * lo_element;
|
||||
ETClosureFunc fnClosure; /* event sender closure */
|
||||
void * whatever; /* anything other state */
|
||||
int32 x,y;
|
||||
int32 docx,docy;
|
||||
int32 screenx,screeny;
|
||||
uint32 which;
|
||||
uint32 modifiers;
|
||||
void * data;
|
||||
uint32 dataSize;
|
||||
PRPackedBool saved;
|
||||
PRPackedBool event_handled;
|
||||
} JSEvent;
|
||||
|
||||
/*
|
||||
* Tell the backend about a new event.
|
||||
* The event is placed onto an event queue, it is not processed
|
||||
* immediately. If the event is the type that can be cancelled
|
||||
* by the backend (i.e. a button click or a submit) the front
|
||||
* end must wait until the callback routine gets called before
|
||||
* continuing with the operation. The ETEventStatus will be
|
||||
* EVENT_OK if the operation is to continue or EVENT_CANCEL
|
||||
* if it got cancelled.
|
||||
*
|
||||
* The processing of the event may cause the document to change
|
||||
* or even the whole window to close. In those cases the callback
|
||||
* will still get called in case there is any front-end cleanup
|
||||
* to do but the ETEventStatus will be set to EVENT_PANIC
|
||||
*
|
||||
*/
|
||||
|
||||
extern JSBool
|
||||
ET_SendEvent(MWContext * pContext, LO_Element *pElement, JSEvent *pEvent,
|
||||
ETClosureFunc fnClosure, void * whatever);
|
||||
|
||||
/*
|
||||
* Tell the backend about a new document load event. We need a
|
||||
* closure so that libparse/layout knows when its safe to discard
|
||||
* the old document when they were waiting for onunload events to
|
||||
* finish processing
|
||||
*/
|
||||
extern void
|
||||
ET_SendLoadEvent(MWContext * pContext, int32 type, ETVoidPtrFunc fnClosure,
|
||||
NET_StreamClass *stream, int32 layer_id, Bool resize_reload);
|
||||
|
||||
/*
|
||||
* Tell the backend about a new image event. Async. No closure
|
||||
*/
|
||||
extern void
|
||||
ET_SendImageEvent(MWContext * pContext, LO_ImageStruct *image_data,
|
||||
LM_ImageEvent event);
|
||||
|
||||
/*
|
||||
* Send an interrupt event to the current context
|
||||
* Remove all pending events for the event queue of the given context.
|
||||
*/
|
||||
extern void
|
||||
ET_InterruptContext(MWContext * pContext);
|
||||
|
||||
extern JSBool
|
||||
ET_ContinueProcessing(MWContext * pContext);
|
||||
|
||||
/*
|
||||
* Tell mocha to destroy the given context's data. The callback
|
||||
* function gets called when mocha is done with all of its data
|
||||
* that was associated with the context
|
||||
*/
|
||||
extern void
|
||||
ET_RemoveWindowContext(MWContext * context, ETVoidPtrFunc fn,
|
||||
void * data);
|
||||
|
||||
typedef struct {
|
||||
uint len, line_no;
|
||||
char * scope_to;
|
||||
void * data;
|
||||
JSVersion version;
|
||||
JSPrincipals * principals;
|
||||
JSBool want_result;
|
||||
JSBool unicode;
|
||||
} ETEvalStuff;
|
||||
|
||||
/*
|
||||
* Evaluate the mocha code in the given buffer
|
||||
*/
|
||||
extern void
|
||||
ET_EvaluateBuffer(MWContext * context, char * buffer, uint buflen,
|
||||
uint line_no, char * scope_to, JSBool want_result,
|
||||
ETEvalAckFunc fn, void * data,
|
||||
JSVersion ver, struct JSPrincipals *);
|
||||
|
||||
extern void
|
||||
ET_EvaluateScript(MWContext * context, char * buffer, ETEvalStuff * stuff,
|
||||
ETEvalAckFunc fn);
|
||||
|
||||
/*
|
||||
* Ask Mocha to reflect the given object into JavaScript
|
||||
*/
|
||||
extern void
|
||||
ET_ReflectObject(MWContext * pContext, void * lo_ele, void * tag,
|
||||
int32 layer_id, uint index, ReflectedObject type);
|
||||
|
||||
void
|
||||
ET_ReflectFormElement(MWContext * pContext, void * form,
|
||||
LO_FormElementStruct * form_element, PA_Tag * tag);
|
||||
|
||||
extern void
|
||||
ET_ReflectWindow(MWContext * pContext,
|
||||
PA_Block onLoad, PA_Block onUnload,
|
||||
PA_Block onFocus, PA_Block onBlur, PA_Block onHelp,
|
||||
PA_Block onMouseOver, PA_Block onMouseOut, PA_Block onDragDrop,
|
||||
PA_Block onMove, PA_Block onResize,
|
||||
PA_Block id, char *all,
|
||||
Bool bDelete, int newline_count);
|
||||
|
||||
/*
|
||||
* Tell mocha we are processing a form
|
||||
*/
|
||||
extern void
|
||||
ET_SetActiveForm(MWContext * pContext, struct lo_FormData_struct * loElement);
|
||||
|
||||
/*
|
||||
* Tell mocha which layer we are processing
|
||||
*/
|
||||
void
|
||||
ET_SetActiveLayer(MWContext * pContext, int32 layer_id);
|
||||
|
||||
/*
|
||||
** Tell mocha where to send its output
|
||||
*/
|
||||
extern void
|
||||
ET_ClearDecoderStream(MWContext * context, NET_StreamClass * old_stream);
|
||||
|
||||
extern void
|
||||
ET_SetDecoderStream(MWContext * context, NET_StreamClass *stream,
|
||||
URL_Struct *url_struct, JSBool free_stream_on_close);
|
||||
|
||||
/*
|
||||
** Remember the current nesting URL in the MochaDecoder
|
||||
*/
|
||||
extern void
|
||||
ET_SetNestingUrl(MWContext * context, char * szUrl);
|
||||
|
||||
/*
|
||||
** Remember the current language version in the MochaDecoder
|
||||
*/
|
||||
extern void
|
||||
ET_SetVersion(MWContext * context, JSVersion version);
|
||||
|
||||
/*
|
||||
* Tell mocha to trash the current document. around and around...
|
||||
*/
|
||||
extern void
|
||||
ET_ReleaseDocument(MWContext * pContext, JSBool resize_reload);
|
||||
|
||||
/*
|
||||
* Tell mocha to trash the layer's document.
|
||||
*/
|
||||
extern void
|
||||
ET_DestroyLayer(MWContext * pContext, JSObject *layer_obj);
|
||||
|
||||
extern void
|
||||
ET_MochaStreamComplete(MWContext * context, void * buf, int len,
|
||||
char * content_type, Bool isUnicode);
|
||||
|
||||
extern void
|
||||
ET_MochaStreamAbort(MWContext * context, int status);
|
||||
|
||||
/*
|
||||
* Called when a layer's contents are changing and we want to create
|
||||
* a new layer document.
|
||||
*/
|
||||
extern void
|
||||
ET_NewLayerDocument(MWContext *pContext, int32 layer_id);
|
||||
|
||||
extern void
|
||||
ET_DocWriteAck(MWContext *pContext, int status);
|
||||
|
||||
extern void
|
||||
ET_RegisterComponent(char *name, void *active_callback, void *startup_callback);
|
||||
|
||||
extern void
|
||||
ET_RegisterComponentProp(char *comp, char *name, uint8 retType, void *setter,
|
||||
void *getter);
|
||||
|
||||
extern void
|
||||
ET_RegisterComponentMethod(char *comp, char *name, uint8 retType, void *method,
|
||||
int32 argc);
|
||||
|
||||
/* =============================================================== */
|
||||
|
||||
/*
|
||||
* This event can be sent to both the mozilla thread and the moacha thread
|
||||
*/
|
||||
typedef struct {
|
||||
ETEvent ce;
|
||||
TimeoutCallbackFunction fnCallback;
|
||||
void* pClosure;
|
||||
uint32 ulTime;
|
||||
void* pTimerId;
|
||||
} MozillaEvent_Timeout;
|
||||
|
||||
|
||||
/* =============================================================== */
|
||||
|
||||
/*
|
||||
* Busy loop waiting for events to come along
|
||||
*/
|
||||
extern void PR_CALLBACK
|
||||
lm_wait_for_events(void *);
|
||||
|
||||
/*
|
||||
* global mocha event queues. It would be nice to not have these
|
||||
* exported this globally
|
||||
*/
|
||||
extern PREventQueue *lm_InterpretQueue;
|
||||
extern PREventQueue *lm_PriorityQueue;
|
||||
|
||||
/*
|
||||
* Ways to send events to the front end
|
||||
*/
|
||||
extern JSBool
|
||||
ET_PostMessageBox(MWContext* context, char* szMessage,
|
||||
JSBool bConfirm);
|
||||
|
||||
extern void
|
||||
ET_PostProgress(MWContext* context, const char* szMessage);
|
||||
|
||||
/* --- timeout routines --- */
|
||||
|
||||
/*
|
||||
* Set (or clear) a timeout to go off. The timeout will go off in the
|
||||
* mozilla thread so we will use the routine ET_FireTimeoutCallBack()
|
||||
* to get back into our thread to actually run the closure
|
||||
*/
|
||||
extern void *
|
||||
ET_PostSetTimeout(TimeoutCallbackFunction fnCallback,
|
||||
void * pClosure, uint32 ulTime, int32 doc_id);
|
||||
|
||||
extern void
|
||||
ET_PostClearTimeout(void * stuff);
|
||||
|
||||
extern void
|
||||
ET_FireTimeoutCallBack(void *);
|
||||
|
||||
/* --- end of timeout routines --- */
|
||||
|
||||
extern void
|
||||
ET_PostDestroyWindow(MWContext * context);
|
||||
|
||||
extern void
|
||||
ET_PostManipulateForm(MWContext * context, LO_Element * pForm, int32 action);
|
||||
|
||||
extern void
|
||||
ET_PostClearView(MWContext * context);
|
||||
|
||||
extern void
|
||||
ET_PostFreeImageElement(MWContext * context, void * stuff);
|
||||
|
||||
extern void
|
||||
ET_PostFreeImageContext(MWContext *context, IL_GroupContext *img_cx);
|
||||
|
||||
extern void
|
||||
ET_PostFreeAnonImages(MWContext *context, IL_GroupContext *img_cx);
|
||||
|
||||
extern void
|
||||
ET_PostDisplayImage(MWContext *, int, LO_ImageStruct *);
|
||||
|
||||
extern void
|
||||
ET_PostGetUrl(MWContext *, URL_Struct * pUrl);
|
||||
|
||||
extern char *
|
||||
ET_PostPrompt(MWContext* context, const char* szMessage,
|
||||
const char * szDefault);
|
||||
|
||||
extern MWContext *
|
||||
ET_PostNewWindow(MWContext* context, URL_Struct * pUrl,
|
||||
char * szName, Chrome * pChrome);
|
||||
|
||||
extern void
|
||||
ET_PostUpdateChrome(MWContext* context, Chrome * pChrome);
|
||||
|
||||
extern void
|
||||
ET_PostQueryChrome(MWContext* context, Chrome * pChrome);
|
||||
|
||||
extern void
|
||||
ET_PostGetScreenSize(MWContext* context, int32 *pX, int32 *pY);
|
||||
|
||||
extern void
|
||||
ET_PostGetAvailScreenRect(MWContext* context, int32 *pX, int32 *pY,
|
||||
int32 *pLeft, int32 *pTop);
|
||||
|
||||
extern void
|
||||
ET_PostGetColorDepth(MWContext* context, int32 *pPixel, int32 *pPallette);
|
||||
|
||||
extern char *
|
||||
ET_PostGetSelectedText(MWContext* context);
|
||||
|
||||
extern void
|
||||
ET_PostScrollDocTo(MWContext* context, int loc, int32 x, int32 y);
|
||||
|
||||
extern void
|
||||
ET_PostScrollDocBy(MWContext* context, int loc, int32 x, int32 y);
|
||||
|
||||
extern void
|
||||
ET_PostBackCommand(MWContext* context);
|
||||
|
||||
extern void
|
||||
ET_PostForwardCommand(MWContext* context);
|
||||
|
||||
extern void
|
||||
ET_PostHomeCommand(MWContext* context);
|
||||
|
||||
extern JSBool
|
||||
ET_PostFindCommand(MWContext* context, char * szName, JSBool matchCase,
|
||||
JSBool searchBackward);
|
||||
extern void
|
||||
ET_PostPrintCommand(MWContext* context);
|
||||
|
||||
extern void
|
||||
ET_PostOpenFileCommand(MWContext* context);
|
||||
|
||||
extern void
|
||||
ET_MakeHTMLAlert(MWContext * context, const char * szString);
|
||||
|
||||
/* respond to events sent to the mocha thread by the mozilla thread */
|
||||
|
||||
extern void
|
||||
ET_PostJsEventAck(MWContext* context, LO_Element * pEle, int type,
|
||||
ETClosureFunc fnClosure, void * pStuff,
|
||||
ETEventStatus status);
|
||||
|
||||
|
||||
|
||||
extern void
|
||||
ET_PostEvalAck(MWContext * context, int doc_id, void * data,
|
||||
char * str, size_t len, char * wysiwyg_url,
|
||||
char * base_href, Bool valid, ETEvalAckFunc fn);
|
||||
|
||||
extern void
|
||||
ET_PostRestoreAck(void *data, LO_BlockInitializeStruct *param,
|
||||
ETRestoreAckFunc fn);
|
||||
|
||||
/* netlib events */
|
||||
|
||||
extern char *
|
||||
ET_net_GetCookie(MWContext* context, int32 doc_id);
|
||||
|
||||
extern char *
|
||||
ET_net_SetCookieString(MWContext* context, char * szCookie, int32 doc_id);
|
||||
|
||||
extern NET_StreamClass *
|
||||
ET_net_CacheConverter(FO_Present_Types format, void * obj,
|
||||
URL_Struct *pUrl, MWContext * pContext);
|
||||
|
||||
extern void
|
||||
ET_net_FindURLInCache(URL_Struct * pUrl, MWContext * pContext);
|
||||
|
||||
extern NET_StreamClass *
|
||||
ET_net_StreamBuilder(FO_Present_Types format, URL_Struct *pUrl,
|
||||
MWContext * pContext);
|
||||
|
||||
/* layout events */
|
||||
|
||||
extern void
|
||||
ET_lo_ResetForm(MWContext * pContext, LO_Element * ele);
|
||||
|
||||
void
|
||||
ET_fe_SubmitInputElement(MWContext * pContext, LO_Element * ele);
|
||||
|
||||
/*
|
||||
* Synchronously shove the given text down the parser's processing
|
||||
* queue. If the currently loaded document is not equal to
|
||||
* doc_id, this message should be ignored since it arrived too
|
||||
* late for the intended document
|
||||
*/
|
||||
extern int
|
||||
ET_lo_DoDocWrite(JSContext *cx, MWContext * context, NET_StreamClass * stream,
|
||||
char * str, size_t len, int32 doc_id);
|
||||
|
||||
|
||||
extern void
|
||||
ET_il_GetImage(const char * str, MWContext * pContext, IL_GroupContext *img_cx,
|
||||
LO_ImageStruct * image_data, NET_ReloadMethod how);
|
||||
|
||||
extern void
|
||||
ET_il_SetGroupObserver(MWContext * pContext, IL_GroupContext *pImgCX, void *pDpyCX,
|
||||
JSBool bAddObserver);
|
||||
|
||||
extern void
|
||||
ET_InterruptImgCX(MWContext * pContext);
|
||||
|
||||
/*
|
||||
* Tell layout to trash the current document.
|
||||
*/
|
||||
extern void
|
||||
ET_lo_DiscardDocument(MWContext * pContext);
|
||||
|
||||
/*
|
||||
* Tell layout to prepare a layer for writing.
|
||||
*/
|
||||
extern Bool
|
||||
ET_lo_PrepareLayerForWriting(MWContext *context, int32 layer_id,
|
||||
const char *referer);
|
||||
|
||||
/*
|
||||
* Return a copy of the current history element. Caller must free
|
||||
*/
|
||||
extern History_entry *
|
||||
ET_shist_GetCurrent(MWContext * pContext);
|
||||
|
||||
/*
|
||||
* Return the current security status.
|
||||
*/
|
||||
extern int
|
||||
ET_GetSecurityStatus(MWContext * pContext);
|
||||
|
||||
/*
|
||||
* Make sure Mocha/Java glue is ready. Returns the same return code as
|
||||
* LM_InitMoja.
|
||||
*/
|
||||
extern int
|
||||
ET_InitMoja(MWContext * pContext);
|
||||
|
||||
/*
|
||||
* Pack up toys and go home
|
||||
*/
|
||||
extern void
|
||||
ET_FinishMocha(void);
|
||||
|
||||
/*
|
||||
* Used to call a stream completion function in the mozilla
|
||||
* thread
|
||||
*/
|
||||
extern void
|
||||
ET_moz_CallFunction(ETVoidPtrFunc fn, void * data);
|
||||
|
||||
extern void
|
||||
ET_moz_CallFunctionAsync(ETVoidPtrFunc fn, void * data);
|
||||
|
||||
extern PRBool
|
||||
ET_moz_CallFunctionBool(ETBoolPtrFunc fn, void * data);
|
||||
|
||||
extern int32
|
||||
ET_moz_CallFunctionInt(ETIntPtrFunc fn, void * data);
|
||||
|
||||
extern char *
|
||||
ET_moz_CallFunctionString(ETStringPtrFunc fn, void * data);
|
||||
|
||||
extern void
|
||||
ET_moz_CallAsyncAndSubEventLoop(ETVoidPtrFunc fn, void *data,
|
||||
MWContext *context);
|
||||
|
||||
extern void
|
||||
ET_moz_Abort(MKStreamAbortFunc fn, void * data, int status);
|
||||
|
||||
extern void
|
||||
ET_moz_SetMochaWriteStream(MochaDecoder * decoder);
|
||||
|
||||
extern NET_StreamClass *
|
||||
ET_moz_DocCacheConverter(MWContext * context, URL_Struct * pUrl,
|
||||
char * wysiwyg_url, int32 layer_id);
|
||||
|
||||
extern PRBool
|
||||
ET_moz_VerifyComponentFunction(ETVerifyComponentFunc fn, ETBoolPtrFunc *pActive_callback,
|
||||
ETVoidPtrFunc *pStartup_callback);
|
||||
|
||||
extern void
|
||||
ET_moz_CompSetterFunction(ETCompPropSetterFunc fn, char *name, void *data);
|
||||
|
||||
extern void *
|
||||
ET_moz_CompGetterFunction(ETCompPropGetterFunc fn, char *name);
|
||||
|
||||
extern void *
|
||||
ET_moz_CompMethodFunction(ETCompMethodFunc fn, int32 argc, JSCompArg *argv);
|
||||
|
||||
typedef enum {
|
||||
CL_Move,
|
||||
CL_MoveX,
|
||||
CL_MoveY,
|
||||
CL_Offset,
|
||||
CL_Resize,
|
||||
CL_SetBboxWidth,
|
||||
CL_SetBboxHeight,
|
||||
CL_SetBboxTop,
|
||||
CL_SetBboxLeft,
|
||||
CL_SetBboxBottom,
|
||||
CL_SetBboxRight,
|
||||
CL_SetHidden,
|
||||
CL_MoveInZ,
|
||||
CL_SetSrc,
|
||||
CL_SetSrcWidth,
|
||||
CL_SetZ,
|
||||
CL_SetBgColor,
|
||||
CL_SetBackdrop
|
||||
} ETLayerOp;
|
||||
|
||||
extern int
|
||||
ET_TweakLayer(MWContext * context, CL_Layer * layer, int32 x, int32 y,
|
||||
void *param_ptr, int32 param_val, ETLayerOp op,
|
||||
const char *referer, int32 doc_id);
|
||||
|
||||
extern void
|
||||
ET_RestoreLayerState(MWContext *context, int32 layer_id,
|
||||
LO_BlockInitializeStruct *param, ETRestoreAckFunc fn,
|
||||
void *data);
|
||||
|
||||
extern int32
|
||||
ET_npl_RefreshPluginList(MWContext* context, XP_Bool refreshInstances);
|
||||
|
||||
extern JSBool
|
||||
ET_HandlePref(JSContext * cx, uint argc, jsval * argv, jsval * rval);
|
||||
|
||||
extern void
|
||||
ET_SetPluginWindow(MWContext * pContext, void * app);
|
||||
|
||||
NSPR_END_EXTERN_C
|
||||
|
||||
#endif /* libevent_h___ */
|
||||
2651
mozilla/include/libi18n.h
Normal file
2651
mozilla/include/libi18n.h
Normal file
File diff suppressed because it is too large
Load Diff
538
mozilla/include/libmime.h
Normal file
538
mozilla/include/libmime.h
Normal file
@@ -0,0 +1,538 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/* libmime.h --- external interface to libmime.a
|
||||
Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _LIBMIME_H_
|
||||
#define _LIBMIME_H_
|
||||
|
||||
#include "xp.h"
|
||||
|
||||
#ifndef MOZILLA_30
|
||||
# define MIME_DRAFTS
|
||||
#endif
|
||||
|
||||
/* Opaque object describing a block of message headers, and a couple of
|
||||
routines for extracting data from one.
|
||||
*/
|
||||
|
||||
typedef struct MimeHeaders
|
||||
{
|
||||
char *all_headers; /* A char* of the entire header section. */
|
||||
int32 all_headers_fp; /* The length (it is not NULL-terminated.) */
|
||||
int32 all_headers_size; /* The size of the allocated block. */
|
||||
|
||||
XP_Bool done_p; /* Whether we've read the end-of-headers marker
|
||||
(the terminating blank line.) */
|
||||
|
||||
char **heads; /* An array of length n_headers which points
|
||||
to the beginning of each distinct header:
|
||||
just after the newline which terminated
|
||||
the previous one. This is to speed search.
|
||||
|
||||
This is not initialized until all the
|
||||
headers have been read.
|
||||
*/
|
||||
int32 heads_size; /* The length (and consequently, how many
|
||||
distinct headers are in here.) */
|
||||
|
||||
|
||||
char *obuffer; /* This buffer is used for output. */
|
||||
int32 obuffer_size;
|
||||
int32 obuffer_fp;
|
||||
|
||||
char *munged_subject; /* What a hack. This is a place to write down
|
||||
the subject header, after it's been
|
||||
charset-ified and stuff. Remembered so that
|
||||
we can later use it to generate the
|
||||
<TITLE> tag. */
|
||||
} MimeHeaders;
|
||||
|
||||
typedef struct MimeDisplayOptions MimeDisplayOptions;
|
||||
typedef struct MimeParseStateObject MimeParseStateObject;
|
||||
#ifndef MOZILLA_30
|
||||
typedef struct MSG_AttachmentData MSG_AttachmentData;
|
||||
#endif
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/* Given the name of a header, returns the contents of that header as
|
||||
a newly-allocated string (which the caller must free.) If the header
|
||||
is not present, or has no contents, NULL is returned.
|
||||
|
||||
If `strip_p' is TRUE, then the data returned will be the first token
|
||||
of the header; else it will be the full text of the header. (This is
|
||||
useful for getting just "text/plain" from "text/plain; name=foo".)
|
||||
|
||||
If `all_p' is FALSE, then the first header encountered is used, and
|
||||
any subsequent headers of the same name are ignored. If TRUE, then
|
||||
all headers of the same name are appended together (this is useful
|
||||
for gathering up all CC headers into one, for example.)
|
||||
*/
|
||||
extern char *MimeHeaders_get(MimeHeaders *hdrs,
|
||||
const char *header_name,
|
||||
XP_Bool strip_p,
|
||||
XP_Bool all_p);
|
||||
|
||||
/* Given a header of the form of the MIME "Content-" headers, extracts a
|
||||
named parameter from it, if it exists. For example,
|
||||
MimeHeaders_get_parameter("text/plain; charset=us-ascii", "charset")
|
||||
would return "us-ascii".
|
||||
|
||||
Returns NULL if there is no match, or if there is an allocation failure.
|
||||
*/
|
||||
extern char *MimeHeaders_get_parameter (const char *header_value,
|
||||
const char *parm_name);
|
||||
|
||||
extern MimeHeaders *MimeHeaders_copy (MimeHeaders *srcHeaders);
|
||||
|
||||
extern void MimeHeaders_free (MimeHeaders *hdrs);
|
||||
|
||||
/* Some defines for various standard header field names.
|
||||
*/
|
||||
#define HEADER_BCC "BCC"
|
||||
#define HEADER_CC "CC"
|
||||
#define HEADER_CONTENT_BASE "Content-Base"
|
||||
#define HEADER_CONTENT_DESCRIPTION "Content-Description"
|
||||
#define HEADER_CONTENT_DISPOSITION "Content-Disposition"
|
||||
#define HEADER_CONTENT_ENCODING "Content-Encoding"
|
||||
#define HEADER_CONTENT_LENGTH "Content-Length"
|
||||
#define HEADER_CONTENT_NAME "Content-Name"
|
||||
#define HEADER_CONTENT_TRANSFER_ENCODING "Content-Transfer-Encoding"
|
||||
#define HEADER_CONTENT_TYPE "Content-Type"
|
||||
#define HEADER_DATE "Date"
|
||||
#define HEADER_DISTRIBUTION "Distribution"
|
||||
#define HEADER_FCC "FCC"
|
||||
#define HEADER_FOLLOWUP_TO "Followup-To"
|
||||
#define HEADER_FROM "From"
|
||||
#define HEADER_LINES "Lines"
|
||||
#define HEADER_MESSAGE_ID "Message-ID"
|
||||
#define HEADER_MIME_VERSION "MIME-Version"
|
||||
#define HEADER_NEWSGROUPS "Newsgroups"
|
||||
#define HEADER_ORGANIZATION "Organization"
|
||||
#define HEADER_REFERENCES "References"
|
||||
#define HEADER_REPLY_TO "Reply-To"
|
||||
#define HEADER_RESENT_COMMENTS "Resent-Comments"
|
||||
#define HEADER_RESENT_DATE "Resent-Date"
|
||||
#define HEADER_RESENT_FROM "Resent-From"
|
||||
#define HEADER_RESENT_MESSAGE_ID "Resent-Message-ID"
|
||||
#define HEADER_RESENT_SENDER "Resent-Sender"
|
||||
#define HEADER_RESENT_TO "Resent-To"
|
||||
#define HEADER_RESENT_CC "Resent-CC"
|
||||
#define HEADER_SENDER "Sender"
|
||||
#define HEADER_SUBJECT "Subject"
|
||||
#define HEADER_TO "To"
|
||||
#define HEADER_X_MAILER "X-Mailer"
|
||||
#define HEADER_X_NEWSREADER "X-Newsreader"
|
||||
#define HEADER_X_POSTING_SOFTWARE "X-Posting-Software"
|
||||
#define HEADER_X_MOZILLA_STATUS "X-Mozilla-Status"
|
||||
#define HEADER_X_MOZILLA_NEWSHOST "X-Mozilla-News-Host"
|
||||
#define HEADER_X_MOZILLA_DRAFT_INFO "X-Mozilla-Draft-Info"
|
||||
#define HEADER_X_UIDL "X-UIDL"
|
||||
#define HEADER_XREF "XREF"
|
||||
#define HEADER_X_SUN_CHARSET "X-Sun-Charset"
|
||||
#define HEADER_X_SUN_CONTENT_LENGTH "X-Sun-Content-Length"
|
||||
#define HEADER_X_SUN_CONTENT_LINES "X-Sun-Content-Lines"
|
||||
#define HEADER_X_SUN_DATA_DESCRIPTION "X-Sun-Data-Description"
|
||||
#define HEADER_X_SUN_DATA_NAME "X-Sun-Data-Name"
|
||||
#define HEADER_X_SUN_DATA_TYPE "X-Sun-Data-Type"
|
||||
#define HEADER_X_SUN_ENCODING_INFO "X-Sun-Encoding-Info"
|
||||
#define HEADER_X_PRIORITY "X-Priority"
|
||||
|
||||
#define HEADER_PARM_BOUNDARY "BOUNDARY"
|
||||
#define HEADER_PARM_FILENAME "FILENAME"
|
||||
#define HEADER_PARM_NAME "NAME"
|
||||
#define HEADER_PARM_TYPE "TYPE"
|
||||
|
||||
|
||||
typedef enum {
|
||||
MimeHeadersAll, /* Show all headers */
|
||||
MimeHeadersSome, /* Show all "interesting" headers */
|
||||
MimeHeadersSomeNoRef, /* Same, but suppress the `References' header
|
||||
(for when we're printing this message.) */
|
||||
MimeHeadersMicro, /* Show a one-line header summary */
|
||||
MimeHeadersMicroPlus, /* Same, but show the full recipient list as
|
||||
well (To, CC, etc.) */
|
||||
MimeHeadersCitation /* A one-line summary geared toward use in a
|
||||
reply citation ("So-and-so wrote:") */
|
||||
} MimeHeadersState;
|
||||
|
||||
|
||||
/* The signature for various callbacks in the MimeDisplayOptions structure.
|
||||
*/
|
||||
typedef char *(*MimeHTMLGeneratorFunction) (const char *data, void *closure,
|
||||
MimeHeaders *headers);
|
||||
|
||||
struct MimeDisplayOptions
|
||||
{
|
||||
const char *url; /* Base URL for the document. This string should
|
||||
be freed by the caller, after the parser
|
||||
completes (possibly at the same time as the
|
||||
MimeDisplayOptions itself.) */
|
||||
|
||||
#ifndef MOZILLA_30
|
||||
MSG_Pane* pane; /* The libmsg pane object that corresponds to
|
||||
what we're showing. This is used by very
|
||||
little... */
|
||||
#endif /* !MOZILLA_30 */
|
||||
|
||||
MimeHeadersState headers; /* How headers should be displayed. */
|
||||
XP_Bool fancy_headers_p; /* Whether to do clever formatting of headers
|
||||
using tables, instead of spaces. */
|
||||
|
||||
#ifndef MOZILLA_30
|
||||
XP_Bool output_vcard_buttons_p; /* Whether to output the buttons */
|
||||
/* on vcards. */
|
||||
#endif /* !MOZILLA_30 */
|
||||
|
||||
XP_Bool fancy_links_p; /* Whether to insert fancy links, so you can
|
||||
do things like click on an email address to
|
||||
add it to your address book. Something you
|
||||
don't want to do while printing. */
|
||||
|
||||
XP_Bool variable_width_plaintext_p; /* Whether text/plain messages should
|
||||
be in variable width, or fixed. */
|
||||
XP_Bool wrap_long_lines_p; /* Whether to wrap long lines in text/plain
|
||||
messages. */
|
||||
|
||||
XP_Bool rot13_p; /* Whether text/plain parts should be rotated
|
||||
Set by "?rot13=true" */
|
||||
XP_Bool no_inline_p; /* Whether inline display of attachments should
|
||||
be suppressed. Set by "?inline=false" */
|
||||
char *part_to_load; /* The particular part of the multipart which
|
||||
we are extracting. Set by "?part=3.2.4" */
|
||||
|
||||
XP_Bool write_html_p; /* Whether the output should be HTML, or raw. */
|
||||
|
||||
XP_Bool decrypt_p; /* Whether all traces of encryption should be
|
||||
eradicated -- this is only meaningful when
|
||||
write_html_p is FALSE; we set this when
|
||||
attaching a message for forwarding, since
|
||||
forwarding someone else a message that wasn't
|
||||
encrypted for them doesn't work. We have to
|
||||
decrypt it before sending it.
|
||||
*/
|
||||
|
||||
#ifndef MOZILLA_30
|
||||
XP_Bool nice_html_only_p; /* If TRUE, then we only should write html if
|
||||
it's pretty HTML (stuff that we're willing
|
||||
to get shipped out in mail messages). If we
|
||||
can't generate nice stuff for some part,
|
||||
then don't say anything at all. */
|
||||
|
||||
XP_Bool dont_touch_citations_p; /* If TRUE, then we should leave citations
|
||||
alone in plaintext parts. If FALSE, then
|
||||
go ahead and tweak the fonts according
|
||||
to preferences. */
|
||||
#endif /* !MOZILLA_30 */
|
||||
|
||||
char *default_charset; /* If this is non-NULL, then it is the charset to
|
||||
assume when no other one is specified via a
|
||||
`charset' parameter.
|
||||
*/
|
||||
char *override_charset; /* If this is non-NULL, then we will assume that
|
||||
all data is in this charset, regardless of what
|
||||
the `charset' parameter of that part says.
|
||||
This overrides `default_charset' as well.
|
||||
(This is to cope with the fact that, in the
|
||||
real world, many messages are mislabelled with
|
||||
the wrong charset.)
|
||||
*/
|
||||
|
||||
/* =======================================================================
|
||||
Stream-related callbacks; for these functions, the `closure' argument
|
||||
is what is found in `options->stream_closure'. (One possible exception
|
||||
is for output_fn; see "output_closure" below.)
|
||||
*/
|
||||
void *stream_closure;
|
||||
|
||||
/* For setting up the display stream, so that the MIME parser can inform
|
||||
the caller of the type of the data it will be getting. */
|
||||
int (*output_init_fn) (const char *type,
|
||||
const char *charset,
|
||||
const char *name,
|
||||
const char *x_mac_type,
|
||||
const char *x_mac_creator,
|
||||
void *stream_closure);
|
||||
|
||||
/* How the MIME parser feeds its output (HTML or raw) back to the caller. */
|
||||
int (*output_fn) (char *buf, int32 size, void *closure);
|
||||
|
||||
/* Closure to pass to the above output_fn. If NULL, then the
|
||||
stream_closure is used. */
|
||||
void *output_closure;
|
||||
|
||||
/* A callback used to encapsulate an HTML section and to reset the
|
||||
HTML parser to its default state at the end of a section.
|
||||
start_p indicates whether this is being called just before the
|
||||
start or immediately after the end of the encapsulated HTML.
|
||||
layer_encapsulate_p indicates whether or not to put special
|
||||
ILAYER container tags around the HTML -- Also, when start_p is
|
||||
FALSE, this function should close off any tags we've left open,
|
||||
reset the font size and face, etc. This may be called multiple
|
||||
times -- in particular, it will be called at the end of each
|
||||
message part which might contain human-generated (and thus
|
||||
arbitrarily buggy) markup. The `abort_p' argument specifies
|
||||
whether it's ok for data to be discarded.
|
||||
*/
|
||||
int (*set_html_state_fn) (void *stream_closure,
|
||||
XP_Bool layer_encapsulate_p,
|
||||
XP_Bool start_p,
|
||||
XP_Bool abort_p);
|
||||
|
||||
/* A hook for the caller to perform charset-conversion before HTML is
|
||||
returned. Each set of characters which originated in a mail message
|
||||
(body or headers) will be run through this filter before being converted
|
||||
into HTML. (This should return bytes which may appear in an HTML file,
|
||||
ie, we must be able to scan through the string to search for "<" and
|
||||
turn it in to "<", and so on.)
|
||||
|
||||
`input' is a non-NULL-terminated string of a single line from the message.
|
||||
`input_length' is how long it is.
|
||||
`input_charset' is a string representing the charset of this string (as
|
||||
specified by MIME headers.)
|
||||
`output_charset' is the charset to which conversion is desired.
|
||||
`output_ret' is where a newly-malloced string is returned. It may be
|
||||
NULL if no translation is needed.
|
||||
`output_size_ret' is how long the returned string is (it need not be
|
||||
NULL-terminated.).
|
||||
*/
|
||||
int (*charset_conversion_fn) (const char *input_line, int32 input_length,
|
||||
const char *input_charset,
|
||||
const char *output_charset,
|
||||
char **output_ret, int32 *output_size_ret,
|
||||
void *stream_closure);
|
||||
|
||||
/* A hook for the caller to perform both charset-conversion and decoding of
|
||||
MIME-2 header fields (using RFC-1522 encoding.) Arguments and returned
|
||||
values are as for `charset_conversion_fn'.
|
||||
*/
|
||||
int (*rfc1522_conversion_fn) (const char *input_line, int32 input_length,
|
||||
const char *input_charset,
|
||||
const char *output_charset,
|
||||
char **output_ret, int32 *output_size_ret,
|
||||
void *stream_closure);
|
||||
|
||||
/* A hook for the caller to translate a time string into a prettier or more
|
||||
compact or localized form. */
|
||||
char *(*reformat_date_fn) (const char *old_date, void *stream_closure);
|
||||
|
||||
/* A hook for the caller to turn a file name into a content-type. */
|
||||
char *(*file_type_fn) (const char *filename, void *stream_closure);
|
||||
|
||||
/* A hook for the caller to turn a content-type into descriptive text. */
|
||||
char *(*type_description_fn) (const char *content_type,void *stream_closure);
|
||||
|
||||
/* A hook for the caller to turn a content-type into an image icon. */
|
||||
char *(*type_icon_name_fn) (const char *content_type, void *stream_closure);
|
||||
|
||||
/* A hook by which the user may be prompted for a password by the security
|
||||
library. (This is really of type `SECKEYGetPasswordKey'; see sec.h.) */
|
||||
void *(*passwd_prompt_fn)(void *arg1, void *arg2);
|
||||
void *passwd_prompt_fn_arg;
|
||||
|
||||
/* =======================================================================
|
||||
Various callbacks; for all of these functions, the `closure' argument
|
||||
is what is found in `html_closure'.
|
||||
*/
|
||||
void *html_closure;
|
||||
|
||||
/* For emitting some HTML before the start of the outermost message
|
||||
(this is called before any HTML is written to layout.) */
|
||||
MimeHTMLGeneratorFunction generate_header_html_fn;
|
||||
|
||||
/* For emitting some HTML after the outermost header block, but before
|
||||
the body of the first message. */
|
||||
MimeHTMLGeneratorFunction generate_post_header_html_fn;
|
||||
|
||||
/* For emitting some HTML at the very end (this is called after libmime
|
||||
has written everything it's going to write.) */
|
||||
MimeHTMLGeneratorFunction generate_footer_html_fn;
|
||||
|
||||
/* For turning a message ID into a loadable URL. */
|
||||
MimeHTMLGeneratorFunction generate_reference_url_fn;
|
||||
|
||||
/* For turning a mail address into a mailto URL. */
|
||||
MimeHTMLGeneratorFunction generate_mailto_url_fn;
|
||||
|
||||
/* For turning a newsgroup name into a news URL. */
|
||||
MimeHTMLGeneratorFunction generate_news_url_fn;
|
||||
|
||||
/* =======================================================================
|
||||
Callbacks to handle the backend-specific inlined image display
|
||||
(internal-external-reconnect junk.) For `image_begin', the `closure'
|
||||
argument is what is found in `stream_closure'; but for all of the
|
||||
others, the `closure' argument is the data that `image_begin' returned.
|
||||
*/
|
||||
|
||||
/* Begins processing an embedded image; the URL and content_type are of the
|
||||
image itself. */
|
||||
void *(*image_begin) (const char *image_url, const char *content_type,
|
||||
void *stream_closure);
|
||||
|
||||
/* Stop processing an image. */
|
||||
void (*image_end) (void *image_closure, int status);
|
||||
|
||||
/* Dump some raw image data down the stream. */
|
||||
int (*image_write_buffer) (char *buf, int32 size, void *image_closure);
|
||||
|
||||
/* What HTML should be dumped out for this image. */
|
||||
char *(*make_image_html) (void *image_closure);
|
||||
|
||||
|
||||
/* =======================================================================
|
||||
Other random opaque state.
|
||||
*/
|
||||
MimeParseStateObject *state; /* Some state used by libmime internals;
|
||||
initialize this to 0 and leave it alone.
|
||||
*/
|
||||
|
||||
|
||||
#ifdef MIME_DRAFTS
|
||||
/* =======================================================================
|
||||
Mail Draft hooks -- 09-19-1996
|
||||
*/
|
||||
XP_Bool decompose_file_p; /* are we decomposing a mime msg
|
||||
into separate files */
|
||||
XP_Bool done_parsing_outer_headers; /* are we done parsing the outer message
|
||||
headers; this is really useful when
|
||||
we have multiple Message/RFC822
|
||||
headers */
|
||||
XP_Bool is_multipart_msg; /* are we decomposing a multipart
|
||||
message */
|
||||
|
||||
int decompose_init_count; /* used for non multipart message only
|
||||
*/
|
||||
|
||||
XP_Bool signed_p; /* to tell draft this is a signed
|
||||
message */
|
||||
|
||||
/* Callback to gather the outer most headers so we could use the
|
||||
information to initialize the addressing/subject/newsgroups fields
|
||||
for the composition window. */
|
||||
int (*decompose_headers_info_fn) (void *closure,
|
||||
MimeHeaders *headers);
|
||||
|
||||
/* Callbacks to create temporary files for drafts attachments. */
|
||||
int (*decompose_file_init_fn) (void *stream_closure,
|
||||
MimeHeaders *headers );
|
||||
|
||||
int (*decompose_file_output_fn) (char *buf, int32 size,
|
||||
void *stream_closure);
|
||||
|
||||
int (*decompose_file_close_fn) (void *stream_closure);
|
||||
#endif /* MIME_DRAFTS */
|
||||
|
||||
int32 attachment_icon_layer_id; /* Hackhackhack. This is zero if we have
|
||||
not yet emitted the attachment layer
|
||||
stuff. If we have, then this is the
|
||||
id number for that layer, which is a
|
||||
unique random number every time, to keep
|
||||
evil people from writing javascript code
|
||||
to hack it. */
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* Mozilla-specific interfaces
|
||||
*/
|
||||
|
||||
/* Given a URL, this might return a better suggested name to save it as.
|
||||
|
||||
When you have a URL, you can sometimes get a suggested name from
|
||||
URL_s->content_name, but if you're saving a URL to disk before the
|
||||
URL_Struct has been filled in by netlib, you don't have that yet.
|
||||
|
||||
So if you're about to prompt for a file name *before* you call FE_GetURL
|
||||
with a format_out of FO_SAVE_AS, call this function first to see if it
|
||||
can offer you advice about what the suggested name for that URL should be.
|
||||
|
||||
(This works by looking in a cache of recently-displayed MIME objects, and
|
||||
seeing if this URL matches. If it does, the remembered content-name will
|
||||
be used.)
|
||||
*/
|
||||
extern char *MimeGuessURLContentName(MWContext *context, const char *url);
|
||||
|
||||
/* Given a URL, return the content type for the mime part, if the passed context
|
||||
recently parsed a message containing the part specified by the URL.
|
||||
This is used to figure out if we need to open the url in a browser window,
|
||||
or if we're just going to do a save as, anyay.
|
||||
*/
|
||||
extern char *MimeGetURLContentType(MWContext *context, const char *url);
|
||||
|
||||
|
||||
/* Determines whether the given context is currently showing a text/html
|
||||
message. (Used by libmsg to determine if replys should bring up the
|
||||
text/html editor. */
|
||||
|
||||
extern XP_Bool MimeShowingTextHtml(MWContext* context);
|
||||
|
||||
|
||||
|
||||
/* Yeech, hack... Determine the URL to use to save just the HTML part of the
|
||||
currently-displayed message to disk. If the current message doesn't have
|
||||
a text/html part, returns NULL. Otherwise, the caller must free the
|
||||
returned string using XP_FREE(). */
|
||||
|
||||
extern char* MimeGetHtmlPartURL(MWContext* context);
|
||||
|
||||
|
||||
/* Return how many attachments are in the currently-displayed message. */
|
||||
extern int MimeGetAttachmentCount(MWContext* context);
|
||||
|
||||
/* Returns what attachments are being viewed in the currently-displayed
|
||||
message. The returned data must be free'd using
|
||||
MimeFreeAttachmentList(). */
|
||||
extern int MimeGetAttachmentList(MWContext* context,
|
||||
MSG_AttachmentData** data);
|
||||
|
||||
extern void MimeFreeAttachmentList(MSG_AttachmentData* data);
|
||||
|
||||
|
||||
/* Call this when destroying a context; this frees up some memory.
|
||||
*/
|
||||
extern void MimeDestroyContextData(MWContext *context);
|
||||
|
||||
|
||||
/* After a message has been fully displayed (the document has finished
|
||||
loading) FEs call this with a Mail or News window to determine how
|
||||
the "security" toolbar button should be rendered.
|
||||
|
||||
The first two values are whether it was an encrypted and/or signed
|
||||
message; the second two are whether it was *valid*.
|
||||
*/
|
||||
extern void MIME_GetMessageCryptoState(MWContext *context,
|
||||
XP_Bool *signed_return,
|
||||
XP_Bool *encrypted_return,
|
||||
XP_Bool *signed_ok_return,
|
||||
XP_Bool *encrypted_ok_return);
|
||||
|
||||
#ifndef MOZILLA_30
|
||||
/* Used only by libnet, this indicates that the user bonked on the "show me
|
||||
details about attachments" button. */
|
||||
|
||||
extern int MIME_DisplayAttachmentPane(MWContext* context);
|
||||
#endif /* MOZILLA_30 */
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* _LIBMIME_H_ */
|
||||
543
mozilla/include/libmocha.h
Normal file
543
mozilla/include/libmocha.h
Normal file
@@ -0,0 +1,543 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Header file for Mocha in the Navigator (libmocha).
|
||||
*/
|
||||
|
||||
#ifndef libmocha_h___
|
||||
#define libmocha_h___
|
||||
|
||||
#include "ntypes.h"
|
||||
#include "il_types.h"
|
||||
#include "prtypes.h"
|
||||
#include "plhash.h"
|
||||
#include "prthread.h"
|
||||
#include "jsapi.h"
|
||||
|
||||
/* enable JavaScript Debugger support */
|
||||
#if defined (_WIN32) || defined(XP_UNIX) || defined(powerc) || defined(__powerc) || defined(XP_OS2)
|
||||
#ifdef JAVA
|
||||
#define JSDEBUGGER 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
NSPR_BEGIN_EXTERN_C
|
||||
|
||||
typedef struct JSTimeout JSTimeout;
|
||||
typedef struct JSPrincipalsList JSPrincipalsList;
|
||||
typedef struct JSNestingUrl JSNestingUrl;
|
||||
|
||||
/*
|
||||
* There exists one MochaDecoder per top-level MWContext that decodes Mocha,
|
||||
* either from an HTML page or from a "mocha:[expr]" URL.
|
||||
*/
|
||||
typedef struct MochaDecoder {
|
||||
int32 forw_count; /* forward reference count */
|
||||
int32 back_count; /* back (up the tree) count */
|
||||
JSContext *js_context;
|
||||
MWContext *window_context;
|
||||
JSObject *window_object;
|
||||
NET_StreamClass *stream;
|
||||
int32 stream_owner; /* id of layer that's loading the stream */
|
||||
URL_Struct *url_struct;
|
||||
JSTimeout *timeouts;
|
||||
JSTimeout *saved_timeouts;
|
||||
uint16 signature_ordinal;
|
||||
PRPackedBool replace_location;
|
||||
PRPackedBool resize_reload;
|
||||
PRPackedBool load_event_sent;
|
||||
PRPackedBool visited;
|
||||
PRPackedBool writing_input;
|
||||
PRPackedBool free_stream_on_close;
|
||||
PRPackedBool in_window_quota;
|
||||
PRPackedBool called_win_close;
|
||||
PRPackedBool principals_compromised;
|
||||
const char *source_url;
|
||||
JSNestingUrl *nesting_url;
|
||||
uint32 error_count;
|
||||
uint32 event_mask;
|
||||
int32 active_layer_id;
|
||||
uint32 active_form_id;
|
||||
uint32 event_bit;
|
||||
int32 doc_id;
|
||||
|
||||
/*
|
||||
* Class prototype objects, in alphabetical order. Must be CLEARed (set
|
||||
* to null) in LM_PutMochaDecoder, HELD (GC roots added) in lm_NewWindow,
|
||||
* and DROPped (removed as GC roots) in lm_DestroyWindow.
|
||||
* XXXbe clean up, clear via bzero, using a sub-structure.
|
||||
*/
|
||||
JSObject *anchor_prototype;
|
||||
JSObject *bar_prototype;
|
||||
JSObject *document_prototype;
|
||||
JSObject *event_prototype;
|
||||
JSObject *event_capturer_prototype;
|
||||
JSObject *event_receiver_prototype;
|
||||
JSObject *form_prototype;
|
||||
JSObject *image_prototype;
|
||||
JSObject *input_prototype;
|
||||
JSObject *layer_prototype;
|
||||
JSObject *option_prototype;
|
||||
JSObject *rect_prototype;
|
||||
JSObject *url_prototype;
|
||||
|
||||
/*
|
||||
* Window sub-objects. These must also follow the CLEAR/HOLD/DROP
|
||||
* protocol mentioned above.
|
||||
*/
|
||||
JSObject *document;
|
||||
JSObject *history;
|
||||
JSObject *location;
|
||||
JSObject *navigator;
|
||||
JSObject *components;
|
||||
JSObject *screen;
|
||||
JSObject *hardware;
|
||||
JSObject *crypto;
|
||||
JSObject *pkcs11;
|
||||
|
||||
/*
|
||||
* Ad-hoc GC roots.
|
||||
*/
|
||||
JSObject *event_receiver;
|
||||
JSObject *opener;
|
||||
|
||||
JSVersion firstVersion; /* First JS script tag version. */
|
||||
|
||||
/*
|
||||
* Security info for all of this decoder's scripts, except those
|
||||
* contained in layers.
|
||||
*/
|
||||
JSPrincipals *principals;
|
||||
JSPrincipalsList*early_access_list;
|
||||
|
||||
IL_GroupContext *image_context; /* Image context for anonymous images */
|
||||
|
||||
/*
|
||||
* Table that maintains an id to JS object mapping for reflected
|
||||
* elements. This is used during resize to reestablish the connection
|
||||
* between layout elements and their corresponding JS object.
|
||||
* Form elements are special, since they can't use the same keying
|
||||
*/
|
||||
PRHashTable *id_to_object_map;
|
||||
} MochaDecoder;
|
||||
|
||||
/*
|
||||
* Number of buckets for the id-to-object hash table.
|
||||
*/
|
||||
#define LM_ID_TO_OBJ_MAP_SIZE 20
|
||||
#define LM_FORM_ELEMENT_MAP_SIZE 10
|
||||
|
||||
/*
|
||||
* Types of objects reflected into Mocha
|
||||
*/
|
||||
typedef enum {
|
||||
LM_APPLETS = 0,
|
||||
LM_FORMS,
|
||||
LM_LINKS,
|
||||
LM_NAMEDANCHORS,
|
||||
LM_EMBEDS,
|
||||
LM_IMAGES,
|
||||
LM_FORMELEMENTS,
|
||||
LM_LAYERS
|
||||
} ReflectedObject;
|
||||
|
||||
/*
|
||||
* Generates an id-to-object mapping key from the ReflectedObject
|
||||
* type, the containing layer id and the id of the object itself.
|
||||
* The key is 4 bits type, 14 bits layer_id and 14 bits id.
|
||||
*/
|
||||
#define LM_GET_MAPPING_KEY(obj_type, layer_id, id) \
|
||||
(void *)(((((uint32)obj_type) << 28) & 0xF0000000UL) | \
|
||||
((((uint32)layer_id) << 14) & 0x0FFFC000UL) | \
|
||||
(((uint32)id) & 0x00003FFFUL))
|
||||
|
||||
/*
|
||||
* Public, well-known string constants.
|
||||
*/
|
||||
extern char js_language_name[]; /* "JavaScript" */
|
||||
extern char js_content_type[]; /* "application/x-javascript" */
|
||||
|
||||
/*
|
||||
* Initialize and finalize Mocha-in-the-client.
|
||||
*/
|
||||
extern void LM_InitMocha(void);
|
||||
extern void LM_FinishMocha(void);
|
||||
|
||||
/*
|
||||
* Force mocha on in the given context, even if the user pref is set to
|
||||
* disable mocha.
|
||||
*/
|
||||
extern void LM_ForceJSEnabled(MWContext *cx);
|
||||
|
||||
/*
|
||||
* Initialize and finalize Mocha-Java connection
|
||||
*/
|
||||
#define LM_MOJA_UNINITIALIZED 0
|
||||
#define LM_MOJA_OK 1
|
||||
#define LM_MOJA_JAVA_FAILED 2
|
||||
#define LM_MOJA_OUT_OF_MEMORY 3
|
||||
extern int LM_InitMoja(void);
|
||||
extern void LM_FinishMoja(void);
|
||||
extern int LM_IsMojaInitialized(void);
|
||||
|
||||
/*
|
||||
* Enter or leave the big mocha lock. Any thread which wants to
|
||||
* preserve JavaScript run-to-completion semantics must bracket
|
||||
* JavaScript evaluation with these calls.
|
||||
*/
|
||||
typedef void
|
||||
(PR_CALLBACK *JSLockReleaseFunc)(void * data);
|
||||
|
||||
|
||||
extern void PR_CALLBACK LM_LockJS(void);
|
||||
extern void PR_CALLBACK LM_UnlockJS(void);
|
||||
extern JSBool PR_CALLBACK LM_AttemptLockJS(JSLockReleaseFunc fn, void * data);
|
||||
extern JSBool PR_CALLBACK LM_ClearAttemptLockJS(JSLockReleaseFunc fn, void * data);
|
||||
extern PRBool PR_CALLBACK
|
||||
LM_HandOffJSLock(PRThread * oldOwner, PRThread *newOwner);
|
||||
|
||||
/*
|
||||
* For interruption purposes we will sometimes need to know the
|
||||
* context who is holding the JS lock
|
||||
*/
|
||||
extern void LM_JSLockSetContext(MWContext * context);
|
||||
extern MWContext * LM_JSLockGetContext(void);
|
||||
|
||||
/*
|
||||
* Enable/disable for Mocha-in-the-client.
|
||||
*/
|
||||
#define LM_SwitchMocha(toggle) LM_SetMochaEnabled(toggle)
|
||||
|
||||
extern JSBool
|
||||
LM_GetMochaEnabled(void);
|
||||
|
||||
/*
|
||||
* Get (create if necessary) a MochaDecoder for context, adding a reference
|
||||
* to its window_object. Put drops the reference, destroying window_object
|
||||
* when the count reaches zero. These functions should only be called in
|
||||
* the mocha thread or while holding the JS-lock
|
||||
*/
|
||||
extern MochaDecoder *
|
||||
LM_GetMochaDecoder(MWContext *context);
|
||||
|
||||
extern void
|
||||
LM_PutMochaDecoder(MochaDecoder *decoder);
|
||||
|
||||
/*
|
||||
* Get the source URL for script being loaded by document. This URL will be
|
||||
* the document's URL for inline script, or the SRC= URL for included script.
|
||||
* The returned pointer is safe only within the extent of the function that
|
||||
* calls LM_GetSourceURL().
|
||||
*/
|
||||
extern const char *
|
||||
LM_GetSourceURL(MochaDecoder *decoder);
|
||||
|
||||
/*
|
||||
* Set the current layer and hence the current scope for script evaluation.
|
||||
*/
|
||||
extern void
|
||||
LM_SetActiveLayer(MWContext * context, int32 layer_id);
|
||||
|
||||
/*
|
||||
* Get the current layer and hence the current scope for script evaluation.
|
||||
*/
|
||||
extern int32
|
||||
LM_GetActiveLayer(MWContext * context);
|
||||
|
||||
/*
|
||||
* Evaluate the contents of a SCRIPT tag. You can specify the JSObject
|
||||
* to use as the base scope. Pass NULL to use the default window_object
|
||||
*/
|
||||
extern JSBool
|
||||
LM_EvaluateBuffer(MochaDecoder *decoder, void *base, size_t length,
|
||||
uint lineno, char * scope_to, struct JSPrincipals *principals,
|
||||
JSBool unicode, jsval *result);
|
||||
|
||||
/*
|
||||
* Evaluate an expression entity in an HTML attribute (WIDTH="&{height/2};").
|
||||
* Returns null on error, otherwise a pointer to the malloc'd string result.
|
||||
* The caller is responsible for freeing the string result.
|
||||
*/
|
||||
extern char *
|
||||
LM_EvaluateAttribute(MWContext *context, char *expr, uint lineno);
|
||||
|
||||
/*
|
||||
* Remove any MochaDecoder window_context pointer to an MWContext that's
|
||||
* being destroyed.
|
||||
*/
|
||||
extern void
|
||||
LM_RemoveWindowContext(MWContext *context, History_entry * he);
|
||||
|
||||
extern void
|
||||
LM_DropSavedWindow(MWContext *context, void *window);
|
||||
|
||||
/*
|
||||
* Set and clear the HTML stream and URL for the MochaDecoder
|
||||
* associated with the given context
|
||||
*/
|
||||
extern JSBool
|
||||
LM_SetDecoderStream(MWContext * context, NET_StreamClass *stream,
|
||||
URL_Struct *url_struct, JSBool free_stream_on_close);
|
||||
|
||||
/*
|
||||
* Start caching HTML or plain text generated by document.write() where the
|
||||
* script is running on mc, the document is being generated into decoder's
|
||||
* window, and url_struct tells about the generator.
|
||||
*/
|
||||
extern NET_StreamClass *
|
||||
LM_WysiwygCacheConverter(MWContext *context, URL_Struct *url_struct,
|
||||
const char * wysiwyg_url, const char * base_href);
|
||||
|
||||
/*
|
||||
* Skip over the "wysiwyg://docid/" in url_string and return a pointer to the
|
||||
* real URL hidden after the prefix. If url_string is not of "wysiwyg:" type,
|
||||
* just return url_string. Never returns null.
|
||||
*/
|
||||
extern const char *
|
||||
LM_StripWysiwygURLPrefix(const char *url_string);
|
||||
|
||||
/*
|
||||
* This function works only on "wysiwyg:" type URLs -- don't call it unless
|
||||
* you know that NET_URL_Type(url_string) is WYSIWYG_TYPE_URL. It'll return
|
||||
* null if url_string seems too short, or if it can't find the third slash.
|
||||
*/
|
||||
extern const char *
|
||||
LM_SkipWysiwygURLPrefix(const char *url_string);
|
||||
|
||||
/*
|
||||
* Return a pointer to a malloc'd string of the form "<BASE HREF=...>" where
|
||||
* the "..." URL is the directory of cx's origin URL. Such a base URL is the
|
||||
* default base for relative URLs in generated HTML.
|
||||
*/
|
||||
extern char *
|
||||
LM_GetBaseHrefTag(JSContext *cx, JSPrincipals *principals);
|
||||
|
||||
/*
|
||||
* XXX Make these public LO_... typedefs in lo_ele.h/ntypes.h?
|
||||
*/
|
||||
struct lo_FormData_struct;
|
||||
struct lo_NameList_struct;
|
||||
|
||||
extern struct lo_FormData_struct *
|
||||
LO_GetFormDataByID(MWContext *context, int32 layer_id, intn form_id);
|
||||
|
||||
extern uint
|
||||
LO_EnumerateForms(MWContext *context, int32 layer_id);
|
||||
|
||||
extern struct LO_ImageStruct_struct *
|
||||
LO_GetImageByIndex(MWContext *context, int32 layer_id, intn image_id);
|
||||
|
||||
extern uint
|
||||
LO_EnumerateImages(MWContext *context, int32 layer_id);
|
||||
|
||||
/*
|
||||
* Reflect display layers into Mocha.
|
||||
*/
|
||||
extern JSObject *
|
||||
LM_ReflectLayer(MWContext *context, int32 layer_id, int32 parent_layer_id,
|
||||
PA_Tag *tag);
|
||||
|
||||
extern LO_FormElementStruct *
|
||||
LO_GetFormElementByIndex(struct lo_FormData_struct *form_data, int32 index);
|
||||
|
||||
extern uint
|
||||
LO_EnumerateFormElements(MWContext *context,
|
||||
struct lo_FormData_struct *form_data);
|
||||
|
||||
/*
|
||||
* Layout helper function to find a named anchor by its index in the
|
||||
* document.anchors[] array.
|
||||
*/
|
||||
extern struct lo_NameList_struct *
|
||||
LO_GetNamedAnchorByIndex(MWContext *context, int32 layer_id, uint index);
|
||||
|
||||
extern uint
|
||||
LO_EnumerateNamedAnchors(MWContext *context, int32 layer_id);
|
||||
|
||||
/*
|
||||
* Layout Mocha helper function to find an HREF Anchor by its index in the
|
||||
* document.links[] array.
|
||||
*/
|
||||
extern LO_AnchorData *
|
||||
LO_GetLinkByIndex(MWContext *context, int32 layer_id, uint index);
|
||||
|
||||
extern uint
|
||||
LO_EnumerateLinks(MWContext *context, int32 layer_id);
|
||||
|
||||
extern LO_JavaAppStruct *
|
||||
LO_GetAppletByIndex(MWContext *context, int32 layer_id, uint index);
|
||||
|
||||
extern uint
|
||||
LO_EnumerateApplets(MWContext *context, int32 layer_id);
|
||||
|
||||
extern LO_EmbedStruct *
|
||||
LO_GetEmbedByIndex(MWContext *context, int32 layer_id, uint index);
|
||||
|
||||
extern uint
|
||||
LO_EnumerateEmbeds(MWContext *context, int32 layer_id);
|
||||
|
||||
/*
|
||||
* Get and set a color attribute in the current document state.
|
||||
*/
|
||||
extern void
|
||||
LO_GetDocumentColor(MWContext *context, int type, LO_Color *color);
|
||||
|
||||
extern void
|
||||
LO_SetDocumentColor(MWContext *context, int type, LO_Color *color);
|
||||
|
||||
/*
|
||||
* Layout function to reallocate the lo_FormElementOptionData array pointed at
|
||||
* by lo_FormElementSelectData's options member to include space for the number
|
||||
* of options given by selectData->option_cnt.
|
||||
*/
|
||||
extern XP_Bool
|
||||
LO_ResizeSelectOptions(lo_FormElementSelectData *selectData);
|
||||
|
||||
/*
|
||||
* Discard the current document and all its subsidiary objects.
|
||||
*/
|
||||
extern void
|
||||
LM_ReleaseDocument(MWContext *context, JSBool resize_reload);
|
||||
|
||||
/*
|
||||
* Search if a the event is being captured in the frame hierarchy.
|
||||
*/
|
||||
extern XP_Bool
|
||||
LM_EventCaptureCheck(MWContext *context, uint32 current_event);
|
||||
|
||||
/*
|
||||
* Scroll a window to the given point.
|
||||
*/
|
||||
extern void LM_SendOnScroll(MWContext *context, int32 x, int32 y);
|
||||
|
||||
/*
|
||||
* Display a help topic.
|
||||
*/
|
||||
extern void LM_SendOnHelp(MWContext *context);
|
||||
|
||||
/*
|
||||
* Send a load or abort event for an image to a callback.
|
||||
*/
|
||||
typedef enum LM_ImageEvent {
|
||||
LM_IMGUNBLOCK = 0,
|
||||
LM_IMGLOAD = 1,
|
||||
LM_IMGABORT = 2,
|
||||
LM_IMGERROR = 3,
|
||||
LM_LASTEVENT = 3
|
||||
} LM_ImageEvent;
|
||||
|
||||
extern void
|
||||
LM_ProcessImageEvent(MWContext *context, LO_ImageStruct *image_data,
|
||||
LM_ImageEvent event);
|
||||
|
||||
/* This should be called when a named anchor is located. */
|
||||
extern JSBool
|
||||
LM_SendOnLocate(MWContext *context, struct lo_NameList_struct *name_rec);
|
||||
|
||||
extern JSObject *
|
||||
LM_ReflectApplet(MWContext *context, LO_JavaAppStruct *applet_data,
|
||||
PA_Tag * tag, int32 layer_id, uint index);
|
||||
|
||||
extern JSObject *
|
||||
LM_ReflectEmbed(MWContext *context, LO_EmbedStruct *lo_embed,
|
||||
PA_Tag * tag, int32 layer_id, uint index);
|
||||
|
||||
struct lo_FormData_struct;
|
||||
struct lo_NameList_struct;
|
||||
|
||||
extern JSObject *
|
||||
LM_ReflectForm(MWContext *context, struct lo_FormData_struct *form_data,
|
||||
PA_Tag * tag, int32 layer_id, uint index);
|
||||
|
||||
extern JSObject *
|
||||
LM_ReflectFormElement(MWContext *context, int32 layer_id, int32 form_id,
|
||||
int32 element_id, PA_Tag * tag);
|
||||
|
||||
extern JSObject *
|
||||
LM_ReflectLink(MWContext *context, LO_AnchorData *anchor_data, PA_Tag * tag,
|
||||
int32 layer_id, uint index);
|
||||
|
||||
extern JSObject *
|
||||
LM_ReflectNamedAnchor(MWContext *context, struct lo_NameList_struct *name_rec,
|
||||
PA_Tag * tag, int32 layer_id, uint index);
|
||||
|
||||
extern JSObject *
|
||||
LM_ReflectImage(MWContext *context, LO_ImageStruct *image_data,
|
||||
PA_Tag * tag, int32 layer_id, uint index);
|
||||
|
||||
extern JSBool
|
||||
LM_CanDoJS(MWContext *context);
|
||||
|
||||
extern JSBool
|
||||
LM_IsActive(MWContext *context);
|
||||
|
||||
/*
|
||||
* Security.
|
||||
*/
|
||||
|
||||
extern JSPrincipals *
|
||||
LM_NewJSPrincipals(URL_Struct *archive, char *name, const char *codebase);
|
||||
|
||||
extern char *
|
||||
LM_ExtractFromPrincipalsArchive(JSPrincipals *principals, char *name,
|
||||
uint *length);
|
||||
|
||||
extern JSBool
|
||||
LM_SetUntransformedSource(JSPrincipals *principals, char *original,
|
||||
char *transformed);
|
||||
|
||||
extern JSPrincipals * PR_CALLBACK
|
||||
LM_GetJSPrincipalsFromJavaCaller(JSContext *cx, int callerDepth);
|
||||
|
||||
/*
|
||||
* LM_RegisterPrincipals will verify and register a set of principals
|
||||
* in the decoder, modifying decoder->principals in the process. It
|
||||
* returns the modified decoder.
|
||||
*
|
||||
* The "name" parameter may be NULL if "principals" was created with a name.
|
||||
*/
|
||||
|
||||
extern JSPrincipals *
|
||||
LM_RegisterPrincipals(MochaDecoder *decoder, JSPrincipals *principals,
|
||||
char *name, char *src);
|
||||
/*
|
||||
* JavaScript Debugger support
|
||||
*/
|
||||
#ifdef JSDEBUGGER
|
||||
|
||||
extern NET_StreamClass*
|
||||
LM_StreamBuilder( int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *mwcontext );
|
||||
|
||||
extern JSBool
|
||||
LM_GetJSDebugActive(void);
|
||||
|
||||
extern void
|
||||
LM_JamSourceIntoJSDebug( const char *filename,
|
||||
const char *str,
|
||||
int32 len,
|
||||
MWContext *mwcontext );
|
||||
|
||||
#endif
|
||||
|
||||
NSPR_END_EXTERN_C
|
||||
|
||||
#endif /* libmocha_h___ */
|
||||
29
mozilla/include/libnet.h
Normal file
29
mozilla/include/libnet.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
/*-----------------------------------------------------------------------------
|
||||
Collection of all the public libnet functions
|
||||
-----------------------------------------------------------------------------*/
|
||||
#ifndef _libnet_
|
||||
#define _libnet_
|
||||
|
||||
#include "mkutils.h"
|
||||
#include "mkstream.h"
|
||||
#include "mkgeturl.h"
|
||||
|
||||
#endif /* _libnet_ */
|
||||
|
||||
35
mozilla/include/libstyle.h
Normal file
35
mozilla/include/libstyle.h
Normal file
@@ -0,0 +1,35 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/* libstyle.h --- Exported style sheet routines */
|
||||
|
||||
#ifndef __LIBSTYLE_H_
|
||||
#define __LIBSTYLE_H_
|
||||
|
||||
#include "xp_core.h"
|
||||
#include "libmocha.h"
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
extern JSBool
|
||||
JSS_ResolveDocName(JSContext *mc, MWContext *context, JSObject *obj, jsval id);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* __LIBSTYLE_H_ */
|
||||
1317
mozilla/include/lo_ele.h
Normal file
1317
mozilla/include/lo_ele.h
Normal file
File diff suppressed because it is too large
Load Diff
93
mozilla/include/m_cvstrm.h
Normal file
93
mozilla/include/m_cvstrm.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
** Mac_Convert_Stream.h
|
||||
** --------------------
|
||||
**
|
||||
** The header file for the constructing functions of apple file
|
||||
** encode/decode stream.
|
||||
**
|
||||
** 27sep95 mym created.
|
||||
*/
|
||||
|
||||
#ifndef M_CVStrm_h
|
||||
#define M_CVStrm_h
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
PUBLIC NET_StreamClass *
|
||||
fe_MakeBinHexEncodeStream (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id,
|
||||
char* dst_filename);
|
||||
|
||||
PUBLIC NET_StreamClass *
|
||||
fe_MakeBinHexDecodeStream (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id );
|
||||
|
||||
PUBLIC NET_StreamClass *
|
||||
fe_MakeAppleDoubleDecodeStream (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id,
|
||||
XP_Bool write_as_binhex,
|
||||
char *dst_filename);
|
||||
|
||||
PUBLIC NET_StreamClass *
|
||||
fe_MakeAppleSingleDecodeStream (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id,
|
||||
XP_Bool write_as_binhex,
|
||||
char *dst_filename);
|
||||
|
||||
#ifdef XP_MAC
|
||||
|
||||
PUBLIC NET_StreamClass *
|
||||
fe_MakeAppleDoubleEncodeStream (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id,
|
||||
char* src_filename,
|
||||
char* dst_filename,
|
||||
char* separator);
|
||||
|
||||
XP_Bool isMacFile(char* filename);
|
||||
|
||||
#endif
|
||||
|
||||
PUBLIC NET_StreamClass *
|
||||
fe_MakeAppleDoubleDecodeStream_1 (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id);
|
||||
|
||||
PUBLIC NET_StreamClass *
|
||||
fe_MakeAppleSingleDecodeStream_1 (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif
|
||||
56
mozilla/include/makefile.win
Normal file
56
mozilla/include/makefile.win
Normal file
@@ -0,0 +1,56 @@
|
||||
#!gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#//
|
||||
#// Makefile to install NSPR/INCLUDE header files into the distribution
|
||||
#// directory.
|
||||
#//
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#//
|
||||
#// Specify the depth of the current directory relative to the
|
||||
#// root of NS
|
||||
#//
|
||||
#//------------------------------------------------------------------------
|
||||
DEPTH = ..
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#//
|
||||
#// Specify any "command" targets. (ie. DIRS, INSTALL_FILES, ...)
|
||||
#// (these must come before the common makefiles are included)
|
||||
#//
|
||||
#// DIRS - There is a subdirectory to process
|
||||
#// INSTALL_FILES - Files to be installed in the distribution area
|
||||
#//
|
||||
#//------------------------------------------------------------------------
|
||||
#INSTALL_FILE_LIST=*.h
|
||||
#INSTALL_DIR=$(XPDIST)\public\coreincl
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#//
|
||||
#// Include the common makefile rules
|
||||
#//
|
||||
#//------------------------------------------------------------------------
|
||||
include <$(DEPTH)/config/rules.mak>
|
||||
|
||||
#export:: INSTALL_FILES
|
||||
|
||||
443
mozilla/include/mcom_db.h
Normal file
443
mozilla/include/mcom_db.h
Normal file
@@ -0,0 +1,443 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993, 1994
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)db.h 8.7 (Berkeley) 6/16/94
|
||||
*/
|
||||
|
||||
#ifndef _DB_H_
|
||||
#define _DB_H_
|
||||
|
||||
#include "prtypes.h"
|
||||
|
||||
#ifdef __sgi
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#define BIG_ENDIAN 4321
|
||||
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
|
||||
#define __BIT_TYPES_DEFINED__
|
||||
#endif
|
||||
|
||||
#ifdef __sun
|
||||
#define BIG_ENDIAN 4321
|
||||
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
|
||||
|
||||
#ifndef SVR4
|
||||
/* compat.h is only in 4.1.3 machines. - dp */
|
||||
#include <compat.h>
|
||||
#endif
|
||||
|
||||
/* XXX - dp
|
||||
* Need to find a general way of defining endian-ness in SunOS 5.3
|
||||
* SunOS 5.4 defines _BIG_ENDIAN and _LITTLE_ENDIAN
|
||||
* SunOS 5.3 does nothing like this.
|
||||
*/
|
||||
|
||||
#ifndef BYTE_ORDER
|
||||
|
||||
#if defined(_BIG_ENDIAN)
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#elif defined(_LITTLE_ENDIAN)
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#elif !defined(SVR4)
|
||||
/* 4.1.3 is always BIG_ENDIAN as it was released only on sparc platforms. */
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#elif !defined(vax) && !defined(ntohl) && !defined(lint) && !defined(i386)
|
||||
/* 5.3 big endian. Copied this above line from sys/byteorder.h */
|
||||
/* Now we are in a 5.3 SunOS rather non 5.4 or above SunOS */
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#else
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#endif /* !BYTE_ORDER */
|
||||
#endif /* __sun */
|
||||
|
||||
#ifdef __linux
|
||||
# include <endian.h>
|
||||
# ifndef BYTE_ORDER
|
||||
# define BYTE_ORDER __BYTE_ORDER
|
||||
# define BIG_ENDIAN __BIG_ENDIAN
|
||||
# define LITTLE_ENDIAN __LITTLE_ENDIAN
|
||||
# endif
|
||||
#endif /* __linux */
|
||||
|
||||
#if defined(SCO) || defined(UNIXWARE) || defined(SNI) || defined(NCR) || defined(NEC)
|
||||
#include <sys/types.h>
|
||||
#include <sys/byteorder.h>
|
||||
#endif
|
||||
|
||||
#ifdef SCO
|
||||
#include <sys/bitypes.h>
|
||||
#define MAXPATHLEN 1024
|
||||
#endif
|
||||
|
||||
#ifdef SNI
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#define BIG_ENDIAN 4321
|
||||
#define LITTLE_ENDIAN 1234
|
||||
#endif
|
||||
|
||||
#ifdef NCR
|
||||
#include <sys/endian.h>
|
||||
#endif
|
||||
|
||||
#ifdef macintosh
|
||||
#include <unix.h>
|
||||
#endif
|
||||
|
||||
#ifndef macintosh
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#if defined(_WINDOWS) || defined(XP_OS2)
|
||||
#include <stdio.h>
|
||||
#include <io.h>
|
||||
#include <limits.h>
|
||||
|
||||
#ifndef XP_OS2
|
||||
#define MAXPATHLEN 1024
|
||||
#else
|
||||
#include "os2file.h" /* includes dirent.h */
|
||||
#endif
|
||||
|
||||
#define EFTYPE EINVAL /* POSIX 1003.1 format errno. */
|
||||
|
||||
#ifndef STDERR_FILENO
|
||||
#define STDIN_FILENO 0 /* ANSI C #defines */
|
||||
#define STDOUT_FILENO 1
|
||||
#define STDERR_FILENO 2
|
||||
#endif
|
||||
|
||||
#ifndef O_ACCMODE /* POSIX 1003.1 access mode mask. */
|
||||
#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
|
||||
#endif
|
||||
|
||||
#ifdef BYTE_ORDER
|
||||
#undef BYTE_ORDER
|
||||
#endif
|
||||
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
|
||||
#define BIG_ENDIAN 4321
|
||||
#endif
|
||||
|
||||
#if defined(_WINDOWS) && !defined(_WIN32)
|
||||
/* 16 bit windows defines */
|
||||
#define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef macintosh
|
||||
#include <stdio.h>
|
||||
#include "xp_mcom.h"
|
||||
#ifndef NSPR20
|
||||
#include "prmacos.h"
|
||||
#endif
|
||||
#define BIG_ENDIAN 4321
|
||||
#define LITTLE_ENDIAN 1234
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#define O_ACCMODE 3 /* Mask for file access modes */
|
||||
#define EFTYPE 2000
|
||||
XP_BEGIN_PROTOS
|
||||
int mkstemp(const char *path);
|
||||
XP_END_PROTOS
|
||||
#endif /* MACINTOSH */
|
||||
|
||||
#if defined(XP_OS2)
|
||||
#include <xp_mcom.h>
|
||||
#include <pros2os.h>
|
||||
XP_BEGIN_PROTOS
|
||||
int mkstemp(char *path);
|
||||
XP_END_PROTOS
|
||||
#endif
|
||||
|
||||
#ifndef macintosh
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#if !defined(_WINDOWS) && !defined(macintosh) && !defined(XP_OS2)
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
#include "cdefs.h"
|
||||
|
||||
#ifndef _WINDOWS /* included above to prevent spurious warnings chouck 12-Sep-95 */
|
||||
#include <limits.h>
|
||||
#endif
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
|
||||
#endif
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
|
||||
#endif
|
||||
|
||||
#define RET_ERROR -1 /* Return values. */
|
||||
#define RET_SUCCESS 0
|
||||
#define RET_SPECIAL 1
|
||||
|
||||
#if defined(__386BSD__) || defined(SCO)
|
||||
#define __BIT_TYPES_DEFINED__
|
||||
#endif
|
||||
|
||||
#define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */
|
||||
|
||||
#ifndef __sgi
|
||||
typedef uint32 pgno_t;
|
||||
#endif
|
||||
|
||||
#define MAX_PAGE_OFFSET 65535 /* >= # of bytes in a page */
|
||||
typedef uint16 indx_t;
|
||||
#define MAX_REC_NUMBER 0xffffffff /* >= # of records in a tree */
|
||||
typedef uint32 recno_t;
|
||||
|
||||
/* define EFTYPE since most don't */
|
||||
#ifndef EFTYPE
|
||||
#define EFTYPE EINVAL /* POSIX 1003.1 format errno. */
|
||||
#endif
|
||||
|
||||
/* Key/data structure -- a Data-Base Thang. */
|
||||
typedef struct {
|
||||
void *data; /* data */
|
||||
size_t size; /* data length */
|
||||
} DBT;
|
||||
|
||||
/* Routine flags. */
|
||||
#define R_CURSOR 1 /* del, put, seq */
|
||||
#define __R_UNUSED 2 /* UNUSED */
|
||||
#define R_FIRST 3 /* seq */
|
||||
#define R_IAFTER 4 /* put (RECNO) */
|
||||
#define R_IBEFORE 5 /* put (RECNO) */
|
||||
#define R_LAST 6 /* seq (BTREE, RECNO) */
|
||||
#define R_NEXT 7 /* seq */
|
||||
#define R_NOOVERWRITE 8 /* put */
|
||||
#define R_PREV 9 /* seq (BTREE, RECNO) */
|
||||
#define R_SETCURSOR 10 /* put (RECNO) */
|
||||
#define R_RECNOSYNC 11 /* sync (RECNO) */
|
||||
|
||||
typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
|
||||
|
||||
typedef enum { LockOutDatabase, UnlockDatabase } DBLockFlagEnum;
|
||||
|
||||
/*
|
||||
* !!!
|
||||
* The following flags are included in the dbopen(3) call as part of the
|
||||
* open(2) flags. In order to avoid conflicts with the open flags, start
|
||||
* at the top of the 16 or 32-bit number space and work our way down. If
|
||||
* the open flags were significantly expanded in the future, it could be
|
||||
* a problem. Wish I'd left another flags word in the dbopen call.
|
||||
*
|
||||
* !!!
|
||||
* None of this stuff is implemented yet. The only reason that it's here
|
||||
* is so that the access methods can skip copying the key/data pair when
|
||||
* the DB_LOCK flag isn't set.
|
||||
*/
|
||||
#if UINT_MAX > 65535
|
||||
#define DB_LOCK 0x20000000 /* Do locking. */
|
||||
#define DB_SHMEM 0x40000000 /* Use shared memory. */
|
||||
#define DB_TXN 0x80000000 /* Do transactions. */
|
||||
#else
|
||||
#define DB_LOCK 0x2000 /* Do locking. */
|
||||
#define DB_SHMEM 0x4000 /* Use shared memory. */
|
||||
#define DB_TXN 0x8000 /* Do transactions. */
|
||||
#endif
|
||||
|
||||
/* Access method description structure. */
|
||||
typedef struct __db {
|
||||
DBTYPE type; /* Underlying db type. */
|
||||
int (*close) (struct __db *);
|
||||
int (*del) (const struct __db *, const DBT *, uint);
|
||||
int (*get) (const struct __db *, const DBT *, DBT *, uint);
|
||||
int (*put) (const struct __db *, DBT *, const DBT *, uint);
|
||||
int (*seq) (const struct __db *, DBT *, DBT *, uint);
|
||||
int (*sync) (const struct __db *, uint);
|
||||
void *internal; /* Access method private. */
|
||||
int (*fd) (const struct __db *);
|
||||
} DB;
|
||||
|
||||
#define BTREEMAGIC 0x053162
|
||||
#define BTREEVERSION 3
|
||||
|
||||
/* Structure used to pass parameters to the btree routines. */
|
||||
typedef struct {
|
||||
#define R_DUP 0x01 /* duplicate keys */
|
||||
uint32 flags;
|
||||
uint cachesize; /* bytes to cache */
|
||||
int maxkeypage; /* maximum keys per page */
|
||||
int minkeypage; /* minimum keys per page */
|
||||
uint psize; /* page size */
|
||||
int (*compare) /* comparison function */
|
||||
(const DBT *, const DBT *);
|
||||
size_t (*prefix) /* prefix function */
|
||||
(const DBT *, const DBT *);
|
||||
int lorder; /* byte order */
|
||||
} BTREEINFO;
|
||||
|
||||
#define HASHMAGIC 0x061561
|
||||
#define HASHVERSION 2
|
||||
|
||||
/* Structure used to pass parameters to the hashing routines. */
|
||||
typedef struct {
|
||||
uint bsize; /* bucket size */
|
||||
uint ffactor; /* fill factor */
|
||||
uint nelem; /* number of elements */
|
||||
uint cachesize; /* bytes to cache */
|
||||
uint32 /* hash function */
|
||||
(*hash) (const void *, size_t);
|
||||
int lorder; /* byte order */
|
||||
} HASHINFO;
|
||||
|
||||
/* Structure used to pass parameters to the record routines. */
|
||||
typedef struct {
|
||||
#define R_FIXEDLEN 0x01 /* fixed-length records */
|
||||
#define R_NOKEY 0x02 /* key not required */
|
||||
#define R_SNAPSHOT 0x04 /* snapshot the input */
|
||||
uint32 flags;
|
||||
uint cachesize; /* bytes to cache */
|
||||
uint psize; /* page size */
|
||||
int lorder; /* byte order */
|
||||
size_t reclen; /* record length (fixed-length records) */
|
||||
uint8 bval; /* delimiting byte (variable-length records */
|
||||
char *bfname; /* btree file name */
|
||||
} RECNOINFO;
|
||||
|
||||
/* #ifdef __DBINTERFACE_PRIVATE */
|
||||
/*
|
||||
* Little endian <==> big endian 32-bit swap macros.
|
||||
* M_32_SWAP swap a memory location
|
||||
* P_32_SWAP swap a referenced memory location
|
||||
* P_32_COPY swap from one location to another
|
||||
*/
|
||||
#define M_32_SWAP(a) { \
|
||||
uint32 _tmp = a; \
|
||||
((char *)&a)[0] = ((char *)&_tmp)[3]; \
|
||||
((char *)&a)[1] = ((char *)&_tmp)[2]; \
|
||||
((char *)&a)[2] = ((char *)&_tmp)[1]; \
|
||||
((char *)&a)[3] = ((char *)&_tmp)[0]; \
|
||||
}
|
||||
#define P_32_SWAP(a) { \
|
||||
uint32 _tmp = *(uint32 *)a; \
|
||||
((char *)a)[0] = ((char *)&_tmp)[3]; \
|
||||
((char *)a)[1] = ((char *)&_tmp)[2]; \
|
||||
((char *)a)[2] = ((char *)&_tmp)[1]; \
|
||||
((char *)a)[3] = ((char *)&_tmp)[0]; \
|
||||
}
|
||||
#define P_32_COPY(a, b) { \
|
||||
((char *)&(b))[0] = ((char *)&(a))[3]; \
|
||||
((char *)&(b))[1] = ((char *)&(a))[2]; \
|
||||
((char *)&(b))[2] = ((char *)&(a))[1]; \
|
||||
((char *)&(b))[3] = ((char *)&(a))[0]; \
|
||||
}
|
||||
|
||||
/*
|
||||
* Little endian <==> big endian 16-bit swap macros.
|
||||
* M_16_SWAP swap a memory location
|
||||
* P_16_SWAP swap a referenced memory location
|
||||
* P_16_COPY swap from one location to another
|
||||
*/
|
||||
#define M_16_SWAP(a) { \
|
||||
uint16 _tmp = a; \
|
||||
((char *)&a)[0] = ((char *)&_tmp)[1]; \
|
||||
((char *)&a)[1] = ((char *)&_tmp)[0]; \
|
||||
}
|
||||
#define P_16_SWAP(a) { \
|
||||
uint16 _tmp = *(uint16 *)a; \
|
||||
((char *)a)[0] = ((char *)&_tmp)[1]; \
|
||||
((char *)a)[1] = ((char *)&_tmp)[0]; \
|
||||
}
|
||||
#define P_16_COPY(a, b) { \
|
||||
((char *)&(b))[0] = ((char *)&(a))[1]; \
|
||||
((char *)&(b))[1] = ((char *)&(a))[0]; \
|
||||
}
|
||||
/* #endif */
|
||||
|
||||
__BEGIN_DECLS
|
||||
DB *dbopen (const char *, int, int, DBTYPE, const void *);
|
||||
|
||||
/* set or unset a global lock flag to disable the
|
||||
* opening of any DBM file
|
||||
*/
|
||||
void dbSetOrClearDBLock(DBLockFlagEnum type);
|
||||
|
||||
/* #ifdef __DBINTERFACE_PRIVATE */
|
||||
DB *__bt_open (const char *, int, int, const BTREEINFO *, int);
|
||||
DB *__hash_open (const char *, int, int, const HASHINFO *, int);
|
||||
DB *__rec_open (const char *, int, int, const RECNOINFO *, int);
|
||||
void __dbpanic (DB *dbp);
|
||||
/* #endif */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#if defined(linux) && !defined(MACLINUX)
|
||||
/*
|
||||
* Why you would want to override the system defines?
|
||||
*/
|
||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__hpux) || defined(__hppa)
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#define BIG_ENDIAN 4321
|
||||
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
|
||||
#endif
|
||||
|
||||
#if defined(AIXV3)
|
||||
/* BYTE_ORDER, LITTLE_ENDIAN, BIG_ENDIAN are all defined here */
|
||||
#include <sys/machine.h>
|
||||
#endif
|
||||
|
||||
#ifdef __alpha
|
||||
#include <endian.h>
|
||||
#endif
|
||||
|
||||
#endif /* !_DB_H_ */
|
||||
94
mozilla/include/mcom_ndbm.h
Normal file
94
mozilla/include/mcom_ndbm.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Margo Seltzer.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ndbm.h 8.1 (Berkeley) 6/2/93
|
||||
*/
|
||||
|
||||
#ifndef _NDBM_H_
|
||||
#define _NDBM_H_
|
||||
|
||||
#include "mcom_db.h"
|
||||
|
||||
/* Map dbm interface onto db(3). */
|
||||
#define DBM_RDONLY O_RDONLY
|
||||
|
||||
/* Flags to dbm_store(). */
|
||||
#define DBM_INSERT 0
|
||||
#define DBM_REPLACE 1
|
||||
|
||||
/*
|
||||
* The db(3) support for ndbm(3) always appends this suffix to the
|
||||
* file name to avoid overwriting the user's original database.
|
||||
*/
|
||||
#define DBM_SUFFIX ".db"
|
||||
|
||||
typedef struct {
|
||||
char *dptr;
|
||||
int dsize;
|
||||
} datum;
|
||||
|
||||
typedef DB DBM;
|
||||
#define dbm_pagfno(a) DBM_PAGFNO_NOT_AVAILABLE
|
||||
|
||||
__BEGIN_DECLS
|
||||
void dbm_close (DBM *);
|
||||
int dbm_delete (DBM *, datum);
|
||||
datum dbm_fetch (DBM *, datum);
|
||||
datum dbm_firstkey (DBM *);
|
||||
long dbm_forder (DBM *, datum);
|
||||
datum dbm_nextkey (DBM *);
|
||||
DBM *dbm_open (const char *, int, int);
|
||||
int dbm_store (DBM *, datum, datum, int);
|
||||
int dbm_dirfno (DBM *);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_NDBM_H_ */
|
||||
74
mozilla/include/merrors.h
Normal file
74
mozilla/include/merrors.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/* merrors.h --- error codes for netlib. */
|
||||
|
||||
|
||||
#ifndef _MERRORS_H_
|
||||
#define _MERRORS_H_
|
||||
|
||||
/*
|
||||
* Return codes
|
||||
*/
|
||||
|
||||
#define MK_INTERRUPTED -201
|
||||
|
||||
#define MK_UNABLE_TO_CONVERT -208
|
||||
|
||||
#define MK_UNABLE_TO_LOGIN -210
|
||||
|
||||
#define MK_NO_NEWS_SERVER -224
|
||||
#define MK_USE_FTP_INSTEAD -225
|
||||
#define MK_USE_COPY_FROM_CACHE -226
|
||||
#define MK_EMPTY_NEWS_LIST -227
|
||||
|
||||
#define MK_MAILTO_NOT_READY -228
|
||||
|
||||
#define MK_OBJECT_NOT_IN_CACHE -239
|
||||
|
||||
#define MK_UNABLE_TO_LISTEN_ON_SOCKET -244
|
||||
|
||||
#define MK_WAITING_FOR_LOOKUP -248 /* response for async dns */
|
||||
#define MK_DO_REDIRECT -249 /* tells mkgeturl to redirect */
|
||||
|
||||
#define MK_MIME_NEED_B64 -270 /* used internally */
|
||||
#define MK_MIME_NEED_QP -271 /* used internally */
|
||||
#define MK_MIME_NEED_TEXT_CONVERTER -272 /* used internally */
|
||||
#define MK_MIME_NEED_PS_CONVERTER -273 /* used internally */
|
||||
|
||||
#define MK_IMAGE_LOSSAGE -277
|
||||
|
||||
#define MK_TOO_MANY_OPEN_FILES -310
|
||||
|
||||
#define MK_FILE_WRITE_ERROR -350
|
||||
|
||||
#define MK_GET_REST_OF_PARTIAL_FILE_FROM_NETWORK -399
|
||||
|
||||
#define MK_MULTIPART_MESSAGE_COMPLETED -437
|
||||
|
||||
#define MK_OFFLINE -438
|
||||
|
||||
/* success codes */
|
||||
#define MK_DATA_LOADED 1
|
||||
#define MK_NO_DATA 2
|
||||
#define MK_NO_ACTION 3
|
||||
#define MK_CHANGING_CONTEXT 4
|
||||
|
||||
|
||||
#endif /* _MERRORS_H_ */
|
||||
115
mozilla/include/mime.h
Normal file
115
mozilla/include/mime.h
Normal file
@@ -0,0 +1,115 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef MIME_H
|
||||
#define MIME_H
|
||||
|
||||
#include "ntypes.h"
|
||||
#include "mimeenc.h"
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
extern PUBLIC const char *FE_UsersOrganization(void);
|
||||
|
||||
|
||||
/* Returns the appropriate contents of a From: field of a mail message
|
||||
originating from the current user. This calls FE_UsersFullName()
|
||||
and FE_UsersMailAddress() and correctly munges the values, using
|
||||
MSG_MakeFullAddress()
|
||||
|
||||
A new string is returned, which you must free when you're done with it.
|
||||
*/
|
||||
extern PUBLIC char *MIME_MakeFromField (void);
|
||||
|
||||
extern PUBLIC void MISC_ValidateSignature (MWContext *context,
|
||||
const char *sig);
|
||||
|
||||
/* This does a very rough sanity-check on the return email address specified
|
||||
in preferences, and pops up a dialog and returns negative if there is
|
||||
something obviously wrong. MSG_ComposeMessage() calls this, and won't
|
||||
let messages be composed until the problem is corrected. The FEs should
|
||||
call this after preferences have been edited as well.
|
||||
|
||||
The address should be just the email address, not including the real name.
|
||||
*/
|
||||
extern PUBLIC int MISC_ValidateReturnAddress (MWContext *context,
|
||||
const char *addr);
|
||||
|
||||
|
||||
/* Convert a block of text to the MIME quoted-printable encoding.
|
||||
Returns a new string and its size, or NULL if it couldn't allocate.
|
||||
*/
|
||||
extern PUBLIC void MIME_EncodeQuotedPrintableString(const unsigned char *input,
|
||||
uint32 input_size,
|
||||
unsigned char **output,
|
||||
uint32 *output_size);
|
||||
|
||||
/* Convert a block of text to the MIME base64 encoding.
|
||||
Returns a new string and its size, or NULL if it couldn't allocate.
|
||||
*/
|
||||
extern PUBLIC void MIME_EncodeBase64String(const unsigned char *input,
|
||||
uint32 input_size,
|
||||
unsigned char **output,
|
||||
uint32 *output_size);
|
||||
|
||||
/* build a mailto: url address given a to field
|
||||
*
|
||||
* returns a malloc'd string
|
||||
*/
|
||||
extern char *
|
||||
MIME_BuildMailtoURLAddress(const char * to);
|
||||
|
||||
/* build a news: url address to post to, given a partial news-post
|
||||
* URL and the newsgroups line
|
||||
*
|
||||
* returns a malloc'd string
|
||||
*/
|
||||
extern char *
|
||||
MIME_BuildNewspostURLAddress(const char *partial_newspost_url,
|
||||
const char *newsgroups);
|
||||
|
||||
/* If the argument is true, we use quoted-printable encoding on mail and
|
||||
news messages which have 8bit characters in them. Otherwise, we assume
|
||||
that the mail and news transport will not strip the eighth bit (a bad
|
||||
assumption.) */
|
||||
extern void MIME_ConformToStandard (XP_Bool conform_p);
|
||||
|
||||
|
||||
/* Generate headers for a form post to a mailto: URL.
|
||||
This lets the URL specify additional headers, but is careful to
|
||||
ignore headers which would be dangerous. It may modify the URL
|
||||
(because of CC) so a new URL to actually post to is returned.
|
||||
*/
|
||||
extern int MIME_GenerateMailtoFormPostHeaders (const char *old_post_url,
|
||||
const char *referer,
|
||||
char **new_post_url_return,
|
||||
char **headers_return);
|
||||
|
||||
|
||||
extern NET_StreamClass *
|
||||
NET_MimeMakePartialEncodingConverterStream (int format_out,
|
||||
void *data_obj,
|
||||
URL_Struct *URL_s,
|
||||
MWContext *window_id,
|
||||
NET_StreamClass *next_stream);
|
||||
|
||||
extern int MIME_HasAttachments(MWContext *context);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* mime.h */
|
||||
85
mozilla/include/mimeenc.h
Normal file
85
mozilla/include/mimeenc.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/* mimeenc.c --- MIME encoders and decoders, version 2 (see mimei.h)
|
||||
Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIMEENC_H_
|
||||
#define _MIMEENC_H_
|
||||
|
||||
#include "xp.h"
|
||||
|
||||
/* This file defines interfaces to generic implementations of Base64,
|
||||
Quoted-Printable, and UU decoders; and of Base64 and Quoted-Printable
|
||||
encoders.
|
||||
*/
|
||||
|
||||
|
||||
/* Opaque objects used by the encoder/decoder to store state. */
|
||||
typedef struct MimeDecoderData MimeDecoderData;
|
||||
typedef struct MimeEncoderData MimeEncoderData;
|
||||
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/* functions for creating that opaque data.
|
||||
*/
|
||||
MimeDecoderData *MimeB64DecoderInit(int (*output_fn) (const char *buf,
|
||||
int32 size,
|
||||
void *closure),
|
||||
void *closure);
|
||||
MimeDecoderData *MimeQPDecoderInit (int (*output_fn) (const char *buf,
|
||||
int32 size,
|
||||
void *closure),
|
||||
void *closure);
|
||||
MimeDecoderData *MimeUUDecoderInit (int (*output_fn) (const char *buf,
|
||||
int32 size,
|
||||
void *closure),
|
||||
void *closure);
|
||||
|
||||
MimeEncoderData *MimeB64EncoderInit(int (*output_fn) (const char *buf,
|
||||
int32 size,
|
||||
void *closure),
|
||||
void *closure);
|
||||
MimeEncoderData *MimeQPEncoderInit (int (*output_fn) (const char *buf,
|
||||
int32 size,
|
||||
void *closure),
|
||||
void *closure);
|
||||
MimeEncoderData *MimeUUEncoderInit (char *filename,
|
||||
int (*output_fn) (const char *buf,
|
||||
int32 size,
|
||||
void *closure),
|
||||
void *closure);
|
||||
|
||||
/* Push data through the encoder/decoder, causing the above-provided write_fn
|
||||
to be called with encoded/decoded data. */
|
||||
int MimeDecoderWrite (MimeDecoderData *data, const char *buffer, int32 size);
|
||||
int MimeEncoderWrite (MimeEncoderData *data, const char *buffer, int32 size);
|
||||
|
||||
/* When you're done encoding/decoding, call this to free the data. If
|
||||
abort_p is FALSE, then calling this may cause the write_fn to be called
|
||||
one last time (as the last buffered data is flushed out.)
|
||||
*/
|
||||
int MimeDecoderDestroy(MimeDecoderData *data, XP_Bool abort_p);
|
||||
int MimeEncoderDestroy(MimeEncoderData *data, XP_Bool abort_p);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif /* _MIMEENC_H_ */
|
||||
123
mozilla/include/minicom.h
Normal file
123
mozilla/include/minicom.h
Normal file
@@ -0,0 +1,123 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Mini Component Object Model
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef MINICOM_H
|
||||
#define MINICOM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#if defined(XP_PC) && !defined(XP_OS2)
|
||||
#if defined(_WIN32)
|
||||
#include "objbase.h"
|
||||
#else
|
||||
#include <windows.h>
|
||||
#include "compobj.h"
|
||||
#endif
|
||||
#else /* !XP_PC or XP_OS2*/
|
||||
|
||||
#if defined(XP_OS2)
|
||||
#define TID OS2TID /* global rename in OS2 H's! */
|
||||
#include <os2.h>
|
||||
#undef TID /* and restore */
|
||||
#endif
|
||||
|
||||
typedef struct _GUID {
|
||||
long Data1;
|
||||
short Data2;
|
||||
short Data3;
|
||||
char Data4[8];
|
||||
} GUID;
|
||||
|
||||
typedef GUID IID;
|
||||
typedef GUID CLSID;
|
||||
|
||||
typedef IID* REFIID;
|
||||
typedef GUID* REFGUID;
|
||||
typedef CLSID* REFCLSID;
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define EXTERN_C extern "C"
|
||||
#else
|
||||
#define EXTERN_C
|
||||
#endif /* cplusplus */
|
||||
|
||||
#ifndef INITGUID
|
||||
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
||||
EXTERN_C const GUID name
|
||||
#else
|
||||
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
||||
EXTERN_C const GUID name \
|
||||
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
|
||||
#endif /* INITGUID */
|
||||
|
||||
#endif /* !XP_PC or XP_OS2*/
|
||||
|
||||
#define JRI_DEFINE_GUID(name, l, w1, w2) \
|
||||
DEFINE_GUID(name, l, w1, w2, \
|
||||
0xbb, 0x58, 0x00, 0x80, 0x5f, 0x74, 0x03, 0x79)
|
||||
|
||||
typedef long
|
||||
(*MCOM_QueryInterface_t)(void* self, REFIID id, void* *result);
|
||||
|
||||
typedef long
|
||||
(*MCOM_AddRef_t)(void* self);
|
||||
|
||||
typedef long
|
||||
(*MCOM_Release_t)(void* self);
|
||||
|
||||
#if !defined(XP_PC) || defined(XP_OS2)
|
||||
|
||||
typedef struct IUnknown {
|
||||
MCOM_QueryInterface_t QueryInterface;
|
||||
MCOM_AddRef_t AddRef;
|
||||
MCOM_Release_t Release;
|
||||
} IUnknown;
|
||||
|
||||
#define IUnknown_QueryInterface(self, interfaceID, resultingInterface) \
|
||||
(((*((IUnknown**)self))->QueryInterface)(self, interfaceID, resultingInterface))
|
||||
|
||||
#define IUnknown_AddRef(self) \
|
||||
(((*((IUnknown**)self))->AddRef)(self))
|
||||
|
||||
#define IUnknown_Release(self) \
|
||||
(((*((IUnknown**)self))->Release)(self))
|
||||
|
||||
#endif /* !XP_PC or XP_OS2*/
|
||||
|
||||
typedef long
|
||||
(*MCOM_CreateInstance_t)(void* self, IUnknown* outer, REFIID interfaceID,
|
||||
void** newInstance);
|
||||
|
||||
typedef long
|
||||
(*MCOM_LockServer_t)(void* self, int doLock);
|
||||
|
||||
/******************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* MINICOM_H */
|
||||
/******************************************************************************/
|
||||
149
mozilla/include/mk_cx_fn.h
Normal file
149
mozilla/include/mk_cx_fn.h
Normal file
@@ -0,0 +1,149 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
** This file is Michael Toy's fault. If you hate it or have troubles figuring
|
||||
** it out, you should bother him about it.
|
||||
**
|
||||
** This file generates both the fields of the front end structure, and the
|
||||
** fe specific prototypes for your front end implementations, AND the
|
||||
** the code to fill in the structure in your context initilization code
|
||||
**
|
||||
** To use it:
|
||||
**
|
||||
** #define MAKE_FE_FUNCS_STRUCT
|
||||
** #include "mk_cx_fn.h"
|
||||
** This will generate the field definitions for the structure.
|
||||
**
|
||||
** #define MAKE_FE_FUNCS_PREFIX(func) prefix_##func
|
||||
** #define MAKE_FE_FUNCS_ASSIGN cx->
|
||||
** #include "mk_cx_fn.h"
|
||||
** Substitute your naming prefix for "prefix" (e.g XFE)
|
||||
** This will generate the assignment statements to fill in the structure,
|
||||
** the definition of MAKE_FE_FUNCS_ASSIGN will be the left hand side of the
|
||||
** assignment statement.
|
||||
**
|
||||
** #define MAKE_FE_FUNCS_PREFIX(func) prefix_##func
|
||||
** #define MAKE_FE_FUNCS_EXTERN
|
||||
** #include "mk_cx_fn.h"
|
||||
** This will generate the prototypes for all your front end functions.
|
||||
*/
|
||||
|
||||
#if defined(MAKE_FE_FUNCS_TYPES)
|
||||
#define FE_DEFINE(func, returns, args) typedef returns (*MAKE_FE_TYPES_PREFIX(func)) args;
|
||||
#elif defined(MAKE_FE_FUNCS_STRUCT)
|
||||
#define FE_DEFINE(func, returns, args) returns (*func) args;
|
||||
#elif defined(MAKE_FE_FUNCS_EXTERN)
|
||||
#define FE_DEFINE(func, returns, args) extern returns MAKE_FE_FUNCS_PREFIX(func) args;
|
||||
#elif defined(MAKE_FE_FUNCS_ASSIGN)
|
||||
#define FE_DEFINE(func, returns, args) MAKE_FE_FUNCS_ASSIGN func = MAKE_FE_FUNCS_PREFIX(func);
|
||||
#elif !defined(FE_DEFINE)
|
||||
You;Should;Read;The;Header;For;This;File;Before;Including;Error;Error;Error;
|
||||
#endif
|
||||
|
||||
FE_DEFINE(CreateNewDocWindow, MWContext*, (MWContext * calling_context,URL_Struct * URL))
|
||||
FE_DEFINE(LayoutNewDocument, void, (MWContext *context, URL_Struct *url_struct, int32 *iWidth, int32 *iHeight, int32 *mWidth, int32 *mHeight))
|
||||
FE_DEFINE(SetDocTitle,void, (MWContext * context, char * title))
|
||||
FE_DEFINE(FinishedLayout,void, (MWContext *context))
|
||||
FE_DEFINE(TranslateISOText,char *, (MWContext * context, int charset, char *ISO_Text))
|
||||
FE_DEFINE(GetTextInfo,int, (MWContext * context, LO_TextStruct *text, LO_TextInfo *text_info))
|
||||
#ifdef XP_MAC
|
||||
FE_DEFINE(MeasureText,int, (MWContext * context, LO_TextStruct *text, short *charLocs))
|
||||
#endif
|
||||
FE_DEFINE(GetEmbedSize,void, (MWContext * context, LO_EmbedStruct *embed_struct, NET_ReloadMethod force_reload))
|
||||
FE_DEFINE(GetJavaAppSize,void, (MWContext * context, LO_JavaAppStruct *java_struct, NET_ReloadMethod force_reload))
|
||||
FE_DEFINE(GetFormElementInfo,void, (MWContext * context, LO_FormElementStruct * form_element))
|
||||
FE_DEFINE(GetFormElementValue,void, (MWContext * context, LO_FormElementStruct * form_element, XP_Bool hide))
|
||||
FE_DEFINE(ResetFormElement,void, (MWContext * context, LO_FormElementStruct * form_element))
|
||||
FE_DEFINE(SetFormElementToggle,void, (MWContext * context, LO_FormElementStruct * form_element, XP_Bool toggle))
|
||||
FE_DEFINE(FreeEmbedElement,void, (MWContext *context, LO_EmbedStruct *))
|
||||
FE_DEFINE(CreateEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
|
||||
FE_DEFINE(SaveEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
|
||||
FE_DEFINE(RestoreEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
|
||||
FE_DEFINE(DestroyEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
|
||||
FE_DEFINE(FreeJavaAppElement,void, (MWContext *context, struct LJAppletData *appletData))
|
||||
FE_DEFINE(HideJavaAppElement,void, (MWContext *context, struct LJAppletData *))
|
||||
FE_DEFINE(FreeEdgeElement,void, (MWContext *context, LO_EdgeStruct *))
|
||||
FE_DEFINE(FormTextIsSubmit,void, (MWContext * context, LO_FormElementStruct * form_element))
|
||||
FE_DEFINE(DisplaySubtext,void, (MWContext * context, int iLocation, LO_TextStruct *text, int32 start_pos, int32 end_pos, XP_Bool need_bg))
|
||||
FE_DEFINE(DisplayText,void, (MWContext * context, int iLocation, LO_TextStruct *text, XP_Bool need_bg))
|
||||
FE_DEFINE(DisplayEmbed,void, (MWContext * context, int iLocation ,LO_EmbedStruct *embed_struct))
|
||||
FE_DEFINE(DisplayJavaApp,void, (MWContext * context, int iLocation ,LO_JavaAppStruct *java_struct))
|
||||
FE_DEFINE(DisplayEdge,void, (MWContext * context, int iLocation ,LO_EdgeStruct *edge_struct))
|
||||
FE_DEFINE(DisplayTable,void, (MWContext * context, int iLocation ,LO_TableStruct *table_struct))
|
||||
FE_DEFINE(DisplayCell,void, (MWContext * context, int iLocation ,LO_CellStruct *cell_struct))
|
||||
#ifdef XP_MAC
|
||||
FE_DEFINE(InvalidateEntireTableOrCell,void, (MWContext * context, LO_Element *element))
|
||||
FE_DEFINE(DisplayAddRowOrColBorder,void, (MWContext * context, XP_Rect* r ,XP_Bool bErase))
|
||||
#endif
|
||||
FE_DEFINE(DisplaySubDoc,void, (MWContext * context, int iLocation ,LO_SubDocStruct *subdoc_struct))
|
||||
FE_DEFINE(DisplayLineFeed,void, (MWContext * context, int iLocation , LO_LinefeedStruct *line_feed, XP_Bool need_bg))
|
||||
FE_DEFINE(DisplayHR,void, (MWContext * context, int iLocation , LO_HorizRuleStruct *HR_struct))
|
||||
FE_DEFINE(DisplayBullet,void, (MWContext *context, int iLocation, LO_BullettStruct *bullet))
|
||||
FE_DEFINE(DisplayFormElement,void, (MWContext * context, int iLocation, LO_FormElementStruct * form_element))
|
||||
FE_DEFINE(DisplayBorder,void, (MWContext *context, int iLocation, int x, int y, int width, int height, int bw, LO_Color *color, LO_LineStyle style))
|
||||
#ifdef XP_MAC
|
||||
FE_DEFINE(UpdateEnableStates,void, (MWContext *context))
|
||||
#endif
|
||||
FE_DEFINE(DisplayFeedback,void, (MWContext *context, int iLocation, LO_Element *element))
|
||||
FE_DEFINE(ClearView,void, (MWContext * context, int which))
|
||||
FE_DEFINE(SetDocDimension,void, (MWContext *context, int iLocation, int32 iWidth, int32 iLength))
|
||||
FE_DEFINE(SetDocPosition,void, (MWContext *context, int iLocation, int32 iX, int32 iY))
|
||||
FE_DEFINE(GetDocPosition,void, (MWContext *context, int iLocation, int32 *iX, int32 *iY))
|
||||
FE_DEFINE(BeginPreSection,void, (MWContext *context))
|
||||
FE_DEFINE(EndPreSection,void, (MWContext *context))
|
||||
FE_DEFINE(SetProgressBarPercent,void, (MWContext *context, int32 percent))
|
||||
FE_DEFINE(SetBackgroundColor,void, (MWContext *context, uint8 red, uint8 green, uint8 blue))
|
||||
FE_DEFINE(Progress, void, (MWContext * cx, const char *msg))
|
||||
FE_DEFINE(Alert, void, (MWContext * cx, const char *msg))
|
||||
FE_DEFINE(SetCallNetlibAllTheTime, void, (MWContext * win_id))
|
||||
FE_DEFINE(ClearCallNetlibAllTheTime, void, (MWContext * win_id))
|
||||
FE_DEFINE(GraphProgressInit, void, (MWContext *context, URL_Struct *URL_s, int32 content_length))
|
||||
FE_DEFINE(GraphProgressDestroy, void, (MWContext *context, URL_Struct *URL_s, int32 content_length, int32 total_bytes_read))
|
||||
FE_DEFINE(GraphProgress, void, (MWContext *context, URL_Struct *URL_s, int32 bytes_received, int32 bytes_since_last_time, int32 content_length))
|
||||
FE_DEFINE(UseFancyFTP, XP_Bool, (MWContext * window_id))
|
||||
FE_DEFINE(UseFancyNewsgroupListing, XP_Bool, (MWContext *window_id))
|
||||
FE_DEFINE(FileSortMethod, int, (MWContext * window_id))
|
||||
FE_DEFINE(ShowAllNewsArticles, XP_Bool, (MWContext *window_id))
|
||||
FE_DEFINE(Confirm, XP_Bool,(MWContext * context, const char * Msg))
|
||||
FE_DEFINE(Prompt,char*,(MWContext * context, const char * Msg, const char * dflt))
|
||||
FE_DEFINE(PromptWithCaption,char*,(MWContext * context, const char *caption, const char * Msg, const char * dflt))
|
||||
FE_DEFINE(PromptUsernameAndPassword, XP_Bool, (MWContext *,const char *,char **, char **))
|
||||
FE_DEFINE(PromptPassword,char*,(MWContext * context, const char * Msg))
|
||||
FE_DEFINE(EnableClicking,void,(MWContext*))
|
||||
FE_DEFINE(AllConnectionsComplete,void,(MWContext * context))
|
||||
#ifdef XP_OS2 /* performance */
|
||||
FE_DEFINE(GetMaxWidth,int, (MWContext * context, LO_TextStruct *text))
|
||||
#endif
|
||||
#ifdef LAYERS
|
||||
FE_DEFINE(EraseBackground, void, (MWContext *, int, int32, int32, uint32, uint32, LO_Color *))
|
||||
FE_DEFINE(SetDrawable, void, (MWContext *, CL_Drawable *))
|
||||
FE_DEFINE(GetTextFrame, void, (MWContext *, LO_TextStruct *, int32, int32, XP_Rect *))
|
||||
#ifdef XP_MAC
|
||||
FE_DEFINE(GetDefaultBackgroundColor, void, (MWContext* context, LO_Color* color))
|
||||
#endif
|
||||
#endif
|
||||
/* these functions are to allow dealyed native window applet creation and transparent applet */
|
||||
FE_DEFINE(HandleClippingView, void, (MWContext *pContext, struct LJAppletData *appletD, int x, int y, int width, int height))
|
||||
FE_DEFINE(DrawJavaApp, void, (MWContext *pContext, int iLocation, LO_JavaAppStruct *pJava))
|
||||
|
||||
#undef FE_DEFINE
|
||||
#undef MAKE_FE_FUNCS_PREFIX
|
||||
#undef MAKE_FE_FUNCS_ASSIGN
|
||||
#undef MAKE_FE_FUNCS_EXTERN
|
||||
#undef MAKE_FE_FUNCS_STRUCT
|
||||
219
mozilla/include/msg_filt.h
Normal file
219
mozilla/include/msg_filt.h
Normal file
@@ -0,0 +1,219 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
/* foobar Public API for mail (and news?) filters */
|
||||
#ifndef MSG_RULE_H
|
||||
#define MSG_RULE_H
|
||||
|
||||
/*
|
||||
Terminology - Filter - either a Rule (defined with GUI) or a (Java) Script
|
||||
Rule -
|
||||
*/
|
||||
#include "msg_srch.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FilterError_Success = 0, /* no error */
|
||||
FilterError_First = SearchError_Last + 1, /* no functions return this; just for bookkeeping */
|
||||
FilterError_NotImplemented, /* coming soon */
|
||||
FilterError_OutOfMemory, /* out of memory */
|
||||
FilterError_FileError, /* error reading or writing the rules file */
|
||||
FilterError_InvalidVersion, /* invalid filter file version */
|
||||
FilterError_InvalidIndex, /* Invalid filter index */
|
||||
FilterError_InvalidMotion, /* invalid filter move motion */
|
||||
FilterError_InvalidFilterType, /* method doesn't accept this filter type */
|
||||
FilterError_NullPointer, /* a required pointer parameter was null */
|
||||
FilterError_NotRule, /* tried to get rule for non-rule filter */
|
||||
FilterError_NotScript, /* tried to get a script name for a non-script filter */
|
||||
FilterError_InvalidAction, /* invalid action */
|
||||
FilterError_SearchError, /* error in search code */
|
||||
FilterError_Last /* no functions return this; just for bookkeeping */
|
||||
} MSG_FilterError;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
acNone, /* uninitialized state */
|
||||
acMoveToFolder,
|
||||
acChangePriority,
|
||||
acDelete,
|
||||
acMarkRead,
|
||||
acKillThread,
|
||||
acWatchThread
|
||||
} MSG_RuleActionType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
filterInboxRule = 0x1,
|
||||
filterInboxJavaScript = 0x2,
|
||||
filterInbox = 0x3,
|
||||
filterNewsRule = 0x4,
|
||||
filterNewsJavaScript = 0x8,
|
||||
filterNews=0xb,
|
||||
filterAll=0xf
|
||||
} MSG_FilterType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
filterUp,
|
||||
filterDown
|
||||
} MSG_FilterMotion;
|
||||
|
||||
typedef int32 MSG_FilterIndex;
|
||||
|
||||
/* opaque struct defs - defined in libmsg/pmsgfilt.h */
|
||||
#ifdef XP_CPLUSPLUS
|
||||
struct MSG_Filter;
|
||||
struct MSG_Rule;
|
||||
struct MSG_RuleAction;
|
||||
struct MSG_FilterList;
|
||||
#else
|
||||
typedef struct MSG_FilterList MSG_FilterList;
|
||||
typedef struct MSG_Filter MSG_Filter;
|
||||
typedef struct MSG_Rule MSG_Rule;
|
||||
typedef struct MSG_RuleAction MSG_RuleAction;
|
||||
#endif
|
||||
|
||||
XP_BEGIN_PROTOS
|
||||
|
||||
/* Front ends call MSG_OpenFilterList to get a handle to a FilterList, of existing MSG_Filter *.
|
||||
These are manipulated by the front ends as a result of user interaction
|
||||
with dialog boxes. To apply the new list, fe's call MSG_CloseFilterList.
|
||||
|
||||
For example, if the user brings up the rule management UI, deletes a rule,
|
||||
and presses OK, the front end calls MSG_RemoveFilterListAt, and
|
||||
then MSG_CloseFilterList.
|
||||
|
||||
*/
|
||||
MSG_FilterError MSG_OpenFilterList(MSG_Master *master, MSG_FilterType type, MSG_FilterList **filterList);
|
||||
MSG_FilterError MSG_OpenFolderFilterList(MSG_Pane *pane, MSG_FolderInfo *folder, MSG_FilterType type, MSG_FilterList **filterList);
|
||||
MSG_FilterError MSG_CloseFilterList(MSG_FilterList *filterList);
|
||||
MSG_FilterError MSG_SaveFilterList(MSG_FilterList *filterList); /* save without deleting */
|
||||
MSG_FilterError MSG_CancelFilterList(MSG_FilterList *filterList);
|
||||
|
||||
MSG_FolderInfo *MSG_GetFolderInfoForFilterList(MSG_FilterList *filterList);
|
||||
MSG_FilterError MSG_GetFilterCount(MSG_FilterList *filterList, int32 *pCount);
|
||||
MSG_FilterError MSG_GetFilterAt(MSG_FilterList *filterList,
|
||||
MSG_FilterIndex filterIndex, MSG_Filter **filter);
|
||||
/* these methods don't delete filters - they just change the list. FE still must
|
||||
call MSG_DestroyFilter to delete a filter.
|
||||
*/
|
||||
MSG_FilterError MSG_SetFilterAt(MSG_FilterList *filterList,
|
||||
MSG_FilterIndex filterIndex, MSG_Filter *filter);
|
||||
MSG_FilterError MSG_RemoveFilterAt(MSG_FilterList *filterList,
|
||||
MSG_FilterIndex filterIndex);
|
||||
MSG_FilterError MSG_MoveFilterAt(MSG_FilterList *filterList,
|
||||
MSG_FilterIndex filterIndex, MSG_FilterMotion motion);
|
||||
MSG_FilterError MSG_InsertFilterAt(MSG_FilterList *filterList,
|
||||
MSG_FilterIndex filterIndex, MSG_Filter *filter);
|
||||
|
||||
MSG_FilterError MSG_EnableLogging(MSG_FilterList *filterList, XP_Bool enable);
|
||||
XP_Bool MSG_IsLoggingEnabled(MSG_FilterList *filterList);
|
||||
|
||||
/* In general, any data gotten with MSG_*Get is good until the owning object
|
||||
is deleted, or the data is replaced with a MSG_*Set call. For example, the name
|
||||
returned in MSG_GetFilterName is valid until either the filter is destroyed,
|
||||
or MSG_SetFilterName is called on the same filter.
|
||||
*/
|
||||
MSG_FilterError MSG_CreateFilter (MSG_FilterType type, char *name, MSG_Filter **result);
|
||||
MSG_FilterError MSG_DestroyFilter(MSG_Filter *filter);
|
||||
MSG_FilterError MSG_GetFilterType(MSG_Filter *, MSG_FilterType *filterType);
|
||||
MSG_FilterError MSG_EnableFilter(MSG_Filter *, XP_Bool enable);
|
||||
MSG_FilterError MSG_IsFilterEnabled(MSG_Filter *, XP_Bool *enabled);
|
||||
MSG_FilterError MSG_GetFilterRule(MSG_Filter *, MSG_Rule ** result);
|
||||
MSG_FilterError MSG_GetFilterName(MSG_Filter *, char **name);
|
||||
MSG_FilterError MSG_SetFilterName(MSG_Filter *, const char *name);
|
||||
MSG_FilterError MSG_GetFilterDesc(MSG_Filter *, char **description);
|
||||
MSG_FilterError MSG_SetFilterDesc(MSG_Filter*, const char *description);
|
||||
MSG_FilterError MSG_GetFilterScript(MSG_Filter *, char **name);
|
||||
MSG_FilterError MSG_SetFilterScript(MSG_Filter *, const char *name);
|
||||
|
||||
MSG_FilterError MSG_RuleAddTerm(MSG_Rule *,
|
||||
MSG_SearchAttribute attrib, /* attribute for this term */
|
||||
MSG_SearchOperator op, /* operator e.g. opContains */
|
||||
MSG_SearchValue *value, /* value e.g. "Dogbert" */
|
||||
XP_Bool BooleanAND, /* TRUE if AND is the boolean operator. FALSE if OR is the boolean operators */
|
||||
char * arbitraryHeader); /* arbitrary header specified by user. ignored unless attrib = attribOtherHeader */
|
||||
|
||||
MSG_FilterError MSG_RuleGetNumTerms(MSG_Rule *, int32 *numTerms);
|
||||
|
||||
MSG_FilterError MSG_RuleGetTerm(MSG_Rule *, int32 termIndex,
|
||||
MSG_SearchAttribute *attrib, /* attribute for this term */
|
||||
MSG_SearchOperator *op, /* operator e.g. opContains */
|
||||
MSG_SearchValue *value, /* value e.g. "Dogbert" */
|
||||
XP_Bool *BooleanAnd, /* TRUE if AND is the boolean operator. FALSE if OR is the boolean operator */
|
||||
char ** arbitraryHeader); /* arbitrary header specified by user. ignore unless attrib = attribOtherHeader */
|
||||
|
||||
MSG_FilterError MSG_RuleSetScope(MSG_Rule *, MSG_ScopeTerm *scope);
|
||||
MSG_FilterError MSG_RuleGetScope(MSG_Rule *, MSG_ScopeTerm **scope);
|
||||
|
||||
/* if type is acChangePriority, value is a pointer to priority.
|
||||
If type is acMoveToFolder, value is pointer to folder name.
|
||||
Otherwise, value is ignored.
|
||||
*/
|
||||
MSG_FilterError MSG_RuleSetAction(MSG_Rule *, MSG_RuleActionType type, void *value);
|
||||
MSG_FilterError MSG_RuleGetAction(MSG_Rule *, MSG_RuleActionType *type, void **value);
|
||||
|
||||
/* help FEs manage menu choices in Filter dialog box */
|
||||
|
||||
/* Use this to help build menus in the filter dialogs. See APIs below */
|
||||
typedef struct MSG_RuleMenuItem
|
||||
{
|
||||
int16 attrib;
|
||||
char name[32];
|
||||
} MSG_RuleMenuItem;
|
||||
|
||||
|
||||
MSG_FilterError MSG_GetRuleActionMenuItems (
|
||||
MSG_FilterType type, /* type of filter */
|
||||
MSG_RuleMenuItem *items, /* array of caller-allocated structs */
|
||||
uint16 *maxItems); /* in- max array size; out- num returned */
|
||||
|
||||
MSG_FilterError MSG_GetFilterWidgetForAction( MSG_RuleActionType action,
|
||||
MSG_SearchValueWidget *widget );
|
||||
|
||||
MSG_SearchError MSG_GetValuesForAction( MSG_RuleActionType action,
|
||||
MSG_SearchMenuItem *items,
|
||||
uint16 *maxItems);
|
||||
|
||||
void MSG_ViewFilterLog(MSG_Pane *pane);
|
||||
|
||||
/*
|
||||
** Adding/editting javascript filters.
|
||||
**
|
||||
** The FE calls one of the below functions, along with a callback and some closure
|
||||
** data. This callback is invoked when the user clicks OK in the JS filter dialog.
|
||||
** If CANCEL is pressed, the callback is not invoked.
|
||||
**
|
||||
** If the user called MSG_EditJSFilter, the filter_index parameter of the callback
|
||||
** is the same one passed in. If the user called MSG_NewJSFilter, the filter_index
|
||||
** parameter is -1.
|
||||
**
|
||||
** The filter_changed parameter is TRUE if the user modified any of the fields of
|
||||
** the javascript filter, and FALSE otherwise.
|
||||
*/
|
||||
typedef void (*JSFilterCallback)(void* arg, MSG_FilterIndex filter_index, XP_Bool filter_changed);
|
||||
|
||||
void MSG_EditJSFilter(MWContext *context, MSG_FilterList *filter_list,
|
||||
MSG_FilterIndex filter_index,
|
||||
JSFilterCallback cb, void *arg);
|
||||
void MSG_NewJSFilter(MWContext *context, MSG_FilterList *filter_list,
|
||||
MSG_FilterType filter_type, JSFilterCallback cb, void *arg);
|
||||
|
||||
XP_END_PROTOS
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user