Граф коммитов

459 Коммитов

Автор SHA1 Сообщение Дата
Doug Thayer 38b58e62b2 Bug 1690925 - Don't animate the skeleton UI if we're in a fast startup r=mconley,emalysz
This avoids paying a cost for animating the skeleton UI for faster startups.
Slow startups don't seem to be affected, given the data available. This is
likely due to slow startups being dominated by IO.

Differential Revision: https://phabricator.services.mozilla.com/D104118
2021-02-05 16:43:02 +00:00
Mike Hommey 34b72664d0 Bug 1598533 - Add support for %t modifier in PrintfTarget. r=nika,Gankra
Differential Revision: https://phabricator.services.mozilla.com/D103731
2021-02-02 20:16:55 +00:00
Mike Hommey afe55d2f87 Bug 1689279 - Fix clang-tidy warnings in Printf.cpp. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D103264
2021-02-02 21:18:06 +00:00
Mike Hommey 88b97ce29a Bug 1686831 - Use double-conversion for mozilla::PrintfTarget::cvt_f. r=nika
This makes mozilla::PrintfTarget consistent across all locales (not
printing e.g. "," instead of "." for the decimal point in floats in some
locales)

This implementation passes all the glibc tests in stdio-common/tfformat.c
except two tests because of the difference in how values like e.g 0.25 are
rounded. Printf in glibc and on MacOS, as well as Rust std::fmt, round to
nearest, ties to even. Double-conversion, as well as printf on Windows
and conversion functions in ECMAScript round to nearest, ties away from
zero.

The standard for printf says rounding is implementation-defined so
either way is technically correct.

Differential Revision: https://phabricator.services.mozilla.com/D102699
2021-01-29 04:25:54 +00:00
Mike Hommey c90777d4bf Bug 1686831 - Still apply fillers when no numbers are printed. r=Gankra
The standard for printf says that for integers, the result of converting
zero with an explicit precision of zero shall be no characters. But
flags and width still need to apply.

Differential Revision: https://phabricator.services.mozilla.com/D102696
2021-01-28 09:48:50 +00:00
Mike Hommey 89da5c6b52 Bug 1686831 - Add support for %F and %G, and properly support %n$E. r=nika,Gankra
%F and %G are the same as %f and %g, but using caps for the exponent
indicator, and for "inf"/"nan" for infinity and NaN.

%n$E is the same as %E, but taking the nth argument.

Differential Revision: https://phabricator.services.mozilla.com/D102695
2021-01-28 09:48:43 +00:00
Csoregi Natalia 8db3ebb5da Backed out 9 changesets (bug 1686831) for sanitizer failures on nsTSubstring.cpp. CLOSED TREE
Backed out changeset 0e03d508c8d4 (bug 1686831)
Backed out changeset cf6dd6eab427 (bug 1686831)
Backed out changeset 308000f1e14b (bug 1686831)
Backed out changeset c4d470be0184 (bug 1686831)
Backed out changeset 9751918b1ccb (bug 1686831)
Backed out changeset dd9b7e71dcfb (bug 1686831)
Backed out changeset 486a184530a7 (bug 1686831)
Backed out changeset b64d3e89bf68 (bug 1686831)
Backed out changeset dcc6396e455a (bug 1686831)
2021-01-28 09:55:28 +02:00
Mike Hommey 210911c78c Bug 1686831 - Use double-conversion for mozilla::PrintfTarget::cvt_f. r=nika
This makes mozilla::PrintfTarget consistent across all locales (not
printing e.g. "," instead of "." for the decimal point in floats in some
locales)

This implementation passes all the glibc tests in stdio-common/tfformat.c
except two tests because of the difference in how values like e.g 0.25 are
rounded. Printf in glibc and on MacOS, as well as Rust std::fmt, round to
nearest, ties to even. Double-conversion, as well as printf on Windows
and conversion functions in ECMAScript round to nearest, ties away from
zero.

The standard for printf says rounding is implementation-defined so
either way is technically correct.

Differential Revision: https://phabricator.services.mozilla.com/D102699
2021-01-28 04:56:57 +00:00
Mike Hommey c776e2a4de Bug 1686831 - Still apply fillers when no numbers are printed. r=Gankra
The standard for printf says that for integers, the result of converting
zero with an explicit precision of zero shall be no characters. But
flags and width still need to apply.

Differential Revision: https://phabricator.services.mozilla.com/D102696
2021-01-27 01:06:44 +00:00
Mike Hommey 4c520112c0 Bug 1686831 - Add support for %F and %G, and properly support %n$E. r=nika,Gankra
%F and %G are the same as %f and %g, but using caps for the exponent
indicator, and for "inf"/"nan" for infinity and NaN.

