Compare commits

..

No commits in common. "main" and "12.1" have entirely different histories.

9858 changed files with 31101 additions and 1274023 deletions

View file

@ -187,28 +187,6 @@ devtools/client/framework/test/code_ugly*
devtools/server/tests/unit/babel_and_browserify_script_with_source_map.js devtools/server/tests/unit/babel_and_browserify_script_with_source_map.js
devtools/server/tests/unit/setBreakpoint* devtools/server/tests/unit/setBreakpoint*
# mobile/android/ exclusions
mobile/android/tests/
# Uses `#filter substitution`
mobile/android/b2gdroid/app/b2gdroid.js
mobile/android/app/mobile.js
mobile/android/chrome/content/healthreport-prefs.js
# Uses `#expand`
mobile/android/chrome/content/about.js
# Not much JS to lint and non-standard at that
mobile/android/installer/
mobile/android/locales/
# Non-standard `(catch ex if ...)`
mobile/android/chrome/content/browser.js
mobile/android/components/Snippets.js
# Bug 1178739: Ignore this file as a quick fix for "Illegal yield expression"
mobile/android/modules/HomeProvider.jsm
# services/ exclusions # services/ exclusions
# Uses `#filter substitution` # Uses `#filter substitution`

4
.gitignore vendored
View file

@ -32,7 +32,6 @@ ID
obj-x86_64-pc-mingw32/ obj-x86_64-pc-mingw32/
obj-i686-pc-mingw32/ obj-i686-pc-mingw32/
autom4te.cache/
# Empty marker file that's generated when we check out NSS # Empty marker file that's generated when we check out NSS
security/manager/.nss.checkout security/manager/.nss.checkout
@ -95,9 +94,6 @@ GPATH
# Git clone directory for updating web-platform-tests # Git clone directory for updating web-platform-tests
testing/web-platform/sync/ testing/web-platform/sync/
# Android Gradle artifacts.
mobile/android/gradle/.gradle
# XCode project cruft # XCode project cruft
embedding/ios/GoannaEmbed/GoannaEmbed.xcodeproj/project.xcworkspace/xcuserdata embedding/ios/GoannaEmbed/GoannaEmbed.xcodeproj/project.xcworkspace/xcuserdata
embedding/ios/GoannaEmbed/GoannaEmbed.xcodeproj/xcuserdata embedding/ios/GoannaEmbed/GoannaEmbed.xcodeproj/xcuserdata

15
.vscode/settings.json vendored
View file

@ -1,15 +0,0 @@
{
"git.ignoreLimitWarning": true,
"chat.tools.terminal.autoApprove": {
"ForEach-Object": true,
"Get-Item": true,
"Test-Path": true,
"mkdir": true,
"cp": true,
"hdiutil": true,
"&": true
},
"files.associations": {
"limits.h": "c"
}
}

View file

