1728 changed files with 359851 additions and 0 deletions
@ -0,0 +1,15 @@
|
||||
"use strict"; |
||||
|
||||
module.exports = { |
||||
"extends": [ |
||||
"../toolkit/.eslintrc.js" |
||||
], |
||||
|
||||
"rules": { |
||||
"no-unused-vars": ["error", { |
||||
"vars": "local", |
||||
"varsIgnorePattern": "^Cc|Ci|Cu|Cr|EXPORTED_SYMBOLS", |
||||
"args": "none", |
||||
}] |
||||
} |
||||
}; |
@ -0,0 +1,13 @@
|
||||
Please see the file ../platform/toolkit/content/license.html for the |
||||
copyright licensing conditions attached to the platform codebase, |
||||
including copies of the licenses concerned. |
||||
|
||||
You are not granted rights or licenses to the trademarks of Moonchild |
||||
Productions or any other party, including without limitation the |
||||
Basilisk name or logo. |
||||
|
||||
The Serpent logo in branding/unofficial is derived from "Sea Serpent" |
||||
by Lorc, licensed under the Creative Commons license CC-BY 3.0 |
||||
|
||||
For individual licensing restrictions on branding, see the LICENSE |
||||
files in the appropriate branding directories. |
@ -0,0 +1,13 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
include $(topsrcdir)/config/rules.mk |
||||
|
||||
ifdef MAKENSISU |
||||
|
||||
# For Windows build the uninstaller during the application build since the
|
||||
# uninstaller is included with the application for mar file generation.
|
||||
libs:: |
||||
$(MAKE) -C installer/windows uninstaller
|
||||
endif |
@ -0,0 +1,14 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public |
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||
|
||||
include('/platform/toolkit/toolkit.mozbuild') |
||||
|
||||
if CONFIG['MOZ_EXTENSIONS']: |
||||
DIRS += ['/extensions'] |
||||
|
||||
DIRS += ['/%s' % CONFIG['MOZ_BRANDING_DIRECTORY']] |
||||
|
||||
# Never add dirs after the browser root because they apparently won't |
||||
# get packaged properly on Mac. |
||||
DIRS += ['/basilisk'] |
@ -0,0 +1,99 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dist_dest = $(DIST)/$(MOZ_MACBUNDLE_NAME)
|
||||
|
||||
# hardcode en-US for the moment
|
||||
AB_CD = en-US
|
||||
|
||||
# Build a binary bootstrapping with XRE_main
|
||||
|
||||
ifndef MOZ_WINCONSOLE |
||||
ifneq (,$(MOZ_DEBUG)$(MOZ_ASAN)) |
||||
MOZ_WINCONSOLE = 1
|
||||
else |
||||
MOZ_WINCONSOLE = 0
|
||||
endif |
||||
endif |
||||
|
||||
# This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that
|
||||
# shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall.
|
||||
NSDISTMODE = copy
|
||||
|
||||
include $(topsrcdir)/config/config.mk |
||||
|
||||
ifeq ($(OS_ARCH),WINNT) |
||||
# Rebuild basilisk.exe if the manifest changes - it's included by splash.rc.
|
||||
# (this dependency should really be just for basilisk.exe, not other targets)
|
||||
# Note the manifest file exists in the tree, so we use the explicit filename
|
||||
# here.
|
||||
EXTRA_DEPS += basilisk.exe.manifest
|
||||
endif |
||||
|
||||
PROGRAMS_DEST = $(DIST)/bin
|
||||
|
||||
include $(topsrcdir)/config/rules.mk |
||||
|
||||
ifneq (,$(filter-out WINNT,$(OS_ARCH))) |
||||
|
||||
ifdef COMPILE_ENVIRONMENT |
||||
libs:: |
||||
cp -p $(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)
|
||||
endif |
||||
|
||||
GARBAGE += $(addprefix $(FINAL_TARGET)/defaults/pref/, basilisk.js)
|
||||
|
||||
endif |
||||
|
||||
# channel-prefs.js is handled separate from other prefs due to bug 756325
|
||||
libs:: $(srcdir)/profile/channel-prefs.js |
||||
$(NSINSTALL) -D $(DIST)/bin/defaults/pref
|
||||
$(call py_action,preprocessor,-Fsubstitution $(PREF_PPFLAGS) $(ACDEFINES) $^ -o $(DIST)/bin/defaults/pref/channel-prefs.js)
|
||||
|
||||
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) |
||||
|
||||
MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME)
|
||||
|
||||
ifdef MOZ_DEBUG |
||||
MAC_APP_NAME := $(MAC_APP_NAME)Debug
|
||||
endif |
||||
|
||||
AB_CD = $(MOZ_UI_LOCALE)
|
||||
|
||||
ifeq (zh-TW,$(AB_CD)) |
||||
LPROJ_ROOT := $(subst -,_,$(AB_CD))
|
||||
else |
||||
LPROJ_ROOT := $(firstword $(subst -, ,$(AB_CD)))
|
||||
endif |
||||
LPROJ := Contents/Resources/$(LPROJ_ROOT).lproj
|
||||
|
||||
clean clobber repackage:: |
||||
$(RM) -r $(dist_dest)
|
||||
|
||||
MAC_BUNDLE_VERSION = $(shell $(PYTHON) $(srcdir)/macversion.py --version=$(MOZ_APP_VERSION) --buildid=$(DEPTH)/buildid.h)
|
||||
|
||||
.PHONY: repackage |
||||
tools repackage:: $(DIST)/bin/$(MOZ_APP_NAME) |
||||
$(MKDIR) -p '$(dist_dest)/Contents/MacOS'
|
||||
$(MKDIR) -p '$(dist_dest)/$(LPROJ)'
|
||||
rsync -a --exclude '*.in' $(srcdir)/macbuild/Contents '$(dist_dest)' --exclude English.lproj
|
||||
rsync -a --exclude '*.in' $(srcdir)/macbuild/Contents/Resources/English.lproj/ '$(dist_dest)/$(LPROJ)'
|
||||
sed -e 's/%APP_VERSION%/$(MOZ_APP_VERSION)/' -e 's/%MAC_APP_NAME%/$(MAC_APP_NAME)/' -e 's/%MOZ_MACBUNDLE_ID%/$(MOZ_MACBUNDLE_ID)/' -e 's/%MAC_BUNDLE_VERSION%/$(MAC_BUNDLE_VERSION)/' $(srcdir)/macbuild/Contents/Info.plist.in > '$(dist_dest)/Contents/Info.plist'
|
||||
sed -e 's/%MAC_APP_NAME%/$(MAC_APP_NAME)/' $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > '$(dist_dest)/$(LPROJ)/InfoPlist.strings'
|
||||
rsync -a --exclude-from='$(srcdir)/macbuild/Contents/MacOS-files.in' $(DIST)/bin/ '$(dist_dest)/Contents/Resources'
|
||||
rsync -a --include-from='$(srcdir)/macbuild/Contents/MacOS-files.in' --exclude '*' $(DIST)/bin/ '$(dist_dest)/Contents/MacOS'
|
||||
# MacOS-files-copy.in is a list of files that should be copies rather
|
||||
# than symlinks and placed in .app/Contents/MacOS.
|
||||
rsync -aL --include-from='$(srcdir)/macbuild/Contents/MacOS-files-copy.in' --exclude '*' $(DIST)/bin/ '$(dist_dest)/Contents/MacOS'
|
||||
$(RM) '$(dist_dest)/Contents/MacOS/$(MOZ_APP_NAME)'
|
||||
rsync -aL $(DIST)/bin/$(MOZ_APP_NAME) '$(dist_dest)/Contents/MacOS'
|
||||
cp -RL $(DIST)/branding/firefox.icns '$(dist_dest)/Contents/Resources/firefox.icns'
|
||||
cp -RL $(DIST)/branding/document.icns '$(dist_dest)/Contents/Resources/document.icns'
|
||||
ifdef MOZ_UPDATER |
||||
$(MKDIR) -p '$(dist_dest)/Contents/Library/LaunchServices'
|
||||
mv -f '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater' '$(dist_dest)/Contents/Library/LaunchServices'
|
||||
ln -s ../../../../Library/LaunchServices/org.mozilla.updater '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater'
|
||||
endif |
||||
printf APPLMOZB > '$(dist_dest)/Contents/PkgInfo'
|
||||
endif |
@ -0,0 +1,50 @@
|
||||
#if MOZ_APP_STATIC_INI |
||||
#ifdef MOZ_BUILD_APP_IS_BROWSER |
||||
; This file is not used. If you modify it and want the application to use |
||||
; your modifications, move it under the browser/ subdirectory and start with |
||||
; the "-app /path/to/browser/application.ini" argument. |
||||
#else |
||||
; This file is not used. If you modify it and want the application to use |
||||
; your modifications, start with the "-app /path/to/application.ini" |
||||
; argument. |
||||
#endif |
||||
#endif |
||||
#if 0 |
||||
; This Source Code Form is subject to the terms of the Mozilla Public |
||||
; License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
; file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||
#endif |
||||
#filter substitution |
||||
#include @TOPOBJDIR@/buildid.h |
||||
#include @TOPOBJDIR@/source-repo.h |
||||
|
||||
[App] |
||||
# Vendor=@MOZ_APP_VENDOR@ |
||||
Vendor=Moonchild Productions |
||||
# Name=@MOZ_APP_BASENAME@ |
||||
Name=Basilisk |
||||
RemotingName=@MOZ_APP_REMOTINGNAME@ |
||||
#ifdef MOZ_APP_DISPLAYNAME |
||||
CodeName=@MOZ_APP_DISPLAYNAME@ |
||||
#endif |
||||
Version=@MOZ_APP_VERSION@ |
||||
#ifdef MOZ_APP_PROFILE |
||||
Profile=@MOZ_APP_PROFILE@ |
||||
#endif |
||||
BuildID=@MOZ_BUILDID@ |
||||
#ifdef MOZ_SOURCE_REPO |
||||
SourceRepository=@MOZ_SOURCE_REPO@ |
||||
#endif |
||||
#ifdef MOZ_SOURCE_STAMP |
||||
SourceStamp=@MOZ_SOURCE_STAMP@ |
||||
#endif |
||||
ID=@MOZ_APP_ID@ |
||||
|
||||
[Gecko] |
||||
MinVersion=@GRE_MILESTONE@ |
||||
MaxVersion=@GRE_MILESTONE@ |
||||
|
||||
[XRE] |
||||
#ifdef MOZ_PROFILE_MIGRATOR |
||||
EnableProfileMigrator=1 |
||||
#endif |
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> |
||||
<assemblyIdentity |
||||
version="1.0.0.0" |
||||
processorArchitecture="*" |
||||
name="Basilisk" |
||||
type="win32" |
||||
/> |
||||
<description>Firefox</description> |
||||
<dependency> |
||||
<dependentAssembly> |
||||
<assemblyIdentity |
||||
type="win32" |
||||
name="Microsoft.Windows.Common-Controls" |
||||
version="6.0.0.0" |
||||
processorArchitecture="*" |
||||
publicKeyToken="6595b64144ccf1df" |
||||
language="*" |
||||
/> |
||||
</dependentAssembly> |
||||
</dependency> |
||||
<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3"> |
||||
<ms_asmv3:security> |
||||
<ms_asmv3:requestedPrivileges> |
||||
<ms_asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false" /> |
||||
</ms_asmv3:requestedPrivileges> |
||||
</ms_asmv3:security> |
||||
</ms_asmv3:trustInfo> |
||||
<ms_asmv3:application xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3"> |
||||
<ms_asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> |
||||
<dpiAware>True/PM</dpiAware> |
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2,PerMonitor</dpiAwareness> |
||||
</ms_asmv3:windowsSettings> |
||||
</ms_asmv3:application> |
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> |
||||
<application> |
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> |
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> |
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> |
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> |
||||
</application> |
||||
</compatibility> |
||||
</assembly> |
@ -0,0 +1,229 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
<plist version="1.0"> |
||||
<dict> |
||||
<key>CFBundleDevelopmentRegion</key> |
||||
<string>English</string> |
||||
<key>CFBundleDocumentTypes</key> |
||||
<array> |
||||
<dict> |
||||
<key>CFBundleTypeExtensions</key> |
||||
<array> |
||||
<string>html</string> |
||||
<string>htm</string> |
||||
<string>shtml</string> |
||||
<string>xht</string> |
||||
<string>xhtml</string> |
||||
</array> |
||||
<key>CFBundleTypeIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleTypeName</key> |
||||
<string>HTML Document</string> |
||||
<key>CFBundleTypeOSTypes</key> |
||||
<array> |
||||
<string>HTML</string> |
||||
</array> |
||||
<key>CFBundleTypeRole</key> |
||||
<string>Viewer</string> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleTypeExtensions</key> |
||||
<array> |
||||
<string>svg</string> |
||||
</array> |
||||
<key>CFBundleTypeIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleTypeMIMETypes</key> |
||||
<array> |
||||
<string>image/svg+xml</string> |
||||
</array> |
||||
<key>CFBundleTypeName</key> |
||||
<string>SVG document</string> |
||||
<key>CFBundleTypeOSTypes</key> |
||||
<array> |
||||
<string>TEXT</string> |
||||
</array> |
||||
<key>CFBundleTypeRole</key> |
||||
<string>Viewer</string> |
||||
<key>NSDocumentClass</key> |
||||
<string>BrowserDocument</string> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleTypeExtensions</key> |
||||
<array> |
||||
<string>text</string> |
||||
<string>txt</string> |
||||
<string>js</string> |
||||
<string>log</string> |
||||
<string>css</string> |
||||
<string>xul</string> |
||||
<string>rdf</string> |
||||
</array> |
||||
<key>CFBundleTypeIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleTypeName</key> |
||||
<string>Text Document</string> |
||||
<key>CFBundleTypeOSTypes</key> |
||||
<array> |
||||
<string>TEXT</string> |
||||
<string>utxt</string> |
||||
</array> |
||||
<key>CFBundleTypeRole</key> |
||||
<string>Viewer</string> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleTypeExtensions</key> |
||||
<array> |
||||
<string>jpeg</string> |
||||
<string>jpg</string> |
||||
<string>png</string> |
||||
<string>gif</string> |
||||
</array> |
||||
<key>CFBundleTypeIconFile</key> |
||||
<string>fileBookmark.icns</string> |
||||
<key>CFBundleTypeName</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleTypeOSTypes</key> |
||||
<array> |
||||
<string>GIFf</string> |
||||
<string>JPEG</string> |
||||
<string>PNGf</string> |
||||
</array> |
||||
<key>CFBundleTypeRole</key> |
||||
<string>Viewer</string> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleTypeExtensions</key> |
||||
<array> |
||||
<string>oga</string> |
||||
<string>ogg</string> |
||||
</array> |
||||
<key>CFBundleTypeIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleTypeMIMETypes</key> |
||||
<array> |
||||
<string>audio/ogg</string> |
||||
</array> |
||||
<key>CFBundleTypeName</key> |
||||
<string>HTML5 Audio (Ogg)</string> |
||||
<key>CFBundleTypeRole</key> |
||||
<string>Viewer</string> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleTypeExtensions</key> |
||||
<array> |
||||
<string>ogv</string> |
||||
</array> |
||||
<key>CFBundleTypeIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleTypeMIMETypes</key> |
||||
<array> |
||||
<string>video/ogg</string> |
||||
</array> |
||||
<key>CFBundleTypeName</key> |
||||
<string>HTML5 Video (Ogg)</string> |
||||
<key>CFBundleTypeRole</key> |
||||
<string>Viewer</string> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleTypeExtensions</key> |
||||
<array> |
||||
<string>webm</string> |
||||
</array> |
||||
<key>CFBundleTypeIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleTypeMIMETypes</key> |
||||
<array> |
||||
<string>video/webm</string> |
||||
</array> |
||||
<key>CFBundleTypeName</key> |
||||
<string>HTML5 Video (WebM)</string> |
||||
<key>CFBundleTypeRole</key> |
||||
<string>Viewer</string> |
||||
</dict> |
||||
</array> |
||||
<key>CFBundleExecutable</key> |
||||
<string>basilisk</string> |
||||
<key>CFBundleGetInfoString</key> |
||||
<string>%MAC_APP_NAME% %APP_VERSION%</string> |
||||
<key>CFBundleIconFile</key> |
||||
<string>firefox.icns</string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>%MOZ_MACBUNDLE_ID%</string> |
||||
<key>CFBundleInfoDictionaryVersion</key> |
||||
<string>6.0</string> |
||||
<key>CFBundleName</key> |
||||
<string>%MAC_APP_NAME%</string> |
||||
<key>CFBundlePackageType</key> |
||||
<string>APPL</string> |
||||
<key>CFBundleShortVersionString</key> |
||||
<string>%APP_VERSION%</string> |
||||
<key>CFBundleSignature</key> |
||||
<string>MOZB</string> |
||||
<key>CFBundleURLTypes</key> |
||||
<array> |
||||
<dict> |
||||
<key>CFBundleURLIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleURLName</key> |
||||
<string>http URL</string> |
||||
<key>CFBundleURLSchemes</key> |
||||
<array> |
||||
<string>http</string> |
||||
</array> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleURLIconFile</key> |
||||
<string>document.icns</string> |
||||
<key>CFBundleURLName</key> |
||||
<string>https URL</string> |
||||
<key>CFBundleURLSchemes</key> |
||||
<array> |
||||
<string>https</string> |
||||
</array> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleURLName</key> |
||||
<string>ftp URL</string> |
||||
<key>CFBundleURLSchemes</key> |
||||
<array> |
||||
<string>ftp</string> |
||||
</array> |
||||
</dict> |
||||
<dict> |
||||
<key>CFBundleURLName</key> |
||||
<string>file URL</string> |
||||
<key>CFBundleURLSchemes</key> |
||||
<array> |
||||
<string>file</string> |
||||
</array> |
||||
</dict> |
||||
</array> |
||||
<key>CFBundleVersion</key> |
||||
<string>%MAC_BUNDLE_VERSION%</string> |
||||
<key>NSAppleScriptEnabled</key> |
||||
<true/> |
||||
<key>LSApplicationCategoryType</key> |
||||
<string>public.app-category.productivity</string> |
||||
<key>LSEnvironment</key> |
||||
<dict> |
||||
<key>MallocNanoZone</key> |
||||
<string>0</string> |
||||
</dict> |
||||
<key>LSFileQuarantineEnabled</key> |
||||
<true/> |
||||
<key>LSMinimumSystemVersion</key> |
||||
<string>10.7.0</string> |
||||
<key>NSSupportsAutomaticGraphicsSwitching</key> |
||||
<true/> |
||||
<key>NSPrincipalClass</key> |
||||
<string>GeckoNSApplication</string> |
||||
<key>SMPrivilegedExecutables</key> |
||||
<dict> |
||||
<key>org.mozilla.updater</key> |
||||
<string>identifier "org.mozilla.updater" and ((anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9]) or (anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] and certificate leaf[field.1.2.840.113635.100.6.1.13] and certificate leaf[subject.OU] = "43AQ936H96"))</string> |
||||
</dict> |
||||
<key>NSDisablePersistence</key> |
||||
<true/> |
||||
</dict> |
||||
</plist> |
@ -0,0 +1,11 @@
|
||||
# Specifies files that should be copied (via deep copy, resolving symlinks) |
||||
# from dist/bin to the .app/Contents/MacOS directory. Linking is preferred to |
||||
# reduce disk I/O during builds, so just include dylibs which need to be in the |
||||
# same directory as returned by dladdr(3). |
||||
# |
||||
# Some of these dylibs load other dylibs which are assumed to be siblings in |
||||
# the same directory obtained from dladdr(3). With macOS 10.15, dladdr returns |
||||
# absolute resolved paths which breaks this assumption if symlinks are used |
||||
# because the symlink targets are in different directories. Hence the need for |
||||
# them to be copied to the same directory. |
||||
/*.dylib |
@ -0,0 +1,8 @@
|
||||
/*.app/*** |
||||
/certutil |
||||
/firefox-bin |
||||
/gtest/*** |
||||
/pk12util |
||||
/ssltunnel |
||||
/xpcshell |
||||
/XUL |
@ -0,0 +1,5 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public |
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
||||
|
||||
CFBundleName = "%MAC_APP_NAME%"; |
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/python |
||||
# This Source Code Form is subject to the terms of the Mozilla Public |
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||
|
||||
|
||||
from optparse import OptionParser |
||||
import sys |
||||
import re |
||||
|
||||
o = OptionParser() |
||||
o.add_option("--buildid", dest="buildid") |
||||
o.add_option("--version", dest="version") |
||||
|
||||
(options, args) = o.parse_args() |
||||
|
||||
if not options.buildid: |
||||
print >>sys.stderr, "--buildid is required" |
||||
sys.exit(1) |
||||
|
||||
if not options.version: |
||||
print >>sys.stderr, "--version is required" |
||||
sys.exit(1) |
||||
|
||||
# We want to build a version number that matches the format allowed for |
||||
# CFBundleVersion (nnnnn[.nn[.nn]]). We'll incorporate both the version |
||||
# number as well as the date, so that it changes at least daily (for nightly |
||||
# builds), but also so that newly-built older versions (e.g. beta build) aren't |
||||
# considered "newer" than previously-built newer versions (e.g. a trunk nightly) |
||||
|
||||
define, MOZ_BUILDID, buildid = open(options.buildid, 'r').read().split() |
||||
|
||||
# extract only the major version (i.e. "14" from "14.0b1") |
||||
majorVersion = re.match(r'^(\d+)[^\d].*', options.version).group(1) |
||||
# last two digits of the year |
||||
twodigityear = buildid[2:4] |
||||
month = buildid[4:6] |
||||
if month[0] == '0': |
||||
month = month[1] |
||||
day = buildid[6:8] |
||||
if day[0] == '0': |
||||
day = day[1] |
||||
|
||||
print '%s.%s.%s' % (majorVersion + twodigityear, month, day) |
@ -0,0 +1,8 @@
|
||||
WIN32_MODULE_COMPANYNAME=Moonchild Productions |
||||
WIN32_MODULE_COPYRIGHT=ยฉBasilisk and Mozilla Developers; available under the MPL 2 license. |
||||
WIN32_MODULE_PRODUCTVERSION=@MOZ_APP_WINVERSION@ |
||||
WIN32_MODULE_PRODUCTVERSION_STRING=@MOZ_APP_VERSION@ |
||||
WIN32_MODULE_TRADEMARKS=Basilisk is a Trademark of Moonchild Productions. |
||||
WIN32_MODULE_DESCRIPTION=@MOZ_APP_DISPLAYNAME@ |
||||
WIN32_MODULE_PRODUCTNAME=@MOZ_APP_DISPLAYNAME@ |
||||
WIN32_MODULE_NAME=@MOZ_APP_DISPLAYNAME@ |
@ -0,0 +1,60 @@
|
||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- |
||||
# This Source Code Form is subject to the terms of the Mozilla Public |
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||
|
||||
DIRS += ['profile/extensions'] |
||||
|
||||
GeckoProgram(CONFIG['MOZ_APP_NAME']) |
||||
|
||||
JS_PREFERENCE_PP_FILES += [ |
||||
'profile/basilisk.js', |
||||
] |
||||
|
||||
SOURCES += [ |
||||
'nsBrowserApp.cpp', |
||||
] |
||||
|
||||
FINAL_TARGET_FILES += ['blocklist.xml'] |
||||
FINAL_TARGET_FILES.defaults.profile += ['profile/prefs.js'] |
||||
FINAL_TARGET_FILES.defaults += ['permissions'] |
||||
|
||||
DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION'] |
||||
|
||||
LOCAL_INCLUDES += [ |
||||
'!/build', |
||||
'/platform/toolkit/xre', |
||||
'/platform/xpcom/base', |
||||
'/platform/xpcom/build', |
||||
] |
||||
|
||||
USE_LIBS += [ |
||||
'mozglue', |
||||
] |
||||
|
||||
if CONFIG['LIBFUZZER']: |
||||
USE_LIBS += [ 'fuzzer' ] |
||||
|
||||
if CONFIG['_MSC_VER']: |
||||
# Always enter a Windows program through wmain, whether or not we're |
||||
# a console application. |
||||
WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup'] |
||||
|
||||
if CONFIG['OS_ARCH'] == 'WINNT': |
||||
RCINCLUDE = 'splash.rc' |
||||
DEFINES['MOZ_PHOENIX'] = True |
||||
|
||||
DISABLE_STL_WRAPPING = True |
||||
|
||||
if CONFIG['MOZ_LINKER']: |
||||
OS_LIBS += CONFIG['MOZ_ZLIB_LIBS'] |
||||
|
||||
if CONFIG['HAVE_CLOCK_MONOTONIC']: |
||||
OS_LIBS += CONFIG['REALTIME_LIBS'] |
||||
|
||||
if CONFIG['MOZ_GPSD']: |
||||
DEFINES['MOZ_GPSD'] = True |
||||
|
||||
for icon in ('firefox', 'document', 'newwindow', 'newtab', 'pbmode'): |
||||
DEFINES[icon.upper() + '_ICO'] = '"%s/dist/branding/%s.ico"' % ( |
||||
TOPOBJDIR, icon) |
@ -0,0 +1,393 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "nsXULAppAPI.h" |
||||
#include "mozilla/AppData.h" |
||||
#include "application.ini.h" |
||||
#include "nsXPCOMGlue.h" |
||||
#if defined(XP_WIN) |
||||
#include <windows.h> |
||||
#include <stdlib.h> |
||||
#elif defined(XP_UNIX) |
||||
#include <sys/resource.h> |
||||
#include <unistd.h> |
||||
#endif |
||||
|
||||
#include <stdio.h> |
||||
#include <stdarg.h> |
||||
#include <time.h> |
||||
|
||||
#include "nsCOMPtr.h" |
||||
#include "nsIFile.h" |
||||
#include "nsStringGlue.h" |
||||
|
||||
#ifdef XP_WIN |
||||
#define XRE_WANT_ENVIRON |
||||
#define strcasecmp _stricmp |
||||
#endif |
||||
#include "BinaryPath.h" |
||||
|
||||
#include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL |
||||
|
||||
#include "mozilla/Sprintf.h" |
||||
#include "mozilla/Telemetry.h" |
||||
#include "mozilla/WindowsDllBlocklist.h" |
||||
|
||||
#if !defined(MOZ_WIDGET_COCOA) && !defined(MOZ_WIDGET_ANDROID) |
||||
#define MOZ_BROWSER_CAN_BE_CONTENTPROC |
||||
#include "../../ipc/contentproc/plugin-container.cpp" |
||||
#endif |
||||
|
||||
using namespace mozilla; |
||||
|
||||
#ifdef XP_MACOSX |
||||
#define kOSXResourcesFolder "Resources" |
||||
#endif |
||||
#define kDesktopFolder "browser" |
||||
|
||||
static void Output(const char *fmt, ... ) |
||||
{ |
||||
va_list ap; |
||||
va_start(ap, fmt); |
||||
|
||||
#ifndef XP_WIN |
||||
vfprintf(stderr, fmt, ap); |
||||
#else |
||||
char msg[2048]; |
||||
vsnprintf_s(msg, _countof(msg), _TRUNCATE, fmt, ap); |
||||
|
||||
wchar_t wide_msg[2048]; |
||||
MultiByteToWideChar(CP_UTF8, |
||||
0, |
||||
msg, |
||||
-1, |
||||
wide_msg, |
||||
_countof(wide_msg)); |
||||
#if MOZ_WINCONSOLE |
||||
fwprintf_s(stderr, wide_msg); |
||||
#else |
||||
// Linking user32 at load-time interferes with the DLL blocklist (bug 932100).
|
||||
// This is a rare codepath, so we can load user32 at run-time instead.
|
||||
HMODULE user32 = LoadLibraryW(L"user32.dll"); |
||||
if (user32) { |
||||
decltype(MessageBoxW)* messageBoxW = |
||||
(decltype(MessageBoxW)*) GetProcAddress(user32, "MessageBoxW"); |
||||
if (messageBoxW) { |
||||
messageBoxW(nullptr, wide_msg, L"Basilisk", MB_OK |
||||
| MB_ICONERROR |
||||
| MB_SETFOREGROUND); |
||||
} |
||||
FreeLibrary(user32); |
||||
} |
||||
#endif |
||||
#endif |
||||
|
||||
va_end(ap); |
||||
} |
||||
|
||||
/**
|
||||
* Return true if |arg| matches the given argument name. |
||||
*/ |
||||
static bool IsArg(const char* arg, const char* s) |
||||
{ |
||||
if (*arg == '-') |
||||
{ |
||||
if (*++arg == '-') |
||||
++arg; |
||||
return !strcasecmp(arg, s); |
||||
} |
||||
|
||||
#if defined(XP_WIN) |
||||
if (*arg == '/') |
||||
return !strcasecmp(++arg, s); |
||||
#endif |
||||
|
||||
return false; |
||||
} |
||||
|
||||
XRE_GetFileFromPathType XRE_GetFileFromPath; |
||||
XRE_CreateAppDataType XRE_CreateAppData; |
||||
XRE_FreeAppDataType XRE_FreeAppData; |
||||
XRE_TelemetryAccumulateType XRE_TelemetryAccumulate; |
||||
XRE_StartupTimelineRecordType XRE_StartupTimelineRecord; |
||||
XRE_mainType XRE_main; |
||||
XRE_StopLateWriteChecksType XRE_StopLateWriteChecks; |
||||
XRE_XPCShellMainType XRE_XPCShellMain; |
||||
XRE_GetProcessTypeType XRE_GetProcessType; |
||||
XRE_SetProcessTypeType XRE_SetProcessType; |
||||
XRE_InitChildProcessType XRE_InitChildProcess; |
||||
XRE_EnableSameExecutableForContentProcType XRE_EnableSameExecutableForContentProc; |
||||
#ifdef LIBFUZZER |
||||
XRE_LibFuzzerSetMainType XRE_LibFuzzerSetMain; |
||||
XRE_LibFuzzerGetFuncsType XRE_LibFuzzerGetFuncs; |
||||
#endif |
||||
|
||||
static const nsDynamicFunctionLoad kXULFuncs[] = { |
||||
{ "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath }, |
||||
{ "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData }, |
||||
{ "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData }, |
||||
{ "XRE_TelemetryAccumulate", (NSFuncPtr*) &XRE_TelemetryAccumulate }, |
||||
{ "XRE_StartupTimelineRecord", (NSFuncPtr*) &XRE_StartupTimelineRecord }, |
||||
{ "XRE_main", (NSFuncPtr*) &XRE_main }, |
||||
{ "XRE_StopLateWriteChecks", (NSFuncPtr*) &XRE_StopLateWriteChecks }, |
||||
{ "XRE_XPCShellMain", (NSFuncPtr*) &XRE_XPCShellMain }, |
||||
{ "XRE_GetProcessType", (NSFuncPtr*) &XRE_GetProcessType }, |
||||
{ "XRE_SetProcessType", (NSFuncPtr*) &XRE_SetProcessType }, |
||||
{ "XRE_InitChildProcess", (NSFuncPtr*) &XRE_InitChildProcess }, |
||||
{ "XRE_EnableSameExecutableForContentProc", (NSFuncPtr*) &XRE_EnableSameExecutableForContentProc }, |
||||
#ifdef LIBFUZZER |
||||
{ "XRE_LibFuzzerSetMain", (NSFuncPtr*) &XRE_LibFuzzerSetMain }, |
||||
{ "XRE_LibFuzzerGetFuncs", (NSFuncPtr*) &XRE_LibFuzzerGetFuncs }, |
||||
#endif |
||||
{ nullptr, nullptr } |
||||
}; |
||||
|
||||
#ifdef LIBFUZZER |
||||
int libfuzzer_main(int argc, char **argv); |
||||
|
||||
/* This wrapper is used by the libFuzzer main to call into libxul */ |
||||
|
||||
void libFuzzerGetFuncs(const char* moduleName, LibFuzzerInitFunc* initFunc, |
||||
LibFuzzerTestingFunc* testingFunc) { |
||||
return XRE_LibFuzzerGetFuncs(moduleName, initFunc, testingFunc); |
||||
} |
||||
#endif |
||||
|
||||
static int do_main(int argc, char* argv[], char* envp[], nsIFile *xreDirectory) |
||||
{ |
||||
nsCOMPtr<nsIFile> appini; |
||||
nsresult rv; |
||||
uint32_t mainFlags = 0; |
||||
|
||||
// Allow basilisk.exe to launch XULRunner apps via -app <application.ini>
|
||||
// Note that -app must be the *first* argument.
|
||||
const char *appDataFile = getenv("XUL_APP_FILE"); |
||||
if (appDataFile && *appDataFile) { |
||||
rv = XRE_GetFileFromPath(appDataFile, getter_AddRefs(appini)); |
||||
if (NS_FAILED(rv)) { |
||||
Output("Invalid path found: '%s'", appDataFile); |
||||
return 255; |
||||
} |
||||
} |
||||
else if (argc > 1 && IsArg(argv[1], "app")) { |
||||
if (argc == 2) { |
||||
Output("Incorrect number of arguments passed to -app"); |
||||
return 255; |
||||
} |
||||
|
||||
rv = XRE_GetFileFromPath(argv[2], getter_AddRefs(appini)); |
||||
if (NS_FAILED(rv)) { |
||||
Output("application.ini path not recognized: '%s'", argv[2]); |
||||
return 255; |
||||
} |
||||
|
||||
char appEnv[MAXPATHLEN]; |
||||
SprintfLiteral(appEnv, "XUL_APP_FILE=%s", argv[2]); |
||||
if (putenv(strdup(appEnv))) { |
||||
Output("Couldn't set %s.\n", appEnv); |
||||
return 255; |
||||
} |
||||
argv[2] = argv[0]; |
||||
argv += 2; |
||||
argc -= 2; |
||||
} else if (argc > 1 && IsArg(argv[1], "xpcshell")) { |
||||
for (int i = 1; i < argc; i++) { |
||||
argv[i] = argv[i + 1]; |
||||
} |
||||
|
||||
return XRE_XPCShellMain(--argc, argv, envp); |
||||
} |
||||
|
||||
if (appini) { |
||||
nsXREAppData *appData; |
||||
rv = XRE_CreateAppData(appini, &appData); |
||||
if (NS_FAILED(rv)) { |
||||
Output("Couldn't read application.ini"); |
||||
return 255; |
||||
} |
||||
#if defined(HAS_DLL_BLOCKLIST) |
||||
// The dll blocklist operates in the exe vs. xullib. Pass a flag to
|
||||
// xullib so automated tests can check the result once the browser
|
||||
// is up and running.
|
||||
appData->flags |= |
||||
DllBlocklist_CheckStatus() ? NS_XRE_DLL_BLOCKLIST_ENABLED : 0; |
||||
#endif |
||||
// xreDirectory already has a refcount from NS_NewLocalFile
|
||||
appData->xreDirectory = xreDirectory; |
||||
int result = XRE_main(argc, argv, appData, mainFlags); |
||||
XRE_FreeAppData(appData); |
||||
return result; |
||||
} |
||||
|
||||
ScopedAppData appData(&sAppData); |
||||
nsCOMPtr<nsIFile> exeFile; |
||||
rv = mozilla::BinaryPath::GetFile(argv[0], getter_AddRefs(exeFile)); |
||||
if (NS_FAILED(rv)) { |
||||
Output("Couldn't find the application directory.\n"); |
||||
return 255; |
||||
} |
||||
|
||||
nsCOMPtr<nsIFile> greDir; |
||||
exeFile->GetParent(getter_AddRefs(greDir)); |
||||
#ifdef XP_MACOSX |
||||
greDir->SetNativeLeafName(NS_LITERAL_CSTRING(kOSXResourcesFolder)); |
||||
#endif |
||||
nsCOMPtr<nsIFile> appSubdir; |
||||
greDir->Clone(getter_AddRefs(appSubdir)); |
||||
appSubdir->Append(NS_LITERAL_STRING(kDesktopFolder)); |
||||
|
||||
SetStrongPtr(appData.directory, static_cast<nsIFile*>(appSubdir.get())); |
||||
// xreDirectory already has a refcount from NS_NewLocalFile
|
||||
appData.xreDirectory = xreDirectory; |
||||
|
||||
#if defined(HAS_DLL_BLOCKLIST) |
||||
appData.flags |= |
||||
DllBlocklist_CheckStatus() ? NS_XRE_DLL_BLOCKLIST_ENABLED : 0; |
||||
#endif |
||||
|
||||
#ifdef LIBFUZZER |
||||
if (getenv("LIBFUZZER")) |
||||
XRE_LibFuzzerSetMain(argc, argv, libfuzzer_main); |
||||
#endif |
||||
|
||||
return XRE_main(argc, argv, &appData, mainFlags); |
||||
} |
||||
|
||||
static bool |
||||
FileExists(const char *path) |
||||
{ |
||||
#ifdef XP_WIN |
||||
wchar_t wideDir[MAX_PATH]; |
||||
MultiByteToWideChar(CP_UTF8, 0, path, -1, wideDir, MAX_PATH); |
||||
DWORD fileAttrs = GetFileAttributesW(wideDir); |
||||
return fileAttrs != INVALID_FILE_ATTRIBUTES; |
||||
#else |
||||
return access(path, R_OK) == 0; |
||||
#endif |
||||
} |
||||
|
||||
static nsresult |
||||
InitXPCOMGlue(const char *argv0, nsIFile **xreDirectory) |
||||
{ |
||||
char exePath[MAXPATHLEN]; |
||||
|
||||
nsresult rv = mozilla::BinaryPath::Get(argv0, exePath); |
||||
if (NS_FAILED(rv)) { |
||||
Output("Couldn't find the application directory.\n"); |
||||
return rv; |
||||
} |
||||
|
||||
char *lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]); |
||||
if (!lastSlash || |
||||
(size_t(lastSlash - exePath) > MAXPATHLEN - sizeof(XPCOM_DLL) - 1)) |
||||
return NS_ERROR_FAILURE; |
||||
|
||||
strcpy(lastSlash + 1, XPCOM_DLL); |
||||
|
||||
if (!FileExists(exePath)) { |
||||
Output("Could not find the Mozilla runtime.\n"); |
||||
return NS_ERROR_FAILURE; |
||||
} |
||||
|
||||
// We do this because of data in bug 771745
|
||||
XPCOMGlueEnablePreload(); |
||||
|
||||
rv = XPCOMGlueStartup(exePath); |
||||
if (NS_FAILED(rv)) { |
||||
Output("Couldn't load XPCOM.\n"); |
||||
return rv; |
||||
} |
||||
|
||||
rv = XPCOMGlueLoadXULFunctions(kXULFuncs); |
||||
if (NS_FAILED(rv)) { |
||||
Output("Couldn't load XRE functions.\n"); |
||||
return rv; |
||||
} |
||||
|
||||
// This will set this thread as the main thread.
|
||||
NS_LogInit(); |
||||
|
||||
if (xreDirectory) { |
||||
// chop XPCOM_DLL off exePath
|
||||
*lastSlash = '\0'; |
||||
#ifdef XP_MACOSX |
||||
lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]); |
||||
strcpy(lastSlash + 1, kOSXResourcesFolder); |
||||
#endif |
||||
#ifdef XP_WIN |
||||
rv = NS_NewLocalFile(NS_ConvertUTF8toUTF16(exePath), false, |
||||
xreDirectory); |
||||
#else |
||||
rv = NS_NewNativeLocalFile(nsDependentCString(exePath), false, |
||||
xreDirectory); |
||||
#endif |
||||
} |
||||
|
||||
return rv; |
||||
} |
||||
|
||||
int main(int argc, char* argv[], char* envp[]) |
||||
{ |
||||
mozilla::TimeStamp start = mozilla::TimeStamp::Now(); |
||||
|
||||
#ifdef HAS_DLL_BLOCKLIST |
||||
DllBlocklist_Initialize(); |
||||
|
||||
#ifdef DEBUG |
||||
// In order to be effective against AppInit DLLs, the blocklist must be
|
||||
// initialized before user32.dll is loaded into the process (bug 932100).
|
||||
if (GetModuleHandleA("user32.dll")) { |
||||
fprintf(stderr, "DLL blocklist was unable to intercept AppInit DLLs.\n"); |
||||
} |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef MOZ_BROWSER_CAN_BE_CONTENTPROC |
||||
// We are launching as a content process, delegate to the appropriate
|
||||
// main
|
||||
if (argc > 1 && IsArg(argv[1], "contentproc")) { |
||||
nsresult rv = InitXPCOMGlue(argv[0], nullptr); |
||||
if (NS_FAILED(rv)) { |
||||
return 255; |
||||
} |
||||
|
||||
int result = content_process_main(argc, argv); |
||||
|
||||
// InitXPCOMGlue calls NS_LogInit, so we need to balance it here.
|
||||
NS_LogTerm(); |
||||
|
||||
return result; |
||||
} |
||||
#endif |
||||
|
||||
|
||||
nsIFile *xreDirectory; |
||||
|
||||
nsresult rv = InitXPCOMGlue(argv[0], &xreDirectory); |
||||
if (NS_FAILED(rv)) { |
||||
return 255; |
||||
} |
||||
|
||||
XRE_StartupTimelineRecord(mozilla::StartupTimeline::START, start); |
||||
|
||||
#ifdef MOZ_BROWSER_CAN_BE_CONTENTPROC |
||||
XRE_EnableSameExecutableForContentProc(); |
||||
#endif |
||||
|
||||
int result = do_main(argc, argv, envp, xreDirectory); |
||||
|
||||
NS_LogTerm(); |
||||
|
||||
#ifdef XP_MACOSX |
||||
// Allow writes again. While we would like to catch writes from static
|
||||
// destructors to allow early exits to use _exit, we know that there is
|
||||
// at least one such write that we don't control (see bug 826029). For
|
||||
// now we enable writes again and early exits will have to use exit instead
|
||||
// of _exit.
|
||||
XRE_StopLateWriteChecks(); |
||||
#endif |
||||
|
||||
return result; |
||||
} |
@ -0,0 +1,17 @@
|
||||
# This file has default permissions for the permission manager. |
||||
# The file-format is strict: |
||||
# * matchtype \t type \t permission \t host |
||||
# * "origin" should be used for matchtype, "host" is supported for legacy reasons |
||||
# * type is a string that identifies the type of permission (e.g. "cookie") |
||||
# * permission is an integer between 1 and 15 |
||||
# See nsPermissionManager.cpp for more... |
||||
|
||||
# XPInstall |
||||
origin install 1 http://addons.basilisk-browser.org |
||||
origin install 1 https://addons.basilisk-browser.org |
||||
origin install 1 https://addons.mozilla.org |
||||
origin install 1 https://testpilot.firefox.com |
||||
|
||||
# Remote troubleshooting |
||||
origin remote-troubleshooting 1 https://input.mozilla.org |
||||
origin remote-troubleshooting 1 https://support.mozilla.org |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,5 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public |
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
pref("app.update.channel", "@MOZ_UPDATE_CHANNEL@"); |
@ -0,0 +1,6 @@
|
||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- |
||||
# This Source Code Form is subject to the terms of the Mozilla Public |
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||
|
||||
DIRS += ['{972ce4c6-7e08-4474-a285-3208198ce6fd}'] |
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0"?> |
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public |
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
||||
|
||||
|
||||
#filter substitution |
||||
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#"> |
||||
|
||||
<Description about="urn:mozilla:install-manifest"> |
||||
<em:id>{972ce4c6-7e08-4474-a285-3208198ce6fd}</em:id> |
||||
<em:version>@MOZ_APP_VERSION@</em:version> |
||||
|
||||
<!-- Target Application this theme can install into, |
||||
with minimum and maximum supported versions. --> |
||||
<em:targetApplication> |
||||
<Description> |
||||
<em:id>@MOZ_APP_ID@</em:id> |
||||
<em:minVersion>@MOZ_APP_VERSION@</em:minVersion> |
||||
<em:maxVersion>@MOZ_APP_VERSION@</em:maxVersion> |
||||
</Description> |
||||
</em:targetApplication> |
||||
|
||||
<!-- Front End MetaData --> |
||||
<em:name>Default</em:name> |
||||
<em:description>The default theme.</em:description> |
||||
|
||||
<!-- Front End Integration Hooks (used by Theme Manager)--> |
||||
<em:creator>Mozilla</em:creator> |
||||
<em:contributor>Mozilla Contributors</em:contributor> |
||||
|
||||
<!-- Allow lightweight themes to apply to this theme --> |
||||
<em:skinnable>true</em:skinnable> |
||||
|
||||
<em:internalName>classic/1.0</em:internalName> |
||||
</Description> |
||||
|
||||
</RDF> |
@ -0,0 +1,13 @@
|
||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- |
||||
# This Source Code Form is subject to the terms of the Mozilla Public |
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||
|
||||
DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION'] |
||||
DEFINES['MOZ_APP_ID'] = CONFIG['MOZ_APP_ID'] |
||||
|
||||
FINAL_TARGET = 'dist/bin/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}' |
||||
|
||||
FINAL_TARGET_PP_FILES += [ |
||||
'install.rdf.in', |
||||
] |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0"?> <!-- -*- Mode: SGML -*- --> |
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public |
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
||||
|
||||
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/> |
||||
|
@ -0,0 +1,13 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public |
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
# Mozilla User Preferences |
||||
|
||||
/* Do not edit this file. |
||||
* |
||||
* If you make changes to this file while the browser is running, |
||||
* the changes will be overwritten when the browser exits. |
||||
* |
||||
* To make a manual change to preferences, you can visit the URL about:config |
||||
*/ |
@ -0,0 +1,21 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
||||
/* This Source Code Form is subject to the terms of the Mozilla Public |
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
||||
|
||||
#include <windows.h> |
||||
#include "nsNativeAppSupportWin.h" |
||||
|
||||
1 24 "basilisk.exe.manifest" |
||||
|
||||
IDI_APPICON ICON FIREFOX_ICO |
||||
IDI_DOCUMENT ICON DOCUMENT_ICO |
||||
IDI_APPLICATION ICON FIREFOX_ICO |
||||
IDI_NEWWINDOW ICON NEWWINDOW_ICO |
||||
IDI_NEWTAB ICON NEWTAB_ICO |
||||
IDI_PBMODE ICON PBMODE_ICO |
||||
|
||||
STRINGTABLE DISCARDABLE |
||||
BEGIN |
||||
IDS_STARTMENU_APPNAME, "@MOZ_APP_DISPLAYNAME@" |
||||
END |
@ -0,0 +1,11 @@
|
||||
"use strict"; |
||||
|
||||
module.exports = { |
||||
"rules": { |
||||
"no-unused-vars": ["error", { |
||||
"vars": "local", |
||||
"varsIgnorePattern": "^Cc|Ci|Cu|Cr|EXPORTED_SYMBOLS", |
||||
"args": "none", |
||||
}] |
||||
} |
||||
}; |
@ -0,0 +1,428 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public |
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// Note: this file is included in aboutDialog.xul if MOZ_UPDATER is defined.
|
||||
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); |
||||
Components.utils.import("resource://gre/modules/DownloadUtils.jsm"); |
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "UpdateUtils", |
||||
"resource://gre/modules/UpdateUtils.jsm"); |
||||
|
||||
const PREF_APP_UPDATE_CANCELATIONS_OSX = "app.update.cancelations.osx"; |
||||
const PREF_APP_UPDATE_ELEVATE_NEVER = "app.update.elevate.never"; |
||||
|
||||
var gAppUpdater; |
||||
|
||||
function onUnload(aEvent) { |
||||
if (gAppUpdater.isChecking) |
||||
gAppUpdater.checker.stopChecking(Components.interfaces.nsIUpdateChecker.CURRENT_CHECK); |
||||
// Safe to call even when there isn't a download in progress.
|
||||
gAppUpdater.removeDownloadListener(); |
||||
gAppUpdater = null; |
||||
} |
||||
|
||||
|
||||
function appUpdater() |
||||
{ |
||||
XPCOMUtils.defineLazyServiceGetter(this, "aus", |
||||
"@mozilla.org/updates/update-service;1", |
||||
"nsIApplicationUpdateService"); |
||||
XPCOMUtils.defineLazyServiceGetter(this, "checker", |
||||
"@mozilla.org/updates/update-checker;1", |
||||
"nsIUpdateChecker"); |
||||
XPCOMUtils.defineLazyServiceGetter(this, "um", |
||||
"@mozilla.org/updates/update-manager;1", |
||||
"nsIUpdateManager"); |
||||
|
||||
this.updateDeck = document.getElementById("updateDeck"); |
||||
|
||||
// Hide the update deck when the update window is already open and it's not
|
||||
// already applied, to avoid syncing issues between them. Applied updates
|
||||
// don't have any information to sync between the windows as they both just
|
||||
// show the "Restart to continue"-type button.
|
||||
if (Services.wm.getMostRecentWindow("Update:Wizard") && |
||||
!this.isApplied) { |
||||
this.updateDeck.hidden = true; |
||||
return; |
||||
} |
||||
|
||||
this.bundle = Services.strings. |
||||
createBundle("chrome://browser/locale/browser.properties"); |
||||
|
||||
let manualURL = Services.urlFormatter.formatURLPref("app.update.url.manual"); |
||||
let manualLink = document.getElementById("manualLink"); |
||||
manualLink.value = manualURL; |
||||
manualLink.href = manualURL; |
||||
document.getElementById("failedLink").href = manualURL; |
||||
|
||||
if (this.updateDisabledAndLocked) { |
||||
this.selectPanel("adminDisabled"); |
||||
return; |
||||
} |
||||
|
||||
if (this.isPending || this.isApplied) { |
||||
this.selectPanel("apply"); |
||||
return; |
||||
} |
||||
|
||||
if (this.aus.isOtherInstanceHandlingUpdates) { |
||||
this.selectPanel("otherInstanceHandlingUpdates"); |
||||
return; |
||||
} |
||||
|
||||
if (this.isDownloading) { |
||||
this.startDownload(); |
||||
// selectPanel("downloading") is called from setupDownloadingUI().
|
||||
return; |
||||
} |
||||
|
||||
// Honor the "Never check for updates" option by not only disabling background
|
||||
// update checks, but also in the About dialog, by presenting a
|
||||
// "Check for updates" button.
|
||||
// If updates are found, the user is then asked if he wants to "Update to <version>".
|
||||
if (!this.updateEnabled || |
||||
Services.prefs.prefHasUserValue(PREF_APP_UPDATE_ELEVATE_NEVER)) { |
||||
this.selectPanel("checkForUpdates"); |
||||
return; |
||||
} |
||||
|
||||
// That leaves the options
|
||||
// "Check for updates, but let me choose whether to install them", and
|
||||
// "Automatically install updates".
|
||||
// In both cases, we check for updates without asking.
|
||||
// In the "let me choose" case, we ask before downloading though, in onCheckComplete.
|
||||
this.checkForUpdates(); |
||||
} |
||||
|
||||
appUpdater.prototype = |
||||
{ |
||||
// true when there is an update check in progress.
|
||||
isChecking: false, |
||||
|
||||
// true when there is an update already staged / ready to be applied.
|
||||
get isPending() { |
||||
if (this.update) { |
||||
return this.update.state == "pending" || |
||||
this.update.state == "pending-service" || |
||||
this.update.state == "pending-elevate"; |
||||
} |
||||
return this.um.activeUpdate && |
||||
(this.um.activeUpdate.state == "pending" || |
||||
this.um.activeUpdate.state == "pending-service" || |
||||
this.um.activeUpdate.state == "pending-elevate"); |
||||
}, |
||||
|
||||
// true when there is an update already installed in the background.
|
||||
get isApplied() { |
||||
if (this.update) |
||||
return this.update.state == "applied" || |
||||
this.update.state == "applied-service"; |
||||
return this.um.activeUpdate && |
||||
(this.um.activeUpdate.state == "applied" || |
||||
this.um.activeUpdate.state == "applied-service"); |
||||
}, |
||||
|
||||
// true when there is an update download in progress.
|
||||
get isDownloading() { |
||||
if (this.update) |
||||
return this.update.state == "downloading"; |
||||
return this.um.activeUpdate && |
||||
this.um.activeUpdate.state == "downloading"; |
||||
}, |
||||
|
||||
// true when updating is disabled by an administrator.
|
||||
get updateDisabledAndLocked() { |
||||
return !this.updateEnabled && |
||||
Services.prefs.prefIsLocked("app.update.enabled"); |
||||
}, |
||||
|
||||
// true when updating is enabled.
|
||||
get updateEnabled() { |
||||
try { |
||||
return Services.prefs.getBoolPref("app.update.enabled"); |
||||
} |
||||
catch (e) { } |
||||
return true; // Firefox default is true
|
||||
}, |
||||
|
||||
// true when updating in background is enabled.
|
||||
get backgroundUpdateEnabled() { |
||||
return this.updateEnabled && |
||||
gAppUpdater.aus.canStageUpdates; |
||||
}, |
||||
|
||||
// true when updating is automatic.
|
||||
get updateAuto() { |
||||
try { |
||||
return Services.prefs.getBoolPref("app.update.auto"); |
||||
} |
||||
catch (e) { } |
||||
return true; // Firefox default is true
|
||||
}, |
||||
|
||||
/** |
||||
* Sets the panel of the updateDeck. |
||||
* |
||||
* @param aChildID |
||||
* The id of the deck's child to select, e.g. "apply". |
||||
*/ |
||||
selectPanel: function(aChildID) { |
||||
let panel = document.getElementById(aChildID); |
||||
|
||||
let button = panel.querySelector("button"); |
||||
if (button) { |
||||
if (aChildID == "downloadAndInstall") { |
||||
let updateVersion = gAppUpdater.update.displayVersion; |
||||
button.label = this.bundle.formatStringFromName("update.downloadAndInstallButton.label", [updateVersion], 1); |
||||
button.accessKey = this.bundle.GetStringFromName("update.downloadAndInstallButton.accesskey"); |
||||
} |
||||
this.updateDeck.selectedPanel = panel; |
||||
if (!document.commandDispatcher.focusedElement || // don't steal the focus
|
||||
document.commandDispatcher.focusedElement.localName == "button") // except from the other buttons
|
||||
button.focus(); |
||||
|
||||
} else { |
||||
this.updateDeck.selectedPanel = panel; |
||||
} |
||||
}, |
||||
|
||||
/** |
||||
* Check for updates |
||||
*/ |
||||
checkForUpdates: function() { |
||||
// Clear prefs that could prevent a user from discovering available updates.
|
||||
if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_CANCELATIONS_OSX)) { |
||||
Services.prefs.clearUserPref(PREF_APP_UPDATE_CANCELATIONS_OSX); |
||||
} |
||||
if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_ELEVATE_NEVER)) { |
||||
Services.prefs.clearUserPref(PREF_APP_UPDATE_ELEVATE_NEVER); |
||||
} |
||||
this.selectPanel("checkingForUpdates"); |
||||
this.isChecking = true; |
||||
this.checker.checkForUpdates(this.updateCheckListener, true); |
||||
// after checking, onCheckComplete() is called
|
||||
}, |
||||
|
||||
/** |
||||
* Handles oncommand for the "Restart to Update" button |
||||
* which is presented after the download has been downloaded. |
||||
*/ |
||||
buttonRestartAfterDownload: function() { |
||||
if (!this.isPending && !this.isApplied) { |
||||
return; |
||||
} |
||||
|
||||
gAppUpdater.selectPanel("restarting"); |
||||
|
||||
// Notify all windows that an application quit has been requested.
|
||||
let cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]. |
||||
createInstance(Components.interfaces.nsISupportsPRBool); |
||||
Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart"); |
||||
|
||||
// Something aborted the quit process.
|
||||
if (cancelQuit.data) { |
||||
gAppUpdater.selectPanel("apply"); |
||||
return; |
||||
} |
||||
|
||||
let appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]. |
||||
getService(Components.interfaces.nsIAppStartup); |
||||
|
||||
// If already in safe mode restart in safe mode (bug 327119)
|
||||
if (Services.appinfo.inSafeMode) { |
||||
appStartup.restartInSafeMode(Components.interfaces.nsIAppStartup.eAttemptQuit); |
||||
return; |
||||
} |
||||