%n$E is the same as %E, but taking the nth argument.

Differential Revision: https://phabricator.services.mozilla.com/D102695
2021-01-27 01:06:22 +00:00
Doug Thayer c22b2b6c3f Bug 1687561 - Disable the skeleton UI permanently-ish if we crash during it r=mconley,emalysz
This will disable the skeleton UI if we crash while setting it up, and further
the error will propagate up and get reported via telemetry on the next run.
This is important because we don't have anything like the crash reporter set up
by the time we want to start showing the skeleton UI.

Differential Revision: https://phabricator.services.mozilla.com/D102355
2021-01-26 16:10:28 +00:00
Doug Thayer bfdaa1612c Bug 1686301 - Report errors in skeleton UI via telemetry r=mconley,emalysz
This is, for the most part, just a large refactor of the skeleton UI stuff to
support coarse-grained error reporting via telemetry. There are a few slight
changes in how we handle some errors. For example, if CreateWindow fails, we
will now bail out and report the failure. The flow for the happy path, however,
should remain unchanged.

Differential Revision: https://phabricator.services.mozilla.com/D102098
2021-01-26 16:10:20 +00:00
Emma Malysz 471404aa23 Bug 1686374, adjust margins if bookmarks toolbar is shown r=dthayer
Differential Revision: https://phabricator.services.mozilla.com/D101647
2021-01-22 20:59:21 +00:00
Emma Malysz c03e8de87c Bug 1686558, adjust tabbar and factor in the top border r=dthayer
Differential Revision: https://phabricator.services.mozilla.com/D101649
2021-01-19 06:12:11 +00:00
Molly Howell d625812205 Bug 1687038 - Disable the skeleton UI when the headless mode environment variable is set. r=dthayer
Differential Revision: https://phabricator.services.mozilla.com/D102040
2021-01-15 21:51:19 +00:00
Emma Malysz ba5a035505 Bug 1686373, adjust chrome content divider color for light theme and urlbar border color for Skeleton UI r=dthayer
Differential Revision: https://phabricator.services.mozilla.com/D101520
2021-01-15 17:04:17 +00:00
Toshihito Kikuchi 7545ed9378 Bug 1684532 - Detect injected dependent modules in NtMapViewOfSection. r=mhowell
This patch is to improve the way to detect an injected dependent module for
automatic DLL blocking (bug 1659438).

In the previous version, we created a list of dependent modules in the launcher
process and shared it with other processes via the shared section.  However, it
was not compatible with third-party applications who tamper the Import Table and
revert it in the injected module's DllMain (bug 1682834) because we parsed the
Import Table in the launcher process after it was reverted.

With this patch, we check the Import Table in `patched_NtMapViewOfSection`,
so we can see tampering before it's reverted.  More specifically, we create
a list of dependent modules in the browser process as below.

1. The launcher process creates a section object and initializes
   the kernel32.dll's functions in it.

2. The launcher process transfers a writable handle of the shared
   section to the browser process.

3. In the browser process, if an injected dependent module is being
   mapped by `NtMapViewOfSection`, we add its NT path to the shared
   section and block it with `REDIRECT_TO_NOOP_ENTRYPOINT`.

4. The `main` function of the browser process converts the writable
   handle of the shared section into a readonly handle.

5. The browser process transfers a readonly handle of the shared
   section to a sandbox process.

Since automatic DLL blocking may still cause a compat issue like bug 1682304,
we activate it only in Nightly for now.

Differential Revision: https://phabricator.services.mozilla.com/D101460
2021-01-13 15:13:18 +00:00
Brindusan Cristian 07342ce091 Backed out changeset a4bf5887fc2a (bug 1680402) for being the most likely cause of bug 1686387. a=backout 2021-01-13 06:30:08 +02:00
Paul Adenot b8fa268285 Bug 1205985 - Implement something to get the process uptime with and without the time the device was suspended. r=haik,dmajor,jld
Differential Revision: https://phabricator.services.mozilla.com/D99138
2021-01-12 12:34:59 +00:00
Jeff Muizelaar b19b4aa8ba Bug 1680402. Use stderr in printf_stderr instead of reopening fd 2. r=glandium
Currently, printf_stderr doesn't show up when running with ./mach run.
This is because we run with -attach-console and that redirects stderr
to a different file descriptor using freopen in UseParentConsole.