@ -1,41 +1,22 @@
<img src="browser/branding/unofficial/content/about-wordmark.svg" alt="Dactyloidae web browser" height="60"> <img src="application/basilisk/branding/unofficial/content/about-wordmark.svg">
<br> <h2>Dactyloidae web browser</h2>
<a href="https://discord.gg/ycmQAMej77">Official Discord server</a> <a href="https://discord.gg/ecx">Official Discord server</a>
<br><br> <br><br>
<img src="https://dactyloidae.xyz/demo.jpg" height="500"> <img src="readme/newtab.png">
Dactyloidae is a heavily modified fork of Eclipse Hydra (fork of roytam1's Serpent, which is a fork of Basilisk, which is a fork of Firefox). Dactyloidae is a fork of Eclipse Lun3r (fork of Pale Moon made for Windows XP).
Some advantages over upstream, roytam1's Serpent, Eclipse Hydra and Firefox are: Some advantages over upstream, roytam1's New Moon and Lun3r are:
- More optimizations (SSE2, with additional boosts for future CPUs coming soon) - More optimzations
- Better interoperability with upstream (using SQL storage instead of DBM) - Better interoperability with upstream. (using SQL storage intead of DBM)
- More modern theme - More modern theme
- Better e10s support - Better e10s support
- Support for extensions in the Chrome and Edge Web Store (soon)
- Support for extensions released for both Pale Moon, Basilisk and Firefox
- WebExtensions support comparable to Firefox ESR 78
- Literally being the fastest XUL browser (33.7 in Speedometer 2.1 compared to 22.4 in Pale Moon 34.2 AVX2)
- Re-add support for iOS, Android, Windows 2000 and later, NetBSD (soon OpenBSD)
## Interested in running Dactyloidae in Win9x? We (as in I) reccomend using Palefill to potentially fix any browser issues:
<a href="https://github.com/martok/palefill/releases">Download it here</a>
Get DactJump alongside Dactyloidae if you want to use it on 9x.
<a href="https://repo.dactyloidae.xyz/Dactyloidae/DactJump/">Get it here.</a>
## Credits ## Credits
@Eclipse-Community for original code
If I've forgotten to put your name here, please let me know and I'll add it. @SoftBluey for logo seen in README and About
- [Feodor2](https://github.com/Feodor2) - Portable mode, theme fixes, and more from Mypal and Mypal68.
- [Librewolf Developers](https://codeberg.org/librewolf) - Privacy tweaks from Librewolf. (Has not been implemented yet)
- [BlueySoft (goober)](https://blueyheeler.xyz/) - Branding visuals, icons and fancy text.
- [White Star](https://github.com/dbsoft/White-Star) - Helping with porting platform to Darwin PowerPC.
Major core browser engine contributions:
- [Stossy11](https://www.github.com/stossy11) - Helping to develop and fix the macOS build.
- [Eclipse Community](https://www.github.com/Eclipse-Community/UXP) - For creating Hydra and Lun3r, the bases of this fork.
- [Loongson Hobbists' community](https://loongfans.cn/en/) - Providing a LoongArch VM and general assistance in porting to LoongArch64
- [Basilisk-Dev](https://repo.palemoon.org/Basilisk-Dev) - For supporting and maintaining Basilisk, aswell as general advice for developing this browser.
- [roytam1](https://github.com/roytam1) - Windows XP support code, e10s, WebExtensions, and more for UXP.
- [Moonchild Productions](https://repo.palemoon.org/MoonchildProductions) - For creating the Unified XUL Platform and Basilisk, the core of this project.
- [Mozilla Developers](https://github.com/mozilla-firefox) - Firefox ESR 52 browser base.

View file

@ -4,8 +4,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
if CONFIG['COMPILE_ENVIRONMENT']: if CONFIG['COMPILE_ENVIRONMENT']:
if CONFIG['CC_TYPE'] == 'msvc': DIRS += ['typelib']
DIRS += ['typelib']
# With --disable-accessibility, we need to compile PDocAccessible.ipdl (which # With --disable-accessibility, we need to compile PDocAccessible.ipdl (which
# also depends on COMPtrTypes.h), but not the C++. # also depends on COMPtrTypes.h), but not the C++.

View file

@ -3,11 +3,10 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this # 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/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
if CONFIG['CC_TYPE'] == 'msvc': FINAL_TARGET_FILES += [
FINAL_TARGET_FILES += [ '!Accessible.tlb',
'!Accessible.tlb', ]
]
GENERATED_FILES += [ GENERATED_FILES += [
'Accessible.tlb', 'Accessible.tlb',
] ]

View file

@ -64,9 +64,7 @@ this.AccessFu = { // jshint ignore:line
if (this._enabled) { if (this._enabled) {
this._disable(); this._disable();
} }
if (Utils.MozBuildApp === 'mobile/android') { if (Utils.win.navigator.mozSettings) {
Services.obs.removeObserver(this, 'Accessibility:Settings');
} else if (Utils.win.navigator.mozSettings) {
Utils.win.navigator.mozSettings.removeObserver( Utils.win.navigator.mozSettings.removeObserver(
SCREENREADER_SETTING, this.handleEvent); SCREENREADER_SETTING, this.handleEvent);
} }
@ -585,11 +583,7 @@ var Output = {
get androidBridge() { get androidBridge() {
delete this.androidBridge; delete this.androidBridge;
if (Utils.MozBuildApp === 'mobile/android') { this.androidBridge = null;
this.androidBridge = Services.androidBridge;
} else {
this.androidBridge = null;
}
return this.androidBridge; return this.androidBridge;
}, },
@ -815,12 +809,6 @@ var Input = {
target.blur(); target.blur();
} }
} }
if (Utils.MozBuildApp == 'mobile/android') {
// Return focus to native Android browser chrome.
Services.androidBridge.handleGeckoMessage(
{ type: 'ToggleChrome:Focus' });
}
break; break;
case aEvent.DOM_VK_RETURN: case aEvent.DOM_VK_RETURN:
if (this.editState.editing) { if (this.editState.editing) {
@ -837,18 +825,9 @@ var Input = {
}, },
moveToPoint: function moveToPoint(aRule, aX, aY) { moveToPoint: function moveToPoint(aRule, aX, aY) {
// XXX: Bug 1013408 - There is no alignment between the chrome window's let win = Utils.win;
// viewport size and the content viewport size in Android. This makes Utils.winUtils.sendMouseEvent('mousemove',
// sending mouse events beyond its bounds impossible. aX - win.mozInnerScreenX, aY - win.mozInnerScreenY, 0, 0, 0);
if (Utils.MozBuildApp === 'mobile/android') {
let mm = Utils.getMessageManager(Utils.CurrentBrowser);
mm.sendAsyncMessage('AccessFu:MoveToPoint',
{rule: aRule, x: aX, y: aY, origin: 'top'});
} else {
let win = Utils.win;
Utils.winUtils.sendMouseEvent('mousemove',
aX - win.mozInnerScreenX, aY - win.mozInnerScreenY, 0, 0, 0);
}
}, },
moveCursor: function moveCursor(aAction, aRule, aInputType, aAdjustRange) { moveCursor: function moveCursor(aAction, aRule, aInputType, aAdjustRange) {

View file

@ -76,8 +76,6 @@ const EDGE = 0.1;
const TIMEOUT_MULTIPLIER = 1; const TIMEOUT_MULTIPLIER = 1;
// A single pointer down/up sequence periodically precedes the tripple swipe // A single pointer down/up sequence periodically precedes the tripple swipe
// gesture on Android. This delay acounts for that. // gesture on Android. This delay acounts for that.
const IS_ANDROID = Utils.MozBuildApp === 'mobile/android' &&
Utils.AndroidSdkVersion >= 14;
/** /**
* A point object containing distance travelled data. * A point object containing distance travelled data.
@ -206,7 +204,7 @@ this.GestureTracker = { // jshint ignore:line
if (aDetail.type !== 'pointerdown') { if (aDetail.type !== 'pointerdown') {
return; return;
} }
let GestureConstructor = aGesture || (IS_ANDROID ? DoubleTap : Tap); let GestureConstructor = aGesture || Tap;
this._create(GestureConstructor); this._create(GestureConstructor);
this._update(aDetail, aTimeStamp); this._update(aDetail, aTimeStamp);
}, },

View file

@ -680,7 +680,6 @@ this.Presentation = { // jshint ignore:line
get presenters() { get presenters() {
delete this.presenters; delete this.presenters;
let presenterMap = { let presenterMap = {
'mobile/android': [VisualPresenter, AndroidPresenter],
'b2g': [VisualPresenter, B2GPresenter], 'b2g': [VisualPresenter, B2GPresenter],
'browser': [VisualPresenter, B2GPresenter, AndroidPresenter] 'browser': [VisualPresenter, B2GPresenter, AndroidPresenter]
}; };

View file

@ -33,9 +33,7 @@ this.Utils = { // jshint ignore:line
_buildAppMap: { _buildAppMap: {
'{3c2e2abc-06d4-11e1-ac3b-374f68613e61}': 'b2g', '{3c2e2abc-06d4-11e1-ac3b-374f68613e61}': 'b2g',
'{d1bfe7d9-c01e-4237-998b-7b5f960a4314}': 'graphene', '{d1bfe7d9-c01e-4237-998b-7b5f960a4314}': 'graphene',
'{ec8030f7-c20a-464f-9b0e-13a3a9e97384}': 'browser', '{ec8030f7-c20a-464f-9b0e-13a3a9e97384}': 'browser'
'{aa3c5121-dab2-40e2-81ca-7ea25febc110}': 'mobile/android',
'{a23983c0-fd0e-11dc-95ff-0800200c9a66}': 'mobile/xul'
}, },
init: function Utils_init(aWindow) { init: function Utils_init(aWindow) {

View file

@ -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('/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 += ['/application/basilisk']

View file

@ -25,7 +25,7 @@ RemotingName=@MOZ_APP_REMOTINGNAME@
#ifdef MOZ_APP_DISPLAYNAME #ifdef MOZ_APP_DISPLAYNAME
CodeName=@MOZ_APP_DISPLAYNAME@ CodeName=@MOZ_APP_DISPLAYNAME@
#endif #endif
Version=52.9.0 Version=52.11.0
#ifdef MOZ_APP_PROFILE #ifdef MOZ_APP_PROFILE
Profile=@MOZ_APP_PROFILE@ Profile=@MOZ_APP_PROFILE@
#endif #endif

View file

@ -0,0 +1,44 @@
<?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="Eclipse Hydra"
type="win32"
/>
<description>Eclipse Hydra</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}"/>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>
</assembly>

View file

@ -0,0 +1,8 @@
WIN32_MODULE_COMPANYNAME=@MOZ_APP_VENDOR@
WIN32_MODULE_COPYRIGHT=©Eclipse Community, 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=The Hydra logo and project names are trademarks of Eclipse Community.
WIN32_MODULE_DESCRIPTION=@MOZ_APP_DISPLAYNAME@ web browser
WIN32_MODULE_PRODUCTNAME=@MOZ_APP_DISPLAYNAME@
WIN32_MODULE_NAME=@MOZ_APP_DISPLAYNAME@

View file

@ -7,9 +7,9 @@
#include "mozilla/AppData.h" #include "mozilla/AppData.h"
#include "application.ini.h" #include "application.ini.h"
#include "nsXPCOMGlue.h" #include "nsXPCOMGlue.h"
#include <stdlib.h>
#if defined(XP_WIN) #if defined(XP_WIN)
#include <windows.h> #include <windows.h>
#include <stdlib.h>
#elif defined(XP_UNIX) #elif defined(XP_UNIX)
#include <sys/resource.h> #include <sys/resource.h>
#include <unistd.h> #include <unistd.h>

View file

@ -446,15 +446,6 @@ pref("browser.ghostbuster.enabled", true);
// misbehave. Should also avoid spurious GCs during ghostbusting. // misbehave. Should also avoid spurious GCs during ghostbusting.
pref("javascript.options.gc_on_memory_pressure", false); pref("javascript.options.gc_on_memory_pressure", false);
pref("javascript.options.baselinejit.unsafe_eager_compilation", false);
pref("javascript.options.ion.unsafe_eager_compilation", false);
pref("javascript.options.baselinejit.threshold", 4);
pref("javascript.options.ion.threshold", 25);
pref("javascript.options.mem.high_water_mark", 256);
pref("javascript.options.mem.gc_incremental", false);
pref("javascript.options.mem.gc_compacting", false);
pref("javascript.options.mem.gc_incremental_slice_ms", 40);
// This is the pref to control the location bar, change this to true to // This is the pref to control the location bar, change this to true to
// force this - this makes the origin of popup windows more obvious to avoid // force this - this makes the origin of popup windows more obvious to avoid
// spoofing. We would rather not do it by default because it affects UE for web // spoofing. We would rather not do it by default because it affects UE for web
@ -595,7 +586,6 @@ pref("mousewheel.with_win.action", 1);
pref("browser.xul.error_pages.enabled", true); pref("browser.xul.error_pages.enabled", true);
pref("browser.xul.error_pages.expert_bad_cert", false); pref("browser.xul.error_pages.expert_bad_cert", false);
pref("browser.theme.mode", "system");
// Enable captive portal detection. // Enable captive portal detection.
pref("network.captive-portal-service.enabled", true); pref("network.captive-portal-service.enabled", true);
@ -683,7 +673,11 @@ pref("browser.download.hide_plugins_without_extensions", true);
// 0 goes Back/Forward // 0 goes Back/Forward
// 1 act like PgUp/PgDown // 1 act like PgUp/PgDown
// 2 and other values, nothing // 2 and other values, nothing
#ifdef UNIX_BUT_NOT_MAC
pref("browser.backspace_action", 2); pref("browser.backspace_action", 2);
#else
pref("browser.backspace_action", 0);
#endif
// this will automatically enable inline spellchecking (if it is available) for // this will automatically enable inline spellchecking (if it is available) for
// editable elements in HTML // editable elements in HTML
@ -918,14 +912,8 @@ pref("browser.flash-protected-mode-flip.done", false);
pref("dom.ipc.shims.enabledWarnings", false); pref("dom.ipc.shims.enabledWarnings", false);
// Start the browser in e10s mode // Start the browser in e10s mode
pref("browser.tabs.remote.autostart", true); pref("browser.tabs.remote.autostart", false);
pref("browser.tabs.remote.force-enable", true);
pref("browser.tabs.remote.force-disable", false);
pref("browser.tabs.remote.desktopbehavior", true); pref("browser.tabs.remote.desktopbehavior", true);
pref("browser.tabs.remote.ignoreBlockPolicy", true);
// Number of web content processes used by e10s.
// Keep this at a fixed value in this tree; automatic -1 mode is not supported.
pref("dom.ipc.processCount", 4);
// This pref governs whether we attempt to work around problems caused by // This pref governs whether we attempt to work around problems caused by
// plugins using OS calls to manipulate the cursor while running out-of- // plugins using OS calls to manipulate the cursor while running out-of-
@ -1225,11 +1213,6 @@ pref("browser.cache.frecency_experiment", -1);
// Enable GMP support in the addon manager. // Enable GMP support in the addon manager.
pref("media.gmp-provider.enabled", true); pref("media.gmp-provider.enabled", true);
// On MacOS 10.6 and earlier, enable the window resize grip
#ifdef XP_MACOSX
pref("ui.mouse.resize_grip", true);
#endif
// Enable Contextual Identity Containers // Enable Contextual Identity Containers
#ifdef NIGHTLY_BUILD #ifdef NIGHTLY_BUILD
pref("privacy.userContext.enabled", true); pref("privacy.userContext.enabled", true);
@ -1253,8 +1236,10 @@ pref("browser.tabs.remote.autostart.2", true);
pref("extensions.interposition.enabled", true); pref("extensions.interposition.enabled", true);
pref("extensions.interposition.prefetching", true); pref("extensions.interposition.prefetching", true);
// Keep e10s enabled even when legacy add-ons are present. // Enable blocking of e10s for add-on users on beta/release.
pref("extensions.e10sBlocksEnabling", false); #ifdef RELEASE_OR_BETA
pref("extensions.e10sBlocksEnabling", true);
#endif
// How often to check for CPOW timeouts. CPOWs are only timed out by // How often to check for CPOW timeouts. CPOWs are only timed out by
// the hang monitor. // the hang monitor.

View file

@ -0,0 +1,44 @@
<?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="Serpent"
type="win32"
/>
<description>Serpent</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}"/>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>
</assembly>

View file

@ -0,0 +1,97 @@
/* 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/. */
#aboutDialog {
width: 620px;
/* Set an explicit line-height to avoid discrepancies in 'auto' spacing
across screens with different device DPI, which may cause font metrics
to round differently. */
line-height: 1.5;
}
#rightBox {
background-image: url("chrome://branding/content/about-wordmark.svg");
background-repeat: no-repeat;
/* padding-top creates room for the wordmark */
padding-top: 38px;
margin-top:20px;
}
#rightBox:-moz-locale-dir(rtl) {
background-position: 100% 0;
}
#bottomBox {
padding: 15px 10px 0;
}
#version {
font-weight: bold;
margin-top: 10px;
margin-left: 0;
-moz-user-select: text;
-moz-user-focus: normal;
cursor: text;
}
#version:-moz-locale-dir(rtl) {
direction: ltr;
text-align: right;
margin-left: 5px;
margin-right: 0;
}
#releasenotes {
margin-top: 10px;
}
#distribution,
#distributionId {
display: none;
margin-top: 0;
margin-bottom: 0;
}
.text-blurb {
margin-bottom: 10px;
margin-inline-start: 0;
padding-inline-start: 0;
}
#updateButton,
#updateDeck > hbox > label {
margin-inline-start: 0;
padding-inline-start: 0;
}
.update-throbber {
width: 16px;
min-height: 16px;
margin-inline-end: 3px;
list-style-image: url("chrome://global/skin/icons/loading.png");
}
@media (min-resolution: 1.1dppx) {
.update-throbber {
list-style-image: url("chrome://global/skin/icons/loading@2x.png");
}
}
description > .text-link,
description > .text-link:focus {
margin: 0px;
padding: 0px;
}
.bottom-link,
.bottom-link:focus {
text-align: center;
margin: 0 40px;
}
#currentChannel {
margin: 0;
padding: 0;
font-weight: bold;
}

View file

@ -42,13 +42,16 @@
#endif #endif
<vbox id="aboutDialogContainer"> <vbox id="aboutDialogContainer">
<hbox id="clientBox"> <hbox id="clientBox">
<vbox id="leftBox" collapsed="true"/> <vbox id="leftBox" flex="1"/>
<vbox id="rightBox" flex="1" align="center"> <vbox id="rightBox" flex="1">
<hbox align="baseline" pack="center"> <hbox align="baseline">
#ifdef HAVE_64BIT_BUILD #ifdef HAVE_64BIT_BUILD
#expand <label id="version">__MOZ_APP_VERSION_DISPLAY__ (64-bit)</label> #expand <label id="version">__MOZ_APP_VERSION_DISPLAY__ (64-bit)</label>
#else #else
#expand <label id="version">__MOZ_APP_VERSION_DISPLAY__ (32-bit)</label> #expand <label id="version">__MOZ_APP_VERSION_DISPLAY__ (32-bit)</label>
#endif
#ifndef NIGHTLY_BUILD
<label id="releasenotes" class="text-link">&releaseNotes.link;</label>
#endif #endif
</hbox> </hbox>
@ -138,19 +141,13 @@
#endif #endif
#else #else
<description class="text-blurb" id="communityDesc"> <description class="text-blurb" id="communityDesc">
Dactyloidae is released by <label class="text-link" href="https://eclipse.cx">Eclipse Community</label>.
</description>
<description class="text-blurb"> Dactyloidae is a custom browser, based on the best of Firefox.
Dactyloidae is based on the work of the UXP team, aswell as the work of the Mozilla developers. Dactyloidae is designed and maintained by multiple open-source contributors (OwnedByWuigi, Eclipse Community, RT1), working together to make better software around the globe.
</description> </description>
<description class="text-blurb">
Learn <label class="text-link" useoriginprincipal="true" href="about:credits">who contributed</label> to this software.
</description>
<description class="text-blurb" id="contributeDesc"> <description class="text-blurb" id="contributeDesc">
If you wish to contribute, please consider helping out by getting involved in our development by tackling some of the issues found in our <label class="text-link" href="https://github.com/Eclipse-Community/Dactyloidae/">GitHub issue tracker</label>. If you wish to contribute, please consider helping out by getting involved in our development by tackling some of the issues found in our <label class="text-link" href="https://github.com/OwnedByWuigi/UXP/">GitHub issue tracker</label>.
</description> </description>
#endif #endif
</vbox> </vbox>

View file

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

View file

@ -120,7 +120,6 @@ a {
transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow;
transition-duration: 150ms; transition-duration: 150ms;
width: 50px; width: 50px;
display: none;
} }
#searchSubmit:dir(rtl) { #searchSubmit:dir(rtl) {
@ -400,45 +399,3 @@ body[narrow] #restorePreviousSession::before {
} }
} }
@media (prefers-color-scheme: dark) {
html {
background-color: #1f2328;
color: #f1f4f7;
}
a {
color: #75bbff;
}
#topSection h1 {
color: #f1f4f7;
}
#searchIcon {
filter: invert(100%) brightness(1.05);
}
#searchText {
background: #2b3037 padding-box;
border-color: #4b535d;
color: #f1f4f7;
box-shadow: none;
}
#searchText[keepfocus],
#searchText:focus,
#searchText[autofocus] {
border-color: #4aa3ff;
}
#searchSubmit {
background: url("chrome://browser/skin/search-arrow-go.svg#search-arrow-go-inverted") center center no-repeat, linear-gradient(#3e454f, #30363d) padding-box;
border-color: #4b535d;
box-shadow: none;
}
#searchSubmit:dir(rtl) {
background-image: url("chrome://browser/skin/search-arrow-go.svg#search-arrow-go-rtl-inverted"), linear-gradient(#3e454f, #30363d);
}
}

