Compare commits
1 Commits
ZAP_200506
...
src
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
258dc9fead |
@@ -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
|
||||
@@ -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
|
||||
1316
mozilla/client.mk
1316
mozilla/client.mk
File diff suppressed because it is too large
Load Diff
@@ -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@
|
||||
@@ -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
22247
mozilla/configure
vendored
File diff suppressed because it is too large
Load Diff
8339
mozilla/configure.in
8339
mozilla/configure.in
File diff suppressed because it is too large
Load Diff
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
jssh.jar:
|
||||
% content jssh %content/jssh/
|
||||
content/jssh/jssh-debug.js (resources/content/jssh-debug.js)
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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__
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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__
|
||||
@@ -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);
|
||||
}
|
||||
);
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
@@ -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 */
|
||||
};
|
||||
@@ -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
@@ -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;
|
||||
};
|
||||
@@ -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
@@ -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
@@ -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
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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__
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -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);
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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___ */
|
||||
@@ -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);
|
||||
};
|
||||
@@ -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);
|
||||
};
|
||||
@@ -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..
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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_
|
||||
@@ -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
|
||||
%}
|
||||
@@ -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!");
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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, ¶mCount);
|
||||
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;
|
||||
}
|
||||
@@ -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__
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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___ */
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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__
|
||||
39
mozilla/xpinstall/Makefile.in
Normal file
39
mozilla/xpinstall/Makefile.in
Normal 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
|
||||
|
||||
|
||||
BIN
mozilla/xpinstall/macbuild/xpinstall.mcp
Normal file
BIN
mozilla/xpinstall/macbuild/xpinstall.mcp
Normal file
Binary file not shown.
BIN
mozilla/xpinstall/macbuild/xpinstallIDL.mcp
Normal file
BIN
mozilla/xpinstall/macbuild/xpinstallIDL.mcp
Normal file
Binary file not shown.
30
mozilla/xpinstall/makefile.win
Normal file
30
mozilla/xpinstall/makefile.win
Normal 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>
|
||||
33
mozilla/xpinstall/notifier/SoftwareUpdate-Source-1.rdf
Normal file
33
mozilla/xpinstall/notifier/SoftwareUpdate-Source-1.rdf
Normal 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>
|
||||
57
mozilla/xpinstall/notifier/SoftwareUpdate.css
Normal file
57
mozilla/xpinstall/notifier/SoftwareUpdate.css
Normal 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");
|
||||
}
|
||||
123
mozilla/xpinstall/notifier/SoftwareUpdate.js
Normal file
123
mozilla/xpinstall/notifier/SoftwareUpdate.js
Normal 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);
|
||||
|
||||
30
mozilla/xpinstall/notifier/SoftwareUpdate.xul
Normal file
30
mozilla/xpinstall/notifier/SoftwareUpdate.xul
Normal 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>
|
||||
BIN
mozilla/xpinstall/notifier/SoftwareUpdatePackage.gif
Normal file
BIN
mozilla/xpinstall/notifier/SoftwareUpdatePackage.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 201 B |
7
mozilla/xpinstall/notifier/SoftwareUpdates.rdf
Normal file
7
mozilla/xpinstall/notifier/SoftwareUpdates.rdf
Normal 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>
|
||||
6
mozilla/xpinstall/public/MANIFEST
Normal file
6
mozilla/xpinstall/public/MANIFEST
Normal file
@@ -0,0 +1,6 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist directory
|
||||
#
|
||||
|
||||
nsISoftwareUpdate.h
|
||||
nsSoftwareUpdateIIDs.h
|
||||
47
mozilla/xpinstall/public/Makefile.in
Normal file
47
mozilla/xpinstall/public/Makefile.in
Normal 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
|
||||
113
mozilla/xpinstall/public/idl/Install.idl
Normal file
113
mozilla/xpinstall/public/idl/Install.idl
Normal 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);
|
||||
|
||||
};
|
||||
24
mozilla/xpinstall/public/idl/InstallTrigger.idl
Normal file
24
mozilla/xpinstall/public/idl/InstallTrigger.idl
Normal 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 );
|
||||
|
||||
};
|
||||
34
mozilla/xpinstall/public/idl/InstallVersion.idl
Normal file
34
mozilla/xpinstall/public/idl/InstallVersion.idl
Normal 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);
|
||||
|
||||
};
|
||||
36
mozilla/xpinstall/public/makefile.win
Normal file
36
mozilla/xpinstall/public/makefile.win
Normal 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>
|
||||
1
mozilla/xpinstall/public/nsIDOMInstall.h
Normal file
1
mozilla/xpinstall/public/nsIDOMInstall.h
Normal file
@@ -0,0 +1 @@
|
||||
#error
|
||||
96
mozilla/xpinstall/public/nsIDOMInstallTriggerGlobal.h
Normal file
96
mozilla/xpinstall/public/nsIDOMInstallTriggerGlobal.h
Normal 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__
|
||||
107
mozilla/xpinstall/public/nsIDOMInstallVersion.h
Normal file
107
mozilla/xpinstall/public/nsIDOMInstallVersion.h
Normal 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__
|
||||
85
mozilla/xpinstall/public/nsISoftwareUpdate.h
Normal file
85
mozilla/xpinstall/public/nsISoftwareUpdate.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "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__
|
||||
|
||||
30
mozilla/xpinstall/public/nsIXPInstallProgress.idl
Normal file
30
mozilla/xpinstall/public/nsIXPInstallProgress.idl
Normal 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();
|
||||
};
|
||||
93
mozilla/xpinstall/public/nsIXPInstallProgressNotifier.h
Normal file
93
mozilla/xpinstall/public/nsIXPInstallProgressNotifier.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "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
|
||||
64
mozilla/xpinstall/public/nsSoftwareUpdateIIDs.h
Normal file
64
mozilla/xpinstall/public/nsSoftwareUpdateIIDs.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "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___ */
|
||||
|
||||
3
mozilla/xpinstall/res/MANIFEST
Normal file
3
mozilla/xpinstall/res/MANIFEST
Normal file
@@ -0,0 +1,3 @@
|
||||
progress.xul
|
||||
progress.css
|
||||
progress.html
|
||||
34
mozilla/xpinstall/res/Makefile.in
Normal file
34
mozilla/xpinstall/res/Makefile.in
Normal 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
|
||||
31
mozilla/xpinstall/res/makefile.win
Normal file
31
mozilla/xpinstall/res/makefile.win
Normal 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
|
||||
3
mozilla/xpinstall/res/progress.css
Normal file
3
mozilla/xpinstall/res/progress.css
Normal file
@@ -0,0 +1,3 @@
|
||||
TD {
|
||||
font: 10pt sans-serif;
|
||||
}
|
||||
16
mozilla/xpinstall/res/progress.html
Normal file
16
mozilla/xpinstall/res/progress.html
Normal 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);"> </td>
|
||||
<td WIDTH="3%" NOWRAP style="border: 1px inset rgb(192,192,192);"> </td>
|
||||
<td WIDTH="3%" NOWRAP style="border: 1px inset rgb(192,192,192);"> </td>
|
||||
<td WIDTH="10%" NOWRAP style="border: 1px inset rgb(192,192,192);"> </td>
|
||||
<td WIDTH="81%" NOWRAP style="border: 1px inset rgb(192,192,192);"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user