The change from just using stderr directly happened in bug 340443 and was done
to avoid some linking issues. That problem doesn't seem to apply anymore so you'd
expect we'd be able to go back to the straightforward implemention that works even
if stderr has been redirected. Unforunately, Windows takes not buffering
stderr very seriously and fprintf will write out the results character
by character. This can cause log output lines to be intermixed which
breaks log parsing in CI. We keep using fdopen to create a new FILE*
that's buffered but instead of hard coding fd 2, we get the actual fd
that corresponds to stderr using fileno.

The mozglue implementation was cargo culted from xpcom, so we update it
as well.

Differential Revision: https://phabricator.services.mozilla.com/D98550
2021-01-12 14:54:48 +00:00
Mihai Alexandru Michis f12a97c159 Backed out 3 changesets (bug 1205985) for causing xpcshell failures in test_TelemetrySession.js
CLOSED TREE

Backed out changeset f82f5070bee5 (bug 1205985)
Backed out changeset 89b03879ce7d (bug 1205985)
Backed out changeset 9ba60febbcf8 (bug 1205985)
2021-01-11 13:44:23 +02:00
Paul Adenot 57e6014622 Bug 1205985 - Implement something to get the process uptime with and without the time the device was suspended. r=haik,dmajor,jld
Differential Revision: https://phabricator.services.mozilla.com/D99138
2021-01-11 10:05:29 +00:00
Narcis Beleuzu 77844a7997 Backed out 2 changesets (bug 1681445) for causing Bug 1684265
Backed out changeset 3246c882a0da (bug 1681445)
Backed out changeset 38d0eb18ea7a (bug 1681445)
2020-12-28 18:41:59 +02:00
Masatoshi Kimura 05b71dcf6e Bug 1684110 - Stop using some 'A'-functions in mozglue/. r=mhowell
Depends on D100465

Differential Revision: https://phabricator.services.mozilla.com/D100466
2020-12-26 00:46:34 +00:00
Mike Hommey 4f4d6697ad Bug 1681445 - Add support for macOS in TimeStamp_posix.cpp. r=spohl
Now is already supported when CLOCK_MONOTONIC is supported, but
ComputeProcessUptime is not.  This shares the code with other BSDs, and
makes it look like the implementation in Timestamp_darwin.cpp.

Eventually, we'll remove the one from Timestamp_darwin.cpp.

Differential Revision: https://phabricator.services.mozilla.com/D100069
2020-12-18 15:48:55 +00:00
Emma Malysz 3fa05e5db6 Bug 1671603: display skeleton ui elements in correct position when RTL is enabled r=dthayer
Stores the value of intl.uidirection in the registry

Differential Revision: https://phabricator.services.mozilla.com/D99559
2020-12-22 17:22:07 +00:00
Doug Thayer 42a30153d4 Bug 1678488 - Only show skeleton UI if autoselecting profile r=mossop
So this is an ugly solution, but it was the best I could come up with. We do
not want to show the skeleton UI if we're going to show the profile manager,
and we *will* show the profile manager if StartWithLastProfile=0 is under
[General] in profiles.ini. Accordingly the only ways to do the correct thing
here are to try to mirror edits that firefox makes to the profiles.ini file
to the registry, or to simply read the profiles.ini file ourselves. There are
many ways that profiles.ini could get out of sync with the registry if we
tried to mirror its state there, so going straight to the source of truth
seemed the best option.

There is one case which is still not covered here: if there is no profile for
our install marked as Default=1, then we will show the profile manager. This
should only be possible if the user manually edits their profiles.ini file,
however, and then it should resolve itself after one run, so I don't consider
it a significant enough problem to jump through all the hoops we would need
to jump through to solve it.

Depends on D98525

Differential Revision: https://phabricator.services.mozilla.com/D98936
2020-12-17 16:44:01 +00:00
Emma Malysz 3f3b02f520 Bug 1677185, update margins in skeleton UI if menubar is shown r=dthayer
The menubar is permanently shown if autohide is false. If that is the case, we
insert space above the tab and ensure the tab does not have a left margin.
It's height can change, so we store the height in our registry.

Differential Revision: https://phabricator.services.mozilla.com/D97195
2020-12-10 20:29:03 +00:00
Doug Thayer 0411080eef Bug 1680258 - Ensure we properly clamp values to draw region r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D99110
2020-12-10 03:38:29 +00:00
Doug Thayer e5fb1240db Bug 1680258 - Don't try to draw rects with 0 width or height r=emalysz
This prevents an assertion from tripping below.

Differential Revision: https://phabricator.services.mozilla.com/D98476
2020-12-10 03:38:07 +00:00
Doug Thayer e2a2d43d90 Bug 1680258 - Check for problematic env vars for skeleton UI r=Gijs
Some env vars have effects similar to command line arguments which present
problems for the skeleton UI, and we want to treat these env vars similarly.