View file

@ -27,10 +27,7 @@ window.addEventListener("pageshow", function () {
// Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs // Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs
// later and may use asynchronous getters. // later and may use asynchronous getters.
window.gObserver.observe(document.documentElement, { attributes: true }); window.gObserver.observe(document.documentElement, { attributes: true });
let launcher = document.getElementById("launcher"); window.gObserver.observe(document.getElementById("launcher"), { attributes: true });
if (launcher) {
window.gObserver.observe(launcher, { attributes: true });
}
fitToWidth(); fitToWidth();
setupSearch(); setupSearch();
window.addEventListener("resize", fitToWidth); window.addEventListener("resize", fitToWidth);
@ -75,22 +72,7 @@ window.addEventListener("keypress", ev => {
function onSearchSubmit(aEvent) function onSearchSubmit(aEvent)
{ {
if (aEvent instanceof MouseEvent && gContentSearchController && gContentSearchController.search(aEvent);
gContentSearchController.defaultEngine) {
gContentSearchController.search(aEvent);
return;
}
// Fallback path for builds where ContentSearch mediation fails.
let terms = searchText && searchText.value ? searchText.value.trim() : "";
if (!terms) {
return;
}
document.dispatchEvent(new CustomEvent("AboutHomeSearch", {
bubbles: true,
detail: { searchString: terms },
}));
} }
@ -98,13 +80,10 @@ var gContentSearchController;
function setupSearch() function setupSearch()
{ {
let searchSubmit = document.getElementById("searchSubmit");
// Set submit button label for when CSS background are disabled (e.g. // Set submit button label for when CSS background are disabled (e.g.
// high contrast mode). // high contrast mode).
searchSubmit.value = document.getElementById("searchSubmit").value =
document.body.getAttribute("dir") == "ltr" ? "\u25B6" : "\u25C0"; document.body.getAttribute("dir") == "ltr" ? "\u25B6" : "\u25C0";
searchSubmit.addEventListener("click", onSearchSubmit, true);
// The "autofocus" attribute doesn't focus the form element // The "autofocus" attribute doesn't focus the form element
// immediately when the element is first drawn, so the // immediately when the element is first drawn, so the
@ -120,14 +99,6 @@ function setupSearch()
new ContentSearchUIController(searchText, searchText.parentNode, new ContentSearchUIController(searchText, searchText.parentNode,
"abouthome", "homepage"); "abouthome", "homepage");
} }
searchText.addEventListener("keypress", function(event) {
if (event.keyCode == event.DOM_VK_RETURN) {
event.preventDefault();
event.stopPropagation();
onSearchSubmit(event);
}
}, true);
} }
/** /**

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 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/. -->
<!DOCTYPE html [
<!ENTITY % htmlDTD
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
%htmlDTD;
<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
%globalDTD;
<!ENTITY % aboutHomeDTD SYSTEM "chrome://browser/locale/aboutHome.dtd">
%aboutHomeDTD;
<!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd" >
%browserDTD;
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>&abouthome.pageTitle;</title>
<link rel="icon" type="image/png" id="favicon"
href="chrome://branding/content/icon32.png"/>
<link rel="stylesheet" type="text/css" media="all"
href="chrome://browser/content/contentSearchUI.css"/>
<link rel="stylesheet" type="text/css" media="all" defer="defer"
href="chrome://browser/content/abouthome/aboutHome.css"/>
<script type="text/javascript;version=1.8"
src="chrome://browser/content/abouthome/aboutHome.js"/>
<script type="text/javascript;version=1.8"
src="chrome://browser/content/contentSearchUI.js"/>
</head>
<body dir="&locale.dir;">
<div class="spacer"/>
<div id="topSection">
<h1>Where to next?</h1>
<div id="searchIconAndTextContainer">
<div id="searchIcon"/>
<input type="text" name="q" value="" id="searchText" maxlength="256"
aria-label="&contentSearchInput.label;" autofocus="autofocus"/>
<input id="searchSubmit" type="button" onclick="onSearchSubmit(event)"
title="&contentSearchSubmit.tooltip;"/>
</div>
</div>
</body>
</html>

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 898 B

After

Width:  |  Height:  |  Size: 898 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before After
Before After

View file

@ -334,29 +334,6 @@ const gXPInstallObserver = {
messageString = gNavigatorBundle.getFormattedString(error, args); messageString = gNavigatorBundle.getFormattedString(error, args);
if (install.error == AddonManager.ERROR_CORRUPT_FILE) {
let detail = null;
if (install.errorDetail !== undefined && install.errorDetail !== null) {
detail = install.errorDetail;
if (typeof detail != "string") {
if (detail && typeof detail.message == "string" && detail.message) {
detail = detail.message;
} else {
detail = String(detail);
}
}
detail = detail.replace(/[\r\n\t]+/g, " ").trim();
}
let detailString;
if (detail) {
detailString = gNavigatorBundle.getFormattedString("addonInstallErrorDetail", [detail]);
} else {
detailString = gNavigatorBundle.getFormattedString("addonInstallErrorDetailCode", [String(install.error)]);
}
messageString += " " + detailString;
}
PopupNotifications.show(browser, notificationID, messageString, anchorID, PopupNotifications.show(browser, notificationID, messageString, anchorID,
action, null, options); action, null, options);

View file

@ -17,12 +17,6 @@ var gGestureSupport = {
_currentRotation: 0, _currentRotation: 0,
_lastRotateDelta: 0, _lastRotateDelta: 0,
_rotateMomentumThreshold: .75, _rotateMomentumThreshold: .75,
_magnifierOverlay: null,
_magnifierCanvas: null,
_magnifierZoom: 1,
_magnifierCenterX: 0,
_magnifierCenterY: 0,
_magnifierSourceBrowser: null,
/** /**
* Add or remove mouse gesture event listeners * Add or remove mouse gesture event listeners
@ -90,7 +84,7 @@ var gGestureSupport = {
let pinchPref = AppConstants.platform == "win" let pinchPref = AppConstants.platform == "win"
? def(25, 0) ? def(25, 0)
: def(150, 1); : def(150, 1);
this._setupPinchGesture(aEvent, pinchPref); this._setupGesture(aEvent, "pinch", pinchPref, "out", "in");
break; break;
case "MozRotateGestureStart": case "MozRotateGestureStart":
aEvent.preventDefault(); aEvent.preventDefault();
@ -105,10 +99,6 @@ var gGestureSupport = {
aEvent.preventDefault(); aEvent.preventDefault();
this._doAction(aEvent, ["tap"]); this._doAction(aEvent, ["tap"]);
break; break;
case "MozMagnifyGesture":
aEvent.preventDefault();
this._destroyMagnifierOverlay();
break;
case "MozRotateGesture": case "MozRotateGesture":
aEvent.preventDefault(); aEvent.preventDefault();
this._doAction(aEvent, ["twist", "end"]); this._doAction(aEvent, ["twist", "end"]);
@ -278,174 +268,6 @@ var gGestureSupport = {
} }
}, },
/**
* Setup pinch gesture with full-screen magnifier overlay.
*
* @param aEvent
* The magnify gesture start event
* @param aPref
* Preference object with threshold and latched settings
*/
_setupPinchGesture: function(aEvent, aPref) {
let browser = gBrowser.selectedBrowser;
if (!browser || !browser.contentWindow) {
return this._setupGesture(aEvent, "pinch", aPref, "out", "in");
}
this._magnifierSourceBrowser = browser;
this._magnifierCenterX = aEvent.clientX || 0;
this._magnifierCenterY = aEvent.clientY || 0;
this._magnifierZoom = 1;
this._createMagnifierOverlay();
// Setup the gesture with magnifier handler
for (let [pref, def] of Object.entries(aPref))
aPref[pref] = this._getPref("pinch." + pref, def);
let offset = 0;
let latchDir = aEvent.delta > 0 ? 1 : -1;
let isLatched = false;
this._doUpdate = (aEvent) => {
offset += aEvent.delta;
if (Math.abs(offset) > aPref["threshold"]) {
let sameDir = (latchDir ^ offset) >= 0;
if (!aPref["latched"] || (isLatched ^ sameDir)) {
this._updateMagnifier(offset > 0 ? 1.2 : 0.833);
isLatched = !isLatched;
}
offset = 0;
}
};
this._doUpdate(aEvent);
},
/**
* Create full-screen magnifier overlay.
*/
_createMagnifierOverlay: function() {
if (this._magnifierOverlay)
return;
try {
let overlay = document.createElement("div");
overlay.id = "gGestureSupport-magnifier-overlay";
overlay.style.cssText = `
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
z-index: 2147483647;
overflow: hidden;
margin: 0;
padding: 0;
`;
let canvas = document.createElement("canvas");
canvas.id = "gGestureSupport-magnifier-canvas";
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.style.cssText = `
position: absolute;
top: 0;
left: 0;
display: block;
`;
overlay.appendChild(canvas);
document.documentElement.appendChild(overlay);
this._magnifierOverlay = overlay;
this._magnifierCanvas = canvas;
this._drawMagnifier();
} catch (e) {
Cu.reportError("Magnifier overlay creation failed: " + e);
}
},
/**
* Update magnifier zoom level and redraw.
*
* @param aZoomMultiplier
* Factor to multiply current zoom by (e.g., 1.2 for zoom in, 0.833 for zoom out)
*/
_updateMagnifier: function(aZoomMultiplier) {
let minZoom = 1;
let maxZoom = 5;
this._magnifierZoom = Math.max(minZoom, Math.min(maxZoom, this._magnifierZoom * aZoomMultiplier));
this._drawMagnifier();
},
/**
* Draw magnified content to canvas.
*/
_drawMagnifier: function() {
if (!this._magnifierOverlay || !this._magnifierCanvas || !this._magnifierSourceBrowser)
return;
try {
let browser = this._magnifierSourceBrowser;
let canvas = this._magnifierCanvas;
let ctx = canvas.getContext("2d");
if (!ctx) return;
// Fill background black
ctx.fillStyle = "#000000";
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Save context state
ctx.save();
// Calculate zoom magnification
let zoomLevel = this._magnifierZoom;
let centerX = this._magnifierCenterX;
let centerY = this._magnifierCenterY;
// Apply magnification transform centered on gesture point
ctx.translate(canvas.width / 2, canvas.height / 2);
ctx.scale(zoomLevel, zoomLevel);
ctx.translate(-centerX, -centerY);
// Try to draw the window content
try {
let viewer = browser.markupDocumentViewer;
let pageZoom = viewer ? (viewer.fullZoom || 1) : 1;
ctx.scale(pageZoom, pageZoom);
ctx.drawWindow(
browser.contentWindow,
0, 0,
browser.contentWindow.innerWidth,
browser.contentWindow.innerHeight,
"rgb(0,0,0)",
ctx.DRAWWINDOW_DO_NOT_FLUSH | ctx.DRAWWINDOW_DRAW_VIEW | ctx.DRAWWINDOW_USE_WIDGET_LAYERS
);
} catch (e) {
// drawWindow may fail, just show black background
Cu.reportError("drawWindow failed: " + e);
}
ctx.restore();
} catch (e) {
Cu.reportError("_drawMagnifier error: " + e);
}
},
/**
* Hide and destroy magnifier overlay.
*/
_destroyMagnifierOverlay: function() {
if (this._magnifierOverlay && this._magnifierOverlay.parentNode)
this._magnifierOverlay.parentNode.removeChild(this._magnifierOverlay);
this._magnifierOverlay = null;
this._magnifierCanvas = null;
this._magnifierSourceBrowser = null;
},
/** /**
* Determine what action to do for the gesture based on which keys are * Determine what action to do for the gesture based on which keys are
* pressed and which commands are set, and execute the command. * pressed and which commands are set, and execute the command.

View file

@ -255,8 +255,8 @@
<key id="key_delete" keycode="VK_DELETE" command="cmd_delete"/> <key id="key_delete" keycode="VK_DELETE" command="cmd_delete"/>
<key id="key_selectAll" key="&selectAllCmd.key;" modifiers="accel"/> <key id="key_selectAll" key="&selectAllCmd.key;" modifiers="accel"/>
<key id="key_handleBackspace" keycode="VK_BACK" command="cmd_handleBackspace"/> <key keycode="VK_BACK" command="cmd_handleBackspace"/>
<key id="key_handleShiftBackspace" keycode="VK_BACK" command="cmd_handleShiftBackspace" modifiers="shift"/> <key keycode="VK_BACK" command="cmd_handleShiftBackspace" modifiers="shift"/>
#ifndef XP_MACOSX #ifndef XP_MACOSX
<key id="goBackKb" keycode="VK_LEFT" command="Browser:Back" modifiers="alt"/> <key id="goBackKb" keycode="VK_LEFT" command="Browser:Back" modifiers="alt"/>
<key id="goForwardKb" keycode="VK_RIGHT" command="Browser:Forward" modifiers="alt"/> <key id="goForwardKb" keycode="VK_RIGHT" command="Browser:Forward" modifiers="alt"/>

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