This adds an asynchronous method to lock the startup files using the same
lock that we use during normal startup.
The profile service then uses this lock to gate access to the profiles.ini
files adding a method to async flush the entire database or in the case
that the on-disk database has changed a way to mergwe in some properties
about the current profile into the on-disk version.
Differential Revision: https://phabricator.services.mozilla.com/D222662
This adds an asynchronous method to lock the startup files using the same
lock that we use during normal startup.
The profile service then uses this lock to gate access to the profiles.ini
files adding a method to async flush the entire database or in the case
that the on-disk database has changed a way to mergwe in some properties
about the current profile into the on-disk version.
Differential Revision: https://phabricator.services.mozilla.com/D222662
This adds an asynchronous method to lock the startup files using the same
lock that we use during normal startup.
The profile service then uses this lock to gate access to the profiles.ini
files adding a method to async flush the entire database or in the case
that the on-disk database has changed a way to mergwe in some properties
about the current profile into the on-disk version.
Differential Revision: https://phabricator.services.mozilla.com/D222662
Allows sending a command line after startup. Also allows blocking the remoting services
attempt to raise the application to the foreground if desired.
Differential Revision: https://phabricator.services.mozilla.com/D207976
Currently the windows client sends the current process command line which is
potentially an issue since some of those arguments may have been consumed
already. It will also not support sending custom command lines after startup.
This also switches to sending the UTF-8 command line we already have since that
matches other platforms better and makes some arguments const.
Differential Revision: https://phabricator.services.mozilla.com/D216031
A lot of this dates back to when the remoting service was a more fully featured
protocol, now it is just added complication.
Differential Revision: https://phabricator.services.mozilla.com/D207974
Allows sending a command line after startup. Also allows blocking the remoting services
attempt to raise the application to the foreground if desired.
Differential Revision: https://phabricator.services.mozilla.com/D207976
Currently the windows client sends the current process command line which is
potentially an issue since some of those arguments may have been consumed
already. It will also not support sending custom command lines after startup.
This also switches to sending the UTF-8 command line we already have since that
matches other platforms better and makes some arguments const.
Differential Revision: https://phabricator.services.mozilla.com/D216031
A lot of this dates back to when the remoting service was a more fully featured
protocol, now it is just added complication.
Differential Revision: https://phabricator.services.mozilla.com/D207974
When one Firefox instance finishes starting up it releases the startup lock and
deletes the lock directory. Other instances that are waiting to startup are in
the meantime polling to acquire the lock but with the directory gone their next
attempt just throws a failure and so they assume they don't have the lock yet
and keep polling until they hit the five second timeout.
With this patch before each attempt to acquire the lock we make sure that the
lock directory exists first.
Differential Revision: https://phabricator.services.mozilla.com/D161075
When one Firefox instance finishes starting up it releases the startup lock and
deletes the lock directory. Other instances that are waiting to startup are in
the meantime polling to acquire the lock but with the directory gone their next
attempt just throws a failure and so they assume they don't have the lock yet
and keep polling until they hit the five second timeout.
With this patch before each attempt to acquire the lock we make sure that the
lock directory exists first.
Differential Revision: https://phabricator.services.mozilla.com/D161075
Using `dlsym` for `gdk_wayland_display_get_type` is a cleaner solution
to bug 1696319, allowing running with a GTK that lacks the Wayland
backend.
Also adds a symmetric implementation for `gdk_x11_display_get_type`,
which should help running without X11.
Differential Revision: https://phabricator.services.mozilla.com/D107406
Using `dlsym` for `gdk_wayland_display_get_type` is a cleaner solution
to bug 1696319, allowing running with a GTK that lacks the Wayland
backend.
Also adds a symmetric implementation for `gdk_x11_display_get_type`,
which should help running without X11.
Differential Revision: https://phabricator.services.mozilla.com/D107406
Firefox 84.0.1 crashes under Gentoo Linux if it is started in
Wayland mode and if it was compiled WITH Wayland support and
WITHOUT dbus support.
I traced down the problem to line 172 of
toolkit/components/remote/nsRemoteService.cpp:
nsresult rv = mRemoteServer->Startup(mProgram.get(), mProfile.get());
mRemoteServer is NULL and Firefox crashes.
This patch adds a NULL pointer check before that line.
See:
- Mozilla's Bugzilla, bug 1684365
- https://bugs.gentoo.org/762035
- https://forums.gentoo.org/viewtopic-t-1126235.html
Differential Revision: https://phabricator.services.mozilla.com/D101536
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.
find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
if [ -n "$interfaces" ]; then
if [[ "$interfaces" == *$'\n'* ]]; then
regexp="\("
for i in $interfaces; do regexp="$regexp$i\|"; done
regexp="${regexp%%\\\|}\)"
else
regexp="$interfaces"
fi
interface=$(basename "$path")
rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
if [ $hits -eq 0 ]; then
echo "Removing ${interface} from ${path2}"
grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
mv -f "$path2".tmp "$path2"
fi
done
fi
done
Differential Revision: https://phabricator.services.mozilla.com/D55444
This fixes the issue in a few redundant ways:
* nsProfileLock is made to properly clean itself up when destroyed.
* nsRemoteService makes sure the unlock when destroyed.
* nsAppRunner unlocks when a remote client has been found.
Differential Revision: https://phabricator.services.mozilla.com/D32360