Differential Revision: https://phabricator.services.mozilla.com/D98475
2020-12-10 03:37:59 +00:00
Doug Thayer f0e16e432e Bug 1680258 - Improve skeleton UI arg checking for marionette r=Gijs
Previously, we implemented arg checking with `marionette` just carrying a free
pass, so we could let the arguments which typically come when running tests.
However, some marionette tests do like to play with arguments which we do not
want to get a free pass, such as -safe-mode. These changes allow just the
-profile argument through, as that is necessary for running tests.

Differential Revision: https://phabricator.services.mozilla.com/D98474
2020-12-10 03:37:52 +00:00
Mihai Alexandru Michis 822e8ce413 Backed out 7 changesets (bug 1680258) for causing osx mochitest timeouts.
CLOSED TREE

Backed out changeset 4b885b40c787 (bug 1680258)
Backed out changeset 8eb4ebbd13d0 (bug 1680258)
Backed out changeset 403d7441eb0c (bug 1680258)
Backed out changeset a253801a3155 (bug 1680258)
Backed out changeset 183d89827d4b (bug 1680258)
Backed out changeset 268d2aac128e (bug 1680258)
Backed out changeset e9b9f97caa6c (bug 1680258)
2020-12-09 23:03:09 +02:00
Doug Thayer 0cd0e25f37 Bug 1680258 - Ensure we properly clamp values to draw region r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D99110
2020-12-08 22:35:27 +00:00
Doug Thayer c5df59793d Bug 1680258 - Don't try to draw rects with 0 width or height r=emalysz
This prevents an assertion from tripping below.

Differential Revision: https://phabricator.services.mozilla.com/D98476
2020-12-08 22:35:26 +00:00
Doug Thayer ad7c418754 Bug 1680258 - Check for problematic env vars for skeleton UI r=Gijs
Some env vars have effects similar to command line arguments which present
problems for the skeleton UI, and we want to treat these env vars similarly.

Differential Revision: https://phabricator.services.mozilla.com/D98475
2020-12-08 22:35:25 +00:00
Doug Thayer 227ae0c840 Bug 1680258 - Improve skeleton UI arg checking for marionette r=Gijs
Previously, we implemented arg checking with `marionette` just carrying a free
pass, so we could let the arguments which typically come when running tests.
However, some marionette tests do like to play with arguments which we do not
want to get a free pass, such as -safe-mode. These changes allow just the
-profile argument through, as that is necessary for running tests.

Differential Revision: https://phabricator.services.mozilla.com/D98474
2020-12-08 22:35:25 +00:00
Doug Thayer 1772475d1b Bug 1672789 - Only allow one skeleton UI per instance of an install r=mhowell,cmartin
We don't want to show the skeleton UI if there is already an instance of
Firefox running for that install. Accordingly, we implement something
similar to the profile lock, acquiring exclusive access to
~/AppData/Local/Mozilla/Firefox/SkeletonUILock-<installHash>. If we do not do
this, then when a user clicks firefox.exe while an existing instance is
running, under default conditions we will open the skeleton UI, then
almost immediately terminate and send a message to the existing instance to
open a new window.

Differential Revision: https://phabricator.services.mozilla.com/D98525
2020-12-08 19:23:10 +00:00
David Major c0208a72b1 Bug 1681123 - Bump mingw-w64 revision to fix _aligned_malloc in clang 12 r=tjr
clang 12 (specifically https://reviews.llvm.org/D91379) made some refactorings to libc++ that exposed a problem in the MinGW headers. That has now been fixed upstream.

In the meantime the headers also gained definitions for ProcessPayloadRestrictionPolicy, so we can remove our workaround for that.

Differential Revision: https://phabricator.services.mozilla.com/D98945
2020-12-07 17:55:27 +00:00
Razvan Maries c3c2eaa18e Backed out changeset 975163dad54f (bug 1680402) for causing leaks. CLOSED TREE 2020-12-04 07:06:30 +02:00
Jeff Muizelaar 62e7969d1a Bug 1680402. Use stderr in printf_stderr instead of reopening fd 2. r=glandium
Currently, printf_stderr doesn't show up when running with ./mach run.
This is because we run with -attach-console and that redirects stderr
to a different file descriptor using freopen in UseParentConsole.

The change from just using stderr directly happened in bug 340443 and was done
to avoid some linking issues. That problem doesn't seem to apply anymore so we
should be able to go back to the straightforward implemention that works even
if stderr has been redirected. The mozglue implementation was cargo culted from
xpcom, and there wasn't a reason other than that for the fdopen(dup()) there.

Differential Revision: https://phabricator.services.mozilla.com/D98550
2020-12-04 02:46:57 +00:00
Simon Giesecke 8fc9b0ee7c Bug 1677284 - Fix Windows AARch64 bustage. a=bustage-fix
CLOSED TREE

Differential Revision: https://phabricator.services.mozilla.com/D97884
2020-11-23 16:54:12 +00:00
Sylvestre Ledru bebb9f9181 Bug 1519636 - Reformat with clang-format-11 to the Google coding style r=andi,sg,geckoview-reviewers,snorp
It is bringing some minor changes

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D90795
2020-11-18 09:05:59 +00:00
Doug Thayer 78cca3abfe Bug 1674389 - Implement rounded borders on Skeleton UI rects r=mstange,jrmuizel
I'm hoping that the comments in the code are sufficient documentation of this,
but here is a quick overview. The mockup we got from design has rounded rects
in it, and bordered rounded rects in it, so we need to support drawing those.
Initially we tried using the RoundRect function in GDI. However, 1) GDI doesn't
support anti-aliasing, which is unfortunately noticeable, 2) we were
observing strange issues with only some of the corners being rounded with
RoundRect at higher radii / stroke widths. 3) drawing on top of things drawn
with RoundRect would be complicated and inefficient unless we switched
everything over to GDI calls.

