Compare commits

..

1 Commits

Author SHA1 Message Date
(no author)
258dc9fead This commit was manufactured by cvs2svn to create branch 'src'.
git-svn-id: svn://10.0.0.236/branches/src@33658 18797224-902f-48f8-a5cc-f745e15eee43
1999-06-03 23:10:01 +00:00
946 changed files with 18627 additions and 216823 deletions

View File

@@ -1,231 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = .
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
default alldep all::
$(RM) -rf $(DIST)/sdk
$(RM) -rf $(DIST)/include
$(RM) -rf $(DIST)/private
$(RM) -rf $(DIST)/public
$(RM) -rf _tests
TIERS += base
#
# tier "base" - basic setup
#
tier_base_dirs = \
config \
build \
probes \
$(NULL)
ifdef MOZ_MEMORY
tier_base_dirs += memory/jemalloc
endif
include $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk
TIERS += testharness
# test harnesses
ifdef ENABLE_TESTS
tier_testharness_dirs += tools/test-harness
endif
GARBAGE_DIRS += dist _javagen _profile _tests staticlib
DIST_GARBAGE = config.cache config.log config.status config-defs.h \
dependencies.beos config/autoconf.mk config/myrules.mk config/myconfig.mk \
unallmakefiles mozilla-config.h \
netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h \
$(topsrcdir)/.mozconfig.mk $(topsrcdir)/.mozconfig.out
# Build pseudo-external modules first when export is explicitly called
export::
$(RM) -rf $(DIST)/sdk
$(MAKE) -C config export
$(MAKE) tier_nspr
include $(topsrcdir)/config/rules.mk
# After we build tier toolkit, go back and build the tools from previous dirs
tier_toolkit::
$(MAKE) tools_tier_js
$(MAKE) tools_tier_xpcom
$(MAKE) tools_tier_necko
$(MAKE) tools_tier_gecko
$(MAKE) tools_tier_toolkit
ifeq (netwerk,$(MOZ_BUILD_APP))
tier_necko::
$(EXIT_ON_ERROR) \
$(foreach tier,$(TIERS),$(MAKE) tools_tier_$(tier); )
endif
distclean::
cat unallmakefiles | $(XARGS) rm -f
rm -f unallmakefiles $(DIST_GARBAGE)
ifeq ($(OS_ARCH),WINNT)
rebase:
ifdef MOZILLA_OFFICIAL
echo rebasing $(DIST)
/bin/find $(DIST) -name "*.dll" -a -not -name "msvc*" > rebase.lst
rebase -b 60000000 -R . -G rebase.lst
rm rebase.lst
endif
splitsymbols:
ifdef MOZILLA_OFFICIAL
ifdef MOZ_DEBUG_SYMBOLS
echo finding pdb files
mkdir -p $(DIST)/$(BUILDID)
-cp `/bin/find . -path "./dist" -prune -o -name "*.dll" | sed "s/\.dll$$/\.pdb/" | xargs` $(DIST)/$(BUILDID)
-cp `/bin/find . -path "./dist" -prune -o -name "*.exe" | sed "s/\.exe$$/\.pdb/" | xargs` $(DIST)/$(BUILDID)
-cp `/bin/find . -path "./dist" -prune -o -name "*.EXE" | sed "s/\.EXE$$/\.pdb/" | xargs` $(DIST)/$(BUILDID)
endif # MOZ_DEBUG_SYMBOLS
ifdef MOZ_PROFILE
echo splitting symbols out of binaries
/bin/find $(DIST) -name "*.dll" -exec splitsym {} \;
/bin/find $(DIST) -name "*.exe" -exec splitsym {} \;
/bin/find $(DIST) -name "*.EXE" -exec splitsym {} \;
mkdir -p $(DIST)/$(BUILDID)
/bin/find $(DIST) -name "*.dbg" -exec mv {} $(DIST)/$(BUILDID) \;
endif # MOZ_PROFILE
endif # MOZILLA_OFFICIAL
endif # WINNT
ifeq ($(OS_ARCH),WINNT)
# we want to copy PDB files on Windows
MAKE_SYM_STORE_ARGS := -c
ifdef PDBSTR_PATH
MAKE_SYM_STORE_ARGS += -i
endif
ifeq (,$(CYGWIN_WRAPPER))
# this doesn't work with Cygwin Python
MAKE_SYM_STORE_ARGS += --vcs-info
endif
DUMP_SYMS_BIN ?= $(topsrcdir)/toolkit/crashreporter/tools/win32/dump_syms.exe
# PDB files don't get moved to dist, so we need to scan the whole objdir
MAKE_SYM_STORE_PATH := .
endif
ifeq ($(OS_ARCH),Darwin)
# need to pass arch flags for universal builds
ifdef UNIVERSAL_BINARY
MAKE_SYM_STORE_ARGS := -a "ppc i386" --vcs-info
MAKE_SYM_STORE_PATH := $(DIST)/universal
else
MAKE_SYM_STORE_ARGS := -a $(OS_TEST) --vcs-info
MAKE_SYM_STORE_PATH := $(DIST)/bin
endif
DUMP_SYMS_BIN ?= $(DIST)/host/bin/dump_syms
endif
ifeq (,$(filter-out Linux SunOS,$(OS_ARCH)))
MAKE_SYM_STORE_ARGS := --vcs-info
DUMP_SYMS_BIN ?= $(DIST)/host/bin/dump_syms
MAKE_SYM_STORE_PATH := $(DIST)/bin
endif
ifdef MOZ_SYMBOLS_EXTRA_BUILDID
EXTRA_BUILDID := -$(MOZ_SYMBOLS_EXTRA_BUILDID)
endif
SYMBOL_ARCHIVE_BASENAME = \
$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)-$(OS_ARCH)-$(BUILDID)$(EXTRA_BUILDID)
buildsymbols:
ifdef MOZ_CRASHREPORTER
echo building symbol store
mkdir -p $(DIST)/crashreporter-symbols/$(BUILDID)
$(PYTHON) $(topsrcdir)/toolkit/crashreporter/tools/symbolstore.py \
$(MAKE_SYM_STORE_ARGS) -s $(topsrcdir) $(DUMP_SYMS_BIN) \
$(DIST)/crashreporter-symbols/$(BUILDID) \
$(MAKE_SYM_STORE_PATH) > \
$(DIST)/crashreporter-symbols/$(BUILDID)/$(SYMBOL_ARCHIVE_BASENAME)-symbols.txt
echo packing symbols
mkdir -p $(topsrcdir)/../$(BUILDID)
cd $(DIST)/crashreporter-symbols/$(BUILDID) && \
zip -r9D ../crashreporter-symbols-$(SYMBOL_ARCHIVE_BASENAME).zip .
mv $(DIST)/crashreporter-symbols/crashreporter-symbols-$(SYMBOL_ARCHIVE_BASENAME).zip \
$(topsrcdir)/../$(BUILDID)
endif # MOZ_CRASHREPORTER
uploadsymbols:
ifdef MOZ_CRASHREPORTER
$(topsrcdir)/toolkit/crashreporter/tools/upload_symbols.sh $(topsrcdir)/../$(BUILDID)/crashreporter-symbols-$(SYMBOL_ARCHIVE_BASENAME).zip
endif
ifeq ($(OS_ARCH),WINNT)
signnss:
ifdef MOZILLA_OFFICIAL
echo signing NSS libs
cd $(DIST)/bin; ./shlibsign.exe -v -i softokn3.dll
cd $(DIST)/bin; ./shlibsign.exe -v -i freebl3.dll
endif # MOZILLA_OFFICIAL
deliver: splitsymbols rebase signnss
endif # WINNT
ifneq (,$(wildcard $(DIST)/bin/application.ini))
BUILDID = $(shell $(PYTHON) $(srcdir)/config/printconfigsetting.py $(DIST)/bin/application.ini App BuildID)
else
BUILDID = $(shell $(PYTHON) $(srcdir)/config/printconfigsetting.py $(DIST)/bin/platform.ini Build BuildID)
endif
#XXX: this is a hack, since we don't want to clobber for MSVC
# PGO support, but we can't do this test in client.mk
ifneq ($(OS_ARCH)_$(GNU_CC), WINNT_)
# No point in clobbering if PGO has been explicitly disabled.
ifndef NO_PROFILE_GUIDED_OPTIMIZE
maybe_clobber_profiledbuild: clobber_all
else
maybe_clobber_profiledbuild:
endif
else
maybe_clobber_profiledbuild:
endif
.PHONY: maybe_clobber_profiledbuild

View File

@@ -1,97 +0,0 @@
#! /bin/sh
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
# allmakefiles.sh - List of all makefiles.
# Appends the list of makefiles to the variable, MAKEFILES.
# There is no need to rerun autoconf after adding makefiles.
# You only need to run configure.
MAKEFILES=""
# add_makefiles - Shell function to add makefiles to MAKEFILES
add_makefiles() {
MAKEFILES="$MAKEFILES $*"
}
if [ "$srcdir" = "" ]; then
srcdir=.
fi
#
# Common makefiles used by everyone
#
add_makefiles "
Makefile
build/Makefile
build/unix/Makefile
config/Makefile
config/autoconf.mk
config/mkdepend/Makefile
config/doxygen.cfg
probes/Makefile
extensions/Makefile
"
if [ "$MOZ_MEMORY" ]; then
add_makefiles "
memory/jemalloc/Makefile
"
fi
#
# Application-specific makefiles
#
if test -f "${srcdir}/${MOZ_BUILD_APP}/makefiles.sh"; then
. "${srcdir}/${MOZ_BUILD_APP}/makefiles.sh"
fi
#
# Extension makefiles
#
for extension in $MOZ_EXTENSIONS; do
if [ -f "${srcdir}/extensions/${extension}/makefiles.sh" ]; then
. "${srcdir}/extensions/${extension}/makefiles.sh"
fi
done
#
# Toolkit makefiles
#
if test -z "$LIBXUL_SDK"; then
. "${srcdir}/toolkit/toolkit-makefiles.sh"
fi

File diff suppressed because it is too large Load Diff

View File

@@ -1,641 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 this file as it was released upon August 6, 1998.
#
# The Initial Developer of the Original Code is
# Christopher Seawood.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Benjamin Smedberg <benjamin@smedbergs.us>
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
# A netscape style .mk file for autoconf builds
INCLUDED_AUTOCONF_MK = 1
USE_AUTOCONF = 1
MOZILLA_CLIENT = 1
BUILD_MODULES = @BUILD_MODULES@
MOZILLA_VERSION = @MOZILLA_VERSION@
FIREFOX_VERSION = @FIREFOX_VERSION@
THUNDERBIRD_VERSION = @THUNDERBIRD_VERSION@
SUNBIRD_VERSION = @SUNBIRD_VERSION@
SEAMONKEY_VERSION = @SEAMONKEY_VERSION@
MOZ_BUILD_APP = @MOZ_BUILD_APP@
MOZ_APP_NAME = @MOZ_APP_NAME@
MOZ_APP_DISPLAYNAME = @MOZ_APP_DISPLAYNAME@
MOZ_APP_VERSION = @MOZ_APP_VERSION@
MOZ_PKG_SPECIAL = @MOZ_PKG_SPECIAL@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
libdir = @libdir@
datadir = @datadir@
mandir = @mandir@
idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
DIST = $(DEPTH)/dist
LIBXUL_SDK = @LIBXUL_SDK@
ifdef LIBXUL_SDK
LIBXUL_DIST = $(LIBXUL_SDK)
else
LIBXUL_DIST = $(DIST)
endif
XULRUNNER_STUB_NAME = @XULRUNNER_STUB_NAME@
MOZ_CHROME_FILE_FORMAT = @MOZ_CHROME_FILE_FORMAT@
MOZ_WIDGET_TOOLKIT = @MOZ_WIDGET_TOOLKIT@
MOZ_GFX_TOOLKIT = @MOZ_GFX_TOOLKIT@
MOZ_X11 = @MOZ_X11@
MOZ_JS_LIBS = @MOZ_JS_LIBS@
MOZ_DEBUG = @MOZ_DEBUG@
MOZ_DEBUG_MODULES = @MOZ_DEBUG_MODULES@
MOZ_PROFILE_MODULES = @MOZ_PROFILE_MODULES@
MOZ_DEBUG_ENABLE_DEFS = @MOZ_DEBUG_ENABLE_DEFS@
MOZ_DEBUG_DISABLE_DEFS = @MOZ_DEBUG_DISABLE_DEFS@
MOZ_DEBUG_FLAGS = @MOZ_DEBUG_FLAGS@
MOZ_DEBUG_LDFLAGS=@MOZ_DEBUG_LDFLAGS@
MOZ_DBGRINFO_MODULES = @MOZ_DBGRINFO_MODULES@
MOZ_EXTENSIONS = @MOZ_EXTENSIONS@
MOZ_IMG_DECODERS= @MOZ_IMG_DECODERS@
MOZ_IMG_ENCODERS= @MOZ_IMG_ENCODERS@
MOZ_JSDEBUGGER = @MOZ_JSDEBUGGER@
MOZ_PERF_METRICS = @MOZ_PERF_METRICS@
MOZ_LEAKY = @MOZ_LEAKY@
MOZ_MEMORY = @MOZ_MEMORY@
MOZ_JPROF = @MOZ_JPROF@
MOZ_SHARK = @MOZ_SHARK@
MOZ_XPCTOOLS = @MOZ_XPCTOOLS@
ENABLE_EAZEL_PROFILER=@ENABLE_EAZEL_PROFILER@
EAZEL_PROFILER_CFLAGS=@EAZEL_PROFILER_CFLAGS@
EAZEL_PROFILER_LIBS=@EAZEL_PROFILER_LIBS@
GC_LEAK_DETECTOR = @GC_LEAK_DETECTOR@
NS_TRACE_MALLOC = @NS_TRACE_MALLOC@
USE_ELF_DYNSTR_GC = @USE_ELF_DYNSTR_GC@
USE_PREBINDING = @USE_PREBINDING@
INCREMENTAL_LINKER = @INCREMENTAL_LINKER@
MACOSX_DEPLOYMENT_TARGET = @MACOSX_DEPLOYMENT_TARGET@
MOZ_MAIL_NEWS = @MOZ_MAIL_NEWS@
MOZ_CALENDAR = @MOZ_CALENDAR@
MOZ_PLAINTEXT_EDITOR_ONLY = @MOZ_PLAINTEXT_EDITOR_ONLY@
MOZ_COMPOSER = @MOZ_COMPOSER@
BUILD_STATIC_LIBS = @BUILD_STATIC_LIBS@
MOZ_ENABLE_LIBXUL = @MOZ_ENABLE_LIBXUL@
ENABLE_TESTS = @ENABLE_TESTS@
IBMBIDI = @IBMBIDI@
MOZ_UNIVERSALCHARDET = @MOZ_UNIVERSALCHARDET@
SUNCTL = @SUNCTL@
ACCESSIBILITY = @ACCESSIBILITY@
MOZ_VIEW_SOURCE = @MOZ_VIEW_SOURCE@
MOZ_XPINSTALL = @MOZ_XPINSTALL@
MOZ_JSLOADER = @MOZ_JSLOADER@
MOZ_USE_NATIVE_UCONV = @MOZ_USE_NATIVE_UCONV@
MOZ_LDAP_XPCOM = @MOZ_LDAP_XPCOM@
MOZ_LDAP_XPCOM_EXPERIMENTAL = @MOZ_LDAP_XPCOM_EXPERIMENTAL@
MOZ_BRANDING_DIRECTORY = @MOZ_BRANDING_DIRECTORY@
XPCOM_USE_LEA = @XPCOM_USE_LEA@
JS_ULTRASPARC_OPTS = @JS_ULTRASPARC_OPTS@
JS_STATIC_BUILD = @JS_STATIC_BUILD@
MOZ_ENABLE_POSTSCRIPT = @MOZ_ENABLE_POSTSCRIPT@
MOZ_INSTALLER = @MOZ_INSTALLER@
MOZ_UPDATER = @MOZ_UPDATER@
MOZ_UPDATE_PACKAGING = @MOZ_UPDATE_PACKAGING@
MOZ_NO_ACTIVEX_SUPPORT = @MOZ_NO_ACTIVEX_SUPPORT@
MOZ_ACTIVEX_SCRIPTING_SUPPORT = @MOZ_ACTIVEX_SCRIPTING_SUPPORT@
MOZ_DISABLE_VISTA_SDK_REQUIREMENTS = @MOZ_DISABLE_VISTA_SDK_REQUIREMENTS@
MOZ_DISABLE_PARENTAL_CONTROLS = @MOZ_DISABLE_PARENTAL_CONTROLS@
XPC_IDISPATCH_SUPPORT = @XPC_IDISPATCH_SUPPORT@
MOZ_SPELLCHECK = @MOZ_SPELLCHECK@
MOZ_XPFE_COMPONENTS = @MOZ_XPFE_COMPONENTS@
MOZ_IPCD = @MOZ_IPCD@
MOZ_PROFILESHARING = @MOZ_PROFILESHARING@
MOZ_PROFILELOCKING = @MOZ_PROFILELOCKING@
MOZ_FEEDS = @MOZ_FEEDS@
MOZ_PLACES = @MOZ_PLACES@
MOZ_PLACES_BOOKMARKS = @MOZ_PLACES_BOOKMARKS@
MOZ_STORAGE = @MOZ_STORAGE@
MOZ_SAFE_BROWSING = @MOZ_SAFE_BROWSING@
MOZ_URL_CLASSIFIER = @MOZ_URL_CLASSIFIER@
MOZ_ZIPWRITER = @MOZ_ZIPWRITER@
MOZ_MORK = @MOZ_MORK@
MOZ_MORKREADER = @MOZ_MORKREADER@
MOZ_NO_XPCOM_OBSOLETE = @MOZ_NO_XPCOM_OBSOLETE@
MOZ_NO_FAST_LOAD = @MOZ_NO_FAST_LOAD@
NS_PRINTING = @NS_PRINTING@
MOZ_CRASHREPORTER = @MOZ_CRASHREPORTER@
MOZ_MOCHITEST = @MOZ_MOCHITEST@
MOZ_HELP_VIEWER = @MOZ_HELP_VIEWER@
MOZ_JAVAXPCOM = @MOZ_JAVAXPCOM@
JAVA_INCLUDE_PATH="@JAVA_INCLUDE_PATH@"
JAVA="@JAVA@"
JAVAC="@JAVAC@"
JAR="@JAR@"
TAR=@TAR@
# The MOZ_UI_LOCALE var is used to build a particular locale. Do *not*
# use the var to change any binary files. Do *not* use this var unless you
# write rules for the "clean-locale" and "locale" targets.
MOZ_UI_LOCALE = @MOZ_UI_LOCALE@
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS = @MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS@
MOZ_COMPONENT_NSPR_LIBS=@MOZ_COMPONENT_NSPR_LIBS@
MOZ_FIX_LINK_PATHS=@MOZ_FIX_LINK_PATHS@
XPCOM_FROZEN_LDOPTS=@XPCOM_FROZEN_LDOPTS@
XPCOM_LIBS=@XPCOM_LIBS@
MOZ_TIMELINE=@MOZ_TIMELINE@
ENABLE_STRIP = @ENABLE_STRIP@
PKG_SKIP_STRIP = @PKG_SKIP_STRIP@
ClientWallet=1
CookieManagement=1
SingleSignon=1
MOZ_OJI = @MOZ_OJI@
MOZ_PLUGINS = @MOZ_PLUGINS@
MOZ_POST_DSO_LIB_COMMAND = @MOZ_POST_DSO_LIB_COMMAND@
MOZ_POST_PROGRAM_COMMAND = @MOZ_POST_PROGRAM_COMMAND@
MOZ_BUILD_ROOT = @MOZ_BUILD_ROOT@
MOZ_XUL = @MOZ_XUL@
MOZ_RDF = @MOZ_RDF@
NECKO_PROTOCOLS = @NECKO_PROTOCOLS@
NECKO_DISK_CACHE = @NECKO_DISK_CACHE@
NECKO_SMALL_BUFFERS = @NECKO_SMALL_BUFFERS@
NECKO_COOKIES = @NECKO_COOKIES@
MOZ_AUTH_EXTENSION = @MOZ_AUTH_EXTENSION@
MOZ_NATIVE_HUNSPELL = @SYSTEM_HUNSPELL@
MOZ_HUNSPELL_LIBS = @MOZ_HUNSPELL_LIBS@
MOZ_HUNSPELL_CFLAGS = @MOZ_HUNSPELL_CFLAGS@
MOZ_NATIVE_ZLIB = @SYSTEM_ZLIB@
MOZ_NATIVE_BZ2 = @SYSTEM_BZ2@
MOZ_NATIVE_JPEG = @SYSTEM_JPEG@
MOZ_NATIVE_PNG = @SYSTEM_PNG@
MOZ_TREE_CAIRO = @MOZ_TREE_CAIRO@
MOZ_UPDATE_XTERM = @MOZ_UPDATE_XTERM@
MOZ_MATHML = @MOZ_MATHML@
MOZ_PERMISSIONS = @MOZ_PERMISSIONS@
MOZ_XTF = @MOZ_XTF@
MOZ_XMLEXTRAS = @MOZ_XMLEXTRAS@
MOZ_NO_INSPECTOR_APIS = @MOZ_NO_INSPECTOR_APIS@
MOZ_WEBSERVICES = @MOZ_WEBSERVICES@
MOZ_SVG = @MOZ_SVG@
MOZ_SVG_FOREIGNOBJECT = @MOZ_SVG_FOREIGNOBJECT@
MOZ_LIBART_CFLAGS = @MOZ_LIBART_CFLAGS@
MOZ_ENABLE_CANVAS = @MOZ_ENABLE_CANVAS@
MOZ_CAIRO_CFLAGS = @MOZ_CAIRO_CFLAGS@
MOZ_XSLT_STANDALONE = @MOZ_XSLT_STANDALONE@
MOZ_PREF_EXTENSIONS = @MOZ_PREF_EXTENSIONS@
MOZ_CAIRO_LIBS = @MOZ_CAIRO_LIBS@
MOZ_ENABLE_GNOMEUI = @MOZ_ENABLE_GNOMEUI@
MOZ_GNOMEUI_CFLAGS = @MOZ_GNOMEUI_CFLAGS@
MOZ_GNOMEUI_LIBS = @MOZ_GNOMEUI_LIBS@
MOZ_ENABLE_STARTUP_NOTIFICATION = @MOZ_ENABLE_STARTUP_NOTIFICATION@
MOZ_STARTUP_NOTIFICATION_CFLAGS = @MOZ_STARTUP_NOTIFICATION_CFLAGS@
MOZ_STARTUP_NOTIFICATION_LIBS = @MOZ_STARTUP_NOTIFICATION_LIBS@
MOZ_GNOMEVFS_CFLAGS = @MOZ_GNOMEVFS_CFLAGS@
MOZ_GNOMEVFS_LIBS = @MOZ_GNOMEVFS_LIBS@
MOZ_ENABLE_GCONF = @MOZ_ENABLE_GCONF@
MOZ_GCONF_CFLAGS = @MOZ_GCONF_CFLAGS@
MOZ_GCONF_LIBS = @MOZ_GCONF_LIBS@
MOZ_LIBGNOME_CFLAGS = @MOZ_LIBGNOME_CFLAGS@
MOZ_LIBGNOME_LIBS = @MOZ_LIBGNOME_LIBS@
MOZ_ENABLE_GNOME_COMPONENT = @MOZ_ENABLE_GNOME_COMPONENT@
MOZ_INSURE = @MOZ_INSURE@
MOZ_INSURIFYING = @MOZ_INSURIFYING@
MOZ_INSURE_DIRS = @MOZ_INSURE_DIRS@
MOZ_INSURE_EXCLUDE_DIRS = @MOZ_INSURE_EXCLUDE_DIRS@
MOZ_NATIVE_NSPR = @MOZ_NATIVE_NSPR@
MOZ_NATIVE_NSS = @MOZ_NATIVE_NSS@
CROSS_COMPILE = @CROSS_COMPILE@
OS_CPPFLAGS = @CPPFLAGS@
OS_CFLAGS = $(OS_CPPFLAGS) @CFLAGS@
OS_CXXFLAGS = $(OS_CPPFLAGS) @CXXFLAGS@
OS_LDFLAGS = @LDFLAGS@
OS_COMPILE_CFLAGS = $(OS_CPPFLAGS) @COMPILE_CFLAGS@
OS_COMPILE_CXXFLAGS = $(OS_CPPFLAGS) @COMPILE_CXXFLAGS@
OS_INCLUDES = $(NSPR_CFLAGS) $(JPEG_CFLAGS) $(PNG_CFLAGS) $(ZLIB_CFLAGS) $(LCMS_CFLAGS)
OS_LIBS = @LIBS@
ACDEFINES = @MOZ_DEFINES@
WARNINGS_AS_ERRORS = @WARNINGS_AS_ERRORS@
MOZ_OPTIMIZE = @MOZ_OPTIMIZE@
MOZ_OPTIMIZE_FLAGS = @MOZ_OPTIMIZE_FLAGS@
MOZ_OPTIMIZE_LDFLAGS = @MOZ_OPTIMIZE_LDFLAGS@
MOZ_OPTIMIZE_SIZE_TWEAK = @MOZ_OPTIMIZE_SIZE_TWEAK@
MOZ_RTTI_FLAGS_ON = @_MOZ_RTTI_FLAGS_ON@
MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE = @MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE@
PROFILE_GEN_CFLAGS = @PROFILE_GEN_CFLAGS@
PROFILE_GEN_LDFLAGS = @PROFILE_GEN_LDFLAGS@
PROFILE_USE_CFLAGS = @PROFILE_USE_CFLAGS@
PROFILE_USE_LDFLAGS = @PROFILE_USE_LDFLAGS@
XCFLAGS = @XCFLAGS@
XLDFLAGS = @XLDFLAGS@
XLIBS = @XLIBS@
WIN_TOP_SRC = @WIN_TOP_SRC@
CYGWIN_WRAPPER = @CYGWIN_WRAPPER@
AS_PERL = @AS_PERL@
CYGDRIVE_MOUNT = @CYGDRIVE_MOUNT@
AR = @AR@
AR_FLAGS = @AR_FLAGS@
AR_EXTRACT = @AR_EXTRACT@
AR_LIST = @AR_LIST@
AR_DELETE = @AR_DELETE@
AS = @AS@
ASFLAGS = @ASFLAGS@
AS_DASH_C_FLAG = @AS_DASH_C_FLAG@
LD = @LD@
RC = @RC@
RCFLAGS = @RCFLAGS@
WINDRES = @WINDRES@
USE_SHORT_LIBNAME = @USE_SHORT_LIBNAME@
IMPLIB = @IMPLIB@
FILTER = @FILTER@
BIN_FLAGS = @BIN_FLAGS@
MIDL = @MIDL@
MIDL_FLAGS = @MIDL_FLAGS@
_MSC_VER = @_MSC_VER@
DLL_PREFIX = @DLL_PREFIX@
LIB_PREFIX = @LIB_PREFIX@
OBJ_SUFFIX = @OBJ_SUFFIX@
LIB_SUFFIX = @LIB_SUFFIX@
DLL_SUFFIX = @DLL_SUFFIX@
BIN_SUFFIX = @BIN_SUFFIX@
ASM_SUFFIX = @ASM_SUFFIX@
IMPORT_LIB_SUFFIX = @IMPORT_LIB_SUFFIX@
USE_N32 = @USE_N32@
HAVE_64BIT_OS = @HAVE_64BIT_OS@
# Temp hack. It is not my intention to leave this crap in here for ever.
# Im talking to fur right now to solve the problem without introducing
# NS_USE_NATIVE to the build system -ramiro.
NS_USE_NATIVE = @NS_USE_NATIVE@
CC = @CC@
CXX = @CXX@
GNU_AS = @GNU_AS@
GNU_LD = @GNU_LD@
GNU_CC = @GNU_CC@
GNU_CXX = @GNU_CXX@
HAVE_GCC3_ABI = @HAVE_GCC3_ABI@
INTEL_CC = @INTEL_CC@
INTEL_CXX = @INTEL_CXX@
HOST_CC = @HOST_CC@
HOST_CXX = @HOST_CXX@
HOST_CFLAGS = @HOST_CFLAGS@
HOST_CXXFLAGS = @HOST_CXXFLAGS@
HOST_OPTIMIZE_FLAGS = @HOST_OPTIMIZE_FLAGS@
HOST_NSPR_MDCPUCFG = @HOST_NSPR_MDCPUCFG@
HOST_AR = @HOST_AR@
HOST_AR_FLAGS = @HOST_AR_FLAGS@
HOST_LD = @HOST_LD@
HOST_RANLIB = @HOST_RANLIB@
HOST_BIN_SUFFIX = @HOST_BIN_SUFFIX@
HOST_LIBIDL_CONFIG = @HOST_LIBIDL_CONFIG@
HOST_LIBIDL_CFLAGS = @HOST_LIBIDL_CFLAGS@
HOST_LIBIDL_LIBS = @HOST_LIBIDL_LIBS@
HOST_OS_ARCH = @HOST_OS_ARCH@
host_cpu = @host_cpu@
host_vendor = @host_vendor@
host_os = @host_os@
TARGET_NSPR_MDCPUCFG = @TARGET_NSPR_MDCPUCFG@
TARGET_CPU = @TARGET_CPU@
TARGET_VENDOR = @TARGET_VENDOR@
TARGET_OS = @TARGET_OS@
TARGET_MD_ARCH = @TARGET_MD_ARCH@
TARGET_XPCOM_ABI = @TARGET_XPCOM_ABI@
AUTOCONF = @AUTOCONF@
PERL = @PERL@
PYTHON = @PYTHON@
RANLIB = @RANLIB@
WHOAMI = @WHOAMI@
UNZIP = @UNZIP@
ZIP = @ZIP@
XARGS = @XARGS@
STRIP = @STRIP@
DOXYGEN = @DOXYGEN@
MAKE = @MAKE@
PBBUILD_BIN = @PBBUILD@
SDP = @SDP@
NSINSTALL_BIN = @NSINSTALL_BIN@
ifdef MOZ_NATIVE_JPEG
JPEG_CFLAGS = @JPEG_CFLAGS@
JPEG_LIBS = @JPEG_LIBS@
JPEG_REQUIRES =
else
JPEG_CFLAGS = @MOZ_JPEG_CFLAGS@
JPEG_LIBS = @MOZ_JPEG_LIBS@
JPEG_REQUIRES = jpeg
endif
ifdef MOZ_NATIVE_ZLIB
ZLIB_CFLAGS = @ZLIB_CFLAGS@
ZLIB_LIBS = @ZLIB_LIBS@
ZLIB_REQUIRES =
else
ZLIB_CFLAGS = @MOZ_ZLIB_CFLAGS@
ifdef MOZ_ENABLE_LIBXUL
MOZ_ZLIB_LIBS = @MOZ_ZLIB_LIBS@
else
ZLIB_LIBS = @MOZ_ZLIB_LIBS@
endif
ZLIB_REQUIRES = zlib
endif
ifdef MOZ_NATIVE_BZ2
BZ2_CFLAGS = @BZ2_CFLAGS@
BZ2_LIBS = @BZ2_LIBS@
BZ2_REQUIRES =
else
BZ2_CFLAGS = @MOZ_BZ2_CFLAGS@
BZ2_LIBS = @MOZ_BZ2_LIBS@
BZ2_REQUIRES = libbz2
endif
ifdef MOZ_NATIVE_PNG
PNG_CFLAGS = @PNG_CFLAGS@
PNG_LIBS = @PNG_LIBS@
PNG_REQUIRES =
else
PNG_CFLAGS = @MOZ_PNG_CFLAGS@
PNG_LIBS = @MOZ_PNG_LIBS@
PNG_REQUIRES = png
endif
MOZ_NATIVE_LCMS = @MOZ_NATIVE_LCMS@
LCMS_CFLAGS = @LCMS_CFLAGS@
LCMS_LIBS = @LCMS_LIBS@
ifdef MOZ_NATIVE_LCMS
LCMS_REQUIRES =
else
LCMS_REQUIRES = lcms
endif
MOZ_NATIVE_SQLITE = @MOZ_NATIVE_SQLITE@
SQLITE_CFLAGS = @SQLITE_CFLAGS@
SQLITE_LIBS = @SQLITE_LIBS@
NSPR_CONFIG = @NSPR_CONFIG@
NSPR_CFLAGS = @NSPR_CFLAGS@
NSPR_LIBS = @NSPR_LIBS@
NSS_CONFIG = @NSS_CONFIG@
NSS_CFLAGS = @NSS_CFLAGS@
NSS_LIBS = @NSS_LIBS@
NSS_DEP_LIBS = @NSS_DEP_LIBS@
LDAP_CFLAGS = @LDAP_CFLAGS@
LDAP_LIBS = @LDAP_LIBS@
XPCOM_GLUE_LDOPTS = @XPCOM_GLUE_LDOPTS@
XPCOM_STANDALONE_GLUE_LDOPTS = @XPCOM_STANDALONE_GLUE_LDOPTS@
MOZ_XPCOM_OBSOLETE_LIBS = @MOZ_XPCOM_OBSOLETE_LIBS@
USE_DEPENDENT_LIBS = @USE_DEPENDENT_LIBS@
# UNIX98 iconv support
LIBICONV = @LIBICONV@
# MKSHLIB_FORCE_ALL is used to force the linker to include all object
# files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker
# to normal behavior. Makefile's that create shared libraries out of
# archives use these flags to force in all of the .o files in the
# archives into the shared library.
WRAP_MALLOC_LIB = @WRAP_MALLOC_LIB@
WRAP_MALLOC_CFLAGS = @WRAP_MALLOC_CFLAGS@
DSO_CFLAGS = @DSO_CFLAGS@
DSO_PIC_CFLAGS = @DSO_PIC_CFLAGS@
MKSHLIB = @MKSHLIB@
MKCSHLIB = @MKCSHLIB@
MKSHLIB_FORCE_ALL = @MKSHLIB_FORCE_ALL@
MKSHLIB_UNFORCE_ALL = @MKSHLIB_UNFORCE_ALL@
DSO_LDOPTS = @DSO_LDOPTS@
DLL_SUFFIX = @DLL_SUFFIX@
NO_LD_ARCHIVE_FLAGS = @NO_LD_ARCHIVE_FLAGS@
GTK_CONFIG = @GTK_CONFIG@
TK_CFLAGS = @TK_CFLAGS@
TK_LIBS = @TK_LIBS@
MOZ_TOOLKIT_REGISTRY_CFLAGS = \
$(TK_CFLAGS)
CAIRO_FT_CFLAGS = @CAIRO_FT_CFLAGS@
MOZ_ENABLE_CAIRO_FT = @MOZ_ENABLE_CAIRO_FT@
MOZ_ENABLE_GLITZ = @MOZ_ENABLE_GLITZ@
MOZ_ENABLE_GTK2 = @MOZ_ENABLE_GTK2@
MOZ_ENABLE_PHOTON = @MOZ_ENABLE_PHOTON@
MOZ_ENABLE_COCOA = @MOZ_ENABLE_COCOA@
MOZ_ENABLE_XREMOTE = @MOZ_ENABLE_XREMOTE@
MOZ_GTK2_CFLAGS = @MOZ_GTK2_CFLAGS@
MOZ_GTK2_LIBS = @MOZ_GTK2_LIBS@
MOZ_DBUS_GLIB_CFLAGS = @MOZ_DBUS_GLIB_CFLAGS@
MOZ_DBUS_GLIB_LIBS = @MOZ_DBUS_GLIB_LIBS@
MOZ_ENABLE_DBUS = @MOZ_ENABLE_DBUS@
MOZ_GTHREAD_CFLAGS = @MOZ_GTHREAD_CFLAGS@
MOZ_GTHREAD_LIBS = @MOZ_GTHREAD_LIBS@
FT2_CFLAGS = @FT2_CFLAGS@
FT2_LIBS = @FT2_LIBS@
MOZ_XFT_CFLAGS = @MOZ_XFT_CFLAGS@
MOZ_XFT_LIBS = @MOZ_XFT_LIBS@
MOZ_PANGO_CFLAGS = @MOZ_PANGO_CFLAGS@
MOZ_PANGO_LIBS = @MOZ_PANGO_LIBS@
MOZ_XIE_LIBS = @MOZ_XIE_LIBS@
XT_LIBS = @XT_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_GMODULE_LIBS = @GLIB_GMODULE_LIBS@
LIBIDL_CFLAGS = @LIBIDL_CFLAGS@
LIBIDL_LIBS = @LIBIDL_LIBS@
STATIC_LIBIDL = @STATIC_LIBIDL@
MOZ_NATIVE_MAKEDEPEND = @SYSTEM_MAKEDEPEND@
# Used for LD_LIBRARY_PATH
LIBS_PATH = @LIBS_PATH@
MOZ_AUTO_DEPS = @MOZ_AUTO_DEPS@
COMPILER_DEPEND = @COMPILER_DEPEND@
MDDEPDIR := @MDDEPDIR@
MOZ_DEMANGLE_SYMBOLS = @MOZ_DEMANGLE_SYMBOLS@
# XXX - these need to be cleaned up and have real checks added -cls
CM_BLDTYPE=dbg
AWT_11=1
MOZ_BITS=32
OS_TARGET=@OS_TARGET@
OS_ARCH=@OS_ARCH@
OS_RELEASE=@OS_RELEASE@
OS_TEST=@OS_TEST@
TARGET_DEVICE = @TARGET_DEVICE@
# For AIX build
AIX_OBJMODEL = @AIX_OBJMODEL@
# For OS/2 build
MOZ_OS2_TOOLS = @MOZ_OS2_TOOLS@
MOZ_OS2_USE_DECLSPEC = @MOZ_OS2_USE_DECLSPEC@
MOZ_OS2_HIGH_MEMORY = @MOZ_OS2_HIGH_MEMORY@
HAVE_XIE=@HAVE_XIE@
MOZ_MOVEMAIL=@MOZ_MOVEMAIL@
MOZ_PSM=@MOZ_PSM@
# Gssapi (krb5) libraries and headers for the Negotiate auth method
GSSAPI_INCLUDES = @GSSAPI_INCLUDES@
USE_GSSAPI = @USE_GSSAPI@
MOZILLA_OFFICIAL = @MOZILLA_OFFICIAL@
BUILD_OFFICIAL = @BUILD_OFFICIAL@
MOZ_MILESTONE_RELEASE = @MOZ_MILESTONE_RELEASE@
# Win32 options
MOZ_PROFILE = @MOZ_PROFILE@
MOZ_BROWSE_INFO = @MOZ_BROWSE_INFO@
MOZ_TOOLS_DIR = @MOZ_TOOLS_DIR@
MOZ_DEBUG_SYMBOLS = @MOZ_DEBUG_SYMBOLS@
MOZ_QUANTIFY = @MOZ_QUANTIFY@
MSMANIFEST_TOOL = @MSMANIFEST_TOOL@
WIN32_REDIST_DIR = @WIN32_REDIST_DIR@
WIN32_CRT_SRC_DIR = @WIN32_CRT_SRC_DIR@
WIN32_CUSTOM_CRT_DIR = @WIN32_CUSTOM_CRT_DIR@
# These are for custom CRT building
ifdef MOZ_MEMORY
ifneq (,$(WIN32_CRT_SRC_DIR)$(WIN32_CUSTOM_CRT_DIR))
export LIB = @MOZ_LIB@
export PATH = @MOZ_PATH@
DLLFLAGS = @DLLFLAGS@
endif
endif
# python options.
MOZ_PYTHON_EXTENSIONS = @MOZ_PYTHON_EXTENSIONS@
MOZ_PYTHON = @MOZ_PYTHON@
MOZ_PYTHON_PREFIX = @MOZ_PYTHON_PREFIX@
MOZ_PYTHON_INCLUDES = @MOZ_PYTHON_INCLUDES@
MOZ_PYTHON_LIBS = @MOZ_PYTHON_LIBS@
MOZ_PYTHON_DEBUG_SUFFIX = @MOZ_PYTHON_DEBUG_SUFFIX@
MOZ_PYTHON_DLL_SUFFIX = @MOZ_PYTHON_DLL_SUFFIX@
MOZ_PYTHON_VER_DOTTED = @MOZ_PYTHON_VER_DOTTED@
MOZ_PYTHON_VER = @MOZ_PYTHON_VER@
# Codesighs tools option, enables win32 mapfiles.
MOZ_MAPINFO = @MOZ_MAPINFO@
MOZ_PHOENIX = @MOZ_PHOENIX@
MOZ_XULRUNNER = @MOZ_XULRUNNER@
MOZ_XUL_APP = @MOZ_XUL_APP@
MOZ_THUNDERBIRD = @MOZ_THUNDERBIRD@
MOZ_STANDALONE_COMPOSER= @MOZ_STANDALONE_COMPOSER@
MOZ_STATIC_MAIL_BUILD = @MOZ_STATIC_MAIL_BUILD@
MOZ_SUNBIRD = @MOZ_SUNBIRD@
MOZ_SUITE = @MOZ_SUITE@
MOZ_ZAP = @MOZ_ZAP@
WINCE = @WINCE@
MOZ_DISTRIBUTION_ID = @MOZ_DISTRIBUTION_ID@
MINIMO = @MINIMO@
MACOS_SDK_DIR = @MACOS_SDK_DIR@
NEXT_ROOT = @NEXT_ROOT@
GCC_VERSION = @GCC_VERSION@
XCODEBUILD_VERSION= @XCODEBUILD_VERSION@
HAS_XCODE_2_1 = @HAS_XCODE_2_1@
UNIVERSAL_BINARY= @UNIVERSAL_BINARY@
HAVE_DTRACE= @HAVE_DTRACE@
VISIBILITY_FLAGS = @VISIBILITY_FLAGS@
WRAP_SYSTEM_INCLUDES = @WRAP_SYSTEM_INCLUDES@
MOZ_V1_STRING_ABI = @MOZ_V1_STRING_ABI@
MOZ_EMBEDDING_LEVEL_DEFAULT = @MOZ_EMBEDDING_LEVEL_DEFAULT@
MOZ_EMBEDDING_LEVEL_BASIC = @MOZ_EMBEDDING_LEVEL_BASIC@
MOZ_EMBEDDING_LEVEL_MINIMAL = @MOZ_EMBEDDING_LEVEL_MINIMAL@

View File

@@ -1,980 +0,0 @@
A4Stuff.h
activscp.h
AEDataModel.h
AEObjects.h
AEPackObject.h
AERegistry.h
AEUtils.h
afxcmn.h
afxcoll.h
afxcview.h
afxdisp.h
afxdtctl.h
afxext.h
afxmt.h
afxpriv.h
afxtempl.h
afxwin.h
algorithm
Aliases.h
all.h
alloca.h
alloc.h
ansi_parms.h
a.out.h
app/Cursor.h
Appearance.h
AppFileInfo.h
AppKit.h
AppleEvents.h
Application.h
app/Message.h
app/MessageRunner.h
arpa/inet.h
arpa/nameser.h
asm/sigcontext.h
asm/signal.h
ASRegistry.h
assert.h
atk/atk.h
atlbase.h
atlcom.h
atlconv.h
atlctl.cpp
atlctl.h
ATLCTL.H
atlhost.h
atlimpl.cpp
atlwin.cpp
ATSTypes.h
ATSUnicode.h
Balloons.h
base/pblock.h
base/PCR_Base.h
base/session.h
basetyps.h
be/app/Application.h
Beep.h
be/kernel/image.h
be/kernel/OS.h
bfd.h
Bitmap.h
bsd/libc.h
bsd/syscall.h
bstring.h
builtin.h
Button.h
byteswap.h
#if MOZ_ENABLE_LIBXUL!=1
#define WRAP_CAIRO_HEADERS
#endif
#if MOZ_TREE_CAIRO!=1
#define WRAP_CAIRO_HEADERS
#endif
#ifdef WRAP_CAIRO_HEADERS
cairo.h
cairo-atsui.h
cairo-beos.h
cairo-ft.h
cairo-glitz.h
cairo-nquartz.h
cairo-os2.h
cairo-pdf.h
cairo-ps.h
cairo-quartz.h
cairo-win32.h
cairo-xlib.h
cairo-xlib-xrender.h
#endif
callconv.h
Carbon/Carbon.h
CarbonEvents.h
Carbon.h
cassert
c_asm.h
cctype
cderr.h
cerrno
cert.h
CFBase.h
CFBundle.h
CFData.h
CFDictionary.h
cf.h
CFNumber.h
CFPlugIn.h
CFPreferences.h
CFString.h
CFURL.h
CGAffineTransform.h
CheckBox.h
climits
Clipboard.h
cmplrs/stsupport.h
Cocoa/Cocoa.h
CodeFragments.h
comdef.h
commctrl.h
COMMCTRL.H
commdlg.h
compat.h
condapi.h
ConditionalMacros.h
config.h
conio.h
console.h
ControlDefinitions.h
Controls.h
CoreFoundation/CoreFoundation.h
CoreServices/CoreServices.h
CPalmRec.cpp
Cpalmrec.h
CPCatgry.cpp
CPDbBMgr.h
CPString.cpp
CPString.h
crtdbg.h
crt_externs.h
crypt.h
cstdio
cstdlib
cstring
ctime
ctype.h
curl/curl.h
curl/easy.h
curl/types.h
curses.h
cxxabi.h
DateTimeUtils.h
dbus/dbus.h
dbus/dbus-glib.h
dbus/dbus-glib-lowlevel.h
ddeml.h
Debug.h
dem.h
descrip.h
Devices.h
Dialogs.h
direct.h
dirent.h
DiskInit.h
dlfcn.h
dlgs.h
dl.h
docobj.h
dos/dosextens.h
dos.h
Drag.h
DriverServices.h
DriverSynchronization.h
DropInPanel.h
dvidef.h
elf.h
endian.h
Entry.h
errno.h
Errors.h
Events.h
exdisp.h
ExDisp.h
exe386.h
execinfo.h
extras.h
fabdef.h
fcntl.h
features.h
fibdef.h
File.h
filehdr.h
files.h
Files.h
FindDirectory.h
Finder.h
FinderRegistry.h
FixMath.h
float.h
Folders.h
fontconfig/fontconfig.h
Font.h
Fonts.h
fp.h
fpieee.h
frame/log.h
frame/req.h
freetype/freetype.h
freetype/ftcache.h
freetype/ftglyph.h
freetype/ftsynth.h
freetype/ftoutln.h
freetype/ttnameid.h
freetype/tttables.h
freetype/t1tables.h
fribidi/fribidi.h
FSp_fopen.h
fstream.h
ft2build.h
gconf/gconf-client.h
Gdiplus.h
gdk/gdkevents.h
gdk/gdk.h
gdk/gdkkeysyms.h
gdk/gdkpango.h
gdk/gdkprivate.h
gdk/gdkregion.h
gdk/gdkwindow.h
gdk/gdkx.h
gdk-pixbuf/gdk-pixbuf.h
Gestalt.h
getopt.h
glibconfig.h
glib.h
glib-object.h
gmodule.h
gnome.h
gnu/libc-version.h
grp.h
gssapi_generic.h
gssapi/gssapi_generic.h
gssapi/gssapi.h
gssapi.h
gtk/gtkbindings.h
gtk/gtkbutton.h
gtk/gtkclipboard.h
gtk/gtkcontainer.h
gtk/gtkdialog.h
gtk/gtkentry.h
gtk/gtkfixed.h
gtk/gtk.h
gtk/gtkiconfactory.h
gtk/gtkimage.h
gtk/gtkimmulticontext.h
gtk/gtkinvisible.h
gtk/gtkmain.h
gtk/gtkmessagedialog.h
gtk/gtkobject.h
gtk/gtkprinter.h
gtk/gtkprintjob.h
gtk/gtkprintunixdialog.h
gtk/gtkprivate.h
gtk/gtkselection.h
gtk/gtksignal.h
gtk/gtksocket.h
gtk/gtkstock.h
gtk/gtkstyle.h
gtk/gtktextview.h
gtk/gtkvscrollbar.h
gtk/gtkwidget.h
gtk/gtkwindow.h
gtk/gtkversion.h
HIToolbox/HIToolbox.h
hlink.h
htiface.h
ia64/sys/inline.h
Icons.h
iconv.h
IDL.h
ieeefp.h
ifaddrs.h
image.h
imagehlp.h
imm.h
initguid.h
InterfaceDefs.h
InternetConfig.h
IntlResources.h
ints.h
intshcut.h
inttypes.h
iodef.h
io.h
IOKit/IOKitLib.h
IOKit/IOMessage.h
IOKit/pwr_mgt/IOPMLib.h
iomanip
iostream
iostream.h
jar.h
JavaControl.h
JavaEmbedding/JavaControl.h
JavaVM/jni.h
JManager.h
JNIEnvTests.h
jni.h
#if MOZ_NATIVE_JPEG==1
jpeglib.h
#endif
JVMManagerTests.h
Kerberos/Kerberos.h
kernel/image.h
kernel/OS.h
key.h
keyt.h
keythi.h
LAction.h
langinfo.h
LApplication.h
LArray.h
LArrayIterator.h
LAttachable.h
LAttachment.h
LaunchServices.h
lber.h
LBroadcaster.h
LButton.h
lcache.h
LCaption.h
LCheckBox.h
LCicnButton.h
LClipboard.h
LCommander.h
LComparator.h
LControl.h
ldap.h
ldaplog.h
ldappr.h
ldap_ssl.h
LDataStream.h
ldfcn.h
LDialogBox.h
ldif.h
LDocApplication.h
LDocument.h
LDragAndDrop.h
LDragTask.h
LEditField.h
LEditText.h
LEventDispatcher.h
LFile.h
LFileStream.h
LFileTypeList.h
LFocusBox.h
LGrafPortView.h
LHandleStream.h
libc_r.h
libelf.h
libelf/libelf.h
libgen.h
libgnome/gnome-url.h
libgnome/libgnome.h
libgnomeui/gnome-icon-lookup.h
libgnomeui/gnome-icon-theme.h
libgnomeui/gnome-ui-init.h
libgnomevfs/gnome-vfs-application-registry.h
libgnomevfs/gnome-vfs-file-info.h
libgnomevfs/gnome-vfs.h
libgnomevfs/gnome-vfs-init.h
libgnomevfs/gnome-vfs-mime.h
libgnomevfs/gnome-vfs-mime-handlers.h
libgnomevfs/gnome-vfs-mime-info.h
libgnomevfs/gnome-vfs-mime-utils.h
libgnomevfs/gnome-vfs-ops.h
libgnomevfs/gnome-vfs-standard-callbacks.h
libIDL/IDL.h
lib$routines.h
limits
limits.h
link.h
linux/kernel.h
linux/limits.h
linux/rtc.h
linux/version.h
list
List.h
Lists.h
LiveConnectManagerTests.h
LListBox.h
LListener.h
LMenuBar.h
LMenu.h
LModelDirector.h
LModelObject.h
LModelProperty.h
loader.h
locale
locale.h
LOffscreenView.h
logkeys.h
logstrng.h
Looper.h
LowMem.h
LPane.h
LPeriodical.h
LPicture.h
LPlaceHolder.h
LPrintout.h
LProgressBar.h
LPushButton.h
LRadioGroup.h
LRadioGroupView.h
LRunArray.h
LScroller.h
LSharable.h
LSingleDoc.h
LStaticText.h
LStdControl.h
LStream.h
LString.h
LTabGroup.h
LTabGroupView.h
LTableArrayStorage.h
LTableMonoGeometry.h
LTableSingleSelector.h
LTableView.h
LTextEditView.h
LTextTableView.h
LUndoer.h
LVariableArray.h
LView.h
LWindow.h
m68881.h
MacErrors.h
MacHeadersCarbon.h
machine/ansi.h
machine/builtins.h
machine/clock.h
machine/endian.h
machine/frame.h
machine/inline.h
machine/limits.h
machine/signal.h
machine/trap.h
mach/mach_host.h
mach/mach_init.h
mach/mach_interface.h
mach/mach_port.h
mach-o/dyld.h
MacLocales.h
MacMemory.h
MacTCP.h
MacTypes.h
MacWindows.h
malloc.h
map
mapicode.h
mapidefs.h
mapiguid.h
mapi.h
mapitags.h
mapiutil.h
mapix.h
Math64.h
math.h
mbstring.h
mem.h
memory
memory.h
Memory.h
MenuBar.h
Menu.h
Menus.h
Message.h
Mime.h
MixedMode.h
mlang.h
mmsystem.h
model.h
Movies.h
mpw/errno.h
mshtmhst.h
mshtml.h
mswsock.h
Multiprocessing.h
mutex.h
Navigation.h
ncompat.h
ncurses.h
netCore.h
netdb.h
net/if.h
netinet/in.h
netinet/in_systm.h
netinet/tcp.h
new
newexe.h
new.h
nl_types.h
NodeInfo.h
nss.h
nssilock.h
objbase.h
objidl.h
Objsafe.h
ojiapitests.h
ole2.h
oleidl.h
OpenTptInternet.h
OpenTransport.h
os2.h
OS.h
osreldate.h
OSUtils.h
Packages.h
Palettes.h
PALM_CMN.H
pango-engine.h
pango-glyph.h
pango-modules.h
pango/pangocairo.h
pango/pangofc-decoder.h
pango/pangofc-font.h
pango/pangofc-fontmap.h
pango/pango-break.h
pango/pango-fontmap.h
pango/pango.h
pango/pangoxft.h
pango/pangox.h
pango/pango-utils.h
pango-types.h
pascal.h
Patches.h
Path.h
pcfs/pc_dir.h
Pgenerr.h
PGenErr.h
Ph.h
photon/Pg.h
photon/PhProto.h
photon/PhRender.h
photon/PpProto.h
photon/PtProgress.h
photon/PtServer.h
photon/PtWebClient.h
photon/PxImage.h
pk11func.h
pk11pub.h
pkcs11t.h
PLStringFuncs.h
PMApplication.h
pmddim.h
poll.h
Polygon.h
portable.h
Power.h
PP_ClassHeaders.cp
PP_Constants.h
PPCToolbox.h
PP_DebugHeaders.cp
PP_KeyCodes.h
PP_Macros.h
PP_Messages.h
PP_Prefix.h
PP_Resources.h
PP_Types.h
Printing.h
Print/PMPrintingDialogExtensions.h
private/qucomextra_p.h
Processes.h
process.h
Process.h
proto/dos.h
proto/exec.h
psap.h
Pt.h
pthread.h
pwd.h
Python.h
QDOffscreen.h
Quickdraw.h
QuickDraw.h
QuickTimeComponents.h
quipu/attr.h
rasdlg.h
raserror.h
ras.h
regex.h
Region.h
resolv.h
Resources.h
Retrace.h
rld_interface.h
rmsdef.h
Roster.h
rpc.h
rpcproxy.h
rpc/types.h
sane/sane.h
sane/sanei.h
sane/saneopts.h
sched.h
Scrap.h
Screen.h
Script.h
ScrollBar.h
seccomon.h
sec.h
secmod.h
secmodt.h
secrng.h
security.h
secutil.h
semaphore.h
servprov.h
setjmp.h
SFNTLayoutTypes.h
SFNTTypes.h
share.h
shellapi.h
shlguid.h
shlobj.h
sigcontext.h
signal.h
SimpleGameSound.h
SIOUX.h
size_t.h
someincludefile.h
Sound.h
sqlite3.h
ssdef.h
sslerr.h
ssl.h
sslproto.h
sstream
stack
StandardFile.h
starlet.h
stat.h
statreg.cpp
statreg.h
stdarg.h
stdbool.h
stddef.h
stdint.h
stdio.h
stdlib.h
storage/FindDirectory.h
StorageKit.h
string
StringCompare.h
string.h
String.h
strings.h
Strings.h
StringView.h
stropts.h
strstrea.h
structs.h
stsdef.h
SupportDefs.h
support/String.h
support/SupportDefs.h
support/TLS.h
svrcore.h
symconst.h
sym.h
synch.h
syncmgr.h
sys/atomic_op.h
sys/bitypes.h
sys/byteorder.h
syscall.h
sys/cdefs.h
sys/cfgodm.h
sys/elf.h
sys/endian.h
sys/errno.h
sys/fault.h
sys/fcntl.h
sys/file.h
sys/filio.h
sys/frame.h
sys/immu.h
sys/inttypes.h
sys/ioccom.h
sys/ioctl.h
sys/ipc.h
sys/ldr.h
sys/link.h
sys/locking.h
syslog.h
sys/lwp.h
sys/machine.h
sys/mman.h
sys/mmu.h
sys/mount.h
sys/mpctl.h
sys/param.h
sys/pda.h
sys/poll.h
sys/ppc.h
sys/prctl.h
sys/priv.h
sys/procfs.h
sys/pstat.h
sys/ptrace.h
sys/queue.h
sys/reg.h
sys/regset.h
sys/resource.h
sys/sched.h
sys/select.h
sys/sem.h
sys/sendfile.h
sys/shm.h
sys/siginfo.h
sys/signal.h
sys/socket.h
sys/sockio.h
sys/sparc/frame.h
sys/stack.h
sys/statfs.h
sys/stat.h
sys/statvfs.h
sys/syscall.h
sys/sysctl.h
sys/sysinfo.h
sys/sysmp.h
sys/syssgi.h
sys/systeminfo.h
sys/timeb.h
sys/time.h
sys/times.h
sys/ttycom.h
sys/types.h
sys/ucontext.h
sys/uio.h
sys/un.h
sys/unistd.h
sys/utsname.h
sys/vfs.h
sys/wait.h
tables.h
TArray.h
TArrayIterator.h
task.h
tchar.h
TCHAR.H
termios.h
TextCommon.h
TextEdit.h
TextEncodingConverter.h
TextServices.h
TextUtils.h
TextView.h
th/PCR_Th.h
thread.h
ThreadManagerTests.h
Threads.h
time.h
Timer.h
tlhelp32.h
ToolUtils.h
trace.h
Traps.h
typeinfo
types.h
Types.h
UAppleEventsMgr.h
UAttachments.h
ucontext.h
uconv.h
UCursor.h
ucx$inetdef.h
UDebugging.h
UDesktop.h
UDrawingState.h
UDrawingUtils.h
UEnvironment.h
UEventMgr.h
UException.h
UExtractFromAEDesc.h
UGWorld.h
UKeyFilters.h
ulocks.h
ulserrno.h
UMemoryMgr.h
UModalDialogs.h
UNavServicesDialogs.h
UnicodeBlockObjects.h
UnicodeConverter.h
UnicodeUtilities.h
unidef.h
unikbd.h
unistd.h
unix.h
unixio.h
unixlib.h
unknwn.h
UPrinting.h
UQuickTime.h
UReanimator.h
URegions.h
URegistrar.h
UResourceMgr.h
urlhist.h
urlmon.h
UScrap.h
UScreenPort.h
UTCUtils.h
UTETextAction.h
UTEViewTextAction.h
UTextEdit.h
UTextTraits.h
utility
utime.h
UWindows.h
values.h
varargs.h
vcclr.h
vector
View.h
Volume.h
wab.h
wait.h
wchar.h
winbase.h
win/compobj.h
windef.h
Window.h
windows.h
Windows.h
windowsx.h
Wininet.h
winnls.h
winperf.h
winreg.h
Winreg.h
winsock2.h
winsock.h
winspool.h
winsvc.h
winuser.h
winver.h
wmem.h
workbench/startup.h
wtypes.h
wx/image.h
wx/listctrl.h
wx/log.h
wx/toolbar.h
wx/wx.h
wx/xrc/xmlres.h
X11/cursorfont.h
X11/extensions/Print.h
X11/extensions/shape.h
X11/extensions/XIElib.h
X11/extensions/XShm.h
X11/extensions/Xrender.h
X11/Intrinsic.h
X11/keysymdef.h
X11/keysym.h
X11/Shell.h
X11/StringDefs.h
X11/Xatom.h
X11/Xft/Xft.h
X11/Xfuncproto.h
X11/X.h
X11/XKBlib.h
X11/Xlib.h
X11/Xlibint.h
X11/Xlocale.h
X11/Xos.h
X11/Xutil.h
xpt_struct.h
xpt_xdr.h
zmouse.h
sslt.h
smime.h
cms.h
sechash.h
secoidt.h
certdb.h
secerr.h
nssb64.h
secasn1.h
secder.h
certt.h
ocsp.h
keyhi.h
cryptohi.h
crmf.h
pk11pqg.h
cmmf.h
base64.h
secdert.h
secitem.h
secmime.h
nssckbi.h
pkcs12.h
p12plcy.h
pk11sdr.h
nspr.h
pratom.h
prbit.h
prclist.h
prcmon.h
prcountr.h
prcvar.h
prdtoa.h
prenv.h
prerr.h
prerror.h
prinet.h
prinit.h
prinrval.h
prio.h
pripcsem.h
prlink.h
prlock.h
prlog.h
prlong.h
prmem.h
prmon.h
prmwait.h
prnetdb.h
prolock.h
prpdce.h
prprf.h
prproces.h
prrng.h
prrwlock.h
prshm.h
prshma.h
prsystem.h
prthread.h
prtime.h
prtpool.h
prtrace.h
prtypes.h
prvrsion.h
prwin16.h
plbase64.h
plerror.h
plgetopt.h
plresolv.h
plstr.h
plarenas.h
plarena.h
plhash.h
#if MOZ_NATIVE_PNG==1
png.h
#endif
#if MOZ_NATIVE_ZLIB==1
zlib.h
#endif
#if MOZ_ENABLE_LIBXUL!=1
#if BUILD_STATIC_LIBS!=1
#define WRAP_LCMS_HEADERS
#endif
#endif
#if MOZ_NATIVE_LCMS==1
#define WRAP_LCMS_HEADERS
#endif
#ifdef WRAP_LCMS_HEADERS
icc34.h
lcms.h
#endif
#ifdef MOZ_ENABLE_STARTUP_NOTIFICATION
libsn/sn.h
libsn/sn-common.h
libsn/sn-launchee.h
libsn/sn-launcher.h
libsn/sn-monitor.h
libsn/sn-util.h
#endif
#if MOZ_NATIVE_HUNSPELL==1
hunspell.hxx
#endif
#if MOZ_NATIVE_BZ2==1
bzlib.h
#endif

22247
mozilla/configure vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,172 +0,0 @@
2005-08-03 Alex Fritze <alex@croczilla.com>
* nsJSShStarter.js:
Register as command line handler rather than hooking into profile startup.
2005-01-31 Alex Fritze <alex@croczilla.com>
* resources/content/jssh-debug.js:
Add explanatory notes about pushContext() & its problems with QueryInterface.
2004-05-24 Alex Fritze <alex@croczilla.com>
* resources/content/jssh-debug.js: * moz-jssh.el:
Fix escaping of '//.*//.*' lines in jssh-eval-* functions.
* jssh-debug.el:
Add 'time()' function.
2004-05-24 Alex Fritze <alex@croczilla.com>
* moz-jssh.el:
Fix escaping of '//.*//.*' lines in jssh-eval-* functions.
* jssh-debug.el:
Add 'time()' function.
2004-05-07 Alex Fritze <alex@croczilla.com>
* moz-jssh.el:
Add moz-jssh-buffer-shell function which opens a jssh shell with
global object given by 'moz-jssh-buffer-globalobj'.
Also, moz-jssh-eval-internal is now fixed for commands strings
that change the context object.
* jssh-debug.js:
exit() is now overriden to unwind the context stack (global
object stack).
pushContext(obj) now sandwiches the jssh object between 'obj' and
obj.__proto__ rather than appending it to the end of the chain. This
is to prevent other objects that share 'obj's prototype inheriting
jssh's properties.
2004-04-25 Alex Fritze <alex@croczilla.com>
* moz-jssh.el:
moz-jssh-eval-buffer will now eval the given buffer on the object
given by the variable moz-jssh-buffer-globalobj. The idea is that
this variable is specified buffer-locally in the local variable
list of a file (e.g. in the first line between -*-'s).
2004-04-21 Alex Fritze <alex@croczilla.com>
* Makefile.in:
* nsJSSh.cpp:
* nsJSShServer.cpp:
Convert build to statically link the xpcom glue lib rather than
linking against xpcom.dll. The main reason is so that we can use a
debug build of the jssh component in a mozilla release build. If
we link a debug jssh against xpcom.dll and try to use it in a
non-debug Mozilla, Windows (not Linux for some reason - even in a
stripped build) will complain about missing nsDebug::*
symbols. The downside of linking in the xpcom glue lib is that it
increases the jssh xpi size by ~25KB, but I guess we can live with
that.
2004-04-20 Alex Fritze <alex@croczilla.com>
* Makefile.in:
* install.js:
Add XPI build. Run 'make xpi' to build dist/jssh-date-arch.xpi.
* nsJSSh.h:
* nsJSSh.cpp:
Update for nsIScriptObjectPrincipal deCOMification change.
2004-03-31 Alex Fritze <alex@croczilla.com>
* nsIJSShServer.idl:
* nsJSSh.cpp:
* nsJSShServer.cpp:
* jssh-debug.js:
Add support for blocking shells. nsIJSShServer::runShell() now
takes a boolean 'blocking' argument which controls whether the
shell will block the ui thread or not. jssh-debug.js adds a global
function 'jssh(startupURI)' which starts a nested blocking shell.
* nsJSSh.h:
Increase input buffer size to 100kB.
* nsIJSShServer.idl:
* nsJSSh.cpp:
* nsJSSh.h:
* nsJSShServer.cpp:
Remove redundant 'interactive' parameter from
nsIJSShServer::runShell(). The same effect of a non-interactive
shell can be achieved by passing 'null' as the input stream.
* nsJSSh.cpp:
Add new global functions:
getInputStream(): returns the current input stream (nsIInputStream)
getOutputStream(): returns the current output stream (nsIOutputStream)
2004-03-30 Alex Fritze <alex@croczilla.com>
* nsJSSh.cpp:
Add global 'debugBreak' function. Causes a break into the debugger
(debug builds only + on Linux the environment variable
'XPCOM_DEBUG_BREAK' needs to be set to 'trap').
* nsJSSh.cpp:
Add global 'flushEventQueue' function.
2004-03-26 Alex Fritze <alex@croczilla.com>
* nsJSSh.cpp:
* nsJSSh.h:
* jssh-debug.js:
* Makefile.in:
Use a wrapped native object implementing nsIScriptObjectPrincipal
instead of setting a security manager for the context with
SetSecurityManagerForJSContext(). Fixes the security-related
problems described in bug 238572.
2004-03-24 Alex Fritze <alex@croczilla.com>
* configure.xul:
Make the taskbarOverlay work on the jssh-server *service* rather
than a jssh-server instance so that it plays nice with the '-jssh'
commandline option.
* nsIJSShServer.idl:
* nsJSShServer.cpp:
* nsJSShServer.h:
Add serverListening, serverPort, serverStartupURI and
serverLoopbackOnly attributes to nsIJSShServer.
* nsJSShStarter.js:
* Makefile.in:
Added nsJSShStarter.js JS XPCOM component which automatically
starts a jssh server if mozilla is started with '-jssh'
* moz-jssh.el:
Added some keybindings:
[(control c) m j] creates a moz-jssh buffer
[(control c) m e] jssh-evaluates the current buffer
2004-03-15 Alex Fritze <alex@croczilla.com>
* nsIJSShServer.idl:
* nsJSShServer.cpp:
* configure.xul:
Add 'loopbackOnly'-option to nsIJSShServer::startServerSocket().
2004-03-14 Alex Fritze <alex@croczilla.com>
* nsJSSh.cpp:
Fix crash when foreign context objects set with 'setContextObj()'
get garbarge collected.
* jssh-debug.js:
Add functions for context pushing/popping. 'pushContext(obj)'
installs the jssh context into the proto chain of 'obj' and sets
'obj' as the current context object. 'popContext()' restores the
previous context object.
* moz-jssh.el:
Fix escaping of '//'-style comments in jssh-eval-* functions.
2004-02-19 Alex Fritze <alex@croczilla.com>
* moz-jssh.el:
Add moz-jssh-eval-buffer function.

View File

@@ -1,55 +0,0 @@
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = jssh
XPIDL_MODULE = jssh
LIBRARY_NAME = jssh
EXPORT_LIBRARY = 1
IS_COMPONENT = 1
MODULE_NAME = nsJSShModule
REQUIRES = \
xpcom \
js \
xpconnect \
string \
necko \
caps \
dom \
$(NULL)
CPPSRCS = \
nsJSShServer.cpp \
nsJSShModule.cpp \
nsJSSh.cpp \
$(NULL)
XPIDLSRCS = nsIJSShServer.idl \
nsIJSSh.idl \
$(NULL)
EXTRA_DSO_LDOPTS = \
$(XPCOM_GLUE_LDOPTS) \
$(NSPR_LIBS) \
$(MOZ_JS_LIBS) \
$(NULL)
EXTRA_COMPONENTS = nsJSShStarter.js
include $(topsrcdir)/config/rules.mk
DEFINES += -DJS_THREADSAFE
XPI_FILE = jssh-$(shell date +%Y%m%d)-$(OS_ARCH).xpi
xpi::
zip -j $(DIST)/$(XPI_FILE) $(srcdir)/install.js
cd $(DIST); zip -r $(XPI_FILE) \
bin/components/jssh.xpt \
bin/components/$(LIB_PREFIX)jssh$(DLL_SUFFIX) \
bin/components/nsJSShStarter.js \
bin/chrome/jssh.jar

View File

@@ -1,67 +0,0 @@
/* -*- Mode: Javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
var rv;
rv = initInstall("JSSh JavaScript Shell Server", "JSSh", "0.1");
logComment("initInstall: " + rv);
var programFolder = getFolder("Program");
logComment("programFolder: "+programFolder);
rv = addDirectory("Program", "0.1", "bin", programFolder, "", true);
logComment("addDirectory(bin): " + rv);
var chromeFolder = getFolder("Chrome", "jssh.jar");
logComment("chromeFolder: "+chromeFolder);
rv = registerChrome(CONTENT | DELAYED_CHROME, chromeFolder, "content/jssh/");
if (rv == ACCESS_DENIED) {
alert("Unable to write to program directory " + programFolder + ".\n You will need to restart the browser with administrator/root privileges to install this software. After installing as root (or administrator), you will need to restart the browser one more time to register the installed software.\n After the second restart, you can go back to running the browser without privileges!");
cancelInstall(rv);
logComment("cancelInstall() due to error: " + rv);
}
else if (rv != SUCCESS) {
cancelInstall(rv);
logComment("cancelInstall() due to error: " + rv);
}
else {
performInstall();
logComment("performInstall(): " + rv);
}

View File

@@ -1,3 +0,0 @@
jssh.jar:
% content jssh %content/jssh/
content/jssh/jssh-debug.js (resources/content/jssh-debug.js)

View File

@@ -1,50 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
/* this interface is only used internally for thread proxy purposes */
[uuid(c305066d-424f-41d8-9a07-4a9791d15085)]
interface nsIJSSh : nsISupports
{
void init();
void cleanup();
void executeBuffer();
boolean isBufferCompilable();
};

View File

@@ -1,99 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
interface nsIInputStream;
interface nsIOutputStream;
%{ C++
// {A1764959-87D8-4249-A432-8005DE1372FC}
#define NS_JSSHSERVER_CID \
{ 0xa1764959, 0x87d8, 0x4249, { 0xa4, 0x32, 0x80, 0x05, 0xde, 0x13, 0x72, 0xfc } }
#define NS_JSSHSERVER_CONTRACTID "@mozilla.org/jssh-server;1"
%}
[scriptable, uuid(f8b2b6bc-4f1d-42e2-af46-9a2d6ca627bf)]
interface nsIJSShServer : nsISupports
{
/* start listening for jssh connections on the given port.
'startupURI' specifies an optional script that will be executed for
new connections.
If 'loopbackOnly' is true, the server socket will only listen for connections on the
local loopback interface (localhost, 127.0.0.1). */
void startServerSocket(in unsigned long port, in AUTF8String startupURI,
in boolean loopbackOnly);
/* stop listening for connections */
void stopServerSocket();
/* true if the server is currently active */
readonly attribute boolean serverListening;
/* Port that the server is currently listening on. Zero if the
* server is not active. */
readonly attribute unsigned long serverPort;
/* startupURI of the currently active server. Empty string if the
* server is not active. */
readonly attribute AUTF8String serverStartupURI;
/* 'loopbackOnly' flag of the currently active server. false if the
* server is not active */
readonly attribute boolean serverLoopbackOnly;
/* run a jssh session with the given input and output streams.
* 'startupURI' specifies an optional script that will be executed
* on session startup.
*
* if 'input' is null, this will be a non-interactive session, with
* no input being collected from the input stream . The idea is that
* the session input is taken from startupURI. Even for
* non-interactive sessions, output (via 'print') can still be
* collected with the output stream object.
*
* if 'blocking' is 'true', then the shell will block the main ui
* thread. Otherwise this will be an asynchronous shell (but
* execution of commands will still be proxied onto the main ui
* thread).
*/
void runShell(in nsIInputStream input, in nsIOutputStream output,
in string startupURI, in boolean blocking);
};

View File

@@ -1,842 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsJSSh.h"
#include "nsIJSRuntimeService.h"
#include "nsIServiceManager.h"
#include "nsIXPConnect.h"
#include "nsIProxyObjectManager.h"
#include "nsIScriptSecurityManager.h"
#include "nsIIOService.h"
#include "nsNetCID.h"
#include "nsIChannel.h"
#include "nsThreadUtils.h"
#include "nsServiceManagerUtils.h"
#include "nsXPCOMCIDInternal.h"
#include "nsMemory.h"
#include "nsAutoPtr.h"
#ifdef PR_LOGGING
PRLogModuleInfo *gJSShLog = PR_NewLogModule("jssh");
#endif
//**********************************************************************
// Javascript Environment
const char *gWelcome = "Welcome to the Mozilla JavaScript Shell!\n";
const char *gGoodbye = "Goodbye!\n";
// GetJSShGlobal: helper for native js functions to obtain the global
// JSSh object
PRBool GetJSShGlobal(JSContext *cx, JSObject *obj, nsJSSh** shell)
{
JSAutoRequest ar(cx);
#ifdef DEBUG
// printf("GetJSShGlobal(cx=%p, obj=%p)\n", cx, obj);
#endif
JSObject *parent, *global = obj;
if (!global) {
NS_ERROR("need a non-null obj to find script global");
return PR_FALSE;
}
// in most of our cases, 'global' is already the correct obj, since
// we use bound methods. For cases where we call
// GetJSShGlobal from an unbound method, we need to walk the
// parent chain:
// XXX I think the comment above is obsolete. We only call
// GetJSShGlobal from bound methods, in which case the
// parent is the global obj. For non-bound methods, walking the
// parent chain to obtain the global object will only work when the
// method is rooted in the current script context, so it is not
// reliable (???). ASSERTION below to test the assumption. Once proven,
// remove loop.
while ((parent = JS_GetParent(cx, global))) {
NS_ERROR("Parent chain weirdness. Probably benign, but we should not reach this.");
#ifdef DEBUG
// printf(" obj's parent = %p\n", parent);
#endif
global = parent;
}
// JSClass* clazz = JS_GET_CLASS(cx, global);
// if (!IS_WRAPPER_CLASS(clazz)) {
// NS_ERROR("the script global's class is not of the right type");
// return PR_FALSE;
// }
// XXX use GetWrappedNativeOfJSObject
nsIXPConnectWrappedNative *wrapper = static_cast<nsIXPConnectWrappedNative*>(JS_GetPrivate(cx, global));
nsCOMPtr<nsISupports> native;
wrapper->GetNative(getter_AddRefs(native));
nsCOMPtr<nsIJSSh> jssh = do_QueryInterface(native);
NS_ASSERTION(jssh, "no jssh global");
*shell = static_cast<nsJSSh*>((nsIJSSh*)(jssh.get()));
return PR_TRUE;
}
JS_STATIC_DLL_CALLBACK(void)
my_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report)
{
// xxx getting the global obj from the cx. will that give us grief?
JSObject* obj = JS_GetGlobalObject(cx);
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return;
// XXX use JSErrorReport for better info
PRUint32 bytesWritten;
if (shell->mOutput) {
if (shell->mEmitHeader) {
char buf[80];
sprintf(buf, "[%d]", strlen(message));
shell->mOutput->Write(buf, strlen(buf), &bytesWritten);
}
shell->mOutput->Write(message, strlen(message), &bytesWritten);
}
}
JS_STATIC_DLL_CALLBACK(JSBool)
Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
JSAutoRequest ar(cx);
PRUint32 bytesWritten;
#ifdef DEBUG
// nsCOMPtr<nsIThread> thread;
// nsIThread::GetCurrent(getter_AddRefs(thread));
// printf("printing on thread %p, shell %p, output %p, cx=%p, obj=%p\n", thread.get(), shell, shell->mOutput, cx, obj);
#endif
for (unsigned int i=0; i<argc; ++i) {
JSString *str = JS_ValueToString(cx, argv[i]);
if (!str) return JS_FALSE;
if (shell->mOutput) {
if (shell->mEmitHeader) {
char buf[80];
sprintf(buf, "[%d]", JS_GetStringLength(str));
shell->mOutput->Write(buf, strlen(buf), &bytesWritten);
}
shell->mOutput->Write(JS_GetStringBytes(str), JS_GetStringLength(str), &bytesWritten);
}
else
printf("%s", JS_GetStringBytes(str)); // use cout if no output stream given.
#ifdef DEBUG
// printf("%s", JS_GetStringBytes(str));
#endif
}
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Quit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
PRUint32 bytesWritten;
if (shell->mOutput)
shell->mOutput->Write(gGoodbye, strlen(gGoodbye), &bytesWritten);
shell->mQuit = PR_TRUE;
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
JSAutoRequest ar(cx);
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
for (unsigned int i=0; i<argc; ++i) {
JSString *str = JS_ValueToString(cx, argv[i]);
if (!str) return JS_FALSE;
//argv[i] = STRING_TO_JSVAL(str);
const char *url = JS_GetStringBytes(str);
if (!shell->LoadURL(url, rval))
return JS_FALSE;
}
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
FlushEventQueue(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
NS_ProcessPendingEvents(nsnull);
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Suspend(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
PR_AtomicIncrement(&shell->mSuspendCount);
while (shell->mSuspendCount) {
LOG(("|"));
NS_ProcessNextEvent(thread);
}
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Resume(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
PR_AtomicDecrement(&shell->mSuspendCount);
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
AddressOf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
if (argc!=1) return JS_FALSE;
JSAutoRequest ar(cx);
// xxx If argv[0] is not an obj already, we'll get a transient
// address from JS_ValueToObject. Maybe we should throw an exception
// instead.
JSObject *arg_obj;
if (!JS_ValueToObject(cx, argv[0], &arg_obj)) {
return JS_FALSE;
}
char buf[80];
sprintf(buf, "%p", arg_obj);
JSString *str = JS_NewStringCopyZ(cx, buf);
*rval = STRING_TO_JSVAL(str);
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
SetProtocol(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
if (argc!=1) return JS_FALSE;
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
JSAutoRequest ar(cx);
JSString *str = JS_ValueToString(cx, argv[0]);
if (!str) return JS_FALSE;
char *protocol = JS_GetStringBytes(str);
if (!strcmp(protocol, "interactive")) {
shell->mEmitHeader = PR_FALSE;
shell->mPrompt = NS_LITERAL_CSTRING("\n> ");
shell->mProtocol = protocol;
}
else if (!strcmp(protocol, "synchronous")) {
shell->mEmitHeader = PR_TRUE;
shell->mPrompt = NS_LITERAL_CSTRING("\n> ");
shell->mProtocol = protocol;
}
else if (!strcmp(protocol, "plain")) {
shell->mEmitHeader = PR_FALSE;
shell->mPrompt = NS_LITERAL_CSTRING("\n");
shell->mProtocol = protocol;
}
else return JS_FALSE;
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
GetProtocol(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
JSAutoRequest ar(cx);
JSString *str = JS_NewStringCopyZ(cx, shell->mProtocol.get());
*rval = STRING_TO_JSVAL(str);
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
SetContextObj(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
JSAutoRequest ar(cx);
if (argc!=1) return JS_FALSE;
JSObject *arg_obj;
if (!JS_ValueToObject(cx, argv[0], &arg_obj)) {
return JS_FALSE;
}
if (shell->mContextObj != shell->mGlobal)
JS_RemoveRoot(cx, &(shell->mContextObj));
shell->mContextObj = arg_obj;
if (shell->mContextObj != shell->mGlobal)
JS_AddRoot(cx, &(shell->mContextObj));
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
DebugBreak(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
NS_BREAK();
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
GetInputStream(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
JSAutoRequest ar(cx);
nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID());
if (!xpc) {
NS_ERROR("failed to get xpconnect service");
return JS_FALSE;
}
nsCOMPtr<nsIXPConnectJSObjectHolder> wrapper;
xpc->WrapNative(cx, shell->mGlobal, shell->mInput,
NS_GET_IID(nsIInputStream),
getter_AddRefs(wrapper));
if (!wrapper) {
NS_ERROR("could not wrap input stream object");
return JS_FALSE;
}
JSObject* wrapper_jsobj = nsnull;
wrapper->GetJSObject(&wrapper_jsobj);
NS_ASSERTION(wrapper_jsobj, "could not get jsobject of wrapped native");
*rval = OBJECT_TO_JSVAL(wrapper_jsobj);
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
GetOutputStream(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsJSSh* shell;
if (!GetJSShGlobal(cx, obj, &shell)) return JS_FALSE;
JSAutoRequest ar(cx);
nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID());
if (!xpc) {
NS_ERROR("failed to get xpconnect service");
return JS_FALSE;
}
nsCOMPtr<nsIXPConnectJSObjectHolder> wrapper;
xpc->WrapNative(cx, shell->mGlobal, shell->mOutput,
NS_GET_IID(nsIOutputStream),
getter_AddRefs(wrapper));
if (!wrapper) {
NS_ERROR("could not wrap output stream object");
return JS_FALSE;
}
JSObject* wrapper_jsobj = nsnull;
wrapper->GetJSObject(&wrapper_jsobj);
NS_ASSERTION(wrapper_jsobj, "could not get jsobject of wrapped native");
*rval = OBJECT_TO_JSVAL(wrapper_jsobj);
return JS_TRUE;
}
// these all need JSFUN_BOUND_METHOD flags, so that we can do
// things like:
// win.p = print, where win is rooted in some other global
// object.
static JSFunctionSpec global_functions[] = {
{"print", Print, 1, JSFUN_BOUND_METHOD, 0},
{"dump", Print, 1, JSFUN_BOUND_METHOD, 0},
{"quit", Quit, 0, JSFUN_BOUND_METHOD, 0},
{"exit", Quit, 0, JSFUN_BOUND_METHOD, 0},
{"load", Load, 1, JSFUN_BOUND_METHOD, 0},
{"suspend", Suspend, 0, JSFUN_BOUND_METHOD, 0},
{"resume", Resume, 0, JSFUN_BOUND_METHOD, 0},
{"flushEventQueue", FlushEventQueue,0, JSFUN_BOUND_METHOD, 0},
{"addressOf", AddressOf, 1, 0, 0},
{"setProtocol", SetProtocol, 1, JSFUN_BOUND_METHOD, 0},
{"getProtocol", GetProtocol, 0, JSFUN_BOUND_METHOD, 0},
{"setContextObj", SetContextObj, 1, JSFUN_BOUND_METHOD, 0},
{"debugBreak", DebugBreak, 0, JSFUN_BOUND_METHOD, 0},
{"getInputStream", GetInputStream, 0, JSFUN_BOUND_METHOD, 0},
{"getOutputStream", GetOutputStream,0, JSFUN_BOUND_METHOD, 0},
{nsnull, nsnull, 0, 0, 0}
};
//**********************************************************************
// nsJSSh Implementation
nsJSSh::nsJSSh(nsIInputStream* input,
nsIOutputStream*output,
const nsACString &startupURI) :
mInput(input), mOutput(output), mQuit(PR_FALSE), mStartupURI(startupURI),
mSuspendCount(0), mPrompt("\n> "),
mEmitHeader(PR_FALSE), mProtocol("interactive")
{
}
nsJSSh::~nsJSSh()
{
LOG(("JSSh: ~connection!\n"));
}
already_AddRefed<nsIRunnable>
CreateJSSh(nsIInputStream* input, nsIOutputStream*output,
const nsACString &startupURI)
{
nsIRunnable* obj = new nsJSSh(input, output, startupURI);
NS_IF_ADDREF(obj);
return obj;
}
//----------------------------------------------------------------------
// nsISupports methods:
NS_IMPL_THREADSAFE_ADDREF(nsJSSh)
NS_IMPL_THREADSAFE_RELEASE(nsJSSh)
NS_INTERFACE_MAP_BEGIN(nsJSSh)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIJSSh)
NS_INTERFACE_MAP_ENTRY(nsIRunnable)
NS_INTERFACE_MAP_ENTRY(nsIJSSh)
NS_INTERFACE_MAP_ENTRY(nsIScriptObjectPrincipal)
NS_INTERFACE_MAP_ENTRY(nsIXPCScriptable)
NS_INTERFACE_MAP_END
//----------------------------------------------------------------------
// nsIRunnable methods:
NS_IMETHODIMP nsJSSh::Run()
{
nsCOMPtr<nsIJSSh> proxied_shell;
if (!NS_IsMainThread()) {
nsCOMPtr<nsIProxyObjectManager> pom = do_GetService(NS_XPCOMPROXY_CONTRACTID);
NS_ASSERTION(pom, "uh-oh, no proxy object manager!");
pom->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD,
NS_GET_IID(nsIJSSh),
(nsIJSSh*)this,
NS_PROXY_SYNC,
getter_AddRefs(proxied_shell));
}
else {
LOG(("jssh shell will block main thread!\n"));
proxied_shell = this;
}
proxied_shell->Init();
if (mInput) {
// read-eval-print loop
PRUint32 bytesWritten;
if (mOutput && !mProtocol.Equals(NS_LITERAL_CSTRING("plain")))
mOutput->Write(gWelcome, strlen(gWelcome), &bytesWritten);
while (!mQuit) {
if (mOutput)
mOutput->Write(mPrompt.get(), mPrompt.Length(), &bytesWritten);
// accumulate input until we get a compilable unit:
PRBool iscompilable;
mBufferPtr = 0;
#ifdef DEBUG
// nsCOMPtr<nsIThread> thread;
// nsIThread::GetCurrent(getter_AddRefs(thread));
// printf("blocking on thread %p\n", thread.get());
#endif
do {
PRUint32 bytesRead = 0;
mInput->Read(mBuffer+mBufferPtr, 1, &bytesRead);
if (bytesRead) {
++mBufferPtr;
}
else {
// connection was terminated by the client
mQuit = PR_TRUE;
break;
}
// XXX signal buffer overflow ??
// XXX ideally we want a dynamically resizing buffer.
}while (mBufferPtr<cBufferSize &&
(mBuffer[mBufferPtr-1]!=10 || (NS_SUCCEEDED(proxied_shell->IsBufferCompilable(&iscompilable)) && !iscompilable)));
NS_ASSERTION(mBufferPtr<cBufferSize, "buffer overflow");
proxied_shell->ExecuteBuffer();
}
}
proxied_shell->Cleanup();
if (!NS_IsMainThread()) {
// Shutdown the current thread, which must be done from the main thread.
nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
nsCOMPtr<nsIThread> proxied_thread;
nsCOMPtr<nsIProxyObjectManager> pom = do_GetService(NS_XPCOMPROXY_CONTRACTID);
NS_ASSERTION(pom, "uh-oh, no proxy object manager!");
pom->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD,
NS_GET_IID(nsIThread),
thread.get(),
NS_PROXY_ASYNC,
getter_AddRefs(proxied_thread));
if (proxied_thread)
proxied_thread->Shutdown();
}
return NS_OK;
}
//----------------------------------------------------------------------
// nsIJSSh methods
NS_IMETHODIMP nsJSSh::Init()
{
nsCOMPtr<nsIScriptSecurityManager> ssm = do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID);
if (!ssm) {
NS_ERROR("failed to get script security manager");
return NS_ERROR_FAILURE;
}
ssm->GetSystemPrincipal(getter_AddRefs(mPrincipal));
if (!mPrincipal) {
NS_ERROR("failed to get system principal");
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID());
if (!xpc) {
NS_ERROR("failed to get xpconnect service");
return NS_ERROR_FAILURE;
}
// Let xpconnect resync its JSContext tracker. We do this before creating
// a new JSContext just in case the heap manager recycles the JSContext
// struct.
xpc->SyncJSContexts();
nsCOMPtr<nsIJSRuntimeService> rtsvc = do_GetService("@mozilla.org/js/xpc/RuntimeService;1");
// get the JSRuntime from the runtime svc
if (!rtsvc) {
NS_ERROR("failed to get nsJSRuntimeService");
return NS_ERROR_FAILURE;
}
JSRuntime *rt = nsnull;
if (NS_FAILED(rtsvc->GetRuntime(&rt)) || !rt) {
NS_ERROR("failed to get JSRuntime from nsJSRuntimeService");
return NS_ERROR_FAILURE;
}
mJSContext = JS_NewContext(rt, 8192);
if (!mJSContext) {
NS_ERROR("JS_NewContext failed");
return NS_ERROR_FAILURE;
}
JSAutoRequest ar(mJSContext);
// Enable e4x:
JS_SetOptions(mJSContext, JS_GetOptions(mJSContext) | JSOPTION_XML);
// Always use the latest js version
JS_SetVersion(mJSContext, JSVERSION_LATEST);
mContextStack = do_GetService("@mozilla.org/js/xpc/ContextStack;1");
if (!mContextStack) {
NS_ERROR("failed to get the nsThreadJSContextStack service");
return NS_ERROR_FAILURE;
}
JS_SetErrorReporter(mJSContext, my_ErrorReporter);
nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
xpc->InitClassesWithNewWrappedGlobal(mJSContext, (nsIJSSh*)this,
NS_GET_IID(nsISupports),
PR_TRUE,
getter_AddRefs(holder));
if (!holder) {
NS_ERROR("global initialization failed");
return NS_ERROR_FAILURE;
}
holder->GetJSObject(&mGlobal);
if (!mGlobal) {
NS_ERROR("bad global object");
return NS_ERROR_FAILURE;
}
mContextObj = mGlobal;
if (!JS_DefineFunctions(mJSContext, mGlobal, global_functions)) {
NS_ERROR("failed to initialise global functions");
return NS_ERROR_FAILURE;
}
if (!mStartupURI.IsEmpty())
LoadURL(mStartupURI.get());
return NS_OK;
}
NS_IMETHODIMP nsJSSh::Cleanup()
{
nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID());
if (!xpc) {
NS_ERROR("failed to get xpconnect service");
return NS_ERROR_FAILURE;
}
{
JSAutoRequest ar(mJSContext);
if (mContextObj != mGlobal)
JS_RemoveRoot(mJSContext, &(mContextObj));
JS_ClearScope(mJSContext, mGlobal);
JS_GC(mJSContext);
}
JS_DestroyContext(mJSContext);
xpc->SyncJSContexts();
return NS_OK;
}
NS_IMETHODIMP nsJSSh::ExecuteBuffer()
{
#ifdef DEBUG
// nsCOMPtr<nsIThread> thread;
// nsIThread::GetCurrent(getter_AddRefs(thread));
// printf("executing on thread %p\n", thread.get());
#endif
JS_BeginRequest(mJSContext);
JS_ClearPendingException(mJSContext);
JSPrincipals *jsprincipals;
mPrincipal->GetJSPrincipals(mJSContext, &jsprincipals);
if(NS_FAILED(mContextStack->Push(mJSContext))) {
NS_ERROR("failed to push the current JSContext on the nsThreadJSContextStack");
return NS_ERROR_FAILURE;
}
JSScript *script = JS_CompileScriptForPrincipals(mJSContext, mContextObj, jsprincipals, mBuffer, mBufferPtr, "interactive", 0);
if (script) {
jsval result;
if (JS_ExecuteScript(mJSContext, mContextObj, script, &result) && result!=JSVAL_VOID && mOutput) {
// XXX for some wrapped native objects the following code will crash; probably because the
// native object is getting released before we reach this:
JSString *str = JS_ValueToString(mJSContext, result);
if (str) {
nsDependentString chars(reinterpret_cast<const PRUnichar*>
(JS_GetStringChars(str)),
JS_GetStringLength(str));
NS_ConvertUTF16toUTF8 cstr(chars);
PRUint32 bytesWritten;
mOutput->Write(cstr.get(), cstr.Length(), &bytesWritten);
}
}
JS_DestroyScript(mJSContext, script);
}
JSContext *oldcx;
mContextStack->Pop(&oldcx);
NS_ASSERTION(oldcx == mJSContext, "JS thread context push/pop mismatch");
JSPRINCIPALS_DROP(mJSContext, jsprincipals);
JS_EndRequest(mJSContext);
return NS_OK;
}
NS_IMETHODIMP nsJSSh::IsBufferCompilable(PRBool *_retval)
{
JSAutoRequest ar(mJSContext);
*_retval = JS_BufferIsCompilableUnit(mJSContext, mContextObj, mBuffer, mBufferPtr);
return NS_OK;
}
//----------------------------------------------------------------------
// nsIScriptObjectPrincipal methods:
nsIPrincipal *
nsJSSh::GetPrincipal()
{
return mPrincipal;
}
//----------------------------------------------------------------------
// nsIXPCScriptable methods:
#define XPC_MAP_CLASSNAME nsJSSh
#define XPC_MAP_QUOTED_CLASSNAME "JSSh"
#define XPC_MAP_WANT_NEWRESOLVE
#define XPC_MAP_FLAGS nsIXPCScriptable::USE_JSSTUB_FOR_ADDPROPERTY | \
nsIXPCScriptable::USE_JSSTUB_FOR_DELPROPERTY | \
nsIXPCScriptable::USE_JSSTUB_FOR_SETPROPERTY | \
nsIXPCScriptable::DONT_ENUM_STATIC_PROPS | \
nsIXPCScriptable::DONT_ENUM_QUERY_INTERFACE | \
nsIXPCScriptable::DONT_REFLECT_INTERFACE_NAMES
#include "xpc_map_end.h" /* This will #undef the above */
/* PRBool newResolve (in nsIXPConnectWrappedNative wrapper, in JSContextPtr cx,
in JSObjectPtr obj, in JSVal id, in PRUint32 flags, out JSObjectPtr objp); */
NS_IMETHODIMP
nsJSSh::NewResolve(nsIXPConnectWrappedNative *wrapper,
JSContext * cx, JSObject * obj,
jsval id, PRUint32 flags,
JSObject * *objp, PRBool *_retval)
{
JSBool resolved;
JSAutoRequest ar(cx);
*_retval = JS_ResolveStandardClass(cx, obj, id, &resolved);
if (*_retval && resolved)
*objp = obj;
return NS_OK;
}
//----------------------------------------------------------------------
// Implementation helpers:
PRBool nsJSSh::LoadURL(const char *url, jsval* retval)
{
nsCOMPtr<nsIIOService> ioserv = do_GetService(NS_IOSERVICE_CONTRACTID);
if (!ioserv) {
NS_ERROR("could not get io service");
return PR_FALSE;
}
nsCOMPtr<nsIChannel> channel;
ioserv->NewChannel(nsDependentCString(url), nsnull, nsnull, getter_AddRefs(channel));
if (!channel) {
NS_ERROR("could not create channel");
return PR_FALSE;
}
nsCOMPtr<nsIInputStream> instream;
channel->Open(getter_AddRefs(instream));
if (!instream) {
NS_ERROR("could not open stream");
return PR_FALSE;
}
nsCString buffer;
nsAutoArrayPtr<char> buf(new char[1024]);
if (!buf) {
NS_ERROR("could not alloc buffer");
return PR_FALSE;
}
PRUint32 bytesRead = 0;
do {
if (NS_FAILED(instream->Read(buf, 1024, &bytesRead))) {
NS_ERROR("stream read error");
return PR_FALSE;
}
buffer.Append(buf, bytesRead);
LOG(("appended %d bytes:\n%s", bytesRead, buffer.get()));
} while (bytesRead > 0);
LOG(("loaded %d bytes:\n%s", buffer.Length(), buffer.get()));
JS_BeginRequest(mJSContext);
JSPrincipals *jsprincipals;
mPrincipal->GetJSPrincipals(mJSContext, &jsprincipals);
if(NS_FAILED(mContextStack->Push(mJSContext))) {
NS_ERROR("failed to push the current JSContext on the nsThreadJSContextStack");
return NS_ERROR_FAILURE;
}
jsval result;
JSBool ok = JS_EvaluateScriptForPrincipals(mJSContext, mContextObj,
jsprincipals, buffer.get(),
buffer.Length(),
url, 1, &result);
JSPRINCIPALS_DROP(mJSContext, jsprincipals);
JSContext *oldcx;
mContextStack->Pop(&oldcx);
NS_ASSERTION(oldcx == mJSContext, "JS thread context push/pop mismatch");
if (ok && retval) *retval=result;
JS_EndRequest(mJSContext);
return ok;
}

View File

@@ -1,108 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef __NS_JSSH_H__
#define __NS_JSSH_H__
#include "jsapi.h"
#include "nsCOMPtr.h"
#include "nsIRunnable.h"
#include "nsIInputStream.h"
#include "nsIOutputStream.h"
#include "nsIJSSh.h"
#include "nsIJSContextStack.h"
#include "nsIPrincipal.h"
#include "nsStringAPI.h"
#include "nsIScriptObjectPrincipal.h"
#include "nsIXPCScriptable.h"
#ifdef MOZ_LOGGING
#define FORCE_PR_LOG
#endif
#include "prlog.h"
// NSPR_LOG_MODULES=jssh
#ifdef PR_LOGGING
extern PRLogModuleInfo *gJSShLog;
#define LOG(args) PR_LOG(gJSShLog, PR_LOG_DEBUG, args)
#else
#define LOG(args)
#endif
class nsJSSh : public nsIRunnable, public nsIJSSh,
public nsIScriptObjectPrincipal,
public nsIXPCScriptable
{
public:
nsJSSh(nsIInputStream* input, nsIOutputStream*output,
const nsACString &startupURI);
~nsJSSh();
NS_DECL_ISUPPORTS
NS_DECL_NSIRUNNABLE
NS_DECL_NSIJSSH
// nsIScriptObjectPrincipal:
virtual nsIPrincipal *GetPrincipal();
NS_DECL_NSIXPCSCRIPTABLE
public:
PRBool LoadURL(const char *url, jsval* retval=nsnull);
nsCOMPtr<nsIInputStream> mInput;
nsCOMPtr<nsIOutputStream> mOutput;
nsCOMPtr<nsIPrincipal> mPrincipal;
nsCOMPtr<nsIJSContextStack> mContextStack;
PRInt32 mSuspendCount; // for suspend()-resume()
enum { cBufferSize=100*1024 };
char mBuffer[cBufferSize];
int mBufferPtr;
JSContext* mJSContext;
JSObject *mGlobal;
JSObject *mContextObj;
PRBool mQuit;
nsCString mStartupURI;
nsCString mPrompt;
PRBool mEmitHeader;
nsCString mProtocol;
};
already_AddRefed<nsIRunnable>
CreateJSSh(nsIInputStream* input, nsIOutputStream*output,
const nsACString &startupURI);
#endif // __NS_JSSH_H__

View File

@@ -1,53 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsIGenericFactory.h"
#include "nsJSShServer.h"
NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSShServer)
static const nsModuleComponentInfo gComponents[] = {
{ "TCP/IP JavaScript Shell Server",
NS_JSSHSERVER_CID,
NS_JSSHSERVER_CONTRACTID,
nsJSShServerConstructor
}
};
NS_IMPL_NSGETMODULE(nsJSShModule, gComponents)

View File

@@ -1,247 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsJSShServer.h"
#include "nsNetCID.h"
#include "nsISocketTransport.h"
#include "nsIComponentManager.h"
#include "nsIInputStream.h"
#include "nsIOutputStream.h"
#include "nsThreadUtils.h"
#include "nsJSSh.h"
#include "nsComponentManagerUtils.h"
//**********************************************************************
// ConnectionListener helper class
class ConnectionListener : public nsIServerSocketListener
{
public:
ConnectionListener(const nsACString &startupURI);
~ConnectionListener();
NS_DECL_ISUPPORTS
NS_DECL_NSISERVERSOCKETLISTENER
private:
nsCString mStartupURI;
};
//----------------------------------------------------------------------
// Implementation
ConnectionListener::ConnectionListener(const nsACString &startupURI)
: mStartupURI(startupURI)
{
}
ConnectionListener::~ConnectionListener()
{
}
already_AddRefed<nsIServerSocketListener> CreateConnectionListener(const nsACString &startupURI)
{
nsIServerSocketListener* obj = new ConnectionListener(startupURI);
NS_IF_ADDREF(obj);
return obj;
}
//----------------------------------------------------------------------
// nsISupports methods:
NS_IMPL_THREADSAFE_ADDREF(ConnectionListener)
NS_IMPL_THREADSAFE_RELEASE(ConnectionListener)
NS_INTERFACE_MAP_BEGIN(ConnectionListener)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_ENTRY(nsIServerSocketListener)
NS_INTERFACE_MAP_END
//----------------------------------------------------------------------
// nsIServerSocketListener methods:
/* void onSocketAccepted (in nsIServerSocket aServ, in nsISocketTransport aTransport); */
NS_IMETHODIMP ConnectionListener::OnSocketAccepted(nsIServerSocket *aServ, nsISocketTransport *aTransport)
{
nsCOMPtr<nsIInputStream> input;
nsCOMPtr<nsIOutputStream> output;
aTransport->OpenInputStream(nsITransport::OPEN_BLOCKING, 0, 0, getter_AddRefs(input));
aTransport->OpenOutputStream(nsITransport::OPEN_BLOCKING, 0, 0, getter_AddRefs(output));
LOG(("JSSh server: new connection!\n"));
nsCOMPtr<nsIRunnable> shell = CreateJSSh(input, output, mStartupURI);
nsCOMPtr<nsIThread> thread;
NS_NewThread(getter_AddRefs(thread), shell);
return NS_OK;
}
/* void onStopListening (in nsIServerSocket aServ, in nsresult aStatus); */
NS_IMETHODIMP ConnectionListener::OnStopListening(nsIServerSocket *aServ, nsresult aStatus)
{
LOG(("JSSh server: stopped listening!\n"));
return NS_OK;
}
//**********************************************************************
// nsJSShServer implementation
nsJSShServer::nsJSShServer()
{
LOG(("nsJSShServer ctor\n"));
}
nsJSShServer::~nsJSShServer()
{
LOG(("nsJSShServer dtor\n"));
// XXX should we stop listening or not??
StopServerSocket();
}
//----------------------------------------------------------------------
// nsISupports methods:
NS_IMPL_ADDREF(nsJSShServer)
NS_IMPL_RELEASE(nsJSShServer)
NS_INTERFACE_MAP_BEGIN(nsJSShServer)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_ENTRY(nsIJSShServer)
NS_INTERFACE_MAP_END
//----------------------------------------------------------------------
// nsIJSShServer methods:
/* void startServerSocket (in unsigned long port, in AUTF8String startupURI,
in boolean loopbackOnly); */
NS_IMETHODIMP
nsJSShServer::StartServerSocket(PRUint32 port, const nsACString & startupURI,
PRBool loopbackOnly)
{
if (mServerSocket) {
NS_ERROR("server socket already running");
return NS_ERROR_FAILURE;
}
mServerSocket = do_CreateInstance(NS_SERVERSOCKET_CONTRACTID);
if (!mServerSocket) {
NS_ERROR("could not create server socket");
return NS_ERROR_FAILURE;
}
if (NS_FAILED(mServerSocket->Init(port, loopbackOnly, -1))) {
mServerSocket = nsnull;
NS_ERROR("server socket initialization error");
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIServerSocketListener> listener = CreateConnectionListener(startupURI);
mServerSocket->AsyncListen(listener);
mServerPort = port;
mServerStartupURI = startupURI;
mServerLoopbackOnly = loopbackOnly;
return NS_OK;
}
/* void stopServerSocket (); */
NS_IMETHODIMP nsJSShServer::StopServerSocket()
{
if (mServerSocket)
mServerSocket->Close();
mServerSocket = nsnull;
mServerPort = 0;
mServerStartupURI.Truncate();
mServerLoopbackOnly = PR_FALSE;
return NS_OK;
}
/* void runShell (in nsIInputStream input, in nsIOutputStream output,
in string startupURI, in boolean blocking); */
NS_IMETHODIMP
nsJSShServer::RunShell(nsIInputStream *input, nsIOutputStream *output,
const char *startupURI, PRBool blocking)
{
nsCOMPtr<nsIRunnable> shell = CreateJSSh(input, output, nsCString(startupURI));
if (!blocking) {
nsCOMPtr<nsIThread> thread;
NS_NewThread(getter_AddRefs(thread), shell);
}
else
shell->Run();
return NS_OK;
}
/* readonly attribute boolean serverListening; */
NS_IMETHODIMP
nsJSShServer::GetServerListening(PRBool *aServerListening)
{
if (mServerSocket)
*aServerListening = PR_TRUE;
else
*aServerListening = PR_FALSE;
return NS_OK;
}
/* readonly attribute unsigned long serverPort; */
NS_IMETHODIMP
nsJSShServer::GetServerPort(PRUint32 *aServerPort)
{
*aServerPort = mServerPort;
return NS_OK;
}
/* readonly attribute AUTF8String serverStartupURI; */
NS_IMETHODIMP
nsJSShServer::GetServerStartupURI(nsACString & aServerStartupURI)
{
aServerStartupURI = mServerStartupURI;
return NS_OK;
}
/* readonly attribute boolean serverLoopbackOnly; */
NS_IMETHODIMP
nsJSShServer::GetServerLoopbackOnly(PRBool *aServerLoopbackOnly)
{
*aServerLoopbackOnly = mServerLoopbackOnly;
return NS_OK;
}

View File

@@ -1,62 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef __NS_JSSHSERVER_H__
#define __NS_JSSHSERVER_H__
#include "nsIJSShServer.h"
#include "nsCOMPtr.h"
#include "nsIServerSocket.h"
#include "nsStringAPI.h"
class nsJSShServer : public nsIJSShServer
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIJSSHSERVER
nsJSShServer();
~nsJSShServer();
private:
nsCOMPtr<nsIServerSocket> mServerSocket;
PRUint32 mServerPort;
nsCString mServerStartupURI;
PRBool mServerLoopbackOnly;
};
#endif // __NS_JSSHSERVER_H__

View File

@@ -1,180 +0,0 @@
/* -*- Mode: Javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
try {
// this will only work pending bug#238324
importModule("resource:/jscodelib/JSComponentUtils.js");
}
catch(e) {
var ComponentUtils = {
generateFactory: function(ctor, interfaces) {
return {
createInstance: function(outer, iid) {
if (outer) throw Components.results.NS_ERROR_NO_AGGREGATION;
if (!interfaces)
return ctor().QueryInterface(iid);
for (var i=interfaces.length; i>=0; --i) {
if (iid.equals(interfaces[i])) break;
}
if (i<0 && !iid.equals(Components.interfaces.nsISupports))
throw Components.results.NS_ERROR_NO_INTERFACE;
return ctor();
}
}
},
generateNSGetModule: function(classArray, postRegister, preUnregister) {
var module = {
getClassObject: function(compMgr, cid, iid) {
if (!iid.equals(Components.interfaces.nsIFactory))
throw Components.results.NS_ERROR_NO_INTERFACE;
for (var i=0; i<classArray.length; ++i) {
if(cid.equals(classArray[i].cid))
return classArray[i].factory;
}
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
},
registerSelf: function(compMgr, fileSpec, location, type) {
debug("*** registering "+fileSpec.leafName+": [ ");
compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
for (var i=0; i<classArray.length; ++i) {
debug(classArray[i].className+" ");
compMgr.registerFactoryLocation(classArray[i].cid,
classArray[i].className,
classArray[i].contractID,
fileSpec,
location,
type);
}
if (postRegister)
postRegister(compMgr, fileSpec, classArray);
debug("]\n");
},
unregisterSelf: function(compMgr, fileSpec, location) {
debug("*** unregistering "+fileSpec.leafName+": [ ");
if (preUnregister)
preUnregister(compMgr, fileSpec, classArray);
compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
for (var i=0; i<classArray.length; ++i) {
debug(classArray[i].className+" ");
compMgr.unregisterFactoryLocation(classArray[i].cid, fileSpec);
}
debug("]\n");
},
canUnload: function(compMgr) {
return true;
}
};
return function(compMgr, fileSpec) {
return module;
}
},
get categoryManager() {
return Components.classes["@mozilla.org/categorymanager;1"]
.getService(Components.interfaces.nsICategoryManager);
}
};
}
//----------------------------------------------------------------------
// JSShStarter class
// constructor
function JSShStarter() {
}
JSShStarter.prototype = {
// nsICommandLineHandler methods:
handle : function(commandline) {
debug("JSShStarter: checking for -jssh startup option\n");
if (commandline.handleFlag("jssh", false)) {
var prefs = Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefBranch);
var port = 9997;
if (prefs.getPrefType("jssh.port") == prefs.PREF_INT){
port = prefs.getIntPref("jssh.port");
}
var startupURI = "chrome://jssh/content/jssh-debug.js";
if (prefs.getPrefType("jssh.startupURI") == prefs.PREF_STRING){
startupURI = prefs.getCharPref("jssh.startupURI");
}
var loopbackOnly = true;
if (prefs.getPrefType("jssh.loopbackOnly") == prefs.PREF_BOOL){
loopbackOnly = prefs.getBoolPref("jssh.loopbackOnly");
}
// start a jssh server with startupURI
// "chrome://jssh/content/jssh-debug.js". We use 'getService'
// instead of 'createInstance' to get a well-known, globally
// accessible instance of a jssh-server.
Components.classes["@mozilla.org/jssh-server;1"]
.getService(Components.interfaces.nsIJSShServer)
.startServerSocket(port, startupURI, loopbackOnly);
debug("JSShStarter: JSSh server started on port " + port + "\n");
}
},
helpInfo : " -jssh Start a JSSh server (default: port 9997).\n",
};
//----------------------------------------------------------------------
NSGetModule = ComponentUtils.generateNSGetModule(
[
{
className : "JSShStarter",
cid : Components.ID("28CA200A-C070-4454-AD47-551FBAE1C48C"),
contractID : "@mozilla.org/jssh-runner;1",
factory : ComponentUtils.generateFactory(function(){ return new JSShStarter();},
[Components.interfaces.nsICommandLineHandler])
}
],
function(mgr,file,arr) {
debug("register as command-line-handler");
ComponentUtils.categoryManager.addCategoryEntry("command-line-handler",
"a-jssh",
arr[0].contractID,
true, true);
},
function(mgr,file,arr) {
debug("unregister as command-line-handler");
ComponentUtils.categoryManager.deleteCategoryEntry("command-line-handler",
"a-jssh", true);
}
);

View File

@@ -1,98 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<dialog id="jssh_configure" title="Configure JSSh"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
buttons="accept,cancel"
onload="init();"
ondialogaccept="return doOK();"
ondialogcancel="return doCancel();">
<script>
var enablectrl;
var portctrl;
var scriptctrl;
function init() {
enablectrl = document.getElementById("enable");
portctrl = document.getElementById("port");
loopbackctrl = document.getElementById("loopback");
scriptctrl = document.getElementById("script");
if (!opener.jssh_server)
opener.jssh_server = { server: Components.classes["@mozilla.org/jssh-server;1"]
.getService(Components.interfaces.nsIJSShServer),
port: 9997,
useLoopbackOnly: true,
script: "chrome://jssh/content/jssh-debug.js" };
// the server might have been started from elsewhere, in which
// case we need to get the port, etc. parameters directly from the server:
if (opener.jssh_server.server.serverListening) {
opener.jssh_server.port = opener.jssh_server.server.serverPort;
opener.jssh_server.script = opener.jssh_server.server.serverStartupURI;
opener.jssh_server.useLoopbackOnly = opener.jssh_server.server.serverLoopbackOnly;
}
enablectrl.checked = (opener.jssh_server.server.serverListening);
portctrl.value = opener.jssh_server.port;
loopbackctrl.checked = opener.jssh_server.useLoopbackOnly;
scriptctrl.value = opener.jssh_server.script;
}
function doOK() {
// stop current server instance:
if (opener.jssh_server.server.serverListening) {
opener.jssh_server.server.stopServerSocket();
}
// take new values from ui:
opener.jssh_server.port = portctrl.value;
opener.jssh_server.useLoopbackOnly = loopbackctrl.checked;
opener.jssh_server.script = scriptctrl.value;
// start new server instance if requested:
if (enablectrl.checked) {
try {
opener.jssh_server.server.startServerSocket(opener.jssh_server.port, opener.jssh_server.script,
opener.jssh_server.useLoopbackOnly);
alert("The JSSh server is now running on port "+opener.jssh_server.port+".");
}catch(e){
alert("The JSSh server could not be started at the given port");
return false;
}
}
return true;
}
function doCancel() {
return true;
}
</script>
<description value="JSSh - JavaScript TCP/IP shell server"/>
<description maxwidth="300px">
Warning: If your computer is connected to the internet and you haven't
got a properly configured firewall, enabling JSSh on other interfaces
besides the loopback interface means that *ANYONE* can connect to your
machine and execute potentially harmful code!
</description>
<checkbox id="enable" label="Listen for connections"/>
<grid>
<columns>
<column/>
<column flex="1"/>
</columns>
<rows>
<row>
<label control="port" value="Port to listen on:"/>
<textbox id="port" size="5"/>
</row>
<row>
<label control="script" value="Startup script:"/>
<textbox id="script" />
</row>
</rows>
</grid>
<checkbox id="loopback" label="Restrict to local loopback interface (127.0.0.1/localhost)"/>
</dialog>

View File

@@ -1,28 +0,0 @@
<?xml version="1.0"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
<!-- list all the packages being supplied by this jar -->
<RDF:Seq about="urn:mozilla:package:root">
<RDF:li resource="urn:mozilla:package:jssh"/>
</RDF:Seq>
<!-- package information -->
<RDF:Description about="urn:mozilla:package:jssh"
chrome:displayName="JavaScript Shell Server UI"
chrome:author="Alex Fritze"
chrome:name="jssh" >
</RDF:Description>
<!-- overlay information -->
<RDF:Seq about="urn:mozilla:overlays">
<RDF:li resource="chrome://communicator/content/tasksOverlay.xul"/>
</RDF:Seq>
<!-- Communicator Overlays -->
<RDF:Seq about="chrome://communicator/content/tasksOverlay.xul">
<RDF:li>chrome://jssh/content/tasksOverlay.xul</RDF:li>
</RDF:Seq>
</RDF:RDF>

View File

@@ -1,617 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla JavaScript Shell project.
*
* The Initial Developer of the Original Code is
* Alex Fritze.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
//**********************************************************************
// a startup script with some debugging functions for JSSh
//**********************************************************************
// Debugger interface
// if (!debugservice)
// var debugservice = Components.classes["@mozilla.org/js/jsd/debugger-service;1"]
// .getService(Components.interfaces.jsdIDebuggerService);
//**********************************************************************
// General purpose commands
//----------------------------------------------------------------------
var _help_strings = {};
function help(func) {
if (!func) {
print("Usage: help(command);\n");
print("Available commands are:\n");
for (var i in _help_strings) print(i+" ");
return;
}
if (typeof func == "function") {
func = func.name;
}
var str = _help_strings[func];
if (!str) {
print("unknown command! Try help();\n");
return;
}
print(str+"\n");
}
//----------------------------------------------------------------------
_help_strings.inspect = "inspect(obj) dumps information about obj";
function inspect(obj) {
if(!obj) {
dump(obj);
return;
}
print("* Object type: "+typeof obj+"\n");
if (typeof obj != "xml") {
print("* Parent chain: ");
try {
var parent = obj.__parent__;
while(parent) {
try {
print(parent);
}
catch(e) { dump("(?)"); }
finally { dump(" "); }
parent = parent.__parent__;
}
} catch(e) { dump("...(?)"); }
print("\n");
}
switch(typeof obj) {
case "object":
print("* Prototype chain: ");
try {
var proto = obj.__proto__;
while (proto) {
try {
print(proto);
} catch(e) {
// obj.__proto__.toString threw an exception!
print("[proto.toString = "+obj.__proto__.toString+"]");
}
finally { dump(" "); }
proto = proto.__proto__;
}
} catch(e) {dump("...(?)");}
print("\n");
print("* String value: "+ obj+"\n");
print("* Members: ");
for (var i in obj) {
try {
dump(i);
}
catch(e) { dump("(?)"); }
finally { dump(" "); }
// xxx sometimes make moz hang. e.g. for inspect(debugservice)
// try{
// dump("("+(typeof obj[i])[0]+") ");
// }
// catch(e) { dump("(?) "); }
}
print("\n");
break;
case "function":
print("* Arity: "+obj.length+"\n");
print("* Function definition: ");
print(obj);
break;
case "xml":
print(obj.toXMLString()+"\n");
break;
default:
print("* String value: "+ obj +"\n");
break;
}
}
//----------------------------------------------------------------------
_help_strings.subobjs = "subobjs(obj, type) list all subobjects of object obj that have type 'type' (default='object')";
function subobjs(obj, type) {
if (!type) type="object";
for (var o in obj) {
try {
if (typeof obj[o]==type)
print(o+" ");
}
catch(e) {
print(o+"(?) ");
}
}
print("\n");
}
//----------------------------------------------------------------------
_help_strings.dumpIDL = "dumpIDL(iid) dumps idl code for interface iid.\niid can either be an interface, or a string of form 'Components.interfaces.nsIFoo' or just 'nsIFoo'";
function dumpIDL(iid) {
var gen = Components.classes["@mozilla.org/interfaceinfotoidl;1"]
.createInstance(Components.interfaces.nsIInterfaceInfoToIDL);
if (typeof iid == "string") {
if (!/Components.interfaces./.test(iid)) {
iid = "Components.interfaces."+iid;
}
iid = eval(iid);
}
dump(gen.generateIDL(iid, false, false));
}
//----------------------------------------------------------------------
_help_strings.getWindows = "getWindows() returns a list of all currently open windows";
function getWindows() {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var enumerator = wm.getEnumerator(null);
var retval = [];
while (enumerator.hasMoreElements())
retval.push(enumerator.getNext());
return retval;
}
//----------------------------------------------------------------------
_help_strings.findClass = "findClass(/regex/) finds registered classes matching /regex/";
function findClass(regex) {
for (var c in Components.classes)
if (regex.test(c)) print(c+" ");
}
//----------------------------------------------------------------------
_help_strings.findInterface = "findInterface(/regex/) finds registered interfaces matching /regex/";
function findInterface(regex) {
for (var i in Components.interfaces)
if (regex.test(i)) print(i+" ");
}
//----------------------------------------------------------------------
_help_strings.dumpStack = "dumpStack(offset, max_depth) displays a stack trace up to depth max_depth (default: 10) starting 'offset' frames below the current one";
function dumpStack(offset, max_depth) {
if (!offset || offset<0) offset = 0;
if (!max_depth) max_depth = 10;
var frame = Components.stack;
while(--max_depth && (frame=frame.caller)) {
if (!offset)
dump(frame+"\n");
else
--offset;
}
}
//----------------------------------------------------------------------
_help_strings.jssh = "jssh(startupURI) runs a blocking interactive javascript shell";
function jssh(startupURI) {
Components.classes["@mozilla.org/jssh-server;1"]
.getService(Components.interfaces.nsIJSShServer)
.runShell(getInputStream(), getOutputStream(), startupURI, true);
}
//----------------------------------------------------------------------
_help_strings.hex = "hex(str, octets_per_line) returns the hexadecimal representation of the given string. octets_per_line is optional and defaults to 4.";
function hex(str, octets_per_line) {
var rv = "";
if (!octets_per_line) octets_per_line = 4;
for (var i=0, l=str.length; i<l; ++i) {
var code = str.charCodeAt(i).toString(16);
if (code.length == 1) code = "0"+code;
rv += code + " ";
if (i % octets_per_line == octets_per_line-1) rv += "\n";
}
return rv;
}
//**********************************************************************
// Function instrumentation:
// global hash to keep track of instrumented objs/funcs
if (!_instrumented_objects)
var _instrumented_objects = {};
//----------------------------------------------------------------------
_help_strings.getInstrumented = "getInstrumented(obj, func) returns an object with instrumentation data for the given (obj, func). It can be used to change instrumentation functions or operation-flags for the instrumentation functions . Members include \n'old': old method that will be called.\n'before', 'after': before and after methods\nThe default before and after methods recognise the flags (set by defining/unset by deleting):\n'stack' : show stack trace\n'nargs' : don't show args\n'nresult' : don't show result/exception status on exiting.";
function getInstrumented(obj, func) {
return _instrumented_objects[obj][func];
}
//----------------------------------------------------------------------
_help_strings.instrument = "instrument(obj, func, beforeHook, afterHook) instruments func on obj. obj and func need to be strings. Optional beforeHook and afterHook are the methods called before and after the instrumented method is being called. Signature for before hook functions is hook(obj, func, argv). Signature for after hook functions is hook(obj, func, argv, retval, exception). Return value of after hook will be taken as return value for function call";
// default hooks for instrumented functions:
function _defaultBeforeHook(obj, func, argv) {
print("* Entering "+obj+"."+func+"\n");
if (getInstrumented(obj,func)["nargs"]===undefined) {
print("* Arguments("+argv.length+"): " );
for (var i=0;i<argv.length;++i) print("'"+argv[i]+"' ");
print("\n");
}
if (getInstrumented(obj,func)["stack"]!==undefined) {
print("* Stack: \n");
dumpStack(2);
}
}
function _defaultAfterHook(obj, func, argv, retval, ex) {
print("* Exiting "+obj+"."+func+"\n");
if (getInstrumented(obj,func)["nresult"]===undefined){
print("* Result: ");
if (!ex)
print(retval+"\n");
else
print("An exception was thrown!\n");
}
return retval;
}
function instrument(obj, func, beforeHook, afterHook) {
if (typeof obj!="string"||typeof func!="string") {
help("instrument");
return;
}
if (!_instrumented_objects[obj])
_instrumented_objects[obj] = {};
if (_instrumented_objects[obj][func]) {
print("obj.function is already instrumented!");
return;
}
if (!beforeHook) beforeHook = _defaultBeforeHook;
if (!afterHook) afterHook = _defaultAfterHook;
_instrumented_objects[obj][func] = {};
_instrumented_objects[obj][func]["old"] = eval(obj)[func];
_instrumented_objects[obj][func]["before"] = beforeHook;
_instrumented_objects[obj][func]["after"] = afterHook;
eval(obj)[func] = function() {
_instrumented_objects[obj][func]["before"](obj, func, arguments);
var retval;
var ex;
try {
retval = _instrumented_objects[obj][func]["old"].apply(this, arguments);
}
catch(e) {
ex = e;
throw (e);
}
finally {
retval = _instrumented_objects[obj][func]["after"](obj, func, arguments, retval, ex);
}
return retval;
}
}
//----------------------------------------------------------------------
_help_strings.dumpInstrumented = "dumpInstrumented() prints a list of all currently instrumented functions.";
function dumpInstrumented() {
for (var obj in _instrumented_objects) {
for (var method in _instrumented_objects[obj]) {
dump(obj+"."+method+" ");
}
}
print("\n");
}
//----------------------------------------------------------------------
_help_strings.uninstrument = "uninstrument(obj, func) uninstruments func on obj. obj and func need to be strings.";
function uninstrument(obj, func) {
if (typeof obj!="string"||typeof func!="string") {
help("uninstrument");
return;
}
if (!_instrumented_objects[obj] || !_instrumented_objects[obj][func]) {
print("obj.function is not instrumented!");
return;
}
eval(obj)[func] = _instrumented_objects[obj][func]["old"];
delete _instrumented_objects[obj][func];
}
//**********************************************************************
// DOM utils:
//----------------------------------------------------------------------
_help_strings.domNode = "domNode(base, child1, child2, ...) returns the dom node identified by base and the child offsets. The child offset can be of form 'a5' to identify the anonymous child at position 5.";
function domNode(base) {
var node = base;
for (var i=1; i<arguments.length; ++i) {
if (typeof arguments[i] == "number") {
node = node.childNodes[arguments[i]];
}
else if(arguments[i][0]=='a') {
var idx = arguments[i].substring(1, arguments[i].length);
node = node.ownerDocument.getAnonymousNodes(node)[idx];
}
}
return node;
}
//----------------------------------------------------------------------
_help_strings.domDumpFull = "domDumpFull(node) dumps the *complete* DOM starting from node.";
function domDumpFull(node) {
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"]
.getService(Components.interfaces.nsIDOMSerializer);
print(serializer.serializeToString(node));
}
//----------------------------------------------------------------------
_help_strings.domDump = "domDump(node) dumps the DOM around 'node'";
function domDump(node){
var wantChildren = false;
var wantAnonChildren = false;
switch(node.nodeType) {
case Components.interfaces.nsIDOMNode.DOCUMENT_NODE:
print("<#document>\n");
wantChildren = true;
break;
case Components.interfaces.nsIDOMNode.ELEMENT_NODE:
print("* Parent: <"+node.parentNode.nodeName+">\n");
print("<"+node.nodeName);
for (var i=0; i<node.attributes.length;++i) {
var attr = node.attributes.item(i);
print(" "+attr.nodeName+"='"+attr.nodeValue+"'");
}
print(">\n");
wantChildren = true;
wantAnonChildren = true;
break;
default:
break;
}
if (wantChildren && node.hasChildNodes()) {
print("* Children: \n");
for (var i=0; i<node.childNodes.length;++i) {
print(" ["+i+"]: <"+node.childNodes[i].nodeName+">\n");
}
}
if (wantAnonChildren) {
var anlist = node.ownerDocument.getAnonymousNodes(node);
if (anlist && anlist.length) {
print("* Anonymous Children: \n");
for (var i=0; i<anlist.length;++i) {
print(" A["+i+"]: <"+anlist[i].nodeName+">\n");
}
}
}
}
//**********************************************************************
// RDF utils:
//----------------------------------------------------------------------
_help_strings.rdfDump = "rdfDump(url) dumps the rdf datasource at 'url' in the following form:\n\n"+
" <Resource> \n"+
" |\n"+
" |--[Resource]--> <Resource>\n"+
" |\n"+
" |--[Resource]--> {literal}\n\n"+
"If 'url' points to a remote datasource, it will be refreshed before dumping.";
function rdfDump(url) {
var RDFService = Components.classes["@mozilla.org/rdf/rdf-service;1"]
.getService(Components.interfaces.nsIRDFService);
var ds = RDFService.GetDataSourceBlocking(url);
// make sure the ds is up-to-date:
try {
var remote = ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
remote.Refresh(true);
}
catch(e) {
// not a remote ds.
}
const RESOURCE_IID = Components.interfaces.nsIRDFResource;
const LITERAL_IID = Components.interfaces.nsIRDFLiteral;
const DATE_IID = Components.interfaces.nsIRDFDate;
const INT_IID = Components.interfaces.nsIRDFInt;
const BLOB_IID = Components.interfaces.nsIRDFBlob;
var resources = ds.GetAllResources();
while (resources.hasMoreElements()) {
var resource = resources.getNext().QueryInterface(RESOURCE_IID);
print("\n<" + resource.Value + ">\n");
var arcs = ds.ArcLabelsOut(resource);
while (arcs.hasMoreElements()) {
var arc = arcs.getNext().QueryInterface(RESOURCE_IID);
print(" |\n");
print(" |--["+arc.Value +"]--> ");
var targets = ds.GetTargets(resource,arc,true);
while (targets.hasMoreElements()) {
var target = targets.getNext();
// target can be resource or literal string, date, int or blob:
try {
var target_as_resource = target.QueryInterface(RESOURCE_IID);
print("<"+target_as_resource.Value+"> ");
continue;
} catch(e) {}
try {
var target_as_literal = target.QueryInterface(LITERAL_IID);
print("{String=\""+target_as_literal.Value+"\"} ");
continue;
} catch(e) {}
try {
var target_as_date = target.QueryInterface(DATE_IID);
print("{Date="+target_as_date.Value+"} ");
continue;
} catch(e) {}
try {
var target_as_int = target.QueryInterface(INT_IID);
print("{Int="+target_as_int.Value+"} ");
continue;
} catch(e) {}
try {
var target_as_blob = target.QueryInterface(INT_BLOB);
print("{Blob with length="+target_as_blob.length+"} ");
continue;
} catch(e) {}
}
print("\n");
}
}
}
//**********************************************************************
// Support for 'live' development:
//
// pushContext(obj) inserts the JSSh object into the prototype chain
// of obj and set obj as the current context object. This then gives
// the appearance as if obj is the current 'global' object. So
// e.g. variables that are set with 'var foo = ...' will end up in
// obj. Function calls 'bar()' map to 'obj->bar()'.
//
// XXX JSSh is inserted at the top of the prototype chain, between obj
// and its old prototype. This is so that we don't get JSSh functions
// appearing in *all* objects. (If we inserted JSSh at the bottom of
// the proto chain, its functions would be "inherited" by all objects
// that are rooted in the same object). The problem with this scheme
// is that JSSh can shadow certain functions, most notably
// QueryInterface, when JSSh is inserted between a wrapped native and
// its prototype.
// global context stack
if (!_context_objects)
var _context_objects = [{obj:this,proto:this.__proto__}];
//----------------------------------------------------------------------
_help_strings.pushContext = "pushContext(obj) installs the jssh context into the proto chain of 'obj' and sets 'obj' as the current context object";
function pushContext(obj) {
var context = {"obj":obj, "proto":obj.__proto__};
// sandwich jssh object between obj and its prototype:
_context_objects[0].obj.__proto__ = obj.__proto__;
obj.__proto__ = _context_objects[0].obj;
// push context and set new context object:
_context_objects.push(context);
setContextObj(obj);
}
//----------------------------------------------------------------------
_help_strings.popContext = "popContext() restores the context object set before the last call to pushContext(.)";
function popContext() {
if (_context_objects.length<2) {
print("Context stack empty\n");
return;
}
var context = _context_objects.pop();
// remove jssh obj from proto chain:
context.obj.__proto__ = context.proto;
// restore jssh object's prototype:
_context_objects[0].obj.__proto__ = _context_objects[_context_objects.length-1].proto;
// switch to previous context:
setContextObj(_context_objects[_context_objects.length-1].obj);
}
// override global 'exit()' function to pop the context stack:
exit = (function() {
var _old_exit = exit;
return function() {
try {
while(_context_objects.length>1)
popContext();
} catch(e) {}
_old_exit();
}})();
//----------------------------------------------------------------------
_help_strings.reloadXBLDocument = "reloadXBLDocument(url) reloads the xbl file 'url'. If defined, reloadXBLDocumentHook(url) is called before reloading.";
function reloadXBLDocument(url){
try {
reloadXBLDocumentHook(url);
}catch(e){}
var chromeCache = Components.classes["@mozilla.org/xul/xul-prototype-cache;1"].getService(Components.interfaces.nsIChromeCache);
// Clear and reload the chrome file:
chromeCache.flushXBLDocument(url);
getWindows()[0].document.loadBindingDocument(url);
}
//----------------------------------------------------------------------
_help_strings.reloadXULDocument = "reloadXULDocument(url) reloads the xul file 'url'. If defined, reloadXULDocumentHook(url) is called before reloading.";
function reloadXULDocument(url){
try {
reloadXULDocumentHook(url);
}catch(e){}
var chromeCache = Components.classes["@mozilla.org/xul/xul-prototype-cache;1"].getService(Components.interfaces.nsIChromeCache);
// Clear and reload the chrome file:
chromeCache.flushXULPrototype(url);
}
//----------------------------------------------------------------------
_help_strings.time = "time(fct) returns execution time of 'fct' in milliseconds.";
function time(fct) {
var start = new Date();
fct();
var end = new Date();
return end.getTime() - start.getTime();
}
////////////////////////////////////////////////////////////////////////
// ZAP specific debug functions:
//----------------------------------------------------------------------
_help_strings.lastError = "lastError() returns the last verbose error from the zap verbose error service";
function lastError() {
var errorService = Components.classes["@mozilla.org/zap/verbose-error-service;1"]
.getService(Components.interfaces.zapIVerboseErrorService);
return errorService.lastMessage;
}
//----------------------------------------------------------------------
_help_strings.dialogs = "dialogs() returns a list of currently active dialogs & associated info";
function dialogs() {
var rv = "";
var pool = getWindows()[0].wSipStack.wrappedJSObject.dialogPool;
for (var d in pool) {
rv += "callid="+pool[d].callID+"\n"+
"state="+pool[d].dialogState+"\n"+
"local tag="+pool[d].localTag+
" remote tag="+pool[d].remoteTag+"\n"+
"local uri="+pool[d].localURI.serialize()+"\n"+
"remote uri="+pool[d].remoteURI.serialize()+"\n"+
"remote target="+pool[d].remoteTarget.serialize()+"\n"+
"local seq="+pool[d].localSequenceNumber+
" remote seq="+pool[d].remoteSequenceNumber+
"\n\n";
}
return rv;
}

View File

@@ -1,19 +0,0 @@
<?xml version="1.0"?>
<overlay id="jsshTasksOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript">
function jssh_configure() {
window.openDialog("chrome://jssh/content/configure.xul", "jssh_configure", "chrome");
}
</script>
<menupopup id="toolsPopup">
<menuitem id="menu_jssh" label="JSSh"
oncommand="jssh_configure();" />
</menupopup>
</overlay>

View File

@@ -1,318 +0,0 @@
;;; moz-jssh.el
;;; utilities for connecting to a live mozilla jssh server
;;;
;;; copyright (c)2003 Alex Fritze <alex@croczilla.com>
(provide 'moz-jssh)
(require 'cl)
(defvar moz-jssh-host "localhost" "*Host that JSSh server is running on")
(defvar moz-jssh-port 9997 "*Port that JSSh service is running on")
;; ----------------------------------------------------------------------
;; Functions for evaluating js code
(defun* moz-jssh-eval-internal (command process &key obj)
"Execute js command line 'command' for jssh process 'process'. If the
optional arg :obj is specified, the command will be executed on the
given object. Newlines in 'command' will be replaced with a space and comments will be properly escaped."
(let ((finished nil)
(result "")
(unparsed "")
(parse-reply (function (lambda (str)
(cond ((string-match "^\\[\\([^\]]*\\)\\]" str)
(let ((l (string-to-number
(substring str
(match-beginning 1)
(match-end 1))))
(start (+ 1 (match-end 1))))
(cond ((> (+ start l) (length str))
(setq unparsed str))
(t
(setq result
(concat result
(substring str
start (+ start l))))
(funcall parse-reply (substring str (+ start l)))))))
((string-match "\n> $" str)
(setq finished t))
(t
(setq unparsed str))))))
(null-filter (function (lambda (proc mess) nil)))
(receive-filter (function (lambda (proc mess)
(setq mess (concat unparsed mess))
(setq unparsed "")
(funcall parse-reply mess)))))
(unwind-protect
(progn
;; set up the session
(set-process-filter process null-filter)
(process-send-string process (concat "__JSSH_protocol__ = getProtocol();"
"setProtocol('synchronous');"
(if obj (concat obj
".__JSSH_shell__ = this;"
"setContextObj(" obj ");"))
"\n"))
;; eat prompt
(accept-process-output process)
;; send the command
;; XXX our protocol currently requires that there is a single
;; newline at the end of the command only (have to be careful with
;; '//'-style comments and '//' in strings):
(let ((commandlist (split-string command "\n")))
(setq commandlist (mapcar (lambda (s)
(replace-in-string s "^\\(\\(\\(/[^/]\\)\\|[^\"/]\\|\\(\"[^\"]*\"\\)\\)*\\)\\(//.*\\)$" "\\1 "))
commandlist))
(setq command (apply 'concat commandlist)))
;;(setq result (concat result "Command:\n" command "\n\nResult:\n"))
(set-process-filter process receive-filter)
(process-send-string process (concat command "\n"))
;; wait for output
(while (not finished) (accept-process-output process))
;; now restore the session
(set-process-filter process null-filter)
(if obj
(progn
(process-send-string process "__JSSH_shell__.setContextObj(__JSSH_shell__)\n")
;; eat prompt
(accept-process-output process)))
(process-send-string process (concat "setProtocol(__JSSH_protocol__);"
"delete __JSSH_protocol__;"
"delete " (if obj obj "this") ".__JSSH_shell__;\n"))
;; eat prompt
(accept-process-output process))
;; remove filter, so that future output goes whereever it is supposed to:
(set-process-filter process nil))
result))
(defun* moz-jssh-eval-anonymous (command &rest rest &key &allow-other-keys)
"Evaluate a command in a temporary anonymous Mozilla JavaScript
shell. Optional keyed parameters will be passed to
`moz-jssh-eval-internal'."
(interactive "sCommand: ")
(let ((initialized nil)
(result nil)
(conn (open-network-stream "moz-jssh"
(buffer-name)
moz-jssh-host moz-jssh-port)))
(set-process-filter conn (function (lambda (proc mess)
(if (string-match "\n> $" mess)
(setq initialized t)))))
(unwind-protect
(progn
(while (not initialized) (accept-process-output conn))
(setq result (apply 'moz-jssh-eval-internal command conn :allow-other-keys t rest)))
(delete-process conn))
(if (interactive-p)
(if (string-match "\n" result) ; more than one line
(with-output-to-temp-buffer "*moz-jssh-eval-anonymous*"
(princ result))
(message "%s" result))
result)))
(defun get-region-string ()
"Helper to return the current region as a string, or nil otherwise."
(let ((buf (zmacs-region-buffer)))
(if buf
(buffer-substring (mark t buf) (point buf)))))
(defun* moz-jssh-eval (&optional &rest rest &key cmd buffer &allow-other-keys)
"Evaluate the jssh command line given by the active region, the cmd
argument or interactively prompted for. If the optional argument
buffer is given, the command will be executed for the jssh-process
attached to that buffer. If the buffer doesn't have an attached
jssh-process, or the arg doesn't name a valid buffer, then the command
will be executed in a temporary shell. If the argument buffer is not
given, the command will be executed for the current buffer if that
buffer has an attached jssh-process. If it hasn't, the command will
be executed in the buffer *moz-jssh* if it exists or in a temporary
shell if there is no buffer called *moz-jssh*. Additional (keyed)
arguments can be given and will be passed to
`moz-jssh-eval-internal'."
(interactive)
(or cmd (setq cmd (get-region-string)))
(if (and (interactive-p) (not cmd))
(setq cmd (read-input "Command: ")))
(let ((result (cond ((and (or (stringp buffer) (bufferp buffer))
(get-buffer-process buffer)
(string-match "moz-jssh" (process-name (get-buffer-process buffer))))
(apply 'moz-jssh-eval-internal
cmd
(get-buffer-process buffer)
:allow-other-keys t rest))
((and (not buffer)
(get-buffer-process (current-buffer))
(string-match "moz-jssh" (process-name (get-buffer-process (current-buffer)))))
(apply 'moz-jssh-eval-internal
cmd
(get-buffer-process (current-buffer))
:allow-other-keys t rest))
((and (not buffer)
(get-buffer-process "*moz-jssh*")
(string-match "moz-jssh" (process-name (get-buffer-process "*moz-jssh*"))))
(apply 'moz-jssh-eval-internal
cmd
(get-buffer-process "*moz-jssh*")
:allow-other-keys t rest))
(t
(apply 'moz-jssh-eval-anonymous
cmd
:allow-other-keys t rest)))))
(if (interactive-p)
(if (string-match "\n" result) ; more than one line
(with-output-to-temp-buffer "*moz-jssh-eval*"
(princ result))
(message "%s" result)) result)))
(defvar moz-jssh-buffer-globalobj nil "js object that a call to
`moz-jssh-eval-buffer' will be evaluted on.")
(defun* moz-jssh-eval-buffer (&optional &rest rest &allow-other-keys)
"Evaluate the current buffer in a jssh shell. If the variable
`moz-jssh-buffer-globalobj' is not null and there is a jssh shell
buffer called *moz-jssh*, then this buffer will be used as the
executing shell. Otherwise a temporary shell will be created. The
buffer content will be executed on the object given by
`moz-jssh-buffer-globalobj' or on the shell's global object if
`moz-jssh-buffer-globalobj' is null. Output will be shown in the
buffer *moz-jssh-eval*. Additional (keyed) arguments can be given and
will be passed to `moz-jssh-eval-internal'."
(interactive)
(let ((result (cond ((and (not moz-jssh-buffer-globalobj)
(get-buffer-process "*moz-jssh*")
(string-match "moz-jssh" (process-name (get-buffer-process "*moz-jssh*"))))
(apply 'moz-jssh-eval-internal
(buffer-string)
(get-buffer-process "*moz-jssh*")
:allow-other-keys t rest))
(t
(apply 'moz-jssh-eval-anonymous
(buffer-string)
:obj moz-jssh-buffer-globalobj
:allow-other-keys t rest)))))
(if (interactive-p)
(if (string-match "\n" result) ; more than one line
(with-output-to-temp-buffer "*moz-jssh-eval*"
(princ result))
(message "%s" result)) result)))
;; ----------------------------------------------------------------------
;; some inspection functions:
(defun* moz-jssh-inspect (obj &rest rest &allow-other-keys)
"Inspect the given object"
(interactive "sObject to inspect: ")
(let ((result (apply 'moz-jssh-eval
:cmd (concat "inspect(" obj ");")
:allow-other-keys t rest)))
(if (interactive-p)
(if (string-match "\n" result) ; multi-line result
(with-output-to-temp-buffer "*moz-jssh-inspect*"
(save-excursion
(set-buffer "*moz-jssh-inspect*")
(javascript-mode)
(font-lock-mode))
(princ (concat "inspect(" obj ") :\n" result)))
(message "%s" (concat "inspect(" obj ") -> " result)))
result)))
(defun* moz-jssh-inspect-interface (itf &rest rest &allow-other-keys)
"Shows the IDL definition of the given interface"
(interactive "sInterface name: ")
(let ((result (apply 'moz-jssh-eval
:cmd (concat "dumpIDL(\"" itf "\");")
:allow-other-keys t rest)))
(if (interactive-p)
(if (string-match "\n" result) ; multi-line result
(with-output-to-temp-buffer "*moz-jssh-inspect*"
(save-excursion
(set-buffer "*moz-jssh-inspect*")
(idl-mode)
(font-lock-mode))
(princ result))
(message "%s" result))
result)))
;; ----------------------------------------------------------------------
;; Shell for interacting with Mozilla through a JavaScript shell
(defun moz-jssh ()
"Connect to a running Mozilla JavaScript shell (jssh) server. "
(interactive)
(require 'comint)
(unless (comint-check-proc "*moz-jssh*")
(set-buffer
(make-comint "moz-jssh" (cons moz-jssh-host moz-jssh-port)))
(moz-jssh-mode))
(pop-to-buffer "*moz-jssh*"))
;; ----------------------------------------------------------------------
;; Open a shell for current buffer.
(defun moz-jssh-buffer-shell ()
"Connect to a running Mozilla JavaScript shell (jssh) server. Same
as `moz-jssh', but honours the variable moz-jssh-buffer-globalobj if
defined."
(interactive)
(require 'comint)
(let* ((procname (concat "moz-jssh"
(if moz-jssh-buffer-globalobj
(concat "-" (buffer-name)))))
(buffername (concat "*" procname "*"))
;; need to save gobj because it is buffer local & we're going
;; to switch buffers:
(gobj moz-jssh-buffer-globalobj))
(unless (comint-check-proc buffername)
(set-buffer
(make-comint procname (cons moz-jssh-host moz-jssh-port)))
(moz-jssh-mode)
(if (not gobj)
()
;; eat greeting & prompt before sending command. XXX this is
;; getting a bit dodgy.time to rewrite the protocol.
(accept-process-output (get-buffer-process buffername) 1)
(accept-process-output (get-buffer-process buffername) 1)
(message "%s" (moz-jssh-eval :cmd (concat "pushContext(" gobj ")")))))
(pop-to-buffer buffername)))
;; ----------------------------------------------------------------------
;; Major mode for moz-jssh buffers
(defvar moz-jssh-mode-map nil)
(defun moz-jssh-mode-commands (map)
(define-key map [(home)] 'comint-bol)
(define-key map [(control c)(i)] 'moz-jssh-inspect))
(defun moz-jssh-mode ()
"Major mode for interacting with a Mozilla JavaScript shell.
\\{moz-jssh-mode-map}
"
(comint-mode)
(setq comint-prompt-regexp "^> *"
mode-name "moz-jssh"
major-mode 'moz-jssh-mode)
(if moz-jssh-mode-map
nil
(setq moz-jssh-mode-map (copy-keymap comint-mode-map)) ; XXX could inherit instead of copying
(moz-jssh-mode-commands moz-jssh-mode-map))
(use-local-map moz-jssh-mode-map))
;;----------------------------------------------------------------------
;; global keybindings
(if (keymapp 'moz-prefix)
()
(define-prefix-command 'moz-prefix)
(global-set-key [(control c) m] 'moz-prefix))
(global-set-key [(control c) m j] 'moz-jssh)
(global-set-key [(control c) m s] 'moz-jssh-buffer-shell)
(global-set-key [(control c) m e] 'moz-jssh-eval-buffer)

View File

@@ -1,67 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xpconnect
DIRS = public idl
ifdef MOZ_JSLOADER
DIRS += loader
endif
DIRS += src
ifndef MINIMO
TOOL_DIRS += shell
endif
ifdef ENABLE_TESTS
TOOL_DIRS += tests
endif
ifdef MOZ_XPCTOOLS
TOOL_DIRS += tools
endif
include $(topsrcdir)/config/rules.mk

View File

@@ -1,78 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xpconnect
GRE_MODULE = 1
SDK_XPIDLSRCS = \
mozIJSSubScriptLoader.idl \
$(NULL)
XPIDLSRCS = \
xpccomponents.idl \
xpcjsid.idl \
xpcexception.idl \
xpcIJSModuleLoader.idl \
nsIJSContextStack.idl \
nsIJSRuntimeService.idl \
nsIXPConnect.idl \
nsIXPCSecurityManager.idl \
nsIXPCScriptable.idl \
nsIScriptError.idl \
nsIXPCScriptNotify.idl \
nsIScriptableInterfaces.idl \
XPCIDispatch.idl \
xpcIJSWeakReference.idl \
$(NULL)
ifdef XPC_IDISPATCH_SUPPORT
XPIDLSRCS += \
nsIDispatchSupport.idl \
nsIActiveXSecurityPolicy.idl \
$(NULL)
endif
include $(topsrcdir)/config/rules.mk

View File

@@ -1,95 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ----- BEGIN LICENSE BLOCK -----
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2004
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alex Fritze <alex@croczilla.com> (original author)
*
* Alternatively, the contents of this file may be used under the
* terms of either the GNU General Public License Version 2 or later
* (the "GPL"), or the GNU Lesser General Public License Version 2.1
* or later (the "LGPL"), in which case the provisions of the GPL or
* the LGPL are applicable instead of those above. If you wish to
* allow use of your version of this file only under the terms of
* either the GPL or the LGPL, and not to allow others to use your
* version of this file under the terms of the NPL, indicate your
* decision by deleting the provisions above and replace them with the
* notice and other provisions required by the GPL or the LGPL. If you
* do not delete the provisions above, a recipient may use your
* version of this file under the terms of any one of the MPL, the GPL
* or the LGPL.
*
* ----- END LICENSE BLOCK ----- */
#include "nsISupports.idl"
[ptr] native nsAXPCNativeCallContextPtr(nsAXPCNativeCallContext);
%{C++
struct JSObject;
%}
[ptr] native JSObjectPtr(JSObject);
[scriptable, uuid(89da3673-e699-4f26-9ed7-11a528011434)]
interface xpcIJSModuleLoader : nsISupports
{
/**
* To be called from JavaScript only.
*
* Synchronously loads and evaluates the js file located at
* 'registryLocation' with a new, fully privileged global object.
*
* If 'targetObj' is specified and equal to null, returns the
* module's global object. Otherwise (if 'targetObj' is not
* specified, or 'targetObj' is != null) looks for a property
* 'EXPORTED_SYMBOLS' on the new global object. 'EXPORTED_SYMBOLS'
* is expected to be an array of strings identifying properties on
* the global object. These properties will be installed as
* properties on 'targetObj', or, if 'targetObj' is not specified,
* on the caller's global object. If 'EXPORTED_SYMBOLS' is not
* found, an error is thrown.
*
* @param resourceURI A resource:// URI string to load the module from.
* @param targetObj the object to install the exported properties on.
* If this parameter is a primitive value, this method throws
* an exception.
* @returns the module code's global object.
*
* The implementation maintains a hash of registryLocation->global obj.
* Subsequent invocations of importModule with 'registryLocation'
* pointing to the same file will not cause the module to be re-evaluated,
* but the symbols in EXPORTED_SYMBOLS will be exported into the
* specified target object and the global object returned as above.
*
* (This comment is duplicated to nsIXPCComponents_Utils.)
*/
void /* JSObject */ import(in AUTF8String aResourceURI
/* , [optional] in JSObject targetObj */);
/**
* Imports the JS module at 'registryLocation' to the JS object
* 'targetObj' (if != null) as described for importModule() and
* returns the module's global object.
*/
[noscript] JSObjectPtr importInto(in AUTF8String aResourceURI,
in JSObjectPtr targetObj,
in nsAXPCNativeCallContextPtr cc);
};

View File

@@ -1,270 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* John Bandhauer <jband@netscape.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
#include "xpcexception.idl"
#include "xpcjsid.idl"
#include "nsIComponentManager.idl"
#include "nsIScriptableInterfaces.idl"
interface xpcIJSWeakReference;
/**
* interface of Components.classes
* (interesting stuff only reflected into JavaScript)
*/
[scriptable, uuid(978ff520-d26c-11d2-9842-006008962422)]
interface nsIXPCComponents_Classes : nsISupports
{
};
/**
* interface of Components.classesByID
* (interesting stuff only reflected into JavaScript)
*/
[scriptable, uuid(336a9590-4d19-11d3-9893-006008962422)]
interface nsIXPCComponents_ClassesByID : nsISupports
{
};
/**
* interface of Components.results
* (interesting stuff only reflected into JavaScript)
*/
[scriptable, uuid(2fc229a0-5860-11d3-9899-006008962422)]
interface nsIXPCComponents_Results : nsISupports
{
};
/**
* interface of Components.ID
* (interesting stuff only reflected into JavaScript)
*/
[scriptable, uuid(7994a6e0-e028-11d3-8f5d-0010a4e73d9a)]
interface nsIXPCComponents_ID : nsISupports
{
};
/**
* interface of Components.Exception
* (interesting stuff only reflected into JavaScript)
*/
[scriptable, uuid(5bf039c0-e028-11d3-8f5d-0010a4e73d9a)]
interface nsIXPCComponents_Exception : nsISupports
{
};
/**
* interface of Components.Constructor
* (interesting stuff only reflected into JavaScript)
*/
[scriptable, uuid(88655640-e028-11d3-8f5d-0010a4e73d9a)]
interface nsIXPCComponents_Constructor : nsISupports
{
};
/**
* interface of object returned by Components.Constructor
* (additional interesting stuff only reflected into JavaScript)
*/
[scriptable, uuid(c814ca20-e0dc-11d3-8f5f-0010a4e73d9a)]
interface nsIXPCConstructor : nsISupports
{
readonly attribute nsIJSCID classID;
readonly attribute nsIJSIID interfaceID;
readonly attribute string initializer;
};
/**
* interface of object returned by Components.utils.Sandbox.
*/
[scriptable, uuid(4f8ae0dc-d266-4a32-875b-6a9de71a8ce9)]
interface nsIXPCComponents_utils_Sandbox : nsISupports
{
};
/**
* interface of Components.utils
*/
[scriptable, uuid(da2267f2-d4cc-448f-9d70-1c7fe134d2fe)]
interface nsIXPCComponents_Utils : nsISupports
{
/* reportError is designed to be called from JavaScript only.
*
* It will report a JS Error object to the JS console, and return. It
* is meant for use in exception handler blocks which want to "eat"
* an exception, but still want to report it to the console.
*
* It must be called with one param, usually an object which was caught by
* an exception handler. If it is not a JS error object, the parameter
* is converted to a string and reported as a new error.
*/
void reportError();
/* lookupMethod is designed to be called from JavaScript only.
*
* It returns a method looking only at the idl interfaces and
* ignores any overrides or resolvers that might be in place for
* a given scriptable wrapped native.
* It must be called with two params: an object and a method name.
* It returns a function object or throws an exception on error.
* This method exists only to solve mozilla browser problems
* when chrome attempts to lookup and call methods in content
* and *must* not get confused by method properties that have been
* replaced in the content JS code. This method is not recommended for
* any other use.
*/
void lookupMethod();
readonly attribute nsIXPCComponents_utils_Sandbox Sandbox;
/*
* evalInSandbox is designed to be called from JavaScript only.
*
* evalInSandbox evaluates the provided source string in the given sandbox.
* It returns the result of the evaluation to the caller.
*
* var s = new C.u.Sandbox("http://www.mozilla.org");
* var res = C.u.evalInSandbox("var five = 5; 2 + five", s);
* var outerFive = s.five;
* s.seven = res;
* var thirtyFive = C.u.evalInSandbox("five * seven", s);
*/
void evalInSandbox(in AString source/*, obj */);
/*
* import is designed to be called from JavaScript only.
*
* Synchronously loads and evaluates the js file located at
* 'registryLocation' with a new, fully privileged global object.
*
* If 'targetObj' is specified and equal to null, returns the
* module's global object. Otherwise (if 'targetObj' is not
* specified, or 'targetObj' is != null) looks for a property
* 'EXPORTED_SYMBOLS' on the new global object. 'EXPORTED_SYMBOLS'
* is expected to be an array of strings identifying properties on
* the global object. These properties will be installed as
* properties on 'targetObj', or, if 'targetObj' is not specified,
* on the caller's global object. If 'EXPORTED_SYMBOLS' is not
* found, an error is thrown.
*
* @param resourceURI A resource:// URI string to load the module from.
* @param targetObj the object to install the exported properties on.
* If this parameter is a primitive value, this method throws
* an exception.
* @returns the module code's global object.
*
* The implementation maintains a hash of registryLocation->global obj.
* Subsequent invocations of importModule with 'registryLocation'
* pointing to the same file will not cause the module to be re-evaluated,
* but the symbols in EXPORTED_SYMBOLS will be exported into the
* specified target object and the global object returned as above.
*
* (This comment is duplicated from xpcIJSModuleLoader.)
*/
void /* JSObject */ import(in AUTF8String registryLocation
/*, [optional] in JSObject targetObj */);
/*
* To be called from JS only.
*
* Returns a unique identifier for obj, good for the lifetime of
* obj. If the optional argument 'inner' is true, and obj is a
* wrapped native object, an identifier for the inner object will
* be returned.
*
* Note that even if inner==true, the returned id could still
* point to an xpcom proxy and not the actual object, so be
* extremely careful when using object ids to compare the
* identities of COM objects.
*/
void /* String */ getObjectId(/* in JSObject obj,
[optional] in boolean inner*/);
/*
* To be called from JS only.
*
* Return a weak reference for the given JS object.
*/
xpcIJSWeakReference getWeakReference(/* in JSObject obj */);
/*
* To be called from JS only.
*
* Force an immediate garbage collection cycle.
*/
void forceGC();
};
/**
* interface of JavaScript's 'Components' object
*/
[scriptable, uuid(155809f1-71f1-47c5-be97-d812ba560405)]
interface nsIXPCComponents : nsISupports
{
readonly attribute nsIScriptableInterfaces interfaces;
readonly attribute nsIScriptableInterfacesByID interfacesByID;
readonly attribute nsIXPCComponents_Classes classes;
readonly attribute nsIXPCComponents_ClassesByID classesByID;
readonly attribute nsIStackFrame stack;
readonly attribute nsIXPCComponents_Results results;
readonly attribute nsIComponentManager manager;
readonly attribute nsIXPCComponents_Utils utils;
readonly attribute nsIXPCComponents_ID ID;
readonly attribute nsIXPCComponents_Exception Exception;
readonly attribute nsIXPCComponents_Constructor Constructor;
boolean isSuccessCode(in nsresult result);
/* DEPRECATED: use Components.utils.lookupMethod instead.
* (But are you sure you really want this method any more?
* See http://developer-test.mozilla.org/en/docs/XPCNativeWrapper )
*/
void lookupMethod();
/* DEPRECATED: use Components.utils.reportError instead. */
void reportError();
/* 'lastResult' is accessible via JavaScript only */
/* 'returnCode' is accessible via JavaScript only */
};

View File

@@ -1,63 +0,0 @@
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 Mozilla code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = jsloader
LIBRARY_NAME = jsloader_s
FORCE_STATIC_LIB = 1
LIBXUL_LIBRARY = 1
REQUIRES = xpcom \
string \
xpconnect \
js \
caps \
necko \
$(NULL)
CPPSRCS = mozJSComponentLoader.cpp mozJSSubScriptLoader.cpp
EXTRA_JS_MODULES = XPCOMUtils.jsm JSON.jsm ISO8601DateUtils.jsm
include $(topsrcdir)/config/rules.mk
DEFINES += -DJSFILE -DJS_THREADSAFE

File diff suppressed because it is too large Load Diff

View File

@@ -1,171 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributors:
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "plhash.h"
#include "jsapi.h"
#include "nsIModuleLoader.h"
#include "nsIJSRuntimeService.h"
#include "nsIJSContextStack.h"
#include "nsISupports.h"
#include "nsIXPConnect.h"
#include "nsIModule.h"
#include "nsIFile.h"
#include "nsAutoPtr.h"
#include "nsIFastLoadService.h"
#include "nsIObjectInputStream.h"
#include "nsIObjectOutputStream.h"
#include "nsITimer.h"
#include "nsIObserver.h"
#include "xpcIJSModuleLoader.h"
#include "nsClassHashtable.h"
#include "nsDataHashtable.h"
#ifndef XPCONNECT_STANDALONE
#include "nsIPrincipal.h"
#endif
/* 6bd13476-1dd2-11b2-bbef-f0ccb5fa64b6 (thanks, mozbot) */
#define MOZJSCOMPONENTLOADER_CID \
{0x6bd13476, 0x1dd2, 0x11b2, \
{ 0xbb, 0xef, 0xf0, 0xcc, 0xb5, 0xfa, 0x64, 0xb6 }}
#define MOZJSCOMPONENTLOADER_CONTRACTID "@mozilla.org/moz/jsloader;1"
#define MOZJSCOMPONENTLOADER_TYPE_NAME "text/javascript"
// nsIFastLoadFileIO implementation for component fastload
class nsXPCFastLoadIO : public nsIFastLoadFileIO
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIFASTLOADFILEIO
nsXPCFastLoadIO(nsIFile *file) : mFile(file) {}
void SetInputStream(nsIInputStream *stream) { mInputStream = stream; }
void SetOutputStream(nsIOutputStream *stream) { mOutputStream = stream; }
private:
~nsXPCFastLoadIO() {}
nsCOMPtr<nsIFile> mFile;
nsCOMPtr<nsIInputStream> mInputStream;
nsCOMPtr<nsIOutputStream> mOutputStream;
};
class mozJSComponentLoader : public nsIModuleLoader,
public xpcIJSModuleLoader,
public nsIObserver
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIMODULELOADER
NS_DECL_XPCIJSMODULELOADER
NS_DECL_NSIOBSERVER
mozJSComponentLoader();
virtual ~mozJSComponentLoader();
protected:
static mozJSComponentLoader* sSelf;
nsresult ReallyInit();
void UnloadModules();
nsresult GlobalForLocation(nsILocalFile *aComponent,
JSObject **aGlobal,
char **location);
nsresult StartFastLoad(nsIFastLoadService *flSvc);
nsresult ReadScript(nsIFastLoadService *flSvc, const char *nativePath,
nsIURI *uri, JSContext *cx, JSScript **script);
nsresult WriteScript(nsIFastLoadService *flSvc, JSScript *script,
nsIFile *component, const char *nativePath,
nsIURI *uri, JSContext *cx);
static void CloseFastLoad(nsITimer *timer, void *closure);
void CloseFastLoad();
nsresult ReportOnCaller(nsAXPCNativeCallContext *cc,
const char *format, ...);
nsCOMPtr<nsIComponentManager> mCompMgr;
nsCOMPtr<nsIJSRuntimeService> mRuntimeService;
nsCOMPtr<nsIFile> mFastLoadFile;
nsRefPtr<nsXPCFastLoadIO> mFastLoadIO;
nsCOMPtr<nsIObjectInputStream> mFastLoadInput;
nsCOMPtr<nsIObjectOutputStream> mFastLoadOutput;
nsCOMPtr<nsITimer> mFastLoadTimer;
#ifndef XPCONNECT_STANDALONE
nsCOMPtr<nsIPrincipal> mSystemPrincipal;
#endif
JSRuntime *mRuntime;
JSContext *mContext;
class ModuleEntry
{
public:
ModuleEntry() {
global = nsnull;
location = nsnull;
}
~ModuleEntry() {
module = nsnull;
if (global) {
JSAutoRequest ar(sSelf->mContext);
JS_ClearScope(sSelf->mContext, global);
JS_RemoveRoot(sSelf->mContext, &global);
}
if (location)
NS_Free(location);
}
nsCOMPtr<nsIModule> module;
JSObject *global;
char *location;
};
friend class ModuleEntry;
nsClassHashtable<nsHashableHashKey, ModuleEntry> mModules;
nsClassHashtable<nsHashableHashKey, ModuleEntry> mImports;
nsDataHashtable<nsHashableHashKey, ModuleEntry*> mInProgressImports;
PRBool mInitialized;
};

View File

@@ -1,170 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# John Bandhauer <jband@netscape.com>
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xpconnect
LIBRARY_NAME = xpconnect
EXPORT_LIBRARY = 1
SHORT_LIBNAME = xpconect
IS_COMPONENT = 1
MODULE_NAME = xpconnect
GRE_MODULE = 1
ifeq ($(OS_ARCH)$(MOZ_ENABLE_LIBXUL),WINNT)
LIBRARY_NAME = xpc$(MOZ_BITS)$(VERSION_NUMBER)
SHORT_LIBNAME = xpc$(MOZ_BITS)$(VERSION_NUMBER)
endif
LIBXUL_LIBRARY = 1
PACKAGE_FILE = xpconnect.pkg
REQUIRES = xpcom \
string \
js \
caps \
necko \
dom \
$(NULL)
CPPSRCS = \
nsScriptError.cpp \
nsXPConnect.cpp \
xpccallcontext.cpp \
xpccomponents.cpp \
xpccontext.cpp \
xpcconvert.cpp \
xpcdebug.cpp \
xpcexception.cpp \
xpcjsid.cpp \
xpcjsruntime.cpp \
xpclog.cpp \
xpcmaps.cpp \
xpcmodule.cpp \
xpcruntimesvc.cpp \
xpcstack.cpp \
xpcstring.cpp \
xpcthreadcontext.cpp \
xpcthrower.cpp \
xpcwrappedjs.cpp \
xpcvariant.cpp \
xpcwrappedjsclass.cpp \
xpcwrappednative.cpp \
xpcwrappednativeinfo.cpp \
xpcwrappednativejsops.cpp \
xpcwrappednativeproto.cpp \
xpcwrappednativescope.cpp \
XPCNativeWrapper.cpp \
xpcJSWeakReference.cpp \
XPCSafeJSObjectWrapper.cpp \
XPCCrossOriginWrapper.cpp \
XPCWrapper.cpp \
$(NULL)
ifdef XPC_IDISPATCH_SUPPORT
CPPSRCS += XPCDispObject.cpp \
XPCDispInterface.cpp \
XPCDispConvert.cpp \
XPCDispTypeInfo.cpp \
XPCDispTearOff.cpp \
XPCIDispatchExtension.cpp \
XPCDispParams.cpp \
XPCDispParamPropJSClass.cpp \
XPCIDispatchClassInfo.cpp \
nsDispatchSupport.cpp \
$(NULL)
endif
include $(topsrcdir)/config/config.mk
LOCAL_INCLUDES = \
-I$(srcdir)/../loader \
$(NULL)
EXTRA_DSO_LDOPTS += \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_JS_LIBS) \
$(NULL)
ifdef MOZ_JSLOADER
SHARED_LIBRARY_LIBS = \
../loader/$(LIB_PREFIX)jsloader_s.$(LIB_SUFFIX) \
$(NULL)
endif
include $(topsrcdir)/config/rules.mk
DEFINES += -DJSFILE -DJS_THREADSAFE -DEXPORT_XPC_API
ifdef MOZ_XPCTOOLS
DEFINES += -DXPC_TOOLS_SUPPORT
REQUIRES += xpctools
endif
ifdef XPC_IDISPATCH_SUPPORT
DEFINES += -DXPC_IDISPATCH_SUPPORT
ifdef XPC_COMOBJECT
DEFINES += -DXPC_COMOBJECT
endif
endif
# the windows ce compiler produces crap when compiling this
# with any optimizations. See bug 304714
ifdef WINCE
MOZ_OPTIMIZE_FLAGS=-Od
endif
ifeq ($(OS_ARCH),WINNT)
ifndef GNU_CXX
ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER)))
# whole program optimization and precompiled headers are incompatible
ifeq (,$(findstring GL,$(CXXFLAGS)))
# use pre-compiled headers
CXXFLAGS += -YX -Fp$(LIBRARY_NAME).pch
# precompiled headers require write access to .pch which breaks -j builds
.NOTPARALLEL:
endif
endif
endif
endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,142 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* John Bandhauer <jband@netscape.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* Module level methods. */
#include "xpcprivate.h"
#ifdef MOZ_JSLOADER
#include "mozJSLoaderConstructors.h"
#endif
/* Module implementation for the xpconnect library. */
NS_DECL_CLASSINFO(XPCVariant)
// {DC524540-487E-4501-9AC7-AAA784B17C1C}
#define XPCVARIANT_CID \
{0xdc524540, 0x487e, 0x4501, \
{ 0x9a, 0xc7, 0xaa, 0xa7, 0x84, 0xb1, 0x7c, 0x1c } }
#define XPCVARIANT_CONTRACTID "@mozilla.org/xpcvariant;1"
#define XPC_JSCONTEXT_STACK_ITERATOR_CONTRACTID "@mozilla.org/js/xpc/ContextStackIterator;1"
// {FE4F7592-C1FC-4662-AC83-538841318803}
#define SCRIPTABLE_INTERFACES_CID \
{0xfe4f7592, 0xc1fc, 0x4662, \
{ 0xac, 0x83, 0x53, 0x88, 0x41, 0x31, 0x88, 0x3 } }
NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSID)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPCException)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPCJSContextStackIterator)
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIXPConnect, nsXPConnect::GetSingleton)
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIJSContextStack, nsXPCThreadJSContextStackImpl::GetSingleton)
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIJSRuntimeService, nsJSRuntimeServiceImpl::GetSingleton)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptError)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPCComponents_Interfaces)
#ifdef XPC_IDISPATCH_SUPPORT
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIDispatchSupport, nsDispatchSupport::GetSingleton)
#endif
NS_DECL_CLASSINFO(nsXPCException)
#ifdef XPCONNECT_STANDALONE
#define NO_SUBSCRIPT_LOADER
#endif
static const nsModuleComponentInfo components[] = {
{nsnull, NS_JS_ID_CID, XPC_ID_CONTRACTID, nsJSIDConstructor },
{nsnull, NS_XPCONNECT_CID, XPC_XPCONNECT_CONTRACTID, nsIXPConnectConstructor },
{nsnull, NS_XPC_THREAD_JSCONTEXT_STACK_CID, XPC_CONTEXT_STACK_CONTRACTID, nsIJSContextStackConstructor },
{nsnull, NS_XPCEXCEPTION_CID, XPC_EXCEPTION_CONTRACTID, nsXPCExceptionConstructor, nsnull, nsnull, nsnull, NS_CI_INTERFACE_GETTER_NAME(nsXPCException), nsnull, &NS_CLASSINFO_NAME(nsXPCException), nsIClassInfo::DOM_OBJECT },
{nsnull, NS_JS_RUNTIME_SERVICE_CID, XPC_RUNTIME_CONTRACTID, nsIJSRuntimeServiceConstructor},
{NS_SCRIPTERROR_CLASSNAME, NS_SCRIPTERROR_CID, NS_SCRIPTERROR_CONTRACTID, nsScriptErrorConstructor },
{nsnull, SCRIPTABLE_INTERFACES_CID, NS_SCRIPTABLE_INTERFACES_CONTRACTID, nsXPCComponents_InterfacesConstructor, 0, 0, 0, 0, 0, 0, nsIClassInfo::THREADSAFE },
{nsnull, XPCVARIANT_CID, XPCVARIANT_CONTRACTID, nsnull, nsnull, nsnull, nsnull, NS_CI_INTERFACE_GETTER_NAME(XPCVariant), nsnull, &NS_CLASSINFO_NAME(XPCVariant)},
{nsnull, NS_XPC_JSCONTEXT_STACK_ITERATOR_CID, XPC_JSCONTEXT_STACK_ITERATOR_CONTRACTID, nsXPCJSContextStackIteratorConstructor }
#ifdef MOZ_JSLOADER
// jsloader stuff
,{ "JS component loader", MOZJSCOMPONENTLOADER_CID,
MOZJSCOMPONENTLOADER_CONTRACTID, mozJSComponentLoaderConstructor,
RegisterJSLoader, UnregisterJSLoader }
#ifndef NO_SUBSCRIPT_LOADER
,{ "JS subscript loader", MOZ_JSSUBSCRIPTLOADER_CID,
mozJSSubScriptLoadContractID, mozJSSubScriptLoaderConstructor }
#endif
#endif
#ifdef XPC_IDISPATCH_SUPPORT
,{ nsnull, NS_IDISPATCH_SUPPORT_CID, NS_IDISPATCH_SUPPORT_CONTRACTID,
nsIDispatchSupportConstructor }
#endif
};
PR_STATIC_CALLBACK(nsresult)
xpcModuleCtor(nsIModule* self)
{
nsXPConnect::InitStatics();
nsXPCException::InitStatics();
XPCWrappedNativeScope::InitStatics();
XPCPerThreadData::InitStatics();
nsJSRuntimeServiceImpl::InitStatics();
nsXPCThreadJSContextStackImpl::InitStatics();
#ifdef XPC_IDISPATCH_SUPPORT
XPCIDispatchExtension::InitStatics();
#endif
return NS_OK;
}
PR_STATIC_CALLBACK(void)
xpcModuleDtor(nsIModule* self)
{
// Release our singletons
nsXPConnect::ReleaseXPConnectSingleton();
nsXPCThreadJSContextStackImpl::FreeSingleton();
nsJSRuntimeServiceImpl::FreeSingleton();
xpc_DestroyJSxIDClassObjects();
#ifdef XPC_IDISPATCH_SUPPORT
nsDispatchSupport::FreeSingleton();
XPCIDispatchClassInfo::FreeSingleton();
#endif
}
NS_IMPL_NSGETMODULE_WITH_CTOR_DTOR(xpconnect, components, xpcModuleCtor, xpcModuleDtor)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,151 +0,0 @@
# vim:set noet:
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = necko
GRE_MODULE = 1
SDK_XPIDLSRCS = \
nsIChannel.idl \
nsILoadGroup.idl \
nsIProtocolHandler.idl \
nsIRequest.idl \
nsIRequestObserver.idl \
nsIStreamListener.idl \
nsIIOService.idl \
nsIURI.idl \
nsIURL.idl \
nsIFileURL.idl \
nsIUploadChannel.idl \
nsIUnicharStreamListener.idl \
$(NULL)
XPIDLSRCS = \
nsIAuthInformation.idl \
nsIAuthPrompt.idl \
nsIAuthPrompt2.idl \
nsIAuthPromptAdapterFactory.idl \
nsIAuthPromptCallback.idl \
nsIAsyncStreamCopier.idl \
nsISafeOutputStream.idl \
nsIBufferedStreams.idl \
nsICancelable.idl \
nsICryptoHash.idl \
nsICryptoHMAC.idl \
nsIDownloader.idl \
nsIEncodedChannel.idl \
nsIFileStreams.idl \
nsIIncrementalDownload.idl \
nsIInputStreamPump.idl \
nsIInputStreamChannel.idl \
nsIIOService2.idl \
nsIMIMEInputStream.idl \
nsINetworkLinkService.idl \
nsIPasswordManager.idl \
nsIPasswordManagerInternal.idl \
nsIPermission.idl \
nsIPermissionManager.idl \
nsIProgressEventSink.idl \
nsIPrompt.idl \
nsIProtocolProxyService.idl \
nsIProtocolProxyService2.idl \
nsIProtocolProxyFilter.idl \
nsIProtocolProxyCallback.idl \
nsIProxiedProtocolHandler.idl \
nsIProxyAutoConfig.idl \
nsIProxyInfo.idl \
nsITransport.idl \
nsISocketTransport.idl \
nsISocketTransportService.idl \
nsIServerSocket.idl \
nsIResumableChannel.idl \
nsIRequestObserverProxy.idl \
nsIStreamListenerTee.idl \
nsISimpleStreamListener.idl \
nsIStreamTransportService.idl \
nsIStreamLoader.idl \
nsISyncStreamListener.idl \
nsISystemProxySettings.idl \
nsIUnicharStreamLoader.idl \
nsIStandardURL.idl \
nsINestedURI.idl \
nsIURLParser.idl \
nsIURIChecker.idl \
nsISecurityEventSink.idl \
nsISecretDecoderRing.idl \
nsISecureBrowserUI.idl \
nsICryptoFIPSInfo.idl \
nsINSSErrorsService.idl \
nsICachingChannel.idl \
nsIByteRangeRequest.idl \
nsIMultiPartChannel.idl \
nsIExternalProtocolHandler.idl \
nsIAuthModule.idl \
nsIContentSniffer.idl \
nsIAuthPromptProvider.idl \
nsPISocketTransportService.idl \
nsIChannelEventSink.idl \
nsINetUtil.idl \
nsIProxiedChannel.idl \
nsIRandomGenerator.idl \
nsIUDPSocket.idl \
$(NULL)
EXPORTS = \
netCore.h \
nsNetError.h \
nsNetUtil.h \
nsNetStrings.h \
nsChannelProperties.h \
nsURIHashKey.h \
nsReadLine.h \
nsCPasswordManager.h \
nsCPasswordManagerInternal.h \
nsASocketHandler.h \
$(NULL)
PREF_JS_EXPORTS = $(srcdir)/security-prefs.js
include $(topsrcdir)/config/rules.mk
DEFINES += -DIMPL_NS_NET

View File

@@ -1,46 +0,0 @@
#include "nsISupports.idl"
interface nsIUDPSocket;
[scriptable, uuid(f0aca68a-b00d-4ae9-b037-ac6d9b8349dd)]
interface nsIDatagram : nsISupports
{
readonly attribute ACString data;
/**
* remote address
*/
readonly attribute ACString address;
/**
* remote port
*/
readonly attribute long port;
};
[scriptable, uuid(05360e27-ad43-4219-aeab-1561dee08511)]
interface nsIUDPReceiver : nsISupports
{
void handleDatagram(in nsIUDPSocket socket, in nsIDatagram data);
};
[scriptable, uuid(437078ab-ed16-44f5-b828-18dcc1c8c607)]
interface nsIUDPSocket : nsISupports
{
void init(in long aPort);
void close();
void send(in ACString data, in ACString address, in long port);
void setReceiver(in nsIUDPReceiver receiver);
/**
* The (local) port of this socket.
*/
readonly attribute long port;
/**
* The (local) ip address of this socket.
*/
readonly attribute ACString address;
};

View File

@@ -1,127 +0,0 @@
# vim:set ts=8 sw=8 sts=8 noet:
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = necko
LIBRARY_NAME = neckobase_s
LIBXUL_LIBRARY = 1
REQUIRES = xpcom \
string \
mimetype \
uconv \
locale \
pref \
$(NULL)
CPPSRCS = \
nsTransportUtils.cpp \
nsAsyncStreamCopier.cpp \
nsAuthInformationHolder.cpp \
nsBaseChannel.cpp \
nsBaseContentStream.cpp \
nsBufferedStreams.cpp \
nsDirectoryIndexStream.cpp \
nsDownloader.cpp \
nsFileStreams.cpp \
nsIncrementalDownload.cpp \
nsInputStreamChannel.cpp \
nsInputStreamPump.cpp \
nsStreamTransportService.cpp \
nsIOService.cpp \
nsLoadGroup.cpp \
nsMIMEInputStream.cpp \
nsProtocolProxyService.cpp \
nsProxyInfo.cpp \
nsPACMan.cpp \
nsRequestObserverProxy.cpp \
nsSimpleStreamListener.cpp \
nsSimpleURI.cpp \
nsSimpleNestedURI.cpp \
nsStandardURL.cpp \
nsSocketTransport2.cpp \
nsSocketTransportService2.cpp \
nsServerSocket.cpp \
nsStreamListenerTee.cpp \
nsStreamLoader.cpp \
nsSyncStreamListener.cpp \
nsUDPSocket.cpp \
nsUnicharStreamLoader.cpp \
nsURIChecker.cpp \
nsURLHelper.cpp \
nsURLParsers.cpp \
nsNetStrings.cpp \
nsBase64Encoder.cpp \
nsSerializationHelper.cpp \
$(NULL)
ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
CPPSRCS += nsURLHelperOS2.cpp
else
ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
CPPSRCS += nsURLHelperWin.cpp
ifneq ($(OS_ARCH), WINCE)
CPPSRCS += nsNativeConnectionHelper.cpp
CPPSRCS += nsAutodialWin.cpp
endif
else
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
CPPSRCS += nsURLHelperOSX.cpp
else
CPPSRCS += nsURLHelperUnix.cpp
endif
endif
endif
EXTRA_COMPONENTS = \
$(srcdir)/nsProxyAutoConfig.js \
$(NULL)
# we don't want the shared lib, but we want to force the creation of a
# static lib.
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
DEFINES += -DIMPL_NS_NET

View File

@@ -1,508 +0,0 @@
#include "nsIProxyObjectManager.h"
#include "nsIServiceManager.h"
#include "nsSocketTransport2.h"
#include "nsUDPSocket.h"
#include "nsAutoLock.h"
#include "nsAutoPtr.h"
#include "nsNetError.h"
#include "nsNetCID.h"
#include "nsProxyRelease.h"
#include "prnetdb.h"
#include "prio.h"
#include "prerror.h"
static NS_DEFINE_CID(kSocketTransportServiceCID, NS_SOCKETTRANSPORTSERVICE_CID);
//-----------------------------------------------------------------------------
// nsDatagram
//-----------------------------------------------------------------------------
class nsDatagram : public nsIDatagram {
public:
nsDatagram();
NS_DECL_ISUPPORTS
NS_DECL_NSIDATAGRAM
nsCString mData;
PRNetAddr mAddr;
};
nsDatagram::nsDatagram()
{}
// nsISupports implementation:
NS_IMPL_THREADSAFE_ISUPPORTS1(nsDatagram, nsIDatagram)
// nsIDatagram methods:
/* readonly attribute ACString data; */
NS_IMETHODIMP nsDatagram::GetData(nsACString & aData)
{
aData = mData;
return NS_OK;
}
/* readonly attribute ACString address; */
NS_IMETHODIMP nsDatagram::GetAddress(nsACString & aAddress)
{
char buf[254];
if (PR_NetAddrToString(&mAddr, buf, sizeof(buf)) != PR_SUCCESS)
return NS_ERROR_FAILURE;
aAddress = buf;
return NS_OK;
}
/* readonly attribute long port; */
NS_IMETHODIMP nsDatagram::GetPort(PRInt32 *aPort)
{
PRUint16 port;
if (mAddr.raw.family == PR_AF_INET)
port = mAddr.inet.port;
else
port = mAddr.ipv6.port;
*aPort = (PRInt32) PR_ntohs(port);
return NS_OK;
}
//-----------------------------------------------------------------------------
typedef void (nsUDPSocket:: *nsUDPSocketFunc)(void);
static nsresult
PostEvent(nsUDPSocket *s, nsUDPSocketFunc func)
{
nsCOMPtr<nsIRunnable> ev = new nsRunnableMethod<nsUDPSocket>(s, func);
if (!ev)
return NS_ERROR_OUT_OF_MEMORY;
return gSocketTransportService->Dispatch(ev, NS_DISPATCH_NORMAL);
}
//----------------------------------------------------------------------------
// A 'send' event for proxying nsIUDPSocket::send onto the socket thread.
// XXX Not sure its neccessary actually.
class nsUDPSendEvent : public nsRunnable
{
public:
nsUDPSendEvent(nsUDPSocket *s, nsDatagram *dg)
: mSocket(s), mDatagram(dg) {
}
NS_IMETHOD Run() {
mSocket->OnMsgSend(mDatagram);
return NS_OK;
}
private:
nsRefPtr<nsUDPSocket> mSocket;
nsRefPtr<nsDatagram> mDatagram;
};
static nsresult
PostSendEvent(nsUDPSocket *s, nsDatagram *datagram)
{
nsCOMPtr<nsIRunnable> ev = new nsUDPSendEvent(s, datagram);
if (!ev)
return NS_ERROR_OUT_OF_MEMORY;
return gSocketTransportService->Dispatch(ev, NS_DISPATCH_NORMAL);
}
//-----------------------------------------------------------------------------
// nsUDPSocket
//-----------------------------------------------------------------------------
nsUDPSocket::nsUDPSocket()
: mLock(nsnull)
, mFD(nsnull)
, mAttached(PR_FALSE)
{
// we want to be able to access the STS directly, and it may not have been
// constructed yet. the STS constructor sets gSocketTransportService.
if (!gSocketTransportService)
{
nsCOMPtr<nsISocketTransportService> sts =
do_GetService(kSocketTransportServiceCID);
NS_ASSERTION(sts, "no socket transport service");
}
// make sure the STS sticks around as long as we do
NS_ADDREF(gSocketTransportService);
}
nsUDPSocket::~nsUDPSocket()
{
Close(); // just in case :)
if (mLock)
PR_DestroyLock(mLock);
// release our reference to the STS
nsSocketTransportService *serv = gSocketTransportService;
NS_RELEASE(serv);
}
void
nsUDPSocket::OnMsgClose()
{
if (NS_FAILED(mCondition))
return;
// tear down socket. this signals the STS to detach our socket handler.
mCondition = NS_BINDING_ABORTED;
// if we are attached, then we'll close the socket in our OnSocketDetached.
// otherwise, call OnSocketDetached from here.
if (!mAttached)
OnSocketDetached(mFD);
}
void
nsUDPSocket::OnMsgAttach()
{
if (NS_FAILED(mCondition))
return;
mCondition = TryAttach();
// if we hit an error while trying to attach then bail...
if (NS_FAILED(mCondition))
{
NS_ASSERTION(!mAttached, "should not be attached already");
OnSocketDetached(mFD);
}
}
void
nsUDPSocket::OnMsgSend(nsDatagram*dg)
{
if (!dg) {
NS_WARNING("null datagram");
return;
}
nsCString host;
dg->GetAddress(host);
PRInt32 port;
dg->GetPort(&port);
#ifdef DEBUG_afri_udpsocket
// printf("-> sending %d bytes to %s, port %d ... ", dg->mData.Length(), host.get(), port);
#endif
nsACString::const_iterator iter;
dg->mData.BeginReading(iter);
const char *dataBuf = iter.get();
PRInt32 sent = PR_SendTo(mFD, dataBuf, dg->mData.Length(), 0,
&dg->mAddr, PR_INTERVAL_NO_TIMEOUT);
if (sent == -1) {
NS_WARNING("Send failure. Maybe we need some buffering?");
return;
}
NS_ASSERTION(sent==dg->mData.Length(), "Sent fewer bytes than in buffer");
#ifdef DEBUG_afri_udpsocket
// printf(" done <-\n");
#endif
}
nsresult
nsUDPSocket::TryAttach()
{
nsresult rv;
//
// find out if it is going to be ok to attach another socket to the STS.
// if not then we have to wait for the STS to tell us that it is ok.
// the notification is asynchronous, which means that when we could be
// in a race to call AttachSocket once notified. for this reason, when
// we get notified, we just re-enter this function. as a result, we are
// sure to ask again before calling AttachSocket. in this way we deal
// with the race condition. though it isn't the most elegant solution,
// it is far simpler than trying to build a system that would guarantee
// FIFO ordering (which wouldn't even be that valuable IMO). see bug
// 194402 for more info.
//
if (!gSocketTransportService->CanAttachSocket())
{
nsCOMPtr<nsIRunnable> event =
NS_NEW_RUNNABLE_METHOD(nsUDPSocket, this, OnMsgAttach);
if (!event)
return NS_ERROR_OUT_OF_MEMORY;
nsresult rv = gSocketTransportService->NotifyWhenCanAttachSocket(event);
if (NS_FAILED(rv))
return rv;
}
//
// ok, we can now attach our socket to the STS for polling
//
rv = gSocketTransportService->AttachSocket(mFD, this);
if (NS_FAILED(rv))
return rv;
mAttached = PR_TRUE;
//
// now, configure our poll flags for listening...
//
mPollFlags = (PR_POLL_READ | PR_POLL_EXCEPT);
return NS_OK;
}
//-----------------------------------------------------------------------------
// nsUDPSocket::nsASocketHandler
//-----------------------------------------------------------------------------
void
nsUDPSocket::OnSocketReady(PRFileDesc *fd, PRInt16 outFlags)
{
#ifdef DEBUG_afri_udpsocket
// printf("Socket %p ready: %d\n", this, outFlags);
#endif
NS_ASSERTION(NS_SUCCEEDED(mCondition), "oops");
NS_ASSERTION(mFD == fd, "wrong file descriptor");
NS_ASSERTION(outFlags != -1, "unexpected timeout condition reached");
if (outFlags & (PR_POLL_ERR | PR_POLL_HUP | PR_POLL_NVAL))
{
NS_WARNING("error polling on listening socket");
mCondition = NS_ERROR_UNEXPECTED;
return;
}
if (outFlags & (PR_POLL_READ)) {
nsRefPtr<nsDatagram> datagram = new nsDatagram();
NS_ASSERTION(datagram, "could not create datagram");
PRInt32 avail = PR_Available(mFD);
if (avail == -1 || avail == 0) {
NS_WARNING("no data available");
#ifdef DEBUG_afri_udpsocket
printf("%s\n", PR_ErrorToString(PR_GetError(),PR_LANGUAGE_I_DEFAULT));
#endif
mCondition = NS_ERROR_UNEXPECTED;
}
datagram->mData.SetLength(avail);
#ifdef DEBUG_afri_udpsocket
// printf("udp socket: data waiting for us: %d\n", avail);
#endif
char *buf = datagram->mData.BeginWriting();
// XXX we should have some out-of-memory check here
PRInt32 rv = PR_RecvFrom(mFD, buf, avail, 0, &(datagram->mAddr), PR_INTERVAL_NO_WAIT);
if (rv < 0) {
NS_WARNING("receive error");
// XXX we occassionaly hit this when writing to invalid
// ports. PR_Available returns '1', but we get no data...
//mCondition = NS_ERROR_UNEXPECTED;
return;
}
if (rv != avail) {
datagram->mData.SetLength(rv);
#ifdef DEBUG_afri_udpsocket
printf("nsUDPSocket: read bytes %d != avail bytes %d\n",
rv, avail);
#endif
}
mReceiver->HandleDatagram(this, datagram);
}
}
void
nsUDPSocket::OnSocketDetached(PRFileDesc *fd)
{
// force a failure condition if none set; maybe the STS is shutting down :-/
if (NS_SUCCEEDED(mCondition))
mCondition = NS_ERROR_ABORT;
if (mFD)
{
NS_ASSERTION(mFD == fd, "wrong file descriptor");
PR_Close(mFD);
mFD = nsnull;
}
if (mReceiver)
{
// need to atomically clear mReceiver. see our Close() method.
nsAutoLock lock(mLock);
mReceiver = nsnull;
}
}
//-----------------------------------------------------------------------------
// nsUDPSocket::nsISupports
//-----------------------------------------------------------------------------
NS_IMPL_THREADSAFE_ISUPPORTS1(nsUDPSocket, nsIUDPSocket)
//-----------------------------------------------------------------------------
// nsUDPSocket::nsIUDPSocket
//-----------------------------------------------------------------------------
NS_IMETHODIMP
nsUDPSocket::Init(PRInt32 aPort)
{
NS_ENSURE_TRUE(mFD == nsnull, NS_ERROR_ALREADY_INITIALIZED);
PRNetAddr addr;
if (aPort < 0)
aPort = 0;
PR_SetNetAddr(PR_IpAddrAny, PR_AF_INET, aPort, &addr);
if (!mLock)
{
mLock = PR_NewLock();
if (!mLock)
return NS_ERROR_OUT_OF_MEMORY;
}
mFD = PR_OpenUDPSocket(addr.raw.family);
if (!mFD)
{
NS_WARNING("unable to create udp socket");
return NS_ERROR_FAILURE;
}
PRSocketOptionData opt;
opt.option = PR_SockOpt_Nonblocking;
opt.value.non_blocking = PR_TRUE;
PR_SetSocketOption(mFD, &opt);
if (PR_Bind(mFD, &addr) != PR_SUCCESS)
{
NS_WARNING("failed to bind socket");
goto fail;
}
//XXX should we set recv/send buffer sizes?
// get the resulting socket address, which may be different than what
// we passed to bind.
if (PR_GetSockName(mFD, &mAddr) != PR_SUCCESS)
{
NS_WARNING("cannot get socket name");
goto fail;
}
// wait until setReceiver is called before polling the socket for
// client connections.
return NS_OK;
fail:
Close();
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
nsUDPSocket::Close()
{
NS_ENSURE_TRUE(mLock, NS_ERROR_NOT_INITIALIZED);
{
nsAutoLock lock(mLock);
// we want to proxy the close operation to the socket thread if a receiver
// has been set. otherwise, we should just close the socket here...
if (!mReceiver)
{
if (mFD)
{
PR_Close(mFD);
mFD = nsnull;
}
return NS_OK;
}
}
return PostEvent(this, &nsUDPSocket::OnMsgClose);
}
/* void send (in ACString data, in ACString address, in long port); */
NS_IMETHODIMP
nsUDPSocket::Send(const nsACString & data, const nsACString & address, PRInt32 port)
{
NS_ENSURE_TRUE(mFD, NS_ERROR_NOT_INITIALIZED);
// prepare datagram:
nsRefPtr<nsDatagram> datagram = new nsDatagram();
NS_ASSERTION(datagram, "could not create datagram");
// apparently PR_StringToNetAddr does not properly initialize
// the output buffer in the case of IPv6 input. see bug 223145.
memset(&datagram->mAddr, 0, sizeof(PRNetAddr));
nsACString::const_iterator iter;
address.BeginReading(iter);
const char *addressBuf = iter.get();
if (PR_StringToNetAddr(addressBuf, &datagram->mAddr) != PR_SUCCESS) {
NS_WARNING("could not convert address to PRNetAddr");
return NS_ERROR_FAILURE;
}
if (datagram->mAddr.raw.family == PR_AF_INET)
datagram->mAddr.inet.port = PR_htons(port);
else
datagram->mAddr.ipv6.port = PR_htons(port);
datagram->mData = data;
// proxy onto sts thread:
PostSendEvent(this, datagram);
return NS_OK;
}
/* void setReceiver (in nsIUDPReceiver receiver); */
NS_IMETHODIMP
nsUDPSocket::SetReceiver(nsIUDPReceiver *aReceiver)
{
// ensuring mFD implies ensuring mLock
NS_ENSURE_TRUE(mFD, NS_ERROR_NOT_INITIALIZED);
NS_ENSURE_TRUE(mReceiver == nsnull, NS_ERROR_IN_PROGRESS);
{
nsAutoLock lock(mLock);
nsresult rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD,
NS_GET_IID(nsIUDPReceiver),
aReceiver,
NS_PROXY_ASYNC | NS_PROXY_ALWAYS,
getter_AddRefs(mReceiver));
if (NS_FAILED(rv))
return rv;
}
return PostEvent(this, &nsUDPSocket::OnMsgAttach);
}
NS_IMETHODIMP
nsUDPSocket::GetPort(PRInt32 *aResult)
{
// no need to enter the lock here
PRUint16 port;
if (mAddr.raw.family == PR_AF_INET)
port = mAddr.inet.port;
else
port = mAddr.ipv6.port;
*aResult = (PRInt32) PR_ntohs(port);
return NS_OK;
}
/* readonly attribute ACString address; */
NS_IMETHODIMP
nsUDPSocket::GetAddress(nsACString & aAddress)
{
char buf[254];
if (PR_NetAddrToString(&mAddr, buf, sizeof(buf)) != PR_SUCCESS)
return NS_ERROR_FAILURE;
aAddress = buf;
return NS_OK;
}

View File

@@ -1,42 +0,0 @@
#ifndef nsUDPSocket_h__
#define nsUDPSocket_h__
#include "nsIUDPSocket.h"
#include "nsSocketTransportService2.h"
class nsDatagram;
//-----------------------------------------------------------------------------
class nsUDPSocket : public nsASocketHandler
, public nsIUDPSocket
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIUDPSOCKET
// nsASocketHandler methods:
virtual void OnSocketReady(PRFileDesc *fd, PRInt16 outFlags);
virtual void OnSocketDetached(PRFileDesc *fd);
nsUDPSocket();
virtual ~nsUDPSocket();
void OnMsgClose();
void OnMsgAttach();
void OnMsgSend(nsDatagram*dg);
// try attaching our socket (mFD) to the STS's poll list.
nsresult TryAttach();
private:
// lock protects access to mReceiver; so it is not cleared while being used.
PRLock *mLock;
PRFileDesc *mFD;
PRNetAddr mAddr;
nsCOMPtr<nsIUDPReceiver> mReceiver;
PRBool mAttached;
};
#endif // nsUDPSocket_h__

View File

@@ -1,149 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = necko
LIBRARY_NAME = necko
EXPORT_LIBRARY = 1
IS_COMPONENT = 1
MODULE_NAME = necko
GRE_MODULE = 1
LIBXUL_LIBRARY = 1
PACKAGE_FILE = necko.pkg
ifdef ENABLE_TESTS
PACKAGE_FILE += necko-tests.pkg
endif
REQUIRES = xpcom \
string \
nkcache \
pref \
mimetype \
locale \
intl \
uconv \
unicharutil \
$(ZLIB_REQUIRES) \
$(NULL)
CPPSRCS = nsNetModule.cpp
EXPORTS = nsNetCID.h
SHARED_LIBRARY_LIBS = \
../base/src/$(LIB_PREFIX)neckobase_s.$(LIB_SUFFIX) \
../dns/src/$(LIB_PREFIX)neckodns_s.$(LIB_SUFFIX) \
../socket/base/$(LIB_PREFIX)neckosocket_s.$(LIB_SUFFIX) \
../streamconv/src/$(LIB_PREFIX)nkconv_s.$(LIB_SUFFIX) \
../streamconv/converters/$(LIB_PREFIX)nkcnvts_s.$(LIB_SUFFIX) \
../mime/src/$(LIB_PREFIX)nkmime_s.$(LIB_SUFFIX) \
../cache/src/$(LIB_PREFIX)nkcache_s.$(LIB_SUFFIX) \
../protocol/about/src/$(LIB_PREFIX)nkabout_s.$(LIB_SUFFIX) \
$(foreach d,$(filter-out about,$(NECKO_PROTOCOLS)), \
../protocol/$(d)/src/$(LIB_PREFIX)nk$(d)_s.$(LIB_SUFFIX)) \
$(NULL)
ifeq ($(OS_ARCH),WINNT)
SHARED_LIBRARY_LIBS += \
../system/win32/$(LIB_PREFIX)neckosystem_s.$(LIB_SUFFIX)
endif
LOCAL_INCLUDES = \
-I$(srcdir)/../base/src \
-I$(srcdir)/../dns/src \
-I$(srcdir)/../socket/base \
-I$(srcdir)/../streamconv/src \
-I$(srcdir)/../streamconv/converters \
-I$(srcdir)/../mime/src \
-I$(srcdir)/../cache/src \
-I$(srcdir)/../protocol/about/src \
$(foreach d,$(filter-out about,$(NECKO_PROTOCOLS)), \
-I$(srcdir)/../protocol/$(d)/src) \
$(NULL)
ifeq ($(OS_ARCH),WINNT)
LOCAL_INCLUDES += -I$(srcdir)/../system/win32
endif
ifdef NECKO_COOKIES
SHARED_LIBRARY_LIBS += \
../cookie/src/$(LIB_PREFIX)neckocookie_s.$(LIB_SUFFIX) \
$(NULL)
LOCAL_INCLUDES += -I$(srcdir)/../cookie/src
endif
EXTRA_DSO_LDOPTS = \
$(LIBS_DIR) \
$(EXTRA_DSO_LIBS) \
$(MOZ_UNICHARUTIL_LIBS) \
$(MOZ_COMPONENT_LIBS) \
$(ZLIB_LIBS) \
$(NULL)
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
EXTRA_DSO_LDOPTS += \
$(TK_LIBS) \
$(NULL)
endif
ifeq ($(OS_ARCH),Darwin)
EXTRA_DSO_LDOPTS += -lresolv
endif
ifeq ($(OS_ARCH),Linux)
EXTRA_DSO_LDOPTS += -lresolv
endif
ifeq ($(OS_ARCH),AIX)
EXTRA_DSO_LDOPTS += -lodm -lcfg
endif
include $(topsrcdir)/config/rules.mk
ifeq ($(OS_ARCH),WINNT)
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME,dnsapi)
OS_LIBS += $(call EXPAND_LIBNAME,ole32 shell32)
endif
DEFINES += -DIMPL_NS_NET

View File

@@ -1,901 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Darin Fisher <darin@netscape.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsNetCID_h__
#define nsNetCID_h__
/******************************************************************************
* netwerk/base/ classes
*/
// service implementing nsIIOService and nsIIOService2.
#define NS_IOSERVICE_CLASSNAME \
"nsIOService"
#define NS_IOSERVICE_CONTRACTID \
"@mozilla.org/network/io-service;1"
#define NS_IOSERVICE_CID \
{ /* 9ac9e770-18bc-11d3-9337-00104ba0fd40 */ \
0x9ac9e770, \
0x18bc, \
0x11d3, \
{0x93, 0x37, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40} \
}
// service implementing nsINetUtil
#define NS_NETUTIL_CONTRACTID \
"@mozilla.org/network/util;1"
// service implementing nsIProtocolProxyService and nsPIProtocolProxyService.
#define NS_PROTOCOLPROXYSERVICE_CLASSNAME \
"nsProtocolProxyService"
#define NS_PROTOCOLPROXYSERVICE_CONTRACTID \
"@mozilla.org/network/protocol-proxy-service;1"
#define NS_PROTOCOLPROXYSERVICE_CID \
{ /* E9B301C0-E0E4-11d3-A1A8-0050041CAF44 */ \
0xe9b301c0, \
0xe0e4, \
0x11d3, \
{0xa1, 0xa8, 0x0, 0x50, 0x4, 0x1c, 0xaf, 0x44} \
}
// service implementing nsIProxyAutoConfig.
#define NS_PROXYAUTOCONFIG_CLASSNAME \
"nsProxyAutoConfig"
#define NS_PROXYAUTOCONFIG_CONTRACTID \
"@mozilla.org/network/proxy-auto-config;1"
#define NS_PROXYAUTOCONFIG_CID \
{ /* 63ac8c66-1dd2-11b2-b070-84d00d3eaece */ \
0x63ac8c66, \
0x1dd2, \
0x11b2, \
{0xb0, 0x70, 0x84, 0xd0, 0x0d, 0x3e, 0xae, 0xce} \
}
// component implementing nsILoadGroup.
#define NS_LOADGROUP_CLASSNAME \
"nsLoadGroup"
#define NS_LOADGROUP_CONTRACTID \
"@mozilla.org/network/load-group;1"
#define NS_LOADGROUP_CID \
{ /* e1c61582-2a84-11d3-8cce-0060b0fc14a3 */ \
0xe1c61582, \
0x2a84, \
0x11d3, \
{0x8c, 0xce, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
// component implementing nsIURI, nsISerializable, and nsIClassInfo.
#define NS_SIMPLEURI_CLASSNAME \
"nsSimpleURI"
#define NS_SIMPLEURI_CONTRACTID \
"@mozilla.org/network/simple-uri;1"
#define NS_SIMPLEURI_CID \
{ /* e0da1d70-2f7b-11d3-8cd0-0060b0fc14a3 */ \
0xe0da1d70, \
0x2f7b, \
0x11d3, \
{0x8c, 0xd0, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
// component inheriting from the simple URI component and also
// implementing nsINestedURI.
#define NS_SIMPLENESTEDURI_CID \
{ /* 56388dad-287b-4240-a785-85c394012503 */ \
0x56388dad, \
0x287b, \
0x4240, \
{ 0xa7, 0x85, 0x85, 0xc3, 0x94, 0x01, 0x25, 0x03 } \
}
// component implementing nsIStandardURL, nsIURI, nsIURL, nsISerializable,
// and nsIClassInfo.
#define NS_STANDARDURL_CLASSNAME \
"nsStandardURL"
#define NS_STANDARDURL_CONTRACTID \
"@mozilla.org/network/standard-url;1"
#define NS_STANDARDURL_CID \
{ /* de9472d0-8034-11d3-9399-00104ba0fd40 */ \
0xde9472d0, \
0x8034, \
0x11d3, \
{0x93, 0x99, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40} \
}
// service implementing nsIURLParser that assumes the URL will NOT contain an
// authority section.
#define NS_NOAUTHURLPARSER_CLASSNAME \
"nsNoAuthURLParser"
#define NS_NOAUTHURLPARSER_CONTRACTID \
"@mozilla.org/network/url-parser;1?auth=no"
#define NS_NOAUTHURLPARSER_CID \
{ /* 78804a84-8173-42b6-bb94-789f0816a810 */ \
0x78804a84, \
0x8173, \
0x42b6, \
{0xbb, 0x94, 0x78, 0x9f, 0x08, 0x16, 0xa8, 0x10} \
}
// service implementing nsIURLParser that assumes the URL will contain an
// authority section.
#define NS_AUTHURLPARSER_CLASSNAME \
"nsAuthURLParser"
#define NS_AUTHURLPARSER_CONTRACTID \
"@mozilla.org/network/url-parser;1?auth=yes"
#define NS_AUTHURLPARSER_CID \
{ /* 275d800e-3f60-4896-adb7-d7f390ce0e42 */ \
0x275d800e, \
0x3f60, \
0x4896, \
{0xad, 0xb7, 0xd7, 0xf3, 0x90, 0xce, 0x0e, 0x42} \
}
// service implementing nsIURLParser that does not make any assumptions about
// whether or not the URL contains an authority section.
#define NS_STDURLPARSER_CLASSNAME \
"nsStdURLParser"
#define NS_STDURLPARSER_CONTRACTID \
"@mozilla.org/network/url-parser;1?auth=maybe"
#define NS_STDURLPARSER_CID \
{ /* ff41913b-546a-4bff-9201-dc9b2c032eba */ \
0xff41913b, \
0x546a, \
0x4bff, \
{0x92, 0x01, 0xdc, 0x9b, 0x2c, 0x03, 0x2e, 0xba} \
}
// component implementing nsIRequestObserverProxy.
#define NS_REQUESTOBSERVERPROXY_CLASSNAME \
"nsRequestObserverProxy"
#define NS_REQUESTOBSERVERPROXY_CONTRACTID \
"@mozilla.org/network/request-observer-proxy;1"
#define NS_REQUESTOBSERVERPROXY_CID \
{ /* 51fa28c7-74c0-4b85-9c46-d03faa7b696b */ \
0x51fa28c7, \
0x74c0, \
0x4b85, \
{0x9c, 0x46, 0xd0, 0x3f, 0xaa, 0x7b, 0x69, 0x6b} \
}
// component implementing nsISimpleStreamListener.
#define NS_SIMPLESTREAMLISTENER_CLASSNAME \
"nsSimpleStreamListener"
#define NS_SIMPLESTREAMLISTENER_CONTRACTID \
"@mozilla.org/network/simple-stream-listener;1"
#define NS_SIMPLESTREAMLISTENER_CID \
{ /* fb8cbf4e-4701-4ba1-b1d6-5388e041fb67 */ \
0xfb8cbf4e, \
0x4701, \
0x4ba1, \
{0xb1, 0xd6, 0x53, 0x88, 0xe0, 0x41, 0xfb, 0x67} \
}
// component implementing nsIStreamListenerTee.
#define NS_STREAMLISTENERTEE_CLASSNAME \
"nsStreamListenerTee"
#define NS_STREAMLISTENERTEE_CONTRACTID \
"@mozilla.org/network/stream-listener-tee;1"
#define NS_STREAMLISTENERTEE_CID \
{ /* 831f8f13-7aa8-485f-b02e-77c881cc5773 */ \
0x831f8f13, \
0x7aa8, \
0x485f, \
{0xb0, 0x2e, 0x77, 0xc8, 0x81, 0xcc, 0x57, 0x73} \
}
// component implementing nsIAsyncStreamCopier.
#define NS_ASYNCSTREAMCOPIER_CLASSNAME \
"nsAsyncStreamCopier"
#define NS_ASYNCSTREAMCOPIER_CONTRACTID \
"@mozilla.org/network/async-stream-copier;1"
#define NS_ASYNCSTREAMCOPIER_CID \
{ /* e746a8b1-c97a-4fc5-baa4-66607521bd08 */ \
0xe746a8b1, \
0xc97a, \
0x4fc5, \
{0xba, 0xa4, 0x66, 0x60, 0x75, 0x21, 0xbd, 0x08} \
}
// component implementing nsIInputStreamPump.
#define NS_INPUTSTREAMPUMP_CLASSNAME \
"nsInputStreamPump"
#define NS_INPUTSTREAMPUMP_CONTRACTID \
"@mozilla.org/network/input-stream-pump;1"
#define NS_INPUTSTREAMPUMP_CID \
{ /* ccd0e960-7947-4635-b70e-4c661b63d675 */ \
0xccd0e960, \
0x7947, \
0x4635, \
{0xb7, 0x0e, 0x4c, 0x66, 0x1b, 0x63, 0xd6, 0x75} \
}
// component implementing nsIInputStreamChannel.
#define NS_INPUTSTREAMCHANNEL_CLASSNAME \
"nsInputStreamChannel"
#define NS_INPUTSTREAMCHANNEL_CONTRACTID \
"@mozilla.org/network/input-stream-channel;1"
#define NS_INPUTSTREAMCHANNEL_CID \
{ /* 6ddb050c-0d04-11d4-986e-00c04fa0cf4a */ \
0x6ddb050c, \
0x0d04, \
0x11d4, \
{0x98, 0x6e, 0x00, 0xc0, 0x4f, 0xa0, 0xcf, 0x4a} \
}
// component implementing nsIStreamLoader.
#define NS_STREAMLOADER_CLASSNAME \
"nsStreamLoader"
#define NS_STREAMLOADER_CONTRACTID \
"@mozilla.org/network/stream-loader;1"
#define NS_STREAMLOADER_CID \
{ /* 5BA6D920-D4E9-11d3-A1A5-0050041CAF44 */ \
0x5ba6d920, \
0xd4e9, \
0x11d3, \
{ 0xa1, 0xa5, 0x0, 0x50, 0x4, 0x1c, 0xaf, 0x44 } \
}
// component implementing nsIUnicharStreamLoader.
#define NS_UNICHARSTREAMLOADER_CLASSNAME \
"nsUnicharStreamLoader"
#define NS_UNICHARSTREAMLOADER_CONTRACTID \
"@mozilla.org/network/unichar-stream-loader;1"
#define NS_UNICHARSTREAMLOADER_CID \
{ /* 9445791f-fa4c-4669-b174-df5032bb67b3 */ \
0x9445791f, \
0xfa4c, \
0x4669, \
{ 0xb1, 0x74, 0xdf, 0x50, 0x32, 0xbb, 0x67, 0xb3 } \
}
// component implementing nsIDownloader.
#define NS_DOWNLOADER_CLASSNAME \
"nsDownloader"
#define NS_DOWNLOADER_CONTRACTID \
"@mozilla.org/network/downloader;1"
#define NS_DOWNLOADER_CID \
{ /* 510a86bb-6019-4ed1-bb4f-965cffd23ece */ \
0x510a86bb, \
0x6019, \
0x4ed1, \
{0xbb, 0x4f, 0x96, 0x5c, 0xff, 0xd2, 0x3e, 0xce} \
}
// component implementing nsISyncStreamListener.
#define NS_SYNCSTREAMLISTENER_CLASSNAME \
"nsSyncStreamListener"
#define NS_SYNCSTREAMLISTENER_CONTRACTID \
"@mozilla.org/network/sync-stream-listener;1"
#define NS_SYNCSTREAMLISTENER_CID \
{ /* 439400d3-6f23-43db-8b06-8aafe1869bd8 */ \
0x439400d3, \
0x6f23, \
0x43db, \
{0x8b, 0x06, 0x8a, 0xaf, 0xe1, 0x86, 0x9b, 0xd8} \
}
// component implementing nsIURIChecker.
#define NS_URICHECKER_CLASSNAME \
"nsURIChecker"
#define NS_URICHECKER_CONTRACT_ID \
"@mozilla.org/network/urichecker;1"
#define NS_URICHECKER_CID \
{ /* cf3a0e06-1dd1-11b2-a904-ac1d6da77a02 */ \
0xcf3a0e06, \
0x1dd1, \
0x11b2, \
{0xa9, 0x04, 0xac, 0x1d, 0x6d, 0xa7, 0x7a, 0x02} \
}
// component implementing nsIIncrementalDownload.
#define NS_INCREMENTALDOWNLOAD_CONTRACTID \
"@mozilla.org/network/incremental-download;1"
// component implementing nsISystemProxySettings.
#define NS_SYSTEMPROXYSETTINGS_CONTRACTID \
"@mozilla.org/system-proxy-settings;1"
// service implementing nsIStreamTransportService
#define NS_STREAMTRANSPORTSERVICE_CLASSNAME \
"nsStreamTransportService"
#define NS_STREAMTRANSPORTSERVICE_CONTRACTID \
"@mozilla.org/network/stream-transport-service;1"
#define NS_STREAMTRANSPORTSERVICE_CID \
{ /* 0885d4f8-f7b8-4cda-902e-94ba38bc256e */ \
0x0885d4f8, \
0xf7b8, \
0x4cda, \
{0x90, 0x2e, 0x94, 0xba, 0x38, 0xbc, 0x25, 0x6e} \
}
// service implementing nsISocketTransportService
#define NS_SOCKETTRANSPORTSERVICE_CLASSNAME \
"nsSocketTransportService"
#define NS_SOCKETTRANSPORTSERVICE_CONTRACTID \
"@mozilla.org/network/socket-transport-service;1"
#define NS_SOCKETTRANSPORTSERVICE_CID \
{ /* c07e81e0-ef12-11d2-92b6-00105a1b0d64 */ \
0xc07e81e0, \
0xef12, \
0x11d2, \
{0x92, 0xb6, 0x00, 0x10, 0x5a, 0x1b, 0x0d, 0x64} \
}
// component implementing nsIServerSocket
#define NS_SERVERSOCKET_CLASSNAME \
"nsServerSocket"
#define NS_SERVERSOCKET_CONTRACTID \
"@mozilla.org/network/server-socket;1"
#define NS_SERVERSOCKET_CID \
{ /* 2ec62893-3b35-48fa-ab1d-5e68a9f45f08 */ \
0x2ec62893, \
0x3b35, \
0x48fa, \
{0xab, 0x1d, 0x5e, 0x68, 0xa9, 0xf4, 0x5f, 0x08} \
}
// component implementing nsIUDPSocket
#define NS_UDPSOCKET_CLASSNAME \
"nsUDPSocket"
#define NS_UDPSOCKET_CONTRACTID \
"@mozilla.org/network/udp-socket;1"
#define NS_UDPSOCKET_CID \
{ /* 6b8e5bd3-8626-4fd8-bd21-69ec0af183d9 */ \
0x6b8e5bd3, \
0x8626, \
0x4fd8, \
{0xbd, 0x21, 0x69, 0xec, 0x0a, 0xf1, 0x83, 0xd9} \
}
#define NS_LOCALFILEINPUTSTREAM_CLASSNAME \
"nsFileInputStream"
#define NS_LOCALFILEINPUTSTREAM_CONTRACTID \
"@mozilla.org/network/file-input-stream;1"
#define NS_LOCALFILEINPUTSTREAM_CID \
{ /* be9a53ae-c7e9-11d3-8cda-0060b0fc14a3 */ \
0xbe9a53ae, \
0xc7e9, \
0x11d3, \
{0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
#define NS_LOCALFILEOUTPUTSTREAM_CLASSNAME \
"nsFileOutputStream"
#define NS_LOCALFILEOUTPUTSTREAM_CONTRACTID \
"@mozilla.org/network/file-output-stream;1"
#define NS_LOCALFILEOUTPUTSTREAM_CID \
{ /* c272fee0-c7e9-11d3-8cda-0060b0fc14a3 */ \
0xc272fee0, \
0xc7e9, \
0x11d3, \
{0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
#define NS_BUFFEREDINPUTSTREAM_CLASSNAME \
"nsBufferedInputStream"
#define NS_BUFFEREDINPUTSTREAM_CONTRACTID \
"@mozilla.org/network/buffered-input-stream;1"
#define NS_BUFFEREDINPUTSTREAM_CID \
{ /* 9226888e-da08-11d3-8cda-0060b0fc14a3 */ \
0x9226888e, \
0xda08, \
0x11d3, \
{0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
#define NS_BUFFEREDOUTPUTSTREAM_CLASSNAME \
"nsBufferedOutputStream"
#define NS_BUFFEREDOUTPUTSTREAM_CONTRACTID \
"@mozilla.org/network/buffered-output-stream;1"
#define NS_BUFFEREDOUTPUTSTREAM_CID \
{ /* 9868b4ce-da08-11d3-8cda-0060b0fc14a3 */ \
0x9868b4ce, \
0xda08, \
0x11d3, \
{0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
// component implementing nsISafeOutputStream
#define NS_SAFELOCALFILEOUTPUTSTREAM_CLASSNAME \
"nsSafeFileOutputStream"
#define NS_SAFELOCALFILEOUTPUTSTREAM_CONTRACTID \
"@mozilla.org/network/safe-file-output-stream;1"
#define NS_SAFELOCALFILEOUTPUTSTREAM_CID \
{ /* a181af0d-68b8-4308-94db-d4f859058215 */ \
0xa181af0d, \
0x68b8, \
0x4308, \
{0x94, 0xdb, 0xd4, 0xf8, 0x59, 0x05, 0x82, 0x15} \
}
// component implementing nsIPrompt
//
// NOTE: this implementation does not have any way to correctly parent itself,
// it is almost always wrong to get a prompt via this interface.
// use nsIWindowWatcher instead whenever possible.
//
#define NS_DEFAULTPROMPT_CONTRACTID \
"@mozilla.org/network/default-prompt;1"
// component implementing nsIAuthPrompt
//
// NOTE: this implementation does not have any way to correctly parent itself,
// it is almost always wrong to get an auth prompt via this interface.
// use nsIWindowWatcher instead whenever possible.
//
#define NS_DEFAULTAUTHPROMPT_CONTRACTID \
"@mozilla.org/network/default-auth-prompt;1"
/******************************************************************************
* netwerk/cache/ classes
*/
// service implementing nsICacheService.
#define NS_CACHESERVICE_CLASSNAME \
"nsCacheService"
#define NS_CACHESERVICE_CONTRACTID \
"@mozilla.org/network/cache-service;1"
#define NS_CACHESERVICE_CID \
{ /* 6c84aec9-29a5-4264-8fbc-bee8f922ea67 */ \
0x6c84aec9, \
0x29a5, \
0x4264, \
{0x8f, 0xbc, 0xbe, 0xe8, 0xf9, 0x22, 0xea, 0x67} \
}
/******************************************************************************
* netwerk/protocol/http/ classes
*/
#define NS_HTTPPROTOCOLHANDLER_CID \
{ /* 4f47e42e-4d23-4dd3-bfda-eb29255e9ea3 */ \
0x4f47e42e, \
0x4d23, \
0x4dd3, \
{0xbf, 0xda, 0xeb, 0x29, 0x25, 0x5e, 0x9e, 0xa3} \
}
#define NS_HTTPSPROTOCOLHANDLER_CID \
{ /* dccbe7e4-7750-466b-a557-5ea36c8ff24e */ \
0xdccbe7e4, \
0x7750, \
0x466b, \
{0xa5, 0x57, 0x5e, 0xa3, 0x6c, 0x8f, 0xf2, 0x4e} \
}
#define NS_HTTPBASICAUTH_CID \
{ /* fca3766a-434a-4ae7-83cf-0909e18a093a */ \
0xfca3766a, \
0x434a, \
0x4ae7, \
{0x83, 0xcf, 0x09, 0x09, 0xe1, 0x8a, 0x09, 0x3a} \
}
#define NS_HTTPDIGESTAUTH_CID \
{ /* 17491ba4-1dd2-11b2-aae3-de6b92dab620 */ \
0x17491ba4, \
0x1dd2, \
0x11b2, \
{0xaa, 0xe3, 0xde, 0x6b, 0x92, 0xda, 0xb6, 0x20} \
}
#define NS_HTTPNTLMAUTH_CID \
{ /* bbef8185-c628-4cc1-b53e-e61e74c2451a */ \
0xbbef8185, \
0xc628, \
0x4cc1, \
{0xb5, 0x3e, 0xe6, 0x1e, 0x74, 0xc2, 0x45, 0x1a} \
}
#define NS_HTTPAUTHMANAGER_CLASSNAME \
"nsHttpAuthManager"
#define NS_HTTPAUTHMANAGER_CONTRACTID \
"@mozilla.org/network/http-auth-manager;1"
#define NS_HTTPAUTHMANAGER_CID \
{ /* 36b63ef3-e0fa-4c49-9fd4-e065e85568f4 */ \
0x36b63ef3, \
0xe0fa, \
0x4c49, \
{0x9f, 0xd4, 0xe0, 0x65, 0xe8, 0x55, 0x68, 0xf4} \
}
/******************************************************************************
* netwerk/protocol/ftp/ classes
*/
#define NS_FTPPROTOCOLHANDLER_CLASSNAME \
"nsFtpProtocolHandler"
#define NS_FTPPROTOCOLHANDLER_CID \
{ /* 25029490-F132-11d2-9588-00805F369F95 */ \
0x25029490, \
0xf132, \
0x11d2, \
{0x95, 0x88, 0x0, 0x80, 0x5f, 0x36, 0x9f, 0x95} \
}
/******************************************************************************
* netwerk/protocol/res/ classes
*/
#define NS_RESPROTOCOLHANDLER_CLASSNAME \
"nsResProtocolHandler"
#define NS_RESPROTOCOLHANDLER_CID \
{ /* e64f152a-9f07-11d3-8cda-0060b0fc14a3 */ \
0xe64f152a, \
0x9f07, \
0x11d3, \
{0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
#define NS_RESURL_CLASSNAME \
"nsResURL"
#define NS_RESURL_CID \
{ /* ff8fe7ec-2f74-4408-b742-6b7a546029a8 */ \
0xff8fe7ec, \
0x2f74, \
0x4408, \
{0xb7, 0x42, 0x6b, 0x7a, 0x54, 0x60, 0x29, 0xa8} \
}
/******************************************************************************
* netwerk/protocol/file/ classes
*/
#define NS_FILEPROTOCOLHANDLER_CLASSNAME \
"nsFileProtocolHandler"
#define NS_FILEPROTOCOLHANDLER_CID \
{ /* fbc81170-1f69-11d3-9344-00104ba0fd40 */ \
0xfbc81170, \
0x1f69, \
0x11d3, \
{0x93, 0x44, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40} \
}
/******************************************************************************
* netwerk/protocol/data/ classes
*/
#define NS_DATAPROTOCOLHANDLER_CLASSNAME \
"nsDataProtocolHandler"
#define NS_DATAPROTOCOLHANDLER_CID \
{ /* {B6ED3030-6183-11d3-A178-0050041CAF44} */ \
0xb6ed3030, \
0x6183, \
0x11d3, \
{0xa1, 0x78, 0x00, 0x50, 0x04, 0x1c, 0xaf, 0x44} \
}
/******************************************************************************
* netwerk/protocol/viewsource/ classes
*/
// service implementing nsIProtocolHandler
#define NS_VIEWSOURCEHANDLER_CID \
{ /* {0x9c7ec5d1-23f9-11d5-aea8-8fcc0793e97f} */ \
0x9c7ec5d1, \
0x23f9, \
0x11d5, \
{0xae, 0xa8, 0x8f, 0xcc, 0x07, 0x93, 0xe9, 0x7f} \
}
/******************************************************************************
* netwerk/protocol/about/ classes
*/
#define NS_ABOUTPROTOCOLHANDLER_CLASSNAME \
"About Protocol Handler"
#define NS_ABOUTPROTOCOLHANDLER_CID \
{ /* 9e3b6c90-2f75-11d3-8cd0-0060b0fc14a3 */ \
0x9e3b6c90, \
0x2f75, \
0x11d3, \
{0x8c, 0xd0, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
#define NS_SAFEABOUTPROTOCOLHANDLER_CLASSNAME \
"Safe About Protocol Handler"
#define NS_SAFEABOUTPROTOCOLHANDLER_CID \
{ /* 1423e739-782c-4081-b5d8-fe6fba68c0ef */ \
0x1423e739, \
0x782c, \
0x4081, \
{0xb5, 0xd8, 0xfe, 0x6f, 0xba, 0x68, 0xc0, 0xef} \
}
/******************************************************************************
* netwerk/dns/ classes
*/
#define NS_DNSSERVICE_CLASSNAME \
"nsDNSService"
#define NS_DNSSERVICE_CONTRACTID \
"@mozilla.org/network/dns-service;1"
#define NS_DNSSERVICE_CID \
{ /* b0ff4572-dae4-4bef-a092-83c1b88f6be9 */ \
0xb0ff4572, \
0xdae4, \
0x4bef, \
{0xa0, 0x92, 0x83, 0xc1, 0xb8, 0x8f, 0x6b, 0xe9} \
}
#define NS_IDNSERVICE_CLASSNAME \
"nsIDNService"
/* ContractID of the XPCOM package that implements nsIIDNService */
#define NS_IDNSERVICE_CONTRACTID \
"@mozilla.org/network/idn-service;1"
#define NS_IDNSERVICE_CID \
{ /* 62b778a6-bce3-456b-8c31-2865fbb68c91 */ \
0x62b778a6, \
0xbce3, \
0x456b, \
{0x8c, 0x31, 0x28, 0x65, 0xfb, 0xb6, 0x8c, 0x91} \
}
#define NS_EFFECTIVETLDSERVICE_CLASSNAME \
"nsEffectiveTLDService"
#define NS_EFFECTIVETLDSERVICE_CONTRACTID \
"@mozilla.org/network/effective-tld-service;1"
#define NS_EFFECTIVETLDSERVICE_CID \
{ /* cb9abbae-66b6-4609-8594-5c4ff300888e */ \
0xcb9abbae, \
0x66b6, \
0x4609, \
{0x85, 0x94, 0x5c, 0x4f, 0xf3, 0x00, 0x88, 0x8e} \
}
/******************************************************************************
* netwerk/mime classes
*/
#define NS_MIMEHEADERPARAM_CLASSNAME \
"nsMIMEHeaderParamImpl"
// {1F4DBCF7-245C-4c8c-943D-8A1DA0495E8A}
#define NS_MIMEHEADERPARAM_CID \
{ 0x1f4dbcf7, \
0x245c, \
0x4c8c, \
{ 0x94, 0x3d, 0x8a, 0x1d, 0xa0, 0x49, 0x5e, 0x8a } \
}
#define NS_MIMEHEADERPARAM_CONTRACTID "@mozilla.org/network/mime-hdrparam;1"
/******************************************************************************
* netwerk/socket classes
*/
#define NS_SOCKETPROVIDERSERVICE_CLASSNAME \
"nsSocketProviderService"
#define NS_SOCKETPROVIDERSERVICE_CONTRACTID \
"@mozilla.org/network/socket-provider-service;1"
#define NS_SOCKETPROVIDERSERVICE_CID \
{ /* ed394ba0-5472-11d3-bbc8-0000861d1237 */ \
0xed394ba0, \
0x5472, \
0x11d3, \
{ 0xbb, 0xc8, 0x00, 0x00, 0x86, 0x1d, 0x12, 0x37 } \
}
#define NS_SOCKSSOCKETPROVIDER_CID \
{ /* 8dbe7246-1dd2-11b2-9b8f-b9a849e4403a */ \
0x8dbe7246, \
0x1dd2, \
0x11b2, \
{ 0x9b, 0x8f, 0xb9, 0xa8, 0x49, 0xe4, 0x40, 0x3a } \
}
#define NS_SOCKS4SOCKETPROVIDER_CID \
{ /* F7C9F5F4-4451-41c3-A28A-5BA2447FBACE */ \
0xf7c9f5f4, \
0x4451, \
0x41c3, \
{ 0xa2, 0x8a, 0x5b, 0xa2, 0x44, 0x7f, 0xba, 0xce } \
}
#define NS_UDPSOCKETPROVIDER_CID \
{ /* 320706D2-2E81-42c6-89C3-8D83B17D3FB4 */ \
0x320706d2, \
0x2e81, \
0x42c6, \
{ 0x89, 0xc3, 0x8d, 0x83, 0xb1, 0x7d, 0x3f, 0xb4 } \
}
#define NS_SSLSOCKETPROVIDER_CONTRACTID \
NS_NETWORK_SOCKET_CONTRACTID_PREFIX "ssl"
/* This code produces a normal socket which can be used to initiate the
* STARTTLS protocol by calling its nsISSLSocketControl->StartTLS()
*/
#define NS_STARTTLSSOCKETPROVIDER_CONTRACTID \
NS_NETWORK_SOCKET_CONTRACTID_PREFIX "starttls"
/******************************************************************************
* netwerk/cookie classes
*/
// service implementing nsICookieManager and nsICookieManager2.
#define NS_COOKIEMANAGER_CLASSNAME \
"CookieManager"
#define NS_COOKIEMANAGER_CONTRACTID \
"@mozilla.org/cookiemanager;1"
#define NS_COOKIEMANAGER_CID \
{ /* aaab6710-0f2c-11d5-a53b-0010a401eb10 */ \
0xaaab6710, \
0x0f2c, \
0x11d5, \
{ 0xa5, 0x3b, 0x00, 0x10, 0xa4, 0x01, 0xeb, 0x10 } \
}
// service implementing nsICookieService.
#define NS_COOKIESERVICE_CLASSNAME \
"CookieService"
#define NS_COOKIESERVICE_CONTRACTID \
"@mozilla.org/cookieService;1"
#define NS_COOKIESERVICE_CID \
{ /* c375fa80-150f-11d6-a618-0010a401eb10 */ \
0xc375fa80, \
0x150f, \
0x11d6, \
{ 0xa6, 0x18, 0x00, 0x10, 0xa4, 0x01, 0xeb, 0x10 } \
}
/******************************************************************************
* netwerk/streamconv classes
*/
// service implementing nsIStreamConverterService
#define NS_STREAMCONVERTERSERVICE_CONTRACTID \
"@mozilla.org/streamConverters;1"
#define NS_STREAMCONVERTERSERVICE_CID \
{ /* 892FFEB0-3F80-11d3-A16C-0050041CAF44 */ \
0x892ffeb0, \
0x3f80, \
0x11d3, \
{0xa1, 0x6c, 0x00, 0x50, 0x04, 0x1c, 0xaf, 0x44} \
}
/**
* General-purpose content sniffer component. Use with CreateInstance.
*
* Implements nsIContentSniffer
*/
#define NS_GENERIC_CONTENT_SNIFFER \
"@mozilla.org/network/content-sniffer;1"
/**
* Detector that can act as either an nsIStreamConverter or an
* nsIContentSniffer to decide whether text/plain data is "really" text/plain
* or APPLICATION_GUESS_FROM_EXT. Use with CreateInstance.
*/
#define NS_BINARYDETECTOR_CONTRACTID \
"@mozilla.org/network/binary-detector;1"
/******************************************************************************
* netwerk/system classes
*/
// service implementing nsINetworkLinkService
#define NS_NETWORK_LINK_SERVICE_CLASSNAME "Network Link Status"
#define NS_NETWORK_LINK_SERVICE_CID \
{ 0x75a500a2, \
0x0030, \
0x40f7, \
{ 0x86, 0xf8, 0x63, 0xf2, 0x25, 0xb9, 0x40, 0xae } \
}
/******************************************************************************
* Contracts that can be implemented by necko users.
*/
/**
* This contract ID will be gotten as a service and gets the opportunity to look
* at and veto all redirects that are processed by necko.
*
* Must implement nsIChannelEventSink
*/
#define NS_GLOBAL_CHANNELEVENTSINK_CONTRACTID \
"@mozilla.org/netwerk/global-channel-event-sink;1"
/**
* This contract ID will be gotten as a service implementing nsINetworkLinkService
* and monitored by IOService for automatic online/offline management.
*
* Must implement nsINetworkLinkService
*/
#define NS_NETWORK_LINK_SERVICE_CONTRACTID \
"@mozilla.org/network/network-link-service;1"
/**
* This contract ID is used when Necko needs to wrap an nsIAuthPrompt as
* nsIAuthPrompt2. Implementing it is required for backwards compatibility
* with Versions before 1.9.
*
* Must implement nsIAuthPromptAdapterFactory
*/
#define NS_AUTHPROMPT_ADAPTER_FACTORY_CONTRACTID \
"@mozilla.org/network/authprompt-adapter-factory;1"
/**
* Must implement nsICryptoHash.
*/
#define NS_CRYPTO_HASH_CONTRACTID "@mozilla.org/security/hash;1"
/**
* Must implement nsICryptoHMAC.
*/
#define NS_CRYPTO_HMAC_CONTRACTID "@mozilla.org/security/hmac;1"
/******************************************************************************
* Categories
*/
/**
* Services registered in this category will get notified via
* nsIChannelEventSink about all redirects that happen and have the opportunity
* to veto them. The value of the category entries is interpreted as the
* contract ID of the service.
*/
#define NS_CHANNEL_EVENT_SINK_CATEGORY "net-channel-event-sinks"
/**
* Services in this category will get told about each load that happens and get
* the opportunity to override the detected MIME type via nsIContentSniffer.
* Services should not set the MIME type on the channel directly, but return the
* new type. If getMIMETypeFromContent throws an exception, the type will remain
* unchanged.
*
* Note that only channels with the LOAD_CALL_CONTENT_SNIFFERS flag will call
* content sniffers. Also note that there can be security implications about
* changing the MIME type -- proxies filtering responses based on their MIME
* type might consider certain types to be safe, which these sniffers can
* override.
*
* Not all channels may implement content sniffing. See also
* nsIChannel::LOAD_CALL_CONTENT_SNIFFERS.
*/
#define NS_CONTENT_SNIFFER_CATEGORY "net-content-sniffers"
/**
* Must implement nsINSSErrorsService.
*/
#define NS_NSS_ERRORS_SERVICE_CONTRACTID "@mozilla.org/nss_errors_service;1"
#endif // nsNetCID_h__

File diff suppressed because it is too large Load Diff

View File

@@ -1,64 +0,0 @@
# vim: noexpandtab ts=8 sw=8
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = necko
XPIDL_MODULE = necko_dns
GRE_MODULE = 1
XPIDLSRCS = \
nsPIDNSService.idl \
nsIDNSService.idl \
nsIDNSListener.idl \
nsIDNSIterListener.idl \
nsIDNSRecord.idl \
nsIDNSNAPTRRecord.idl \
nsIDNSSRVRecord.idl \
nsIIDNService.idl \
nsIEffectiveTLDService.idl \
$(NULL)
include $(topsrcdir)/config/rules.mk
DEFINES += -DIMPL_NS_NET

View File

@@ -1,60 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla.
*
* The Initial Developer of the Original Code is 8x8 Inc.
*
* Contributor(s):
* Eilon Yardeni <eyardeni@8x8.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
interface nsICancelable;
interface nsISimpleEnumerator;
/**
* nsIDNSIterListener
*/
[scriptable, uuid(abb41005-f08b-41d6-8a7b-34028e1977f2)]
interface nsIDNSIterListener : nsISupports
{
/**
* called when an asynchronous dns lookup completes.
*
* @param aRequest
* the value returned from asyncResolveWithType.
* @param aIter
* an iterator for the DNS records in the reply.
* this parameter is null if there was an error.
* @param aStatus
* if the lookup failed, this parameter gives the reason.
*/
void onLookupComplete(in nsICancelable aRequest,
in nsISimpleEnumerator aIter,
in nsresult aStatus);
};

View File

@@ -1,64 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla.
*
* The Initial Developer of the Original Code is 8x8 Inc.
*
* Contributor(s):
* Eilon Yardeni <eyardeni@8x8.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
[scriptable, uuid(7fb8d4de-293e-47d1-a113-4e8c5bee1c30)]
interface nsIDNSNAPTRRecord : nsISupports
{
/**
* @return the time-to-live field of this record.
*/
readonly attribute unsigned long ttl;
/**
* @return the flag field of this record.
*/
readonly attribute ACString flag;
/**
* @return the service field of this record.
*/
readonly attribute ACString service;
/**
* @return the regexp field of this record.
*/
readonly attribute ACString regexp;
/**
* @return the replacement field of this record.
*/
readonly attribute ACString replacement;
};

View File

@@ -1,64 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla.
*
* The Initial Developer of the Original Code is 8x8 Inc.
*
* Contributor(s):
* Eilon Yardeni <eyardeni@8x8.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
[scriptable, uuid(b3e03004-03c0-4925-a3fb-989b3d3610e0)]
interface nsIDNSSRVRecord : nsISupports
{
/**
* @return the time-to-live field of this record.
*/
readonly attribute unsigned long ttl;
/**
* @return the priority field of this record.
*/
readonly attribute unsigned short priority;
/**
* @return the weight field of this record.
*/
readonly attribute unsigned short weight;
/**
* @return the host field of this record.
*/
readonly attribute ACString host;
/**
* @return the port field of this record.
*/
readonly attribute long port;
};

View File

@@ -1,150 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Gordon Sheridan <gordon@netscape.com>
* IBM Corp.
* 8x8, Inc.
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
interface nsICancelable;
interface nsIEventTarget;
interface nsIDNSRecord;
interface nsIDNSListener;
interface nsIDNSIterListener;
interface nsISimpleEnumerator;
/**
* nsIDNSService
*/
[scriptable, uuid(827B7489-0560-44e1-9276-CDCE03195BF2)]
interface nsIDNSService : nsISupports
{
nsISimpleEnumerator resolveWithType(in AUTF8String aName,
in unsigned long aRecordType,
in unsigned long aFlags);
nsICancelable asyncResolveWithType(in AUTF8String aName,
in unsigned long aRecordType,
in unsigned long aFlags,
in nsIDNSIterListener aListener,
in nsIEventTarget aListenerTarget);
/**
* kicks off an asynchronous host lookup.
*
* @param aHostName
* the hostname or IP-address-literal to resolve.
* @param aFlags
* a bitwise OR of the RESOLVE_ prefixed constants defined below.
* @param aListener
* the listener to be notified when the result is available.
* @param aListenerTarget
* optional parameter (may be null). if non-null, this parameter
* specifies the nsIEventTarget of the thread on which the
* listener's onLookupComplete should be called. however, if this
* parameter is null, then onLookupComplete will be called on an
* unspecified thread (possibly recursively).
*
* @return An object that can be used to cancel the host lookup.
*/
nsICancelable asyncResolve(in AUTF8String aHostName,
in unsigned long aFlags,
in nsIDNSListener aListener,
in nsIEventTarget aListenerTarget);
/**
* called to synchronously resolve a hostname. warning this method may
* block the calling thread for a long period of time. it is extremely
* unwise to call this function on the UI thread of an application.
*
* @param aHostName
* the hostname or IP-address-literal to resolve.
* @param aFlags
* a bitwise OR of the RESOLVE_ prefixed constants defined below.
*
* @return DNS record corresponding to the given hostname.
* @throws NS_ERROR_UNKNOWN_HOST if host could not be resolved.
*/
nsIDNSRecord resolve(in AUTF8String aHostName,
in unsigned long aFlags);
/**
* @return the hostname of the operating system.
*/
readonly attribute AUTF8String myHostName;
/*************************************************************************
* Listed below are the various flags that may be OR'd together to form
* the aFlags parameter passed to asyncResolve() and resolve().
*/
/**
* if set, this flag suppresses the internal DNS lookup cache.
*/
const unsigned long RESOLVE_BYPASS_CACHE = (1 << 0);
/**
* if set, the canonical name of the specified host will be queried.
*/
const unsigned long RESOLVE_CANONICAL_NAME = (1 << 1);
/*************************************************************************
* Listed below are the various record types that may used with the
* resolveWithType() and asyncResolveWithType() api
*/
/**
* ADDRESS record
*
* when using this flag the api returns an enumerator to a single
* nsIDNSRecord element that holds the address records
*/
const unsigned long DNS_RECORD_ADDRESS = 1;
/**
* SRV record
*
* when using this flag the api returns a nsIDNSSRVRecord records enumerator
*/
const unsigned long DNS_RECORD_SRV = 2;
/**
* NAPTR record
*
* when using this flag the api returns a nsIDNSNAPTRRecord records enumerator
*/
const unsigned long DNS_RECORD_NAPTR = 3;
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,89 +0,0 @@
<?xml version="1.0"?>
<bindings id="checkboxBindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="checkbox" extends="chrome://global/content/bindings/checkbox.xml#checkbox-baseline">
<resources>
<stylesheet src="chrome://global/skin/checkbox.css"/>
</resources>
</binding>
<binding id="checkbox-baseline" extends="chrome://global/content/bindings/general.xml#basetext">
<content>
<xul:image class="checkbox-check" xbl:inherits="checked,disabled"/>
<xul:hbox class="checkbox-label-box" flex="1">
<xul:image class="checkbox-icon" xbl:inherits="src"/>
<xul:label class="checkbox-label" xbl:inherits="xbl:text=label,accesskey,crop" flex="1"/>
</xul:hbox>
</content>
<implementation implements="nsIDOMXULCheckboxElement, nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULCheckbox;
]]>
</getter>
</property>
<method name="setChecked">
<parameter name="aValue"/>
<body>
<![CDATA[
var change = (aValue != (this.getAttribute('checked') == 'true'));
if (aValue)
this.setAttribute('checked', 'true');
else
this.removeAttribute('checked');
if (change) {
var event = document.createEvent('Events');
event.initEvent('CheckboxStateChange', true, true);
this.dispatchEvent(event);
}
return aValue;
]]>
</body>
</method>
<property name="userInputDisabled" readonly="true"
onget="return this.disabled || (window.getComputedStyle(this, '').getPropertyValue('-moz-user-input') == 'disabled');" />
<!-- public implementation -->
<property name="checked" onset="return this.setChecked(val);"
onget="return this.getAttribute('checked') == 'true';"/>
</implementation>
<handlers>
<!-- While it would seem we could do this by handling oncommand, we need can't
because any external oncommand handlers might get called before ours, and
then they would see the incorrect value of checked. -->
<handler event="click" button="0" action="if (!this.userInputDisabled) this.checked = !this.checked;"/>
<handler event="keypress" key=" ">
<![CDATA[
if (!this.userInputDisabled)
this.checked = !this.checked;
]]>
</handler>
</handlers>
</binding>
<binding id="checkbox-with-spacing"
extends="chrome://global/content/bindings/checkbox.xml#checkbox">
<content>
<xul:hbox class="checkbox-spacer-box">
<xul:image class="checkbox-check" xbl:inherits="checked,disabled"/>
</xul:hbox>
<xul:hbox class="checkbox-label-center-box" flex="1">
<xul:hbox class="checkbox-label-box" flex="1">
<xul:image class="checkbox-icon" xbl:inherits="src"/>
<xul:label class="checkbox-label" xbl:inherits="xbl:text=label,accesskey,crop" flex="1"/>
</xul:hbox>
</xul:hbox>
</content>
</binding>
</bindings>

View File

@@ -1,255 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Benjamin Smedberg <benjamin@smedbergs.us>
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
ifdef MOZ_RDF
include $(topsrcdir)/rdf/util/src/objs.mk
endif
include $(topsrcdir)/intl/unicharutil/util/objs.mk
MODULE = libxul
LIBRARY_NAME = xul
FORCE_USE_PIC = 1
FORCE_SHARED_LIB = 1
MOZILLA_INTERNAL_API = 1
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
# This is going to be a framework named "XUL", not an ordinary library named
# "libxul.dylib"
LIBRARY_NAME=XUL
# Setting MAKE_FRAMEWORK makes DLL_PREFIX and DLL_SUFFIX be ignored when
# setting SHARED_LIBRARY; we need to leave DLL_PREFIX and DLL_SUFFIX
# as-is so that dependencies of the form -ltracemalloc still work.
MAKE_FRAMEWORK=1
endif
REQUIRES = \
xpcom \
string \
$(ZLIB_REQUIRES) \
xulapp \
$(NULL)
ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
CPPSRCS += dlldeps-xul.cpp
endif
ifeq ($(OS_ARCH),WINCE)
CPPSRCS += dlldeps-xul.cpp
endif
ifeq ($(OS_ARCH),OS2)
CPPSRCS += dlldeps-xul.cpp
endif
# dependent libraries
ifneq (,$(MOZ_ENABLE_GTK2))
SHARED_LIBRARY_LIBS += \
$(DEPTH)/embedding/browser/gtk/src/$(LIB_PREFIX)gtkembedmoz.$(LIB_SUFFIX)
DEFINES += -DMOZ_ENABLE_GTK2
endif
SHARED_LIBRARY_LIBS += \
$(DEPTH)/toolkit/xre/$(LIB_PREFIX)xulapp_s.$(LIB_SUFFIX) \
$(NULL)
SHARED_LIBRARY_LIBS += \
$(foreach component,$(COMPONENT_LIBS),$(DEPTH)/staticlib/components/$(LIB_PREFIX)$(component).$(LIB_SUFFIX)) \
$(foreach lib,$(STATIC_LIBS),$(DEPTH)/staticlib/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX)) \
$(NULL)
ifdef MOZ_JAVAXPCOM
LOCAL_INCLUDES += \
-I$(topsrcdir)/extensions/java/xpcom/src \
-I$(JAVA_INCLUDE_PATH) \
$(NULL)
ifeq ($(OS_ARCH),WINNT)
CPPSRCS += dlldeps-javaxpcom.cpp
LOCAL_INCLUDES += -I$(JAVA_INCLUDE_PATH)/win32
else
ifeq ($(OS_ARCH),OS2)
CPPSRCS += dlldeps-javaxpcom.cpp
LOCAL_INCLUDES += -I$(JAVA_INCLUDE_PATH)/os2
else
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
EXTRA_DSO_LDOPTS += -framework JavaVM
else
LOCAL_INCLUDES += -I$(JAVA_INCLUDE_PATH)/linux
endif
endif
endif
SHARED_LIBRARY_LIBS += \
$(DEPTH)/extensions/java/xpcom/src/$(LIB_PREFIX)javaxpcom.$(LIB_SUFFIX)
endif #MOZ_JAVAXPCOM
ifdef MOZ_ENABLE_LIBXUL
include $(srcdir)/libxul-config.mk
EXTRA_DEPS += \
$(srcdir)/libxul-config.mk \
$(srcdir)/libxul-rules.mk \
$(topsrcdir)/intl/unicharutil/util/objs.mk \
$(NULL)
REQUIRES += \
uconv \
unicharutil \
$(NULL)
CPPSRCS += \
$(INTL_UNICHARUTIL_UTIL_LCPPSRCS) \
$(NULL)
GARBAGE += \
$(INTL_UNICHARUTIL_UTIL_LCPPSRCS) \
$(wildcard *.$(OBJ_SUFFIX)) \
dlldeps-javaxpcom.cpp \
$(NULL)
LOCAL_INCLUDES += -I$(topsrcdir)/intl/unicharutil/util
ifdef MOZ_RDF
EXTRA_DEPS += \
$(topsrcdir)/rdf/util/src/objs.mk \
$(NULL)
REQUIRES += \
rdf \
rdfutil \
$(NULL)
CPPSRCS += \
$(RDF_UTIL_SRC_LCPPSRCS) \
$(NULL)
GARBAGE += \
$(RDF_UTIL_SRC_LCPPSRCS) \
$(NULL)
endif
else
ifdef NS_TRACE_MALLOC
# In libxul builds, tracemalloc is part of libxul instead.
ifndef MOZ_ENABLE_LIBXUL
EXTRA_DSO_LIBS += tracemalloc
endif
endif
endif
ifneq (,$(filter OS2 WINCE WINNT,$(OS_ARCH)))
SDK_LIBRARY = $(IMPORT_LIBRARY)
else
SDK_LIBRARY = $(SHARED_LIBRARY)
endif
include $(topsrcdir)/config/rules.mk
export:: $(RDF_UTIL_SRC_CPPSRCS) $(INTL_UNICHARUTIL_UTIL_CPPSRCS)
$(INSTALL) $^ .
EXTRA_DSO_LDOPTS += $(LIBS_DIR) $(EXTRA_DSO_LIBS)
ifdef MOZ_ENABLE_LIBXUL
include $(srcdir)/libxul-rules.mk
else
EXTRA_DSO_LDOPTS += \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_JS_LIBS) \
$(NULL)
endif
DEFINES += -DIMPL_XREAPI
EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
CXXFLAGS += $(TK_CFLAGS)
EXTRA_DSO_LDOPTS += \
-framework QuickTime \
-framework IOKit \
-lcrypto \
$(TK_LIBS) \
$(NULL)
endif
ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT))
EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(MOZ_XFT_LIBS) $(MOZ_GTK2_LIBS) $(XT_LIBS) -lgthread-2.0
EXTRA_DSO_LDOPTS += $(FT2_LIBS)
endif
ifdef MOZ_ENABLE_STARTUP_NOTIFICATION
EXTRA_DSO_LDOPTS += $(MOZ_STARTUP_NOTIFICATION_LIBS)
endif
ifeq ($(OS_ARCH),BeOS)
EXTRA_DSO_LDOPTS += -lbe -ltracker
endif
ifeq ($(OS_ARCH),SunOS)
EXTRA_DSO_LDOPTS += -lelf -ldemangle -lCstd
endif
ifeq ($(OS_ARCH),WINNT)
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME,shell32 ole32 uuid version winspool comdlg32 imm32 winmm wsock32 msimg32)
ifneq (,$(MOZ_DEBUG)$(NS_TRACE_MALLOC))
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME,imagehlp)
endif
endif # WINNT
ifeq ($(OS_ARCH),WINCE)
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME, aygshell cellcore uuid ole32 oleaut32 )
endif
ifdef MOZ_JPROF
EXTRA_DSO_LDOPTS += -ljprof
endif
ifdef MOZ_JAVAXPCOM
dlldeps-javaxpcom.cpp: $(topsrcdir)/extensions/java/xpcom/src/dlldeps-javaxpcom.cpp
$(INSTALL) $^ .
endif
ifneq (,$(filter layout-debug,$(MOZ_EXTENSIONS)))
DEFINES += -DMOZ_ENABLE_EXTENSION_LAYOUT_DEBUG
endif

View File

@@ -1,347 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 Mozilla libxul
#
# The Initial Developer of the Original Code is
# Benjamin Smedberg <benjamin@smedbergs.us>
#
# Portions created by the Initial Developer are Copyright (C) 2005
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Shawn Wilsher <me@shawnwilsher.com>
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
CPPSRCS += \
nsStaticXULComponents.cpp \
$(NULL)
ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
REQUIRES += libreg widget gfx
CPPSRCS += \
dlldeps.cpp \
nsGFXDeps.cpp \
nsDllMain.cpp \
$(NULL)
RCINCLUDE = xulrunner.rc
ifndef MOZ_NATIVE_ZLIB
CPPSRCS += dlldeps-zlib.cpp
DEFINES += -DZLIB_INTERNAL
endif
LOCAL_INCLUDES += -I$(topsrcdir)/widget/src/windows
endif
ifneq (,$(filter WINNT OS2,$(OS_ARCH)))
DEFINES += -DZLIB_DLL=1
endif
ifeq ($(OS_ARCH),OS2)
REQUIRES += libreg widget gfx
CPPSRCS += \
dlldeps.cpp \
nsGFXDeps.cpp \
$(NULL)
ifndef MOZ_NATIVE_ZLIB
CPPSRCS += dlldeps-zlib.cpp
DEFINES += -DZLIB_INTERNAL
endif
ifdef MOZ_ENABLE_LIBXUL
RESFILE = xulrunos2.res
RCFLAGS += -i $(topsrcdir)/widget/src/os2
endif
LOCAL_INCLUDES += -I$(topsrcdir)/widget/src/os2
endif
# dependent libraries
STATIC_LIBS += \
xpcom_core \
ucvutil_s \
gkgfx \
gfxshared_s \
$(NULL)
#ifndef MOZ_EMBEDDING_LEVEL_DEFAULT
ifdef MOZ_XPINSTALL
STATIC_LIBS += \
mozreg_s \
$(NULL)
endif
#endif
# component libraries
COMPONENT_LIBS += \
xpconnect \
necko \
uconv \
i18n \
chardet \
jar$(VERSION_NUMBER) \
pref \
caps \
htmlpars \
imglib2 \
gklayout \
docshell \
embedcomponents \
webbrwsr \
nsappshell \
txmgr \
chrome \
commandlines \
toolkitcomps \
pipboot \
pipnss \
$(NULL)
ifdef MOZ_XMLEXTRAS
COMPONENT_LIBS += \
xmlextras \
$(NULL)
endif
ifdef MOZ_PLUGINS
DEFINES += -DMOZ_PLUGINS
COMPONENT_LIBS += \
gkplugin \
$(NULL)
endif
ifdef MOZ_XPFE_COMPONENTS
DEFINES += -DMOZ_XPFE_COMPONENTS
COMPONENT_LIBS += \
mozfind \
appcomps \
$(NULL)
endif
ifdef MOZ_XUL
ifdef MOZ_ENABLE_GTK2
COMPONENT_LIBS += \
unixproxy \
$(NULL)
endif
endif
ifdef MOZ_PERF_METRICS
EXTRA_DSO_LIBS += mozutil_s
endif
ifdef MOZ_XPINSTALL
DEFINES += -DMOZ_XPINSTALL
COMPONENT_LIBS += \
xpinstall \
$(NULL)
endif
ifdef MOZ_JSDEBUGGER
DEFINES += -DMOZ_JSDEBUGGER
COMPONENT_LIBS += \
jsd \
$(NULL)
endif
ifdef MOZ_PREF_EXTENSIONS
DEFINES += -DMOZ_PREF_EXTENSIONS
COMPONENT_LIBS += \
autoconfig \
$(NULL)
endif
ifdef MOZ_WEBSERVICES
DEFINES += -DMOZ_WEBSERVICES
COMPONENT_LIBS += \
websrvcs \
$(NULL)
endif
ifdef MOZ_AUTH_EXTENSION
COMPONENT_LIBS += auth
DEFINES += -DMOZ_AUTH_EXTENSION
endif
ifdef MOZ_PERMISSIONS
COMPONENT_LIBS += cookie permissions
DEFINES += -DMOZ_PERMISSIONS
endif
ifdef MOZ_UNIVERSALCHARDET
COMPONENT_LIBS += universalchardet
DEFINES += -DMOZ_UNIVERSALCHARDET
endif
ifndef MOZ_PLAINTEXT_EDITOR_ONLY
COMPONENT_LIBS += composer
else
DEFINES += -DMOZ_PLAINTEXT_EDITOR_ONLY
endif
ifdef MOZ_RDF
COMPONENT_LIBS += \
rdf \
$(NULL)
ifdef MOZ_XPFE_COMPONENTS
COMPONENT_LIBS += \
windowds \
intlapp \
$(NULL)
endif
endif
ifeq (,$(filter beos os2 mac photon cocoa windows,$(MOZ_WIDGET_TOOLKIT)))
ifdef MOZ_XUL
ifdef MOZ_XPFE_COMPONENTS
COMPONENT_LIBS += fileview
DEFINES += -DMOZ_FILEVIEW
endif
endif
endif
ifdef MOZ_STORAGE
COMPONENT_LIBS += storagecomps
EXTRA_DSO_LDOPTS += $(SQLITE_LIBS)
endif
ifdef MOZ_PLACES
STATIC_LIBS += morkreader_s
COMPONENT_LIBS += \
places \
$(NULL)
else
ifdef MOZ_MORK
ifdef MOZ_XUL
COMPONENT_LIBS += \
mork \
tkhstory \
$(NULL)
endif
endif
endif
ifdef MOZ_XUL
COMPONENT_LIBS += \
tkautocomplete \
satchel \
pippki \
$(NULL)
endif
ifdef MOZ_MATHML
COMPONENT_LIBS += ucvmath
endif
ifdef MOZ_ENABLE_GTK2
COMPONENT_LIBS += widget_gtk2
ifdef MOZ_PREF_EXTENSIONS
COMPONENT_LIBS += system-pref
endif
endif
ifdef MOZ_ENABLE_GTK2
STATIC_LIBS += gtkxtbin
endif
ifdef MOZ_IPCD
DEFINES += -DMOZ_IPCD
COMPONENT_LIBS += ipcdc
endif
ifdef MOZ_ENABLE_POSTSCRIPT
DEFINES += -DMOZ_ENABLE_POSTSCRIPT
STATIC_LIBS += gfxpsshar
endif
ifneq (,$(filter icon,$(MOZ_IMG_DECODERS)))
ifndef MOZ_ENABLE_GTK2
DEFINES += -DICON_DECODER
COMPONENT_LIBS += imgicon
endif
endif
STATIC_LIBS += thebes
COMPONENT_LIBS += gkgfxthebes
ifeq (windows,$(MOZ_WIDGET_TOOLKIT))
COMPONENT_LIBS += gkwidget
endif
ifeq (beos,$(MOZ_WIDGET_TOOLKIT))
COMPONENT_LIBS += widget_beos
endif
ifeq (os2,$(MOZ_WIDGET_TOOLKIT))
COMPONENT_LIBS += wdgtos2
endif
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
COMPONENT_LIBS += widget_mac
endif
ifdef MOZ_ENABLE_PHOTON
COMPONENT_LIBS += widget_photon
endif
ifdef MOZ_OJI
STATIC_LIBS += jsj
COMPONENT_LIBS += oji
endif
ifdef ACCESSIBILITY
COMPONENT_LIBS += accessibility
endif
ifdef MOZ_ENABLE_XREMOTE
COMPONENT_LIBS += remoteservice
endif
ifdef MOZ_SPELLCHECK
DEFINES += -DMOZ_SPELLCHECK
COMPONENT_LIBS += spellchecker
endif
ifdef MOZ_ZIPWRITER
DEFINES += -DMOZ_ZIPWRITER
COMPONENT_LIBS += zipwriter
endif
ifneq (,$(filter layout-debug,$(MOZ_EXTENSIONS)))
COMPONENT_LIBS += gkdebug
endif
ifdef GC_LEAK_DETECTOR
EXTRA_DSO_LIBS += boehm
endif
ifdef NS_TRACE_MALLOC
STATIC_LIBS += tracemalloc
endif

View File

@@ -1,106 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 Mozilla libxul
#
# The Initial Developer of the Original Code is
# Benjamin Smedberg <benjamin@smedbergs.us>
#
# Portions created by the Initial Developer are Copyright (C) 2005
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
EXTRA_DSO_LDOPTS += \
$(LIBS_DIR) \
$(JPEG_LIBS) \
$(PNG_LIBS) \
$(LCMS_LIBS) \
$(MOZ_JS_LIBS) \
$(NSS_LIBS) \
$(NULL)
ifdef MOZ_NATIVE_ZLIB
EXTRA_DSO_LDOPTS += $(ZLIB_LIBS)
else
EXTRA_DSO_LDOPTS += $(MOZ_ZLIB_LIBS)
endif
ifdef MOZ_NATIVE_HUNSPELL
EXTRA_DSO_LDOPTS += $(MOZ_HUNSPELL_LIBS)
endif
# need widget/src/windows for resource.h (included from widget.rc)
LOCAL_INCLUDES += \
-I$(topsrcdir)/config \
-I$(topsrcdir)/widget/src/windows \
-I$(topsrcdir)/widget/src/build \
$(NULL)
OS_LIBS += $(LIBICONV)
DEFINES += \
-D_IMPL_NS_COM \
-D_IMPL_NS_STRINGAPI \
-DEXPORT_XPT_API \
-DEXPORT_XPTC_API \
-D_IMPL_NS_GFX \
-D_IMPL_NS_WIDGET \
$(NULL)
ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
ifneq ($(OS_ARCH),WINCE)
OS_LIBS += $(call EXPAND_LIBNAME,usp10 oleaut32)
endif
endif
ifneq (,$(filter $(MOZ_WIDGET_TOOLKIT),mac cocoa))
EXTRA_DSO_LDOPTS += -lcups
ifdef MOZ_ENABLE_GLITZ
EXTRA_DSO_LDOPTS += -lmozglitzagl -framework OpenGL -framework AGL
endif
endif
ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
EXTRA_DSO_LDOPTS += $(MOZ_PANGO_LIBS)
endif
EXTRA_DSO_LDOPTS += $(MOZ_CAIRO_LIBS)
# necko dependencies
ifeq ($(OS_ARCH),WINNT)
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME,dnsapi)
else
EXTRA_DSO_LDOPTS += -lresolv
endif
export:: dlldeps.cpp
dlldeps.cpp: $(topsrcdir)/xpcom/build/dlldeps.cpp
$(INSTALL) $^ .
GARBAGE += dlldeps.cpp

View File

@@ -1,329 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Christopher Seawood <cls@seawood.org>
* Chris Waterson <waterson@netscape.com>
* Benjamin Smedberg <bsmedberg@covad.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#define XPCOM_TRANSLATE_NSGM_ENTRY_POINT 1
#include "nsIGenericFactory.h"
#include "nsXPCOM.h"
#include "nsStaticComponents.h"
#include "nsMemory.h"
#define NSGETMODULE(_name) _name##_NSGetModule
#ifdef MOZ_AUTH_EXTENSION
#define AUTH_MODULE MODULE(nsAuthModule)
#else
#define AUTH_MODULE
#endif
#ifdef MOZ_PERMISSIONS
#define PERMISSIONS_MODULES \
MODULE(nsCookieModule) \
MODULE(nsPermissionsModule)
#else
#define PERMISSIONS_MODULES
#endif
#ifdef MOZ_UNIVERSALCHARDET
#define UNIVERSALCHARDET_MODULE MODULE(nsUniversalCharDetModule)
#else
#define UNIVERSALCHARDET_MODULE
#endif
#ifdef MOZ_MATHML
#define MATHML_MODULES MODULE(nsUCvMathModule)
#else
#define MATHML_MODULES
#endif
#ifdef MOZ_IPCD
#define IPC_MODULE MODULE(ipcdclient)
#else
#define IPC_MODULE
#endif
#define GFX_MODULES MODULE(nsGfxModule)
#ifdef XP_WIN
# define WIDGET_MODULES MODULE(nsWidgetModule)
#elif defined(XP_MACOSX)
# define WIDGET_MODULES MODULE(nsWidgetMacModule)
#elif defined(XP_BEOS)
# define WIDGET_MODULES MODULE(nsWidgetBeOSModule)
#elif defined(XP_OS2)
# define WIDGET_MODULES MODULE(nsWidgetOS2Module)
#elif defined(MOZ_WIDGET_GTK2)
# define WIDGET_MODULES MODULE(nsWidgetGtk2Module)
#elif defined(MOZ_WIDGET_PHOTON)
# define WIDGET_MODULES MODULE(nsWidgetPhModule)
#else
# error Unknown widget module.
#endif
#ifdef ICON_DECODER
#define ICON_MODULE MODULE(nsIconDecoderModule)
#else
#define ICON_MODULE
#endif
#ifdef MOZ_RDF
#define RDF_MODULE MODULE(nsRDFModule)
#else
#define RDF_MODULE
#endif
#ifdef OJI
#define OJI_MODULES MODULE(nsCJVMManagerModule)
#else
#define OJI_MODULES
#endif
#ifdef MOZ_PLAINTEXT_EDITOR_ONLY
#define COMPOSER_MODULE
#else
#define COMPOSER_MODULE MODULE(nsComposerModule)
#endif
#ifdef ACCESSIBILITY
#define ACCESS_MODULES MODULE(nsAccessibilityModule)
#else
#define ACCESS_MODULES
#endif
#ifdef MOZ_ENABLE_XREMOTE
#define XREMOTE_MODULES MODULE(RemoteServiceModule)
#else
#define XREMOTE_MODULES
#endif
#ifdef MOZ_ENABLE_GTK2
#ifdef MOZ_PREF_EXTENSIONS
#define SYSTEMPREF_MODULES MODULE(nsSystemPrefModule)
#else
#define SYSTEMPREF_MODULES
#endif
#else
#define SYSTEMPREF_MODULES
#endif
#ifdef MOZ_ENABLE_EXTENSION_LAYOUT_DEBUG
#define LAYOUT_DEBUG_MODULE MODULE(nsLayoutDebugModule)
#else
#define LAYOUT_DEBUG_MODULE
#endif
#ifdef MOZ_PLUGINS
#define PLUGINS_MODULES \
MODULE(nsPluginModule)
#else
#define PLUGINS_MODULES
#endif
#ifdef MOZ_WEBSERVICES
#define WEBSERVICES_MODULES \
MODULE(nsWebServicesModule)
#else
#define WEBSERVICES_MODULES
#endif
#ifdef MOZ_XPFE_COMPONENTS
#ifdef MOZ_RDF
#define RDFAPP_MODULES \
MODULE(nsXPIntlModule) \
MODULE(nsWindowDataSourceModule)
#else
#define RDFAPP_MODULES
#endif
#define APPLICATION_MODULES \
MODULE(application) \
MODULE(nsFindComponent)
#else
#define APPLICATION_MODULES
#define RDFAPP_MODULES
#endif
#ifdef MOZ_XPINSTALL
#define XPINSTALL_MODULES \
MODULE(nsSoftwareUpdate)
#else
#define XPINSTALL_MODULES
#endif
#ifdef MOZ_JSDEBUGGER
#define JSDEBUGGER_MODULES \
MODULE(JavaScript_Debugger)
#else
#define JSDEBUGGER_MODULES
#endif
#if defined(MOZ_FILEVIEW) && defined(MOZ_XPFE_COMPONENTS) && defined(MOZ_XUL)
#define FILEVIEW_MODULE MODULE(nsFileViewModule)
#else
#define FILEVIEW_MODULE
#endif
#ifdef MOZ_STORAGE
#define STORAGE_MODULE MODULE(mozStorageModule)
#else
#define STORAGE_MODULE
#endif
#ifdef MOZ_ZIPWRITER
#define ZIPWRITER_MODULE MODULE(ZipWriterModule)
#else
#define ZIPWRITER_MODULE
#endif
#ifdef MOZ_PLACES
#define PLACES_MODULES \
MODULE(nsPlacesModule)
#else
#if (defined(MOZ_MORK) && defined(MOZ_XUL))
#define PLACES_MODULES \
MODULE(nsMorkModule) \
MODULE(nsToolkitHistory)
#else
#define PLACES_MODULES
#endif
#endif
#ifdef MOZ_XUL
#define XULENABLED_MODULES \
MODULE(tkAutoCompleteModule) \
MODULE(satchel) \
MODULE(PKI)
#else
#define XULENABLED_MODULES
#endif
#ifdef MOZ_SPELLCHECK
#define SPELLCHECK_MODULE MODULE(mozSpellCheckerModule)
#else
#define SPELLCHECK_MODULE
#endif
#ifdef MOZ_XMLEXTRAS
#define XMLEXTRAS_MODULE MODULE(nsXMLExtrasModule)
#else
#define XMLEXTRAS_MODULE
#endif
#ifdef MOZ_XUL
#ifdef MOZ_ENABLE_GTK2
#define UNIXPROXY_MODULE MODULE(nsUnixProxyModule)
#endif
#endif
#ifndef UNIXPROXY_MODULE
#define UNIXPROXY_MODULE
#endif
#define XUL_MODULES \
MODULE(xpconnect) \
MATHML_MODULES \
MODULE(nsUConvModule) \
MODULE(nsI18nModule) \
MODULE(nsChardetModule) \
UNIVERSALCHARDET_MODULE \
MODULE(necko) \
PERMISSIONS_MODULES \
AUTH_MODULE \
IPC_MODULE \
MODULE(nsJarModule) \
ZIPWRITER_MODULE \
MODULE(nsPrefModule) \
MODULE(nsSecurityManagerModule) \
RDF_MODULE \
RDFAPP_MODULES \
MODULE(nsParserModule) \
GFX_MODULES \
WIDGET_MODULES \
MODULE(nsImageLib2Module) \
ICON_MODULE \
PLUGINS_MODULES \
MODULE(nsLayoutModule) \
WEBSERVICES_MODULES \
MODULE(docshell_provider) \
MODULE(embedcomponents) \
MODULE(Browser_Embedding_Module) \
OJI_MODULES \
ACCESS_MODULES \
MODULE(appshell) \
MODULE(nsTransactionManagerModule) \
COMPOSER_MODULE \
MODULE(nsChromeModule) \
APPLICATION_MODULES \
MODULE(Apprunner) \
MODULE(CommandLineModule) \
FILEVIEW_MODULE \
STORAGE_MODULE \
PLACES_MODULES \
XULENABLED_MODULES \
MODULE(nsToolkitCompsModule) \
XREMOTE_MODULES \
XPINSTALL_MODULES \
JSDEBUGGER_MODULES \
MODULE(BOOT) \
MODULE(NSS) \
MODULE(nsAutoConfigModule) \
SYSTEMPREF_MODULES \
SPELLCHECK_MODULE \
XMLEXTRAS_MODULE \
LAYOUT_DEBUG_MODULE \
UNIXPROXY_MODULE \
/* end of list */
#define MODULE(_name) \
NSGETMODULE_ENTRY_POINT(_name) (nsIComponentManager*, nsIFile*, nsIModule**);
XUL_MODULES
#undef MODULE
#define MODULE(_name) { #_name, NSGETMODULE(_name) },
/**
* The nsStaticModuleInfo
*/
static nsStaticModuleInfo const gStaticModuleInfo[] = {
XUL_MODULES
};
nsStaticModuleInfo const *const kPStaticModules = gStaticModuleInfo;
PRUint32 const kStaticModuleCount = NS_ARRAY_LENGTH(gStaticModuleInfo);

View File

@@ -1,320 +0,0 @@
/* -*- Mode: C++; tab-width: 50; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim:set ts=4 sw=4 sts=4: */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Oracle Corporation code.
*
* The Initial Developer of the Original Code is
* Oracle Corporation
* Portions created by the Initial Developer are Copyright (C) 2004
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Vladimir Vukicevic <vladimir.vukicevic@oracle.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsHashPropertyBag.h"
#include "nsArray.h"
#include "nsArrayEnumerator.h"
#include "nsComponentManagerUtils.h"
#include "nsIVariant.h"
#include "nsIProperty.h"
#include "nsVariant.h"
nsresult
NS_NewHashPropertyBag(nsIWritablePropertyBag* *_retval)
{
nsHashPropertyBag *hpb = new nsHashPropertyBag();
if (!hpb)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(hpb);
nsresult rv = hpb->Init();
if (NS_FAILED(rv)) {
NS_RELEASE(hpb);
return rv;
}
*_retval = hpb;
return NS_OK;
}
/*
* nsHashPropertyBag impl
*/
NS_IMPL_THREADSAFE_ADDREF(nsHashPropertyBag)
NS_IMPL_THREADSAFE_RELEASE(nsHashPropertyBag)
NS_INTERFACE_MAP_BEGIN(nsHashPropertyBag)
NS_INTERFACE_MAP_ENTRY(nsIWritablePropertyBag)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsIPropertyBag, nsIWritablePropertyBag)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWritablePropertyBag)
NS_INTERFACE_MAP_ENTRY(nsIPropertyBag2)
NS_INTERFACE_MAP_ENTRY(nsIWritablePropertyBag2)
NS_INTERFACE_MAP_END
nsresult
nsHashPropertyBag::Init()
{
// we can only assume that Init will fail only due to OOM.
if (!mPropertyHash.Init())
return NS_ERROR_OUT_OF_MEMORY;
return NS_OK;
}
NS_IMETHODIMP
nsHashPropertyBag::HasKey(const nsAString& name, PRBool *aResult)
{
*aResult = mPropertyHash.Get(name, nsnull);
return NS_OK;
}
NS_IMETHODIMP
nsHashPropertyBag::Get(const nsAString& name, nsIVariant* *_retval)
{
mPropertyHash.Get(name, _retval);
return NS_OK;
}
NS_IMETHODIMP
nsHashPropertyBag::GetProperty(const nsAString& name, nsIVariant* *_retval)
{
PRBool isFound = mPropertyHash.Get(name, _retval);
if (!isFound)
return NS_ERROR_FAILURE;
return NS_OK;
}
NS_IMETHODIMP
nsHashPropertyBag::SetProperty(const nsAString& name, nsIVariant *value)
{
NS_ENSURE_ARG_POINTER(value);
PRBool success = mPropertyHash.Put(name, value);
if (!success)
return NS_ERROR_FAILURE;
return NS_OK;
}
NS_IMETHODIMP
nsHashPropertyBag::DeleteProperty(const nsAString& name)
{
// is it too much to ask for ns*Hashtable to return
// a boolean indicating whether RemoveEntry succeeded
// or not?!?!
PRBool isFound = mPropertyHash.Get(name, nsnull);
if (!isFound)
return NS_ERROR_FAILURE;
// then from the hash
mPropertyHash.Remove(name);
return NS_OK;
}
//
// nsSimpleProperty class and impl; used for GetEnumerator
//
class nsSimpleProperty : public nsIProperty {
public:
nsSimpleProperty(const nsAString& aName, nsIVariant* aValue)
: mName(aName), mValue(aValue)
{
}
NS_DECL_ISUPPORTS
NS_DECL_NSIPROPERTY
protected:
nsString mName;
nsCOMPtr<nsIVariant> mValue;
};
NS_IMPL_ISUPPORTS1(nsSimpleProperty, nsIProperty)
NS_IMETHODIMP
nsSimpleProperty::GetName(nsAString& aName)
{
aName.Assign(mName);
return NS_OK;
}
NS_IMETHODIMP
nsSimpleProperty::GetValue(nsIVariant* *aValue)
{
NS_IF_ADDREF(*aValue = mValue);
return NS_OK;
}
// end nsSimpleProperty
PR_STATIC_CALLBACK(PLDHashOperator)
PropertyHashToArrayFunc (const nsAString &aKey,
nsIVariant* aData,
void *userArg)
{
nsIMutableArray *propertyArray =
static_cast<nsIMutableArray *>(userArg);
nsSimpleProperty *sprop = new nsSimpleProperty(aKey, aData);
propertyArray->AppendElement(sprop, PR_FALSE);
return PL_DHASH_NEXT;
}
NS_IMETHODIMP
nsHashPropertyBag::GetEnumerator(nsISimpleEnumerator* *_retval)
{
nsCOMPtr<nsIMutableArray> propertyArray = new nsArray();
if (!propertyArray)
return NS_ERROR_OUT_OF_MEMORY;
mPropertyHash.EnumerateRead(PropertyHashToArrayFunc, propertyArray.get());
return NS_NewArrayEnumerator(_retval, propertyArray);
}
#define IMPL_GETSETPROPERTY_AS(Name, Type) \
NS_IMETHODIMP \
nsHashPropertyBag::GetPropertyAs ## Name (const nsAString & prop, Type *_retval) \
{ \
nsIVariant* v = mPropertyHash.GetWeak(prop); \
if (!v) \
return NS_ERROR_NOT_AVAILABLE; \
return v->GetAs ## Name(_retval); \
} \
\
NS_IMETHODIMP \
nsHashPropertyBag::SetPropertyAs ## Name (const nsAString & prop, Type value) \
{ \
nsCOMPtr<nsIWritableVariant> var = new nsVariant(); \
if (!var) \
return NS_ERROR_OUT_OF_MEMORY; \
var->SetAs ## Name(value); \
return SetProperty(prop, var); \
}
IMPL_GETSETPROPERTY_AS(Int32, PRInt32)
IMPL_GETSETPROPERTY_AS(Uint32, PRUint32)
IMPL_GETSETPROPERTY_AS(Int64, PRInt64)
IMPL_GETSETPROPERTY_AS(Uint64, PRUint64)
IMPL_GETSETPROPERTY_AS(Double, double)
IMPL_GETSETPROPERTY_AS(Bool, PRBool)
NS_IMETHODIMP
nsHashPropertyBag::GetPropertyAsAString(const nsAString & prop, nsAString & _retval)
{
nsIVariant* v = mPropertyHash.GetWeak(prop);
if (!v)
return NS_ERROR_NOT_AVAILABLE;
return v->GetAsAString(_retval);
}
NS_IMETHODIMP
nsHashPropertyBag::GetPropertyAsACString(const nsAString & prop, nsACString & _retval)
{
nsIVariant* v = mPropertyHash.GetWeak(prop);
if (!v)
return NS_ERROR_NOT_AVAILABLE;
return v->GetAsACString(_retval);
}
NS_IMETHODIMP
nsHashPropertyBag::GetPropertyAsAUTF8String(const nsAString & prop, nsACString & _retval)
{
nsIVariant* v = mPropertyHash.GetWeak(prop);
if (!v)
return NS_ERROR_NOT_AVAILABLE;
return v->GetAsAUTF8String(_retval);
}
NS_IMETHODIMP
nsHashPropertyBag::GetPropertyAsInterface(const nsAString & prop,
const nsIID & aIID,
void** _retval)
{
nsIVariant* v = mPropertyHash.GetWeak(prop);
if (!v)
return NS_ERROR_NOT_AVAILABLE;
nsCOMPtr<nsISupports> val;
nsresult rv = v->GetAsISupports(getter_AddRefs(val));
if (NS_FAILED(rv))
return rv;
if (!val) {
// We have a value, but it's null
*_retval = nsnull;
return NS_OK;
}
return val->QueryInterface(aIID, _retval);
}
NS_IMETHODIMP
nsHashPropertyBag::SetPropertyAsAString(const nsAString & prop, const nsAString & value)
{
nsCOMPtr<nsIWritableVariant> var = new nsVariant();
if (!var)
return NS_ERROR_OUT_OF_MEMORY;
var->SetAsAString(value);
return SetProperty(prop, var);
}
NS_IMETHODIMP
nsHashPropertyBag::SetPropertyAsACString(const nsAString & prop, const nsACString & value)
{
nsCOMPtr<nsIWritableVariant> var = new nsVariant();
if (!var)
return NS_ERROR_OUT_OF_MEMORY;
var->SetAsACString(value);
return SetProperty(prop, var);
}
NS_IMETHODIMP
nsHashPropertyBag::SetPropertyAsAUTF8String(const nsAString & prop, const nsACString & value)
{
nsCOMPtr<nsIWritableVariant> var = new nsVariant();
if (!var)
return NS_ERROR_OUT_OF_MEMORY;
var->SetAsAUTF8String(value);
return SetProperty(prop, var);
}
NS_IMETHODIMP
nsHashPropertyBag::SetPropertyAsInterface(const nsAString & prop, nsISupports* value)
{
nsCOMPtr<nsIWritableVariant> var = new nsVariant();
if (!var)
return NS_ERROR_OUT_OF_MEMORY;
var->SetAsISupports(value);
return SetProperty(prop, var);
}

View File

@@ -1,89 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Oracle Corporation code.
*
* The Initial Developer of the Original Code is
* Oracle Corporation
* Portions created by the Initial Developer are Copyright (C) 2004
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Vladimir Vukicevic <vladimir.vukicevic@oracle.com>
* Christian Biesinger <cbiesinger@web.de>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsHashPropertyBag_h___
#define nsHashPropertyBag_h___
#include "nsCOMPtr.h"
#include "nsCOMArray.h"
#include "nsVoidArray.h"
#include "nsIVariant.h"
#include "nsIWritablePropertyBag.h"
#include "nsIWritablePropertyBag2.h"
#include "nsInterfaceHashtable.h"
// Set IMETHOD_VISIBILITY to empty so that the class-level NS_COM declaration
// controls member method visibility.
#undef IMETHOD_VISIBILITY
#define IMETHOD_VISIBILITY
class NS_COM nsHashPropertyBag : public nsIWritablePropertyBag
, public nsIWritablePropertyBag2
{
public:
nsHashPropertyBag() { }
virtual ~nsHashPropertyBag() {}
nsresult Init();
NS_DECL_ISUPPORTS
NS_DECL_NSIPROPERTYBAG
NS_DECL_NSIPROPERTYBAG2
NS_DECL_NSIWRITABLEPROPERTYBAG
NS_DECL_NSIWRITABLEPROPERTYBAG2
protected:
// a hash table of string -> nsIVariant
nsInterfaceHashtable<nsStringHashKey, nsIVariant> mPropertyHash;
};
#undef IMETHOD_VISIBILITY
#define IMETHOD_VISIBILITY NS_VISIBILITY_HIDDEN
// Note: NS_NewHashPropertyBag returns a HPB that
// uses a non-thread-safe internal hash
extern "C" NS_COM nsresult
NS_NewHashPropertyBag(nsIWritablePropertyBag* *_retval);
#endif /* nsHashPropertyBag_h___ */

View File

@@ -1,75 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org property bag support.
*
* The Initial Developer of the Original Code is
* Christian Biesinger <cbiesinger@web.de>.
* Portions created by the Initial Developer are Copyright (C) 2005
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Darin Fisher <darin@meer.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* nsIVariant based Property Bag support. */
#include "nsIPropertyBag.idl"
[scriptable, uuid(625cfd1e-da1e-4417-9ee9-dbc8e0b3fd79)]
interface nsIPropertyBag2 : nsIPropertyBag
{
// Accessing a property as a different type may attempt conversion to the
// requested value
PRInt32 getPropertyAsInt32 (in AString prop);
PRUint32 getPropertyAsUint32 (in AString prop);
PRInt64 getPropertyAsInt64 (in AString prop);
PRUint64 getPropertyAsUint64 (in AString prop);
double getPropertyAsDouble (in AString prop);
AString getPropertyAsAString (in AString prop);
ACString getPropertyAsACString (in AString prop);
AUTF8String getPropertyAsAUTF8String (in AString prop);
boolean getPropertyAsBool (in AString prop);
/**
* This method returns null if the value exists, but is null.
*/
void getPropertyAsInterface (in AString prop,
in nsIIDRef iid,
[iid_is(iid), retval] out nsQIResult result);
/**
* This method returns null if the value does not exist,
* or exists but is null.
*/
nsIVariant get (in AString prop);
/**
* Check for the existence of a key.
*/
PRBool hasKey (in AString prop);
};

View File

@@ -1,55 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org property bag support.
*
* The Initial Developer of the Original Code is
* Christian Biesinger <cbiesinger@web.de>.
* Portions created by the Initial Developer are Copyright (C) 2005
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Darin Fisher <darin@meer.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* nsIVariant based Property Bag support. */
#include "nsIPropertyBag2.idl"
[scriptable, uuid(9cfd1587-360e-4957-a58f-4c2b1c5e7ed9)]
interface nsIWritablePropertyBag2 : nsIPropertyBag2
{
void setPropertyAsInt32 (in AString prop, in PRInt32 value);
void setPropertyAsUint32 (in AString prop, in PRUint32 value);
void setPropertyAsInt64 (in AString prop, in PRInt64 value);
void setPropertyAsUint64 (in AString prop, in PRUint64 value);
void setPropertyAsDouble (in AString prop, in double value);
void setPropertyAsAString (in AString prop, in AString value);
void setPropertyAsACString (in AString prop, in ACString value);
void setPropertyAsAUTF8String (in AString prop, in AUTF8String value);
void setPropertyAsBool (in AString prop, in boolean value);
void setPropertyAsInterface (in AString prop, in nsISupports value);
};

View File

@@ -1,196 +0,0 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xpcom
XPIDL_MODULE = xpcom_io
LIBRARY_NAME = xpcomio_s
GRE_MODULE = 1
MOZILLA_INTERNAL_API = 1
REQUIRES = string \
$(NULL)
# work around bug 408258
ifdef GNU_CC
ifneq ($(OS_ARCH), Darwin)
MODULE_OPTIMIZE_FLAGS = -Os -fno-strict-aliasing $(MOZ_OPTIMIZE_SIZE_TWEAK)
endif
endif
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
REQUIRES += macmorefiles
endif
CPPSRCS = \
nsAppFileLocationProvider.cpp \
nsBinaryStream.cpp \
nsDirectoryService.cpp \
nsEscape.cpp \
nsInputStreamTee.cpp \
nsLinebreakConverter.cpp \
nsLocalFileCommon.cpp \
nsMultiplexInputStream.cpp \
nsPipe3.cpp \
nsStreamUtils.cpp \
nsScriptableInputStream.cpp \
nsSegmentedBuffer.cpp \
SpecialSystemDirectory.cpp \
nsStorageStream.cpp \
nsStringStream.cpp \
nsUnicharInputStream.cpp \
nsNativeCharsetUtils.cpp \
$(NULL)
ifndef MOZ_NO_FAST_LOAD
CPPSRCS += \
nsFastLoadFile.cpp \
nsFastLoadService.cpp \
$(NULL)
endif
ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
CPPSRCS += nsLocalFileOS2.cpp
else
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
CMMSRCS = nsLocalFileOSX.mm
else
ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
CPPSRCS += nsLocalFileWin.cpp
else
CPPSRCS += nsLocalFileUnix.cpp
endif # windows
endif # mac
endif # OS2
EXPORTS = \
nsAppDirectoryServiceDefs.h \
nsDirectoryService.h \
nsEscape.h \
nsFastLoadService.h \
nsLinebreakConverter.h \
nsLocalFile.h \
nsMultiplexInputStream.h \
nsScriptableInputStream.h \
nsStorageStream.h \
nsStringStream.h \
nsStreamUtils.h \
nsNativeCharsetUtils.h \
$(NULL)
ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
EXPORTS += nsLocalFileOS2.h
else
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
EXPORTS += nsLocalFileOSX.h
else
ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
EXPORTS += nsLocalFileWin.h
else
EXPORTS += nsLocalFileUnix.h
endif # windows
endif # cocoa
endif # os2
XPIDLSRCS = \
nsIBinaryInputStream.idl \
nsIBinaryOutputStream.idl \
nsIDirectoryEnumerator.idl \
nsIFastLoadFileControl.idl \
nsIFastLoadService.idl \
nsIInputStreamTee.idl \
nsILocalFileWin.idl \
nsILineInputStream.idl \
nsIUnicharLineInputStream.idl \
nsISimpleUnicharStreamFactory.idl \
nsIMultiplexInputStream.idl \
nsIObjectInputStream.idl \
nsIObjectOutputStream.idl \
nsIPipe.idl \
nsISeekableStream.idl \
nsIStorageStream.idl \
nsIStringStream.idl \
nsIStreamBufferAccess.idl \
nsIAsyncInputStream.idl \
nsIAsyncOutputStream.idl \
nsIUnicharInputStream.idl \
nsIUnicharOutputStream.idl \
nsIConverterInputStream.idl \
nsIConverterOutputStream.idl \
$(NULL)
ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
XPIDLSRCS += nsILocalFileOS2.idl
else
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
XPIDLSRCS += nsILocalFileMac.idl
endif # cocoa
endif # os2
SDK_XPIDLSRCS = \
nsIDirectoryService.idl \
nsIFile.idl \
nsILocalFile.idl \
nsIInputStream.idl \
nsIOutputStream.idl \
nsIScriptableInputStream.idl \
nsIScriptableInputStreamEx.idl \
$(NULL)
SDK_HEADERS = \
nsDirectoryServiceDefs.h \
nsDirectoryServiceUtils.h \
$(NULL)
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
# we don't want the shared lib, but we want to force the creation of a static lib.
FORCE_STATIC_LIB = 1
# Force use of PIC
FORCE_USE_PIC = 1
include $(topsrcdir)/config/rules.mk
DEFINES += -D_IMPL_NS_COM
LOCAL_INCLUDES = -I..

View File

@@ -1,60 +0,0 @@
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998-1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsIScriptableInputStream.idl"
/**
* nsIScriptableInputStreamEx provides extended scriptable access to
* the nsIInputStream. It implements different read semantics than
* nsIScriptableInputStream and allows reading of buffers with '\0'
* characters.
*/
[scriptable, uuid(e0a5739e-243a-4e03-9815-b605b01a6d95)]
interface nsIScriptableInputStreamEx : nsIScriptableInputStream
{
/** Read data from the stream.
* @param aCount [in] the number of bytes to read. If the
* underlying stream is blocking, specifying more than the
* available number of bytes will block the stream until enough
* bytes are available. If the underlying stream is non-blocking
* the returned string might contain fewer bytes than requested.
* @param _retval [out] the data
*/
ACString readEx(in unsigned long aCount);
};

View File

@@ -1,131 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsScriptableInputStream.h"
#include "nsMemory.h"
#include "nsString.h"
NS_IMPL_ISUPPORTS2(nsScriptableInputStream, nsIScriptableInputStream, nsIScriptableInputStreamEx)
// nsIBaseStream methods
NS_IMETHODIMP
nsScriptableInputStream::Close(void) {
if (!mInputStream) return NS_ERROR_NOT_INITIALIZED;
return mInputStream->Close();
}
// nsIScriptableInputStream methods
NS_IMETHODIMP
nsScriptableInputStream::Init(nsIInputStream *aInputStream) {
if (!aInputStream) return NS_ERROR_NULL_POINTER;
mInputStream = aInputStream;
return NS_OK;
}
NS_IMETHODIMP
nsScriptableInputStream::Available(PRUint32 *_retval) {
if (!mInputStream) return NS_ERROR_NOT_INITIALIZED;
return mInputStream->Available(_retval);
}
NS_IMETHODIMP
nsScriptableInputStream::Read(PRUint32 aCount, char **_retval) {
nsresult rv = NS_OK;
PRUint32 count = 0;
char *buffer = nsnull;
if (!mInputStream) return NS_ERROR_NOT_INITIALIZED;
rv = mInputStream->Available(&count);
if (NS_FAILED(rv)) return rv;
count = PR_MIN(count, aCount);
buffer = (char*)nsMemory::Alloc(count+1); // make room for '\0'
if (!buffer) return NS_ERROR_OUT_OF_MEMORY;
PRUint32 amtRead = 0;
rv = mInputStream->Read(buffer, count, &amtRead);
if (NS_FAILED(rv)) {
nsMemory::Free(buffer);
return rv;
}
buffer[amtRead] = '\0';
*_retval = buffer;
return NS_OK;
}
// nsIScriptableInputStreamEx methods
NS_IMETHODIMP
nsScriptableInputStream::ReadEx(PRUint32 aCount, nsACString & _retval) {
nsresult rv = NS_OK;
char *buffer = nsnull;
if (!mInputStream) return NS_ERROR_NOT_INITIALIZED;
_retval.SetLength(aCount);
nsACString::iterator iter;
_retval.BeginWriting(iter);
buffer = &(*iter);
if (!buffer) return NS_ERROR_OUT_OF_MEMORY;
PRUint32 amtRead = 0;
rv = mInputStream->Read(buffer, aCount, &amtRead);
if (NS_FAILED(rv)) {
_retval.SetLength(0);
return rv;
}
if (amtRead != aCount) {
NS_WARNING("bytes read != bytes requested");
_retval.SetLength(amtRead);
}
return NS_OK;
}
NS_METHOD
nsScriptableInputStream::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult) {
if (aOuter) return NS_ERROR_NO_AGGREGATION;
nsScriptableInputStream *sis = new nsScriptableInputStream();
if (!sis) return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(sis);
nsresult rv = sis->QueryInterface(aIID, aResult);
NS_RELEASE(sis);
return rv;
}

View File

@@ -1,76 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef ___nsscriptableinputstream___h_
#define ___nsscriptableinputstream___h_
#include "nsIScriptableInputStream.h"
#include "nsIScriptableInputStreamEx.h"
#include "nsIInputStream.h"
#include "nsCOMPtr.h"
#define NS_SCRIPTABLEINPUTSTREAM_CID \
{ 0x7225c040, 0xa9bf, 0x11d3, { 0xa1, 0x97, 0x0, 0x50, 0x4, 0x1c, 0xaf, 0x44 } }
#define NS_SCRIPTABLEINPUTSTREAM_CONTRACTID "@mozilla.org/scriptableinputstream;1"
#define NS_SCRIPTABLEINPUTSTREAM_CLASSNAME "Scriptable Input Stream"
class nsScriptableInputStream : public nsIScriptableInputStreamEx
{
public:
// nsISupports methods
NS_DECL_ISUPPORTS
// nsIScriptableInputStream methods
NS_DECL_NSISCRIPTABLEINPUTSTREAM
// nsIScriptableInputStreamEx methods
NS_DECL_NSISCRIPTABLEINPUTSTREAMEX
// nsScriptableInputStream methods
nsScriptableInputStream() {}
static NS_METHOD
Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
private:
~nsScriptableInputStream() {}
nsCOMPtr<nsIInputStream> mInputStream;
};
#endif // ___nsscriptableinputstream___h_

View File

@@ -1,144 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Doug Turner <dougt@netscape.com> (Original Author)
* Dan Mosedale <dmose@netscape.com>
* Darin Fisher <darin@meer.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
interface nsIEventTarget;
/**
* An interface for the proxy object manager.
*
* See http://www.mozilla.org/projects/xpcom/Proxies.html
*/
[scriptable, uuid(ee8ce1e3-0319-4bd9-8f70-7258b21c7733)]
interface nsIProxyObjectManager : nsISupports
{
/**
* Construct a proxy object that invokes methods on the real object
* synchronously (i.e., the calling thread is blocked until the real method
* call returns). This flag causes methods invoked on the proxy object to
* emmulate a real method call.
*
* For C++ callers, NS_PROXY_SYNC is a synonym for this flag.
*/
const long INVOKE_SYNC = 0x0001;
/**
* Construct a proxy object that invokes methods on the real object
* asynchronously (i.e., the calling thread does not wait for the real
* method call to occur).
*
* WARNING: do not pass pointers into the stack when using this flag.
*
* For C++ callers, NS_PROXY_ASYNC is a synonym for this flag.
*/
const long INVOKE_ASYNC = 0x0002;
/**
* Always create the proxy object even if for same thread as current thread.
*
* For C++ callers, NS_PROXY_ALWAYS is a synonym for this flag.
*/
const long FORCE_PROXY_CREATION = 0x0004;
/**
* Create a proxy for the given object. The proxy implements the specified
* interface, but when its methods are invoked, it causes the corresponding
* method on the actual object to be called via the designated event
* target. Typically, the event target identifies a thread where the
* method call should occur.
*
* @param target
* If target is null, then the current thread is used as the target.
* Otherwise, target identifies the nsIEventTarget from which proxy
* method calls should be executed.
* @param iid
* Identifies the interface being proxied. The given object must QI to
* this type.
* @param object
* The object being proxied.
* @param proxyType
* Specifies the type of proxy to construct. Either INVOKE_SYNC or
* INVOKE_ASYNC must be specified. FORCE_PROXY_CREATION may be bit-wise
* OR'd with either of those flags.
* @param result
* This param holds the resulting proxy object upon successful return.
*/
void getProxyForObject(in nsIEventTarget target,
in nsIIDRef iid,
in nsISupports object,
in PRInt32 proxyType,
[iid_is(iid),retval] out nsQIResult result);
};
%{C++
/**
* convenience macros
*/
#define NS_PROXY_SYNC nsIProxyObjectManager::INVOKE_SYNC
#define NS_PROXY_ASYNC nsIProxyObjectManager::INVOKE_ASYNC
#define NS_PROXY_ALWAYS nsIProxyObjectManager::FORCE_PROXY_CREATION
/**
* Pass this value as the target to {NS_}GetProxyForObject to specify the current
* thread as the target for the proxy object.
*/
#define NS_PROXY_TO_CURRENT_THREAD ((nsIEventTarget *) 0)
/**
* Pass this value as the target to NS_GetProxyForObject to specify the main
* thread as the target for the proxy object.
*/
#define NS_PROXY_TO_MAIN_THREAD ((nsIEventTarget *) 1)
#ifdef MOZILLA_INTERNAL_API
/**
* Helper function for code that already has a link-time dependency on the
* internal API (MOZILLA_INTERNAL_API) and needs to get proxies in a bunch of
* different places. This way, the caller isn't forced to get the proxy object
* manager themselves every single time, thus making the calling code more
* readable. The parameters are the same as for GetProxyForObject.
*/
extern NS_COM nsresult
NS_GetProxyForObject(nsIEventTarget *target, REFNSIID iid, nsISupports* object,
PRInt32 proxyType, void** result);
#endif
%}

View File

@@ -1,467 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim:set ts=4 sw=4 sts=4 ci et: */
/*
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK *****
*
* This Original Code has been modified by IBM Corporation.
* Modifications made by IBM described herein are
* Copyright (c) International Business Machines
* Corporation, 2000
*
* Modifications to Mozilla code or documentation
* identified per MPL Section 3.3
*
* Date Modified by Description of modification
* 04/20/2000 IBM Corp. Added PR_CALLBACK for Optlink use in OS2
*/
#include "nsProxyEventPrivate.h"
#include "nsProxyRelease.h"
#include "nsIProxyObjectManager.h"
#include "nsCRT.h"
#include "pratom.h"
#include "prmem.h"
#include "xptcall.h"
#include "nsAutoLock.h"
#include "nsXPCOMCID.h"
#include "nsServiceManagerUtils.h"
#include "nsIComponentManager.h"
#include "nsThreadUtils.h"
#include "nsEventQueue.h"
#include "nsMemory.h"
/**
* Map the nsAUTF8String, nsUTF8String classes to the nsACString and
* nsCString classes respectively for now. These defines need to be removed
* once Jag lands his nsUTF8String implementation.
*/
#define nsAUTF8String nsACString
#define nsUTF8String nsCString
NS_DEFINE_IID(kFilterIID, NS_PROXYEVENT_FILTER_IID);
//-----------------------------------------------------------------------------
NS_IMETHODIMP
nsProxyObject::nsProxyObjectDestructorEvent::Run()
{
delete mDoomed;
return NS_OK;
}
//-----------------------------------------------------------------------------
nsProxyObjectCallInfo::nsProxyObjectCallInfo(nsProxyEventObject* owner,
const XPTMethodDescriptor *methodInfo,
PRUint32 methodIndex,
nsXPTCVariant* parameterList,
PRUint32 parameterCount) :
mResult(NS_ERROR_FAILURE),
mMethodInfo(methodInfo),
mMethodIndex(methodIndex),
mParameterList(parameterList),
mParameterCount(parameterCount),
mCompleted(0),
mOwner(owner)
{
NS_ASSERTION(owner, "No nsProxyObject!");
NS_ASSERTION(methodInfo, "No nsXPTMethodInfo!");
RefCountInInterfacePointers(PR_TRUE);
if (mOwner->GetProxyType() & NS_PROXY_ASYNC)
CopyStrings(PR_TRUE);
}
nsProxyObjectCallInfo::~nsProxyObjectCallInfo()
{
RefCountInInterfacePointers(PR_FALSE);
if (mOwner->GetProxyType() & NS_PROXY_ASYNC)
CopyStrings(PR_FALSE);
mOwner = nsnull;
if (mParameterList)
free(mParameterList);
}
NS_IMETHODIMP
nsProxyObjectCallInfo::QueryInterface(REFNSIID aIID, void **aResult)
{
if (aIID.Equals(kFilterIID)) {
*aResult = this;
AddRef();
return NS_OK;
}
return nsRunnable::QueryInterface(aIID, aResult);
}
NS_IMETHODIMP
nsProxyObjectCallInfo::Run()
{
PROXY_LOG(("PROXY(%p): Run\n", this));
mResult = NS_InvokeByIndex(mOwner->GetProxiedInterface(),
mMethodIndex,
mParameterCount,
mParameterList);
if (IsSync()) {
PostCompleted();
}
return NS_OK;
}
void
nsProxyObjectCallInfo::RefCountInInterfacePointers(PRBool addRef)
{
for (PRUint32 i = 0; i < mParameterCount; i++)
{
nsXPTParamInfo paramInfo = mMethodInfo->params[i];
if (paramInfo.GetType().IsInterfacePointer() )
{
nsISupports* anInterface = nsnull;
if (paramInfo.IsIn())
{
anInterface = ((nsISupports*)mParameterList[i].val.p);
if (anInterface)
{
if (addRef)
anInterface->AddRef();
else
anInterface->Release();
}
}
}
}
}
void
nsProxyObjectCallInfo::CopyStrings(PRBool copy)
{
for (PRUint32 i = 0; i < mParameterCount; i++)
{
const nsXPTParamInfo paramInfo = mMethodInfo->params[i];
if (paramInfo.IsIn())
{
const nsXPTType& type = paramInfo.GetType();
uint8 type_tag = type.TagPart();
void *ptr = mParameterList[i].val.p;
if (!ptr)
continue;
if (copy)
{
switch (type_tag)
{
case nsXPTType::T_CHAR_STR:
mParameterList[i].val.p =
PL_strdup((const char *)ptr);
break;
case nsXPTType::T_WCHAR_STR:
mParameterList[i].val.p =
nsCRT::strdup((const PRUnichar *)ptr);
break;
case nsXPTType::T_DOMSTRING:
case nsXPTType::T_ASTRING:
mParameterList[i].val.p =
new nsString(*((nsAString*) ptr));
break;
case nsXPTType::T_CSTRING:
mParameterList[i].val.p =
new nsCString(*((nsACString*) ptr));
break;
case nsXPTType::T_UTF8STRING:
mParameterList[i].val.p =
new nsUTF8String(*((nsAUTF8String*) ptr));
break;
default:
// Other types are ignored
break;
}
}
else
{
switch (type_tag)
{
case nsXPTType::T_CHAR_STR:
PL_strfree((char*) ptr);
break;
case nsXPTType::T_WCHAR_STR:
nsCRT::free((PRUnichar*)ptr);
break;
case nsXPTType::T_DOMSTRING:
case nsXPTType::T_ASTRING:
delete (nsString*) ptr;
break;
case nsXPTType::T_CSTRING:
delete (nsCString*) ptr;
break;
case nsXPTType::T_UTF8STRING:
delete (nsUTF8String*) ptr;
break;
default:
// Other types are ignored
break;
}
}
}
}
}
PRBool
nsProxyObjectCallInfo::GetCompleted()
{
return !!mCompleted;
}
void
nsProxyObjectCallInfo::SetCompleted()
{
PROXY_LOG(("PROXY(%p): SetCompleted\n", this));
if (mMonitor) {
PR_EnterMonitor(mMonitor);
mCompleted = 1;
PR_Notify(mMonitor);
PR_ExitMonitor(mMonitor);
return;
}
PR_AtomicSet(&mCompleted, 1);
}
void
nsProxyObjectCallInfo::PostCompleted()
{
PROXY_LOG(("PROXY(%p): PostCompleted\n", this));
NS_ASSERTION(IsSync(), "Don't call PostCompleted() for async events");
SetCompleted();
}
PRMonitor*
nsProxyObjectCallInfo::GetMonitor()
{
return mMonitor;
}
void
nsProxyObjectCallInfo::SetMonitor(PRMonitor* monitor)
{
mMonitor = monitor;
}
nsProxyObject::nsProxyObject(nsIEventTarget *target, PRInt32 proxyType,
nsISupports *realObject) :
mProxyType(proxyType),
mTarget(target),
mRealObject(realObject),
mFirst(nsnull)
{
MOZ_COUNT_CTOR(nsProxyObject);
#ifdef DEBUG
nsCOMPtr<nsISupports> canonicalTarget = do_QueryInterface(target);
NS_ASSERTION(target == canonicalTarget,
"Non-canonical nsISupports passed to nsProxyObject constructor");
#endif
nsProxyObjectManager *pom = nsProxyObjectManager::GetInstance();
NS_ASSERTION(pom, "Creating a proxy without a global proxy-object-manager.");
pom->AddRef();
}
nsProxyObject::~nsProxyObject()
{
// Proxy the release of mRealObject to protect against it being deleted on
// the wrong thread.
nsISupports *doomed = nsnull;
mRealObject.swap(doomed);
NS_ProxyRelease(mTarget, doomed);
MOZ_COUNT_DTOR(nsProxyObject);
}
NS_IMETHODIMP_(nsrefcnt)
nsProxyObject::AddRef()
{
nsAutoLock lock(nsProxyObjectManager::GetInstance()->GetLock());
return LockedAddRef();
}
NS_IMETHODIMP_(nsrefcnt)
nsProxyObject::Release()
{
nsAutoLock lock(nsProxyObjectManager::GetInstance()->GetLock());
return LockedRelease();
}
nsrefcnt
nsProxyObject::LockedAddRef()
{
++mRefCnt;
NS_LOG_ADDREF(this, mRefCnt, "nsProxyObject", sizeof(nsProxyObject));
return mRefCnt;
}
nsrefcnt
nsProxyObject::LockedRelease()
{
NS_PRECONDITION(0 != mRefCnt, "dup release");
--mRefCnt;
NS_LOG_RELEASE(this, mRefCnt, "nsProxyObject");
if (mRefCnt)
return mRefCnt;
nsProxyObjectManager *pom = nsProxyObjectManager::GetInstance();
pom->LockedRemove(this);
nsAutoUnlock unlock(pom->GetLock());
delete this;
pom->Release();
return 0;
}
NS_IMETHODIMP
nsProxyObject::QueryInterface(REFNSIID aIID, void **aResult)
{
if (aIID.Equals(GetIID())) {
*aResult = this;
AddRef();
return NS_OK;
}
if (aIID.Equals(NS_GET_IID(nsISupports))) {
*aResult = static_cast<nsISupports*>(this);
AddRef();
return NS_OK;
}
nsProxyObjectManager *pom = nsProxyObjectManager::GetInstance();
NS_ASSERTION(pom, "Deleting a proxy without a global proxy-object-manager.");
nsAutoLock lock(pom->GetLock());
return LockedFind(aIID, aResult);
}
nsresult
nsProxyObject::LockedFind(REFNSIID aIID, void **aResult)
{
// This method is only called when the global lock is held.
// XXX assert this
nsProxyEventObject *peo;
for (peo = mFirst; peo; peo = peo->mNext) {
if (peo->GetClass()->GetProxiedIID().Equals(aIID)) {
*aResult = static_cast<nsISupports*>(peo->mXPTCStub);
peo->LockedAddRef();
return NS_OK;
}
}
nsProxyEventObject *newpeo;
// Both GetClass and QueryInterface call out to XPCOM, so we unlock for them
{
nsProxyObjectManager* pom = nsProxyObjectManager::GetInstance();
nsAutoUnlock unlock(pom->GetLock());
nsProxyEventClass *pec;
nsresult rv = pom->GetClass(aIID, &pec);
if (NS_FAILED(rv))
return rv;
nsISomeInterface* newInterface;
rv = mRealObject->QueryInterface(aIID, (void**) &newInterface);
if (NS_FAILED(rv))
return rv;
newpeo = new nsProxyEventObject(this, pec,
already_AddRefed<nsISomeInterface>(newInterface), &rv);
if (!newpeo) {
NS_RELEASE(newInterface);
return NS_ERROR_OUT_OF_MEMORY;
}
if (NS_FAILED(rv)) {
delete newpeo;
return rv;
}
}
// Now that we're locked again, check for races by repeating the
// linked-list check.
for (peo = mFirst; peo; peo = peo->mNext) {
if (peo->GetClass()->GetProxiedIID().Equals(aIID)) {
delete newpeo;
*aResult = static_cast<nsISupports*>(peo->mXPTCStub);
peo->LockedAddRef();
return NS_OK;
}
}
newpeo->mNext = mFirst;
mFirst = newpeo;
newpeo->LockedAddRef();
*aResult = static_cast<nsISupports*>(newpeo->mXPTCStub);
return NS_OK;
}
void
nsProxyObject::LockedRemove(nsProxyEventObject *peo)
{
nsProxyEventObject **i;
for (i = &mFirst; *i; i = &((*i)->mNext)) {
if (*i == peo) {
*i = peo->mNext;
return;
}
}
NS_ERROR("Didn't find nsProxyEventObject in nsProxyObject chain!");
}

View File

@@ -1,89 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim:set ts=4 sw=4 sts=4 ci et: */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pierre Phaneuf <pp@ludusdesign.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsProxyEventPrivate.h"
#include "nsIComponentManager.h"
#include "nsIServiceManager.h"
#include "nsCOMPtr.h"
#include "nsMemory.h"
#include "nsHashtable.h"
#include "nsAutoLock.h"
#include "xptcall.h"
// LIFETIME_CACHE will cache class for the entire cyle of the application.
#define LIFETIME_CACHE
static uint32 zero_methods_descriptor;
//////////////////////////////////////////////////////////////////////////////////////////////////
// nsProxyEventClass
//////////////////////////////////////////////////////////////////////////////////////////////////
nsProxyEventClass::nsProxyEventClass(REFNSIID aIID, nsIInterfaceInfo* aInfo)
: mIID(aIID),
mInfo(aInfo),
mDescriptors(NULL)
{
uint16 methodCount;
if(NS_SUCCEEDED(mInfo->GetMethodCount(&methodCount)))
{
if(methodCount)
{
int wordCount = (methodCount/32)+1;
if(NULL != (mDescriptors = new uint32[wordCount]))
{
memset(mDescriptors, 0, wordCount * sizeof(uint32));
}
}
else
{
mDescriptors = &zero_methods_descriptor;
}
}
}
nsProxyEventClass::~nsProxyEventClass()
{
if (mDescriptors && mDescriptors != &zero_methods_descriptor)
delete [] mDescriptors;
}

View File

@@ -1,284 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pierre Phaneuf <pp@ludusdesign.com>
* Benjamin Smedberg <benjamin@smedbergs.us>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "prprf.h"
#include "prmem.h"
#include "nscore.h"
#include "nsProxyEventPrivate.h"
#include "nsIThreadInternal.h"
#include "nsServiceManagerUtils.h"
#include "nsHashtable.h"
#include "nsIInterfaceInfoManager.h"
#include "xptcall.h"
#include "nsAutoLock.h"
nsProxyEventObject::nsProxyEventObject(nsProxyObject *aParent,
nsProxyEventClass* aClass,
already_AddRefed<nsISomeInterface> aRealInterface,
nsresult *rv)
: mClass(aClass),
mProxyObject(aParent),
mRealInterface(aRealInterface),
mNext(nsnull)
{
*rv = InitStub(aClass->GetProxiedIID());
}
nsProxyEventObject::~nsProxyEventObject()
{
// This destructor must *not* be called within the POM lock
// XXX assert this!
// mRealInterface must be released before mProxyObject so that the last
// release of the proxied object is proxied to the correct thread.
// See bug 337492.
mRealInterface = nsnull;
}
//
// nsISupports implementation...
//
NS_IMETHODIMP_(nsrefcnt)
nsProxyEventObject::AddRef()
{
nsAutoLock lock(nsProxyObjectManager::GetInstance()->GetLock());
return LockedAddRef();
}
nsrefcnt
nsProxyEventObject::LockedAddRef()
{
++mRefCnt;
NS_LOG_ADDREF(this, mRefCnt, "nsProxyEventObject", sizeof(nsProxyEventObject));
return mRefCnt;
}
NS_IMETHODIMP_(nsrefcnt)
nsProxyEventObject::Release(void)
{
{
nsAutoLock lock(nsProxyObjectManager::GetInstance()->GetLock());
NS_PRECONDITION(0 != mRefCnt, "dup release");
--mRefCnt;
NS_LOG_RELEASE(this, mRefCnt, "nsProxyEventObject");
if (mRefCnt)
return mRefCnt;
mProxyObject->LockedRemove(this);
}
// call the destructor outside of the lock so that we aren't holding the
// lock when we release the object
NS_DELETEXPCOM(this);
return 0;
}
NS_IMETHODIMP
nsProxyEventObject::QueryInterface(REFNSIID aIID, void** aInstancePtr)
{
if( aIID.Equals(GetClass()->GetProxiedIID()) )
{
*aInstancePtr = static_cast<nsISupports*>(mXPTCStub);
NS_ADDREF_THIS();
return NS_OK;
}
return mProxyObject->QueryInterface(aIID, aInstancePtr);
}
//
// nsXPTCStubBase implementation...
//
nsresult
nsProxyEventObject::convertMiniVariantToVariant(const XPTMethodDescriptor *methodInfo,
nsXPTCMiniVariant * params,
nsXPTCVariant **fullParam,
uint8 *outParamCount)
{
uint8 paramCount = methodInfo->num_args;
*outParamCount = paramCount;
*fullParam = nsnull;
if (!paramCount) return NS_OK;
*fullParam = (nsXPTCVariant*)malloc(sizeof(nsXPTCVariant) * paramCount);
if (*fullParam == nsnull)
return NS_ERROR_OUT_OF_MEMORY;
for (int i = 0; i < paramCount; i++)
{
const nsXPTParamInfo& paramInfo = methodInfo->params[i];
if ((GetProxyType() & NS_PROXY_ASYNC) &&
(paramInfo.IsOut() || paramInfo.IsDipper()))
{
NS_WARNING("Async proxying of out parameters is not supported");
free(*fullParam);
return NS_ERROR_PROXY_INVALID_OUT_PARAMETER;
}
uint8 flags = paramInfo.IsOut() ? nsXPTCVariant::PTR_IS_DATA : 0;
(*fullParam)[i].Init(params[i], paramInfo.GetType(), flags);
}
return NS_OK;
}
class nsProxyThreadFilter : public nsIThreadEventFilter
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSITHREADEVENTFILTER
};
NS_IMPL_THREADSAFE_ISUPPORTS1(nsProxyThreadFilter, nsIThreadEventFilter)
NS_DEFINE_IID(kFilterIID, NS_PROXYEVENT_FILTER_IID);
NS_IMETHODIMP_(PRBool)
nsProxyThreadFilter::AcceptEvent(nsIRunnable *event)
{
PROXY_LOG(("PROXY(%p): filter event [%p]\n", this, event));
// If we encounter one of our proxy events that is for a synchronous method
// call, then we want to put it in our event queue for processing. Else,
// we want to allow the event to be dispatched to the thread's event queue
// for processing later once we complete the current sync method call.
nsRefPtr<nsProxyObjectCallInfo> poci;
event->QueryInterface(kFilterIID, getter_AddRefs(poci));
return poci && poci->IsSync();
}
NS_IMETHODIMP
nsProxyEventObject::CallMethod(PRUint16 methodIndex,
const XPTMethodDescriptor* methodInfo,
nsXPTCMiniVariant * params)
{
NS_ASSERTION(methodIndex > 2,
"Calling QI/AddRef/Release through CallMethod");
nsresult rv;
if (XPT_MD_IS_NOTXPCOM(methodInfo->flags))
return NS_ERROR_PROXY_INVALID_IN_PARAMETER;
nsXPTCVariant *fullParam;
uint8 paramCount;
rv = convertMiniVariantToVariant(methodInfo, params,
&fullParam, &paramCount);
if (NS_FAILED(rv))
return rv;
PRBool callDirectly = PR_FALSE;
if (GetProxyType() & NS_PROXY_SYNC &&
NS_SUCCEEDED(GetTarget()->IsOnCurrentThread(&callDirectly)) &&
callDirectly) {
// invoke directly using xptc
rv = NS_InvokeByIndex(mRealInterface, methodIndex,
paramCount, fullParam);
if (fullParam)
free(fullParam);
return rv;
}
nsRefPtr<nsProxyObjectCallInfo> proxyInfo =
new nsProxyObjectCallInfo(this, methodInfo, methodIndex,
fullParam, paramCount);
if (!proxyInfo)
return NS_ERROR_OUT_OF_MEMORY;
if (! (GetProxyType() & NS_PROXY_SYNC)) {
return GetTarget()->Dispatch(proxyInfo, NS_DISPATCH_NORMAL);
}
// Post synchronously
nsIThread *thread = NS_GetCurrentThread();
nsCOMPtr<nsIThreadInternal> threadInt = do_QueryInterface(thread);
NS_ENSURE_STATE(threadInt);
// Install thread filter to limit event processing only to
// nsProxyObjectCallInfo instances. XXX Add support for sequencing?
nsRefPtr<nsProxyThreadFilter> filter = new nsProxyThreadFilter();
if (!filter)
return NS_ERROR_OUT_OF_MEMORY;
threadInt->PushEventQueue(filter);
PRMonitor *mon = PR_NewMonitor();
if (!mon)
return NS_ERROR_OUT_OF_MEMORY;
PR_EnterMonitor(mon);
proxyInfo->SetMonitor(mon);
// Dispatch can fail if the thread is shutting down
rv = GetTarget()->Dispatch(proxyInfo, NS_DISPATCH_NORMAL);
if (NS_SUCCEEDED(rv)) {
while (!proxyInfo->GetCompleted()) {
// Process re-entrant proxy requests, if any, but don't block.
if (!NS_ProcessNextEvent(thread, PR_FALSE)) {
// If we didn't, then sleep for a while so we don't peg the CPU
// waiting for the proxy call to be completed.
PR_Wait(mon, PR_MillisecondsToInterval(20));
}
}
rv = proxyInfo->GetResult();
} else {
NS_WARNING("Failed to dispatch nsProxyCallEvent");
}
PR_ExitMonitor(mon);
PR_DestroyMonitor(mon);
threadInt->PopEventQueue();
PROXY_LOG(("PROXY(%p): PostAndWait exit [%p %x]\n", this, proxyInfo.get(), rv));
return rv;
}

View File

@@ -1,314 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pierre Phaneuf <pp@ludusdesign.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsProxyEventPrivate_h__
#define nsProxyEventPrivate_h__
#include "nsISupports.h"
#include "nsIFactory.h"
#include "nsIEventTarget.h"
#include "nsIInterfaceInfo.h"
#include "nsIProxyObjectManager.h"
#include "nsXPTCUtils.h"
#include "nsAutoPtr.h"
#include "nsCOMPtr.h"
#include "nsThreadUtils.h"
#include "nsClassHashtable.h"
#include "nsHashtable.h"
#include "prmon.h"
#include "prlog.h"
class nsProxyEventObject;
/**
* To make types clearer, we distinguish between a canonical nsISupports* and
* a proxied interface pointer which represents an arbitrary interface known
* at runtime.
*/
typedef nsISupports nsISomeInterface;
#define NS_PROXYOBJECT_CLASS_IID \
{ 0xeea90d45, 0xb059, 0x11d2, \
{ 0x91, 0x5e, 0xc1, 0x2b, 0x69, 0x6c, 0x93, 0x33 } }
// This IID is used to filter runnables during synchronous event handling.
// The returned pointer is type nsProxyObjectCallInfo
#define NS_PROXYEVENT_FILTER_IID \
{ 0xec373590, 0x9164, 0x11d3, \
{0x8c, 0x73, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74} }
/**
* An object representing an IID and its associated interfaceinfo. Instances
* of this class are obtained via nsProxyObjectManager::GetClass.
*/
class nsProxyEventClass
{
public:
nsIInterfaceInfo* GetInterfaceInfo() const {return mInfo;}
const nsIID& GetProxiedIID() const {return mIID; }
nsProxyEventClass(REFNSIID aIID, nsIInterfaceInfo* aInfo);
~nsProxyEventClass();
nsIID mIID;
nsCOMPtr<nsIInterfaceInfo> mInfo;
uint32* mDescriptors;
};
/**
* A class which provides the XPCOM identity for a proxied object.
* Instances of this class are obtained from the POM, and are uniquely
* hashed on a proxytype/eventtarget/realobject key.
*/
class nsProxyObject : public nsISupports
{
public:
NS_DECL_ISUPPORTS
NS_DECLARE_STATIC_IID_ACCESSOR(NS_PROXYOBJECT_CLASS_IID)
nsProxyObject(nsIEventTarget *destQueue, PRInt32 proxyType,
nsISupports *realObject);
nsISupports* GetRealObject() const { return mRealObject; }
nsIEventTarget* GetTarget() const { return mTarget; }
PRInt32 GetProxyType() const { return mProxyType; }
// these are the equivalents of AddRef/Release, but must be called
// while holding the global POM lock
nsrefcnt LockedAddRef();
nsrefcnt LockedRelease();
// LockedFind should be called holding the POM lock. It will
// temporarily unlock the lock during execution.
nsresult LockedFind(REFNSIID iid, void **aResult);
void LockedRemove(nsProxyEventObject* aObject);
friend class nsProxyObjectManager;
private:
~nsProxyObject();
PRInt32 mProxyType;
nsCOMPtr<nsIEventTarget> mTarget; /* event target */
nsCOMPtr<nsISupports> mRealObject; /* the non-proxy object that this object is proxying
This is a strong ref. */
nsProxyEventObject *mFirst;
class nsProxyObjectDestructorEvent : public nsRunnable
{
nsProxyObjectDestructorEvent(nsProxyObject *doomed) :
mDoomed(doomed)
{}
NS_DECL_NSIRUNNABLE
friend class nsProxyObject;
private:
nsProxyObject *mDoomed;
};
friend class nsProxyObjectDestructorEvent;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsProxyObject, NS_PROXYOBJECT_CLASS_IID)
/**
* Object representing a single interface implemented on a proxied object.
* This object is maintained in a singly-linked list from the associated
* "parent" nsProxyObject.
*/
class nsProxyEventObject : protected nsAutoXPTCStub
{
public:
NS_DECL_ISUPPORTS
// call this method and return result
NS_IMETHOD CallMethod(PRUint16 methodIndex,
const XPTMethodDescriptor* info,
nsXPTCMiniVariant* params);
nsProxyEventClass* GetClass() const { return mClass; }
nsISomeInterface* GetProxiedInterface() const { return mRealInterface; }
nsIEventTarget* GetTarget() const { return mProxyObject->GetTarget(); }
PRInt32 GetProxyType() const { return mProxyObject->GetProxyType(); }
nsresult convertMiniVariantToVariant(const XPTMethodDescriptor *methodInfo,
nsXPTCMiniVariant *params,
nsXPTCVariant **fullParam,
uint8 *outParamCount);
nsProxyEventObject(nsProxyObject *aParent,
nsProxyEventClass *aClass,
already_AddRefed<nsISomeInterface> aRealInterface,
nsresult *rv);
// AddRef, but you must be holding the global POM lock
nsrefcnt LockedAddRef();
friend class nsProxyObject;
private:
~nsProxyEventObject();
// Member ordering is important: See note in the destructor.
nsProxyEventClass *mClass;
nsCOMPtr<nsProxyObject> mProxyObject;
nsCOMPtr<nsISomeInterface> mRealInterface;
// Weak reference, maintained by the parent nsProxyObject
nsProxyEventObject *mNext;
};
// bb7900ef-1cd0-4807-a29d-040034af1115
#define NS_PROXYEVENT_IID \
{ 0xbb7900ef, 0x1cd0, 0x4807, \
{ 0xa2, 0x9d, 0x04, 0x00, 0x34, 0xaf, 0x11, 0x15 } }
/**
* A class representing a particular proxied method call.
*/
class nsProxyObjectCallInfo : public nsRunnable
{
public:
NS_DECL_NSIRUNNABLE
NS_IMETHOD QueryInterface(REFNSIID aIID, void **aResult);
NS_DECLARE_STATIC_IID_ACCESSOR(NS_PROXYEVENT_IID)
nsProxyObjectCallInfo(nsProxyEventObject* owner,
const XPTMethodDescriptor *methodInfo,
PRUint32 methodIndex,
nsXPTCVariant* parameterList,
PRUint32 parameterCount);
~nsProxyObjectCallInfo();
PRUint32 GetMethodIndex() const { return mMethodIndex; }
nsXPTCVariant* GetParameterList() const { return mParameterList; }
PRUint32 GetParameterCount() const { return mParameterCount; }
nsresult GetResult() const { return mResult; }
PRBool GetCompleted();
void SetCompleted();
void PostCompleted();
void SetResult(nsresult rv) { mResult = rv; }
PRMonitor* GetMonitor();
void SetMonitor(PRMonitor *monitor);
PRBool IsSync() const
{
return !!(mOwner->GetProxyType() & NS_PROXY_SYNC);
}
private:
nsresult mResult; /* this is the return result of the called function */
const XPTMethodDescriptor *mMethodInfo;
PRUint32 mMethodIndex; /* which method to be called? */
nsXPTCVariant *mParameterList; /* marshalled in parameter buffer */
PRUint32 mParameterCount; /* number of params */
PRInt32 mCompleted; /* is true when the method has been called. */
PRMonitor *mMonitor; /* this is the monitor to Notify when complete */
nsRefPtr<nsProxyEventObject> mOwner; /* this is the strong referenced nsProxyObject */
void RefCountInInterfacePointers(PRBool addRef);
void CopyStrings(PRBool copy);
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsProxyObjectCallInfo, NS_PROXYEVENT_IID)
////////////////////////////////////////////////////////////////////////////////
// nsProxyObjectManager
////////////////////////////////////////////////////////////////////////////////
class nsProxyObjectManager: public nsIProxyObjectManager
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIPROXYOBJECTMANAGER
static NS_METHOD Create(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr);
nsProxyObjectManager();
static nsProxyObjectManager *GetInstance();
static PRBool IsManagerShutdown();
static void Shutdown();
nsresult GetClass(REFNSIID aIID, nsProxyEventClass **aResult);
void LockedRemove(nsProxyObject* aProxy);
PRLock* GetLock() const { return mProxyCreationLock; }
#ifdef PR_LOGGING
static PRLogModuleInfo *sLog;
#endif
private:
~nsProxyObjectManager();
static nsProxyObjectManager* mInstance;
nsHashtable mProxyObjectMap;
nsClassHashtable<nsIDHashKey, nsProxyEventClass> mProxyClassMap;
PRLock *mProxyCreationLock;
};
#define NS_XPCOMPROXY_CLASSNAME "nsProxyObjectManager"
#define NS_PROXYEVENT_MANAGER_CID \
{ 0xeea90d41, \
0xb059, \
0x11d2, \
{0x91, 0x5e, 0xc1, 0x2b, 0x69, 0x6c, 0x93, 0x33} \
}
#define PROXY_LOG(args) PR_LOG(nsProxyObjectManager::sLog, PR_LOG_DEBUG, args)
#endif // nsProxyEventPrivate_h__

View File

@@ -1,341 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Doug Turner <dougt@netscape.com> (Original Author)
* Judson Valeski <valeski@netscape.com>
* Dan Matejka <danm@netscape.com>
* Scott Collins <scc@netscape.com>
* Heikki Toivonen <heiki@citec.fi>
* Patrick Beard <beard@netscape.com>
* Pierre Phaneuf <pp@ludusdesign.com>
* Warren Harris <warren@netscape.com>
* Chris Seawood <cls@seawood.org>
* Chris Waterson <waterson@netscape.com>
* Dan Mosedale <dmose@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsProxyEventPrivate.h"
#include "nsIComponentManager.h"
#include "nsIProxyObjectManager.h"
#include "nsIServiceManager.h"
#include "nsIThread.h"
#include "nsAutoLock.h"
#include "nsCOMPtr.h"
#include "nsThreadUtils.h"
#include "xptiprivate.h"
#ifdef PR_LOGGING
PRLogModuleInfo *nsProxyObjectManager::sLog = PR_NewLogModule("xpcomproxy");
#endif
class nsProxyEventKey : public nsHashKey
{
public:
nsProxyEventKey(void* rootObjectKey, void* targetKey, PRInt32 proxyType)
: mRootObjectKey(rootObjectKey), mTargetKey(targetKey), mProxyType(proxyType) {
}
PRUint32 HashCode(void) const {
return NS_PTR_TO_INT32(mRootObjectKey) ^
NS_PTR_TO_INT32(mTargetKey) ^ mProxyType;
}
PRBool Equals(const nsHashKey *aKey) const {
const nsProxyEventKey* other = (const nsProxyEventKey*)aKey;
return mRootObjectKey == other->mRootObjectKey
&& mTargetKey == other->mTargetKey
&& mProxyType == other->mProxyType;
}
nsHashKey *Clone() const {
return new nsProxyEventKey(mRootObjectKey, mTargetKey, mProxyType);
}
protected:
void* mRootObjectKey;
void* mTargetKey;
PRInt32 mProxyType;
};
/////////////////////////////////////////////////////////////////////////
// nsProxyObjectManager
/////////////////////////////////////////////////////////////////////////
nsProxyObjectManager* nsProxyObjectManager::mInstance = nsnull;
NS_IMPL_THREADSAFE_ISUPPORTS1(nsProxyObjectManager, nsIProxyObjectManager)
nsProxyObjectManager::nsProxyObjectManager()
: mProxyObjectMap(256, PR_FALSE)
{
mProxyCreationLock = PR_NewLock();
mProxyClassMap.Init(256);
}
nsProxyObjectManager::~nsProxyObjectManager()
{
mProxyClassMap.Clear();
if (mProxyCreationLock)
PR_DestroyLock(mProxyCreationLock);
nsProxyObjectManager::mInstance = nsnull;
}
PRBool
nsProxyObjectManager::IsManagerShutdown()
{
return mInstance == nsnull;
}
nsProxyObjectManager *
nsProxyObjectManager::GetInstance()
{
if (!mInstance)
mInstance = new nsProxyObjectManager();
return mInstance;
}
void
nsProxyObjectManager::Shutdown()
{
mInstance = nsnull;
}
NS_IMETHODIMP
nsProxyObjectManager::Create(nsISupports* outer, const nsIID& aIID,
void* *aInstancePtr)
{
nsProxyObjectManager *proxyObjectManager = GetInstance();
if (!proxyObjectManager)
return NS_ERROR_OUT_OF_MEMORY;
return proxyObjectManager->QueryInterface(aIID, aInstancePtr);
}
class nsProxyLockedRefPtr
{
public:
nsProxyLockedRefPtr(nsProxyObject* aPtr) :
mProxyObject(aPtr)
{
if (mProxyObject)
mProxyObject->LockedAddRef();
}
~nsProxyLockedRefPtr()
{
if (mProxyObject)
mProxyObject->LockedRelease();
}
operator nsProxyObject*() const
{
return mProxyObject;
}
nsProxyObject* operator->() const
{
return mProxyObject;
}
private:
nsProxyObject *mProxyObject;
};
NS_IMETHODIMP
nsProxyObjectManager::GetProxyForObject(nsIEventTarget* aTarget,
REFNSIID aIID,
nsISupports* aObj,
PRInt32 proxyType,
void** aProxyObject)
{
NS_ENSURE_ARG_POINTER(aObj);
*aProxyObject = nsnull;
// handle special values
nsCOMPtr<nsIThread> thread;
if (aTarget == NS_PROXY_TO_CURRENT_THREAD) {
aTarget = NS_GetCurrentThread();
} else if (aTarget == NS_PROXY_TO_MAIN_THREAD) {
thread = do_GetMainThread();
aTarget = thread.get();
}
// check to see if the target is on our thread. If so, just return the
// real object.
if (!(proxyType & NS_PROXY_ASYNC) && !(proxyType & NS_PROXY_ALWAYS))
{
PRBool result;
aTarget->IsOnCurrentThread(&result);
if (result)
return aObj->QueryInterface(aIID, aProxyObject);
}
nsCOMPtr<nsISupports> realObj = do_QueryInterface(aObj);
// Make sure the object passed in is not a proxy; if it is, be nice and
// build the proxy for the real object.
nsCOMPtr<nsProxyObject> po = do_QueryInterface(aObj);
if (po) {
realObj = po->GetRealObject();
}
nsCOMPtr<nsISupports> realEQ = do_QueryInterface(aTarget);
nsProxyEventKey rootKey(realObj, realEQ, proxyType);
{
nsAutoLock lock(mProxyCreationLock);
nsProxyLockedRefPtr root =
(nsProxyObject*) mProxyObjectMap.Get(&rootKey);
if (root)
return root->LockedFind(aIID, aProxyObject);
}
// don't lock while creating the nsProxyObject
nsProxyObject *newRoot = new nsProxyObject(aTarget, proxyType, realObj);
if (!newRoot)
return NS_ERROR_OUT_OF_MEMORY;
// lock again, and check for a race putting into mProxyObjectMap
{
nsAutoLock lock(mProxyCreationLock);
nsProxyLockedRefPtr root =
(nsProxyObject*) mProxyObjectMap.Get(&rootKey);
if (root) {
delete newRoot;
return root->LockedFind(aIID, aProxyObject);
}
mProxyObjectMap.Put(&rootKey, newRoot);
nsProxyLockedRefPtr kungFuDeathGrip(newRoot);
return newRoot->LockedFind(aIID, aProxyObject);
}
}
void
nsProxyObjectManager::LockedRemove(nsProxyObject *aProxy)
{
nsCOMPtr<nsISupports> realEQ = do_QueryInterface(aProxy->GetTarget());
nsProxyEventKey rootKey(aProxy->GetRealObject(), realEQ, aProxy->GetProxyType());
if (!mProxyObjectMap.Remove(&rootKey)) {
NS_ERROR("nsProxyObject not found in global hash.");
}
}
nsresult
nsProxyObjectManager::GetClass(REFNSIID aIID, nsProxyEventClass **aResult)
{
{
nsAutoLock lock(mProxyCreationLock);
if (mProxyClassMap.Get(aIID, aResult)) {
NS_ASSERTION(*aResult, "Null data in mProxyClassMap");
return NS_OK;
}
}
nsIInterfaceInfoManager *iim =
xptiInterfaceInfoManager::GetInterfaceInfoManagerNoAddRef();
if (!iim)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIInterfaceInfo> ii;
nsresult rv = iim->GetInfoForIID(&aIID, getter_AddRefs(ii));
if (NS_FAILED(rv))
return rv;
nsProxyEventClass *pec = new nsProxyEventClass(aIID, ii);
if (!pec)
return NS_ERROR_OUT_OF_MEMORY;
// Re-lock to put this class into our map. Before putting, check to see
// if another thread raced to put before us
nsAutoLock lock(mProxyCreationLock);
if (mProxyClassMap.Get(aIID, aResult)) {
NS_ASSERTION(*aResult, "Null data in mProxyClassMap");
delete pec;
return NS_OK;
}
if (!mProxyClassMap.Put(aIID, pec)) {
delete pec;
return NS_ERROR_OUT_OF_MEMORY;
}
*aResult = pec;
return NS_OK;
}
/**
* Helper function for code that already has a link-time dependency on
* libxpcom and needs to get proxies in a bunch of different places.
* This way, the caller isn't forced to get the proxy object manager
* themselves every single time, thus making the calling code more
* readable.
*/
NS_COM nsresult
NS_GetProxyForObject(nsIEventTarget *target,
REFNSIID aIID,
nsISupports* aObj,
PRInt32 proxyType,
void** aProxyObject)
{
static NS_DEFINE_CID(proxyObjMgrCID, NS_PROXYEVENT_MANAGER_CID);
nsresult rv;
// get the proxy object manager
//
nsCOMPtr<nsIProxyObjectManager> proxyObjMgr =
do_GetService(proxyObjMgrCID, &rv);
if (NS_FAILED(rv))
return rv;
// and try to get the proxy object
//
return proxyObjMgr->GetProxyForObject(target, aIID, aObj,
proxyType, aProxyObject);
}

View File

@@ -1,208 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Benjamin Smedberg <benjamin@smedbergs.us>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* Public declarations for xptcall. */
#ifndef xptcall_h___
#define xptcall_h___
#ifdef MOZILLA_INTERNAL_API
# define NS_GetXPTCallStub NS_GetXPTCallStub_P
# define NS_DestroyXPTCallStub NS_DestroyXPTCallStub_P
# define NS_InvokeByIndex NS_InvokeByIndex_P
#endif
#include "prtypes.h"
#include "nscore.h"
#include "nsISupports.h"
#include "xpt_struct.h"
#include "xptinfo.h"
struct nsXPTCMiniVariant
{
// No ctors or dtors so that we can use arrays of these on the stack
// with no penalty.
union
{
PRInt8 i8;
PRInt16 i16;
PRInt32 i32;
PRInt64 i64;
PRUint8 u8;
PRUint16 u16;
PRUint32 u32;
PRUint64 u64;
float f;
double d;
PRBool b;
char c;
PRUnichar wc;
void* p;
} val;
};
struct nsXPTCVariant : public nsXPTCMiniVariant
{
// No ctors or dtors so that we can use arrays of these on the stack
// with no penalty.
// inherits 'val' here
void* ptr;
nsXPTType type;
PRUint8 flags;
enum
{
// these are bitflags!
PTR_IS_DATA = 0x1, // ptr points to 'real' data in val
VAL_IS_ALLOCD = 0x2, // val.p holds alloc'd ptr that must be freed
VAL_IS_IFACE = 0x4, // val.p holds interface ptr that must be released
VAL_IS_ARRAY = 0x8, // val.p holds a pointer to an array needing cleanup
VAL_IS_DOMSTR = 0x10, // val.p holds a pointer to domstring needing cleanup
VAL_IS_UTF8STR = 0x20, // val.p holds a pointer to utf8string needing cleanup
VAL_IS_CSTR = 0x40 // val.p holds a pointer to cstring needing cleanup
};
void ClearFlags() {flags = 0;}
void SetPtrIsData() {flags |= PTR_IS_DATA;}
void SetValIsAllocated() {flags |= VAL_IS_ALLOCD;}
void SetValIsInterface() {flags |= VAL_IS_IFACE;}
void SetValIsArray() {flags |= VAL_IS_ARRAY;}
void SetValIsDOMString() {flags |= VAL_IS_DOMSTR;}
void SetValIsUTF8String() {flags |= VAL_IS_UTF8STR;}
void SetValIsCString() {flags |= VAL_IS_CSTR;}
PRBool IsPtrData() const {return 0 != (flags & PTR_IS_DATA);}
PRBool IsValAllocated() const {return 0 != (flags & VAL_IS_ALLOCD);}
PRBool IsValInterface() const {return 0 != (flags & VAL_IS_IFACE);}
PRBool IsValArray() const {return 0 != (flags & VAL_IS_ARRAY);}
PRBool IsValDOMString() const {return 0 != (flags & VAL_IS_DOMSTR);}
PRBool IsValUTF8String() const {return 0 != (flags & VAL_IS_UTF8STR);}
PRBool IsValCString() const {return 0 != (flags & VAL_IS_CSTR);}
void Init(const nsXPTCMiniVariant& mv, const nsXPTType& t, PRUint8 f)
{
type = t;
flags = f;
if(f & PTR_IS_DATA)
{
ptr = mv.val.p;
val.p = nsnull;
}
else
{
ptr = nsnull;
val.p = nsnull; // make sure 'val.p' is always initialized
switch(t.TagPart()) {
case nsXPTType::T_I8: val.i8 = mv.val.i8; break;
case nsXPTType::T_I16: val.i16 = mv.val.i16; break;
case nsXPTType::T_I32: val.i32 = mv.val.i32; break;
case nsXPTType::T_I64: val.i64 = mv.val.i64; break;
case nsXPTType::T_U8: val.u8 = mv.val.u8; break;
case nsXPTType::T_U16: val.u16 = mv.val.u16; break;
case nsXPTType::T_U32: val.u32 = mv.val.u32; break;
case nsXPTType::T_U64: val.u64 = mv.val.u64; break;
case nsXPTType::T_FLOAT: val.f = mv.val.f; break;
case nsXPTType::T_DOUBLE: val.d = mv.val.d; break;
case nsXPTType::T_BOOL: val.b = mv.val.b; break;
case nsXPTType::T_CHAR: val.c = mv.val.c; break;
case nsXPTType::T_WCHAR: val.wc = mv.val.wc; break;
case nsXPTType::T_VOID: /* fall through */
case nsXPTType::T_IID: /* fall through */
case nsXPTType::T_DOMSTRING: /* fall through */
case nsXPTType::T_CHAR_STR: /* fall through */
case nsXPTType::T_WCHAR_STR: /* fall through */
case nsXPTType::T_INTERFACE: /* fall through */
case nsXPTType::T_INTERFACE_IS: /* fall through */
case nsXPTType::T_ARRAY: /* fall through */
case nsXPTType::T_PSTRING_SIZE_IS: /* fall through */
case nsXPTType::T_PWSTRING_SIZE_IS: /* fall through */
case nsXPTType::T_UTF8STRING: /* fall through */
case nsXPTType::T_CSTRING: /* fall through */
default: val.p = mv.val.p; break;
}
}
}
};
class nsIXPTCProxy : public nsISupports
{
public:
NS_IMETHOD CallMethod(PRUint16 aMethodIndex,
const XPTMethodDescriptor *aInfo,
nsXPTCMiniVariant *aParams) = 0;
};
/**
* This is a typedef to avoid confusion between the canonical
* nsISupports* that provides object identity and an interface pointer
* for inheriting interfaces that aren't known at compile-time.
*/
typedef nsISupports nsISomeInterface;
/**
* Get a proxy object to implement the specified interface.
*
* @param aIID The IID of the interface to implement.
* @param aOuter An object to receive method calls from the proxy object.
* The stub forwards QueryInterface/AddRef/Release to the
* outer object. The proxy object does not hold a reference to
* the outer object; it is the caller's responsibility to
* ensure that this pointer remains valid until the stub has
* been destroyed.
* @param aStub Out parameter for the new proxy object. The object is
* not addrefed. The object never destroys itself. It must be
* explicitly destroyed by calling
* NS_DestroyXPTCallStub when it is no longer needed.
*/
XPCOM_API(nsresult)
NS_GetXPTCallStub(REFNSIID aIID, nsIXPTCProxy* aOuter,
nsISomeInterface* *aStub);
/**
* Destroys an XPTCall stub previously created with NS_GetXPTCallStub.
*/
XPCOM_API(void)
NS_DestroyXPTCallStub(nsISomeInterface* aStub);
XPCOM_API(nsresult)
NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
PRUint32 paramCount, nsXPTCVariant* params);
#endif /* xptcall_h___ */

View File

@@ -1,141 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla code.
*
* The Initial Developer of the Original Code is Google Inc.
* Portions created by the Initial Developer are Copyright (C) 2006
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Darin Fisher <darin@meer.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsEventQueue.h"
#include "nsAutoLock.h"
#include "nsAutoPtr.h"
#include "prlog.h"
#include "nsThreadUtils.h"
#ifdef PR_LOGGING
static PRLogModuleInfo *sLog = PR_NewLogModule("nsEventQueue");
#endif
#define LOG(args) PR_LOG(sLog, PR_LOG_DEBUG, args)
nsEventQueue::nsEventQueue()
: mMonitor(nsAutoMonitor::NewMonitor("xpcom.eventqueue"))
, mHead(nsnull)
, mTail(nsnull)
, mOffsetHead(0)
, mOffsetTail(0)
{
}
nsEventQueue::~nsEventQueue()
{
// It'd be nice to be able to assert that no one else is holding the monitor,
// but NSPR doesn't really expose APIs for it.
NS_ASSERTION(IsEmpty(), "Non-empty event queue being destroyed; events being leaked.");
if (mHead)
FreePage(mHead);
if (mMonitor)
nsAutoMonitor::DestroyMonitor(mMonitor);
}
PRBool
nsEventQueue::GetEvent(PRBool mayWait, nsIRunnable **result)
{
{
nsAutoMonitor mon(mMonitor);
while (IsEmpty()) {
if (!mayWait) {
if (result)
*result = nsnull;
return PR_FALSE;
}
LOG(("EVENTQ(%p): wait begin\n", this));
mon.Wait();
LOG(("EVENTQ(%p): wait end\n", this));
}
if (result) {
*result = mHead->mEvents[mOffsetHead++];
// Check if mHead points to empty Page
if (mOffsetHead == EVENTS_PER_PAGE) {
Page *dead = mHead;
mHead = mHead->mNext;
FreePage(dead);
mOffsetHead = 0;
}
}
}
return PR_TRUE;
}
PRBool
nsEventQueue::PutEvent(nsIRunnable *runnable)
{
// Avoid calling AddRef+Release while holding our monitor.
nsRefPtr<nsIRunnable> event(runnable);
PRBool rv = PR_TRUE;
{
nsAutoMonitor mon(mMonitor);
if (!mHead) {
mHead = NewPage();
if (!mHead) {
rv = PR_FALSE;
} else {
mTail = mHead;
mOffsetHead = 0;
mOffsetTail = 0;
}
} else if (mOffsetTail == EVENTS_PER_PAGE) {
Page *page = NewPage();
if (!page) {
rv = PR_FALSE;
} else {
mTail->mNext = page;
mTail = page;
mOffsetTail = 0;
}
}
if (rv) {
event.swap(mTail->mEvents[mOffsetTail]);
++mOffsetTail;
LOG(("EVENTQ(%p): notify\n", this));
mon.NotifyAll();
}
}
return rv;
}

View File

@@ -1,123 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 Mozilla code.
*
* The Initial Developer of the Original Code is Google Inc.
* Portions created by the Initial Developer are Copyright (C) 2006
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Darin Fisher <darin@meer.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsEventQueue_h__
#define nsEventQueue_h__
#include <stdlib.h>
#include "prmon.h"
#include "nsIRunnable.h"
// A threadsafe FIFO event queue...
class NS_COM nsEventQueue
{
public:
nsEventQueue();
~nsEventQueue();
// Returns "true" if the event queue has been completely constructed.
PRBool IsInitialized() { return mMonitor != nsnull; }
// This method adds a new event to the pending event queue. The event object
// is AddRef'd if this method succeeds. This method returns PR_TRUE if the
// event was stored in the event queue, and it returns PR_FALSE if it could
// not allocate sufficient memory.
PRBool PutEvent(nsIRunnable *event);
// This method gets an event from the event queue. If mayWait is true, then
// the method will block the calling thread until an event is available. If
// the event is null, then the method returns immediately indicating whether
// or not an event is pending. When the resulting event is non-null, the
// caller is responsible for releasing the event object. This method does
// not alter the reference count of the resulting event.
PRBool GetEvent(PRBool mayWait, nsIRunnable **event);
// This method returns true if there is a pending event.
PRBool HasPendingEvent() {
return GetEvent(PR_FALSE, nsnull);
}
// This method returns the next pending event or null.
PRBool GetPendingEvent(nsIRunnable **runnable) {
return GetEvent(PR_FALSE, runnable);
}
// This method waits for and returns the next pending event.
PRBool WaitPendingEvent(nsIRunnable **runnable) {
return GetEvent(PR_TRUE, runnable);
}
// Expose the event queue's monitor for "power users"
PRMonitor *Monitor() {
return mMonitor;
}
private:
PRBool IsEmpty() {
return !mHead || (mHead == mTail && mOffsetHead == mOffsetTail);
}
enum { EVENTS_PER_PAGE = 250 };
// Page objects are linked together to form a simple deque.
struct Page; friend struct Page; // VC6!
struct Page {
struct Page *mNext;
nsIRunnable *mEvents[EVENTS_PER_PAGE];
};
static Page *NewPage() {
return static_cast<Page *>(calloc(1, sizeof(Page)));
}
static void FreePage(Page *p) {
free(p);
}
PRMonitor *mMonitor;
Page *mHead;
Page *mTail;
PRUint16 mOffsetHead; // offset into mHead where next item is removed
PRUint16 mOffsetTail; // offset into mTail where next item is added
};
#endif // nsEventQueue_h__

View File

@@ -0,0 +1,39 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (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 Communicator client code,
# released March 31, 1998.
#
# 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.
#
# Contributors:
# Daniel Veditz <dveditz@netscape.com>
# Douglas Turner <dougt@netscape.com>
DEPTH = ..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public
include $(topsrcdir)/config/config.mk
include $(topsrcdir)/config/rules.mk

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,30 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (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 Communicator client code,
# released March 31, 1998.
#
# 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.
#
# Contributors:
# Daniel Veditz <dveditz@netscape.com>
# Douglas Turner <dougt@netscape.com>
DEPTH=..
DIRS= public res src
include <$(DEPTH)\config\rules.mak>

View File

@@ -0,0 +1,33 @@
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:NC="http://home.netscape.com/NC-rdf#">
<RDF:Bag ID="NC:SoftwareUpdateRoot">
<RDF:li>
<RDF:Bag ID="NC:NewSoftwareToday" NC:title="New Software">
<RDF:li>
<RDF:Description ID="AimUpdate344">
<NC:type resource="http://home.netscape.com/NC-rdf#SoftwarePackage" />
<NC:title>AOL AIM</NC:title>
<NC:description>An Instant Message Client</NC:description>
<NC:version>3.4.1.12</NC:version>
<NC:registryKey>/AOL/AIM/</NC:registryKey>
<NC:url>http://home.netscape.com/index.html</NC:url>
</RDF:Description>
</RDF:li>
<RDF:li>
<RDF:Description ID="PGPPlugin345">
<NC:type resource="http://home.netscape.com/NC-rdf#SoftwarePackage" />
<NC:title>PGP Plugin For Mozilla</NC:title>
<NC:description>A high grade encryption plugin</NC:description>
<NC:version>1.1.2.0</NC:version>
<NC:registryKey>/PGP/ROCKS/</NC:registryKey>
<NC:url>http://home.netscape.com/index.html</NC:url>
</RDF:Description>
</RDF:li>
</RDF:Bag>
</RDF:li>
</RDF:Bag>
</RDF:RDF>

View File

@@ -0,0 +1,57 @@
window {
display: block;
}
tree {
display: table;
background-color: #FFFFFF;
border: none;
border-spacing: 0px;
width: 100%;
}
treecol {
display: table-column;
width: 200px;
}
treeitem {
display: table-row;
}
treehead {
display: table-header-group;
}
treebody {
display: table-row-group;
}
treecell {
display: table-cell;
font-family: Verdana, Sans-Serif;
font-size: 8pt;
}
treecell[selectedcell] {
background-color: yellow;
}
treehead treeitem treecell {
background-color: #c0c0c0;
border: outset 1px;
border-color: white #707070 #707070 white;
padding-left: 4px;
}
treeitem[type="http://home.netscape.com/NC-rdf#SoftwarePackage"] > treecell > titledbutton {
list-style-image: url("resource:/res/rdf/SoftwareUpdatePackage.gif");
}
treeitem[type="http://home.netscape.com/NC-rdf#Folder"] > treecell > titledbutton {
list-style-image: url("resource:/res/rdf/bookmark-folder-closed.gif");
treeitem[type="http://home.netscape.com/NC-rdf#Folder"][open="true"] > treecell > titledbutton {
list-style-image: url("resource:/res/rdf/bookmark-folder-open.gif");
}

View File

@@ -0,0 +1,123 @@
// the rdf service
var RDF = Components.classes['component://netscape/rdf/rdf-service'].getService();
RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService);
function getAttr(registry,service,attr_name)
{
var attr = registry.GetTarget(service,
RDF.GetResource('http://home.netscape.com/NC-rdf#' + attr_name),
true);
if (attr)
attr = attr.QueryInterface(Components.interfaces.nsIRDFLiteral);
if (attr)
attr = attr.Value;
return attr;
}
function Init()
{
// this is the main rdf file.
var mainRegistry = RDF.GetDataSource('resource://res/rdf/SoftwareUpdates.rdf');
var mainContainer = Components.classes['component://netscape/rdf/container'].createInstance();
mainContainer = mainContainer.QueryInterface(Components.interfaces.nsIRDFContainer);
mainContainer.Init(mainRegistry, RDF.GetResource('NC:SoftwareUpdateDataSources'));
// Now enumerate all of the softwareupdate datasources.
var mainEnumerator = mainContainer.GetElements();
while (mainEnumerator.HasMoreElements())
{
var aDistributor = mainEnumerator.GetNext();
aDistributor = aDistributor.QueryInterface(Components.interfaces.nsIRDFResource);
var distributorContainer = Components.classes['component://netscape/rdf/container'].createInstance();
distributorContainer = distributorContainer.QueryInterface(Components.interfaces.nsIRDFContainer);
var distributorRegistry = RDF.GetDataSource(aDistributor.Value);
var distributorResource = RDF.GetResource('NC:SoftwareUpdateRoot');
distributorContainer.Init(distributorRegistry, distributorResource);
// Now enumerate all of the distributorContainer's packages.
var distributorEnumerator = distributorContainer.GetElements();
while (distributorEnumerator.HasMoreElements())
{
var aPackage = distributorEnumerator.GetNext();
aPackage = aPackage.QueryInterface(Components.interfaces.nsIRDFResource);
// remove any that we do not want.
if (getAttr(distributorRegistry, aPackage, 'title') == "AOL AIM")
{
//distributorContainer.RemoveElement(aPackage, true);
}
}
var tree = document.getElementById('tree');
// Add it to the tree control's composite datasource.
tree.database.AddDataSource(distributorRegistry);
}
// Install all of the stylesheets in the softwareupdate Registry into the
// panel.
// TODO
// XXX hack to force the tree to rebuild
var treebody = document.getElementById('NC:SoftwareUpdateRoot');
treebody.setAttribute('id', 'NC:SoftwareUpdateRoot');
}
function OpenURL(event, node)
{
if (node.getAttribute('type') == "http://home.netscape.com/NC-rdf#SoftwarePackage")
{
url = node.getAttribute('url');
/*window.open(url,'bookmarks');*/
var toolkitCore = XPAppCoresManager.Find("ToolkitCore");
if (!toolkitCore)
{
toolkitCore = new ToolkitCore();
if (toolkitCore)
{
toolkitCore.Init("ToolkitCore");
}
}
if (toolkitCore)
{
toolkitCore.ShowWindow(url,window);
}
dump("OpenURL(" + url + ")\n");
return true;
}
return false;
}
// To get around "window.onload" not working in viewer.
function Boot()
{
var tree = document.getElementById('tree');
if (tree == null) {
setTimeout(Boot, 0);
}
else {
Init();
}
}
setTimeout('Boot()', 0);

View File

@@ -0,0 +1,30 @@
<?xml version="1.0"?>
<?xml-stylesheet href="resource:/res/rdf/sidebar.css" type="text/css"?>
<?xml-stylesheet href="resource:/res/rdf/SoftwareUpdate.css" type="text/css"?>
<window
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<html:script src="SoftwareUpdate.js"/>
<tree id="tree"
flex="100%"
datasources="rdf:softwareupdates"
ondblclick="return OpenURL(event, event.target.parentNode);">
<treecol rdf:resource="http://home.netscape.com/NC-rdf#title" />
<treecol rdf:resource="http://home.netscape.com/NC-rdf#description" />
<treecol rdf:resource="http://home.netscape.com/NC-rdf#version" />
<treehead>
<treeitem>
<treecell>Title</treecell>
<treecell>Description</treecell>
<treecell>Version</treecell>
</treeitem>
</treehead>
<treebody id="NC:SoftwareUpdateRoot" rdf:containment="http://home.netscape.com/NC-rdf#child" />
</tree>
</window>

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

View File

@@ -0,0 +1,7 @@
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:NC="http://home.netscape.com/softwareupdate-schema#">
<RDF:Bag ID="NC:SoftwareUpdateDataSources">
<RDF:li resource="resource:/res/rdf/SoftwareUpdate-Source-1.rdf" />
</RDF:Bag>
</RDF:RDF>

View File

@@ -0,0 +1,6 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
nsISoftwareUpdate.h
nsSoftwareUpdateIIDs.h

View File

@@ -0,0 +1,47 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (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 Communicator client code,
# released March 31, 1998.
#
# 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.
#
# Contributors:
# Daniel Veditz <dveditz@netscape.com>
# Douglas Turner <dougt@netscape.com>
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xpinstall
XPIDLSRCS = nsIXPInstallProgress.idl
EXPORTS = \
nsIDOMInstallTriggerGlobal.h \
nsIDOMInstallVersion.h \
nsSoftwareUpdateIIDs.h \
nsISoftwareUpdate.h \
$(NULL)
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
include $(topsrcdir)/config/config.mk
include $(topsrcdir)/config/rules.mk

View File

@@ -0,0 +1,113 @@
interface Install
{
/* IID: { 0x18c2f988, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}} */
const int BAD_PACKAGE_NAME = -200;
const int UNEXPECTED_ERROR = -201;
const int ACCESS_DENIED = -202;
const int TOO_MANY_CERTIFICATES = -203; /* Installer file must have 1 certificate */
const int NO_INSTALLER_CERTIFICATE = -204; /* Installer file must have a certificate */
const int NO_CERTIFICATE = -205; /* Extracted file is not signed */
const int NO_MATCHING_CERTIFICATE = -206; /* Extracted file does not match installer certificate */
const int UNKNOWN_JAR_FILE = -207; /* JAR file has not been opened */
const int INVALID_ARGUMENTS = -208; /* Bad arguments to a function */
const int ILLEGAL_RELATIVE_PATH = -209; /* Illegal relative path */
const int USER_CANCELLED = -210; /* User cancelled */
const int INSTALL_NOT_STARTED = -211;
const int SILENT_MODE_DENIED = -212;
const int NO_SUCH_COMPONENT = -213; /* no such component in the registry. */
const int FILE_DOES_NOT_EXIST = -214; /* File cannot be deleted as it does not exist */
const int FILE_READ_ONLY = -215; /* File cannot be deleted as it is read only. */
const int FILE_IS_DIRECTORY = -216; /* File cannot be deleted as it is a directory */
const int NETWORK_FILE_IS_IN_USE = -217; /* File on the network is in-use */
const int APPLE_SINGLE_ERR = -218; /* error in AppleSingle unpacking */
const int INVALID_PATH_ERR = -219; /* GetFolder() did not like the folderID */
const int PATCH_BAD_DIFF = -220; /* error in GDIFF patch */
const int PATCH_BAD_CHECKSUM_TARGET = -221; /* source file doesn't checksum */
const int PATCH_BAD_CHECKSUM_RESULT = -222; /* final patched file fails checksum */
const int UNINSTALL_FAILED = -223; /* error while uninstalling a package */
const int GESTALT_UNKNOWN_ERR = -5550;
const int GESTALT_INVALID_ARGUMENT = -5551;
const int SUCCESS = 0;
const int REBOOT_NEEDED = 999;
/* install types */
const int LIMITED_INSTALL = 0;
const int FULL_INSTALL = 1;
const int NO_STATUS_DLG = 2;
const int NO_FINALIZE_DLG = 4;
// these should not be public...
/* message IDs*/
const int SU_INSTALL_FILE_UNEXPECTED_MSG_ID = 0;
const int SU_DETAILS_REPLACE_FILE_MSG_ID = 1;
const int SU_DETAILS_INSTALL_FILE_MSG_ID = 2;
//////////////////////////
readonly attribute wstring UserPackageName;
readonly attribute wstring RegPackageName;
void Install();
void AbortInstall();
long AddDirectory( in wstring regName,
in wstring version,
in wstring jarSource,
in InstallFolder folder,
in wstring subdir,
in boolean forceMode );
long AddSubcomponent( in wstring regName,
in wstring version,
in wstring jarSource,
in InstallFolder folder,
in wstring targetName,
in boolean forceMode );
long DeleteComponent( in wstring registryName);
long DeleteFile( in InstallFolder folder,
in wstring relativeFileName );
long DiskSpaceAvailable( in InstallFolder folder );
long Execute(in wstring jarSource, in wstring args);
long FinalizeInstall();
long Gestalt (in wstring selector);
InstallFolder GetComponentFolder( in wstring regName,
in wstring subdirectory);
InstallFolder GetFolder(in wstring targetFolder,
in wstring subdirectory);
long GetLastError();
long GetWinProfile(in InstallFolder folder, in wstring file);
long GetWinRegistry();
long Patch( in wstring regName,
in wstring version,
in wstring jarSource,
in InstallFolder folder,
in wstring targetName );
void ResetError();
void SetPackageFolder( in InstallFolder folder );
long StartInstall( in wstring userPackageName,
in wstring packageName,
in wstring version,
in long flags );
long Uninstall( in wstring packageName);
};

View File

@@ -0,0 +1,24 @@
interface InstallTriggerGlobal
{
/* IID: { 0x18c2f987, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}} */
const int MAJOR_DIFF = 4;
const int MINOR_DIFF = 3;
const int REL_DIFF = 2;
const int BLD_DIFF = 1;
const int EQUAL = 0;
boolean UpdateEnabled ();
long StartSoftwareUpdate(in wstring URL);
long ConditionalSoftwareUpdate( in wstring URL,
in wstring regName,
in long diffLevel,
in wstring version,
in long mode);
long CompareVersion( in wstring regName, in wstring version );
};

View File

@@ -0,0 +1,34 @@
interface InstallVersion
{
/* IID: { 0x18c2f986, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}} */
const int EQUAL = 0;
const int BLD_DIFF = 1;
const int BLD_DIFF_MINUS = -1;
const int REL_DIFF = 2;
const int REL_DIFF_MINUS = -2;
const int MINOR_DIFF = 3;
const int MINOR_DIFF_MINUS = -3;
const int MAJOR_DIFF = 4;
const int MAJOR_DIFF_MINUS = -4;
attribute int major;
attribute int minor;
attribute int release;
attribute int build;
void InstallVersion();
void init(in wstring versionString);
/*
void init(in int major, in int minor, in int release, in int build);
*/
wstring toString();
/* int compareTo(in wstring version);
int compareTo(in int major, in int minor, in int release, in int build);
*/
int compareTo(in InstallVersion versionObject);
};

View File

@@ -0,0 +1,36 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (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 Communicator client code,
# released March 31, 1998.
#
# 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.
#
# Contributors:
# Daniel Veditz <dveditz@netscape.com>
# Douglas Turner <dougt@netscape.com>
MODULE=xpinstall
DEPTH=..\..
EXPORTS= nsIDOMInstallTriggerGlobal.h \
nsIDOMInstallVersion.h \
nsSoftwareUpdateIIDs.h \
nsISoftwareUpdate.h
XPIDLSRCS = .\nsIXPInstallProgress.idl
include <$(DEPTH)\config\config.mak>
include <$(DEPTH)\config\rules.mak>

View File

@@ -0,0 +1 @@
#error

View File

@@ -0,0 +1,96 @@
/* -*- 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.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.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#ifndef nsIDOMInstallTriggerGlobal_h__
#define nsIDOMInstallTriggerGlobal_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
#define NS_IDOMINSTALLTRIGGERGLOBAL_IID \
{ 0x18c2f987, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}}
class nsIDOMInstallTriggerGlobal : public nsISupports {
public:
static const nsIID& IID() { static nsIID iid = NS_IDOMINSTALLTRIGGERGLOBAL_IID; return iid; }
enum {
MAJOR_DIFF = 4,
MINOR_DIFF = 3,
REL_DIFF = 2,
BLD_DIFF = 1,
EQUAL = 0
};
NS_IMETHOD UpdateEnabled(PRBool* aReturn)=0;
NS_IMETHOD StartSoftwareUpdate(const nsString& aURL, PRInt32* aReturn)=0;
NS_IMETHOD StartSoftwareUpdate(const nsString& aURL, PRInt32 aFlags, PRInt32* aReturn)=0;
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, PRInt32 aDiffLevel, const nsString& aVersion, PRInt32 aMode, PRInt32* aReturn)=0;
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, PRInt32 aDiffLevel, nsIDOMInstallVersion* aVersion, PRInt32 aMode, PRInt32* aReturn)=0;
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32 aMode, PRInt32* aReturn)=0;
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, const nsString& aVersion, PRInt32 aMode, PRInt32* aReturn)=0;
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, const nsString& aVersion, PRInt32* aReturn)=0;
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32* aReturn)=0;
NS_IMETHOD CompareVersion(const nsString& aRegName, PRInt32 aMajor, PRInt32 aMinor, PRInt32 aRelease, PRInt32 aBuild, PRInt32* aReturn)=0;
NS_IMETHOD CompareVersion(const nsString& aRegName, const nsString& aVersion, PRInt32* aReturn)=0;
NS_IMETHOD CompareVersion(const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32* aReturn)=0;
};
#define NS_DECL_IDOMINSTALLTRIGGERGLOBAL \
NS_IMETHOD UpdateEnabled(PRBool* aReturn); \
NS_IMETHOD StartSoftwareUpdate(const nsString& aURL, PRInt32 aFlags, PRInt32* aReturn); \
NS_IMETHOD StartSoftwareUpdate(const nsString& aURL, PRInt32* aReturn); \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, PRInt32 aDiffLevel, const nsString& aVersion, PRInt32 aMode, PRInt32* aReturn); \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, PRInt32 aDiffLevel, nsIDOMInstallVersion* aVersion, PRInt32 aMode, PRInt32* aReturn); \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32 aMode, PRInt32* aReturn); \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, const nsString& aVersion, PRInt32 aMode, PRInt32* aReturn); \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, const nsString& aVersion, PRInt32* aReturn); \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32* aReturn); \
NS_IMETHOD CompareVersion(const nsString& aRegName, PRInt32 aMajor, PRInt32 aMinor, PRInt32 aRelease, PRInt32 aBuild, PRInt32* aReturn); \
NS_IMETHOD CompareVersion(const nsString& aRegName, const nsString& aVersion, PRInt32* aReturn); \
NS_IMETHOD CompareVersion(const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32* aReturn); \
#define NS_FORWARD_IDOMINSTALLTRIGGERGLOBAL(_to) \
NS_IMETHOD UpdateEnabled(PRBool* aReturn) { return _to##UpdateEnabled(aReturn); } \
NS_IMETHOD StartSoftwareUpdate(const nsString& aURL, PRInt32 aFlags, PRInt32* aReturn) { return _to##StartSoftwareUpdate(aURL, aFlags, aReturn); } \
NS_IMETHOD StartSoftwareUpdate(const nsString& aURL, PRInt32* aReturn) { return _to##StartSoftwareUpdate(aURL, aReturn); } \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, PRInt32 aDiffLevel, const nsString& aVersion, PRInt32 aMode, PRInt32* aReturn) { return _to##ConditionalSoftwareUpdate(aURL, aRegName, aDiffLevel, aVersion, aMode, aReturn); } \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, PRInt32 aDiffLevel, nsIDOMInstallVersion* aVersion, PRInt32 aMode, PRInt32* aReturn) { return _to##ConditionalSoftwareUpdate(aURL, aRegName, aDiffLevel, aVersion, aMode, aReturn); } \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, nsIDOMInstallVersion* aRegName, const nsString& aVersion, PRInt32 aMode, PRInt32* aReturn) { return _to##ConditionalSoftwareUpdate(aURL, aDiffLevel, aVersion, aMode, aReturn); } \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, const nsString& aVersion, PRInt32 aMode, PRInt32* aReturn) { return _to##ConditionalSoftwareUpdate(aURL, aDiffLevel, aVersion, aMode, aReturn); } \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, const nsString& aVersion, PRInt32* aReturn) { return _to##ConditionalSoftwareUpdate(aURL, aDiffLevel, aVersion, aReturn); } \
NS_IMETHOD ConditionalSoftwareUpdate(const nsString& aURL, const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32* aReturn) { return _to##ConditionalSoftwareUpdate(aURL, aDiffLevel, aVersion, aReturn); } \
NS_IMETHOD CompareVersion(const nsString& aRegName, PRInt32 aMajor, PRInt32 aMinor, PRInt32 aRelease, PRInt32 aBuild, PRInt32* aReturn) { return _to##CompareVersion(aRegName, aMajor, aMinor, aRelease, aBuild, aReturn); } \
NS_IMETHOD CompareVersion(const nsString& aRegName, const nsString& aVersion, PRInt32* aReturn) { return _to##CompareVersion(aRegName, aVersion, aReturn); } \
NS_IMETHOD CompareVersion(const nsString& aRegName, nsIDOMInstallVersion* aVersion, PRInt32* aReturn) { return _to##CompareVersion(aRegName, aVersion, aReturn); } \
extern nsresult NS_InitInstallTriggerGlobalClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptInstallTriggerGlobal(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMInstallTriggerGlobal_h__

View File

@@ -0,0 +1,107 @@
/* -*- 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.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.
*/
/* AUTO-GENERATED. DO NOT EDIT!!! */
#ifndef nsIDOMInstallVersion_h__
#define nsIDOMInstallVersion_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIScriptContext.h"
class nsIDOMInstallVersion;
#define NS_IDOMINSTALLVERSION_IID \
{ 0x18c2f986, 0xb09f, 0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}}
class nsIDOMInstallVersion : public nsISupports {
public:
static const nsIID& IID() { static nsIID iid = NS_IDOMINSTALLVERSION_IID; return iid; }
enum {
EQUAL = 0,
BLD_DIFF = 1,
BLD_DIFF_MINUS = -1,
REL_DIFF = 2,
REL_DIFF_MINUS = -2,
MINOR_DIFF = 3,
MINOR_DIFF_MINUS = -3,
MAJOR_DIFF = 4,
MAJOR_DIFF_MINUS = -4
};
NS_IMETHOD GetMajor(PRInt32* aMajor)=0;
NS_IMETHOD SetMajor(PRInt32 aMajor)=0;
NS_IMETHOD GetMinor(PRInt32* aMinor)=0;
NS_IMETHOD SetMinor(PRInt32 aMinor)=0;
NS_IMETHOD GetRelease(PRInt32* aRelease)=0;
NS_IMETHOD SetRelease(PRInt32 aRelease)=0;
NS_IMETHOD GetBuild(PRInt32* aBuild)=0;
NS_IMETHOD SetBuild(PRInt32 aBuild)=0;
NS_IMETHOD Init(const nsString& aVersionString)=0;
NS_IMETHOD ToString(nsString& aReturn)=0;
NS_IMETHOD CompareTo(nsIDOMInstallVersion* aVersionObject, PRInt32* aReturn)=0;
NS_IMETHOD CompareTo(const nsString& aString, PRInt32* aReturn)=0;
NS_IMETHOD CompareTo(PRInt32 aMajor, PRInt32 aMinor, PRInt32 aRelease, PRInt32 aBuild, PRInt32* aReturn)=0;
};
#define NS_DECL_IDOMINSTALLVERSION \
NS_IMETHOD GetMajor(PRInt32* aMajor); \
NS_IMETHOD SetMajor(PRInt32 aMajor); \
NS_IMETHOD GetMinor(PRInt32* aMinor); \
NS_IMETHOD SetMinor(PRInt32 aMinor); \
NS_IMETHOD GetRelease(PRInt32* aRelease); \
NS_IMETHOD SetRelease(PRInt32 aRelease); \
NS_IMETHOD GetBuild(PRInt32* aBuild); \
NS_IMETHOD SetBuild(PRInt32 aBuild); \
NS_IMETHOD Init(const nsString& aVersionString); \
NS_IMETHOD ToString(nsString& aReturn); \
NS_IMETHOD CompareTo(nsIDOMInstallVersion* aVersionObject, PRInt32* aReturn); \
NS_IMETHOD CompareTo(const nsString& aString, PRInt32* aReturn); \
NS_IMETHOD CompareTo(PRInt32 aMajor, PRInt32 aMinor, PRInt32 aRelease, PRInt32 aBuild, PRInt32* aReturn); \
#define NS_FORWARD_IDOMINSTALLVERSION(_to) \
NS_IMETHOD GetMajor(PRInt32* aMajor) { return _to##GetMajor(aMajor); } \
NS_IMETHOD SetMajor(PRInt32 aMajor) { return _to##SetMajor(aMajor); } \
NS_IMETHOD GetMinor(PRInt32* aMinor) { return _to##GetMinor(aMinor); } \
NS_IMETHOD SetMinor(PRInt32 aMinor) { return _to##SetMinor(aMinor); } \
NS_IMETHOD GetRelease(PRInt32* aRelease) { return _to##GetRelease(aRelease); } \
NS_IMETHOD SetRelease(PRInt32 aRelease) { return _to##SetRelease(aRelease); } \
NS_IMETHOD GetBuild(PRInt32* aBuild) { return _to##GetBuild(aBuild); } \
NS_IMETHOD SetBuild(PRInt32 aBuild) { return _to##SetBuild(aBuild); } \
NS_IMETHOD Init(const nsString& aVersionString) { return _to##Init(aVersionString); } \
NS_IMETHOD ToString(nsString& aReturn) { return _to##ToString(aReturn); } \
NS_IMETHOD CompareTo(nsIDOMInstallVersion* aVersionObject, PRInt32* aReturn) { return _to##CompareTo(aVersionObject, aReturn); } \
NS_IMETHOD CompareTo(const nsString& aString, PRInt32* aReturn) { return _to##CompareTo(aString, aReturn); } \
NS_IMETHOD CompareTo(PRInt32 aMajor, PRInt32 aMinor, PRInt32 aRelease, PRInt32 aBuild, PRInt32* aReturn) { return _to##CompareTo(aMajor, aMinor, aRelease, aBuild, aReturn); } \
extern nsresult NS_InitInstallVersionClass(nsIScriptContext *aContext, void **aPrototype);
extern "C" NS_DOM nsresult NS_NewScriptInstallVersion(nsIScriptContext *aContext, nsISupports *aSupports, nsISupports *aParent, void **aReturn);
#endif // nsIDOMInstallVersion_h__

View 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 "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 Communicator client code,
* released March 31, 1998.
*
* 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.
*
* Contributors:
* Daniel Veditz <dveditz@netscape.com>
* Douglas Turner <dougt@netscape.com>
*/
#ifndef nsISoftwareUpdate_h__
#define nsISoftwareUpdate_h__
#include "nsISupports.h"
#include "nsIFactory.h"
#include "nsString.h"
#include "nsIXPInstallProgress.h"
#define NS_IXPINSTALLCOMPONENT_PROGID NS_IAPPSHELLCOMPONENT_PROGID "/xpinstall"
#define NS_IXPINSTALLCOMPONENT_CLASSNAME "Mozilla XPInstall Component"
#define NS_ISOFTWAREUPDATE_IID \
{ 0x18c2f992, \
0xb09f, \
0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53}\
}
class nsISoftwareUpdate : public nsISupports
{
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISOFTWAREUPDATE_IID)
NS_IMETHOD InstallJar(const nsString& fromURL,
const nsString& localFile,
long flags) = 0;
NS_IMETHOD RegisterNotifier(nsIXPInstallProgress *notifier) = 0;
NS_IMETHOD InstallPending(void) = 0;
/* FIX: these should be in a private interface */
NS_IMETHOD InstallJarCallBack() = 0;
NS_IMETHOD GetTopLevelNotifier(nsIXPInstallProgress **notifier) = 0;
};
class nsSoftwareUpdateFactory : public nsIFactory
{
public:
nsSoftwareUpdateFactory();
virtual ~nsSoftwareUpdateFactory();
NS_DECL_ISUPPORTS
NS_IMETHOD CreateInstance(nsISupports *aOuter,
REFNSIID aIID,
void **aResult);
NS_IMETHOD LockFactory(PRBool aLock);
};
#endif // nsISoftwareUpdate_h__

View File

@@ -0,0 +1,30 @@
/* -*- Mode: IDL; 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.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.
*/
#include "nsISupports.idl"
[uuid(eea90d40-b059-11d2-915e-c12b696c9333)]
interface nsIXPInstallProgress : nsISupports
{
void BeforeJavascriptEvaluation();
void AfterJavascriptEvaluation();
void InstallStarted([const] in string UIPackageName);
void ItemScheduled([const] in string message );
void InstallFinalization([const] in string message, in long itemNum, in long totNum );
void InstallAborted();
};

View 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 "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 Communicator client code,
* released March 31, 1998.
*
* 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.
*
* Contributors:
* Douglas Turner <dougt@netscape.com>
*/
#ifndef nsIXPInstallProgressNotifier_h__
#define nsIXPInstallProgressNotifier_h__
class nsIXPInstallProgressNotifier
{
public:
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Function name : BeforeJavascriptEvaluation
// Description : This will be called when prior to the install script being evaluate
// Return type : void
// Argument : void
///////////////////////////////////////////////////////////////////////////////////////////////////////
virtual void BeforeJavascriptEvaluation(void) = 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Function name : AfterJavascriptEvaluation
// Description : This will be called after the install script has being evaluated
// Return type : void
// Argument : void
///////////////////////////////////////////////////////////////////////////////////////////////////////
virtual void AfterJavascriptEvaluation(void) = 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Function name : InstallStarted
// Description : This will be called when StartInstall has been called
// Return type : void
// Argument : char* UIPackageName - User Package Name
///////////////////////////////////////////////////////////////////////////////////////////////////////
virtual void InstallStarted(const char* UIPackageName) = 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Function name : ItemScheduled
// Description : This will be called when items are being scheduled
// Return type : Any value returned other than zero, will be treated as an error and the script will be aborted
// Argument : The message that should be displayed to the user
///////////////////////////////////////////////////////////////////////////////////////////////////////
virtual long ItemScheduled( const char* message ) = 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Function name : InstallFinalization
// Description : This will be called when the installation is in its Finalize stage
// Return type : void
// Argument : char* message - The message that should be displayed to the user
// Argument : long itemNum - This is the current item number
// Argument : long totNum - This is the total number of items
///////////////////////////////////////////////////////////////////////////////////////////////////////
virtual void InstallFinalization( const char* message, long itemNum, long totNum ) = 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Function name : InstallAborted
// Description : This will be called when the install is aborted
// Return type : void
// Argument : void
///////////////////////////////////////////////////////////////////////////////////////////////////////
virtual void InstallAborted(void) = 0;
};
#endif

View 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 "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 Communicator client code,
* released March 31, 1998.
*
* 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.
*
* Contributors:
* Daniel Veditz <dveditz@netscape.com>
* Douglas Turner <dougt@netscape.com>
*/
#ifndef nsSoftwareUpdateIIDs_h___
#define nsSoftwareUpdateIIDs_h___
#define NS_SoftwareUpdate_CID \
{ /* 18c2f989-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f989, \
0xb09f, \
0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#define NS_SoftwareUpdateInstall_CID \
{ /* 18c2f98b-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f98b, \
0xb09f, \
0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#define NS_SoftwareUpdateInstallTrigger_CID \
{ /* 18c2f98d-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f98d, \
0xb09f, \
0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#define NS_SoftwareUpdateInstallVersion_CID \
{ /* 18c2f98f-b09f-11d2-bcde-00805f0e1353 */ \
0x18c2f98f, \
0xb09f, \
0x11d2, \
{0xbc, 0xde, 0x00, 0x80, 0x5f, 0x0e, 0x13, 0x53} \
}
#endif /* nsSoftwareUpdateIIDs_h___ */

View File

@@ -0,0 +1,3 @@
progress.xul
progress.css
progress.html

View File

@@ -0,0 +1,34 @@
#!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=../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/config.mk
include $(topsrcdir)/config/rules.mk
EXPORT_RESOURCE_XPINSTALL = \
$(srcdir)/progress.xul \
$(srcdir)/progress.html \
$(srcdir)/progress.css \
$(NULL)
install::
$(INSTALL) $(EXPORT_RESOURCE_XPINSTALL) $(DIST)/bin/res/xpinstall

View File

@@ -0,0 +1,31 @@
#!nmake
#
# 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=..\..
IGNORE_MANIFEST=1
include <$(DEPTH)\config\rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) progress.xul $(DIST)\bin\res\xpinstall
$(MAKE_INSTALL) progress.css $(DIST)\bin\res\xpinstall
$(MAKE_INSTALL) progress.html $(DIST)\bin\res\xpinstall
clobber::
rm -f $(DIST)\res\xpinstall\progress.xul
rm -f $(DIST)\res\xpinstall\progress.css
rm -f $(DIST)\res\xpinstall\progress.html

View File

@@ -0,0 +1,3 @@
TD {
font: 10pt sans-serif;
}

View File

@@ -0,0 +1,16 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body bgcolor="#C0C0C0" style="overflow:visible; margin: 0px; color-background: rgb(192,192,192);">
<center>
<table BORDER COLS=5 WIDTH="99%" style="color-background:rgb(192,192,192);">
<tr>
<td WIDTH="3%" NOWRAP style="border: 1px inset rgb(192,192,192);">&nbsp</td>
<td WIDTH="3%" NOWRAP style="border: 1px inset rgb(192,192,192);">&nbsp</td>
<td WIDTH="3%" NOWRAP style="border: 1px inset rgb(192,192,192);">&nbsp</td>
<td WIDTH="10%" NOWRAP style="border: 1px inset rgb(192,192,192);">&nbsp</td>
<td WIDTH="81%" NOWRAP style="border: 1px inset rgb(192,192,192);">&nbsp</td>
</tr>
</table>
</center>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More