As it stands this drawing code is platform agnostic, assuming we have a way of
blitting a raw bitmap to the screen on a given platform, which is a nice trait
to have and makes me think twice about switching all of the drawing over to
direct GDI calls.

Differential Revision: https://phabricator.services.mozilla.com/D95317
2020-11-13 20:39:10 +00:00
Mihai Alexandru Michis 8bead54135 Backed out changeset 1482b642c46a (bug 1674389) for causing spidermonkey failures in PreXULSkeletonUI.cpp
CLOSED TREE
2020-11-13 22:17:26 +02:00
Doug Thayer c6153cac38 Bug 1674389 - Implement rounded borders on Skeleton UI rects r=mstange,jrmuizel
I'm hoping that the comments in the code are sufficient documentation of this,
but here is a quick overview. The mockup we got from design has rounded rects
in it, and bordered rounded rects in it, so we need to support drawing those.
Initially we tried using the RoundRect function in GDI. However, 1) GDI doesn't
support anti-aliasing, which is unfortunately noticeable, 2) we were
observing strange issues with only some of the corners being rounded with
RoundRect at higher radii / stroke widths. 3) drawing on top of things drawn
with RoundRect would be complicated and inefficient unless we switched
everything over to GDI calls.

As it stands this drawing code is platform agnostic, assuming we have a way of
blitting a raw bitmap to the screen on a given platform, which is a nice trait
to have and makes me think twice about switching all of the drawing over to
direct GDI calls.

Differential Revision: https://phabricator.services.mozilla.com/D95317
2020-11-13 19:36:50 +00:00
Emma Malysz bf453ef8eb Bug 1665461: reflect the correct colors for default themes in the skeleton UI. r=dthayer
This patch supports a skeleton UI for default, light, and dark themes.
It is not enabled for apenglow or any custom themes.

This also takes into account the system theme. If the user has the default
theme selected and is in dark mode, we override the theme and present the
dark theme skeleton UI.

Differential Revision: https://phabricator.services.mozilla.com/D96230
2020-11-12 23:56:44 +00:00
Bogdan Tara e63d1b0d21 Backed out changeset 9c13c984601a (bug 1665461) for browser_preXULSkeletonUIRegistry.js failures CLOSED TREE 2020-11-12 20:49:21 +02:00
Emma Malysz 3e7bd6c9f4 Bug 1665461: reflect the correct colors for default themes in the skeleton UI. r=dthayer
This patch supports a skeleton UI for default, light, and dark themes.
It is not enabled for apenglow or any custom themes.

This also takes into account the system theme. If the user has the default
theme selected and is in dark mode, we override the theme and present the
dark theme skeleton UI.

Differential Revision: https://phabricator.services.mozilla.com/D96230
2020-11-12 16:05:47 +00:00
Toshihito Kikuchi dacc9d3479 Bug 1659438 - Part3: Add an array of the dependent modules paths to SharedSection. r=mhowell
This patch adds a list of the executable's dependent module's path to SharedSection
as an array of the offset to a string and a string buffer.  A following patch will
use this data from the browser process and the sandboxed processes.

Depends on D96283

Differential Revision: https://phabricator.services.mozilla.com/D96284
2020-11-10 20:52:00 +00:00