Commit Graph
453 Commits
Author SHA1 Message Date
Makoto Kato 709c8ad35a Bug 1546267 - Detect system locale/timezone change. r=geckoview-reviewers,owlish
We should notify system locale and timezone of changes to Gecko.

Differential Revision: https://phabricator.services.mozilla.com/D218514
2024-08-27 08:40:58 +00:00
Mike Hommey 32831b48cc Bug 1897317 - Rename MOZ_ANDROID_HISTORY to MOZ_GECKOVIEW_HISTORY. r=firefox-build-system-reviewers,geckoview-reviewers,nalexander,owlish
Differential Revision: https://phabricator.services.mozilla.com/D210743
2024-05-17 00:29:35 +00:00
sotaro da674bd3c0 Bug 1896780 - Change IsGpuProcessEnabled() as to complete soon r=gfx-reviewers,bradwerth,jnicol
config state of gfx::Feature::GPU_PROCESS is mirrored to gfx::gfxVars::GPUProcessEnabled(). It is threadsafe.

Differential Revision: https://phabricator.services.mozilla.com/D210386
2024-05-16 00:06:33 +00:00
Chris H-C 9e8450d739 Bug 1884526 - Remove GV support from Telemetry r=TravisLong,Dexter,owlish,geckoview-reviewers
This is actually the removal of two different deprecated geckoview adapters:
GV Persistence, and GV Streaming Telemetry.

GVP has been out of use for four years. GVST has had all of its data migrated
to direct Glean use back in February and has been deprecated for two versions.

Differential Revision: https://phabricator.services.mozilla.com/D207475
2024-04-18 17:24:04 +00:00
Makoto Kato aa4499c788 Bug 1586471 - Part 2. Implement nsDragService on GeckoView. r=geckoview-reviewers,amejiamarmol
This implementation supports
- HTML drag & drop API.
- Drop and drop for text/plain or text/html from/to external application.

Differential Revision: https://phabricator.services.mozilla.com/D197330
2024-01-28 07:49:53 +00:00
Kershaw Chang 86ab7691ee Bug 1543990 - Simplify nsISpeculativeConnect API, r=necko-reviewers,geckoview-reviewers,search-reviewers,valentin,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D179066
2023-06-01 09:46:12 +00:00
Jamie Nicol 329cb92b40 Bug 1824083 - Remove previous attempts to detect and work around invalid Surface bug. r=gfx-reviewers,geckoview-reviewers,nical,m_kato
The detection is inadequate and the workaround does not work on all
versions of Android. Later patches in this series will replace this
with something better.

Differential Revision: https://phabricator.services.mozilla.com/D176719
2023-05-10 15:50:21 +00:00
Sandor Molnar 62ec74fbb0 Backed out 4 changesets (bug 1824083) for causing build bustages in include/mozilla/webrender/RenderCompositorOGLSWGL.h CLOSED TREE
Backed out changeset 7c1be037e345 (bug 1824083)
Backed out changeset bf5c5929ef7b (bug 1824083)
Backed out changeset 6fad491b84be (bug 1824083)
Backed out changeset 57ae9c87c467 (bug 1824083)
2023-05-10 18:01:13 +03:00
Jamie Nicol 56d69e9b99 Bug 1824083 - Remove previous attempts to detect and work around invalid Surface bug. r=gfx-reviewers,geckoview-reviewers,nical,m_kato
The detection is inadequate and the workaround does not work on all
versions of Android. Later patches in this series will replace this
with something better.

Differential Revision: https://phabricator.services.mozilla.com/D176719
2023-05-10 14:44:50 +00:00
Jamie Nicol c4a22f3066 Bug 1772839 - Work around compositor being resumed with abandoned Surfaces. r=geckoview-reviewers,owlish
On some Android devices (predominantly Huawei devices running Android
9 or below) we are seeing large numbers of crashes due to the
compositor being unable to create an EGL surface to render in to. From
local testing, this appears to be due to the Surface we are being
provided from the SurfaceView being in an "abandoned"
state. Presumably this is due to an operating system bug - the Surface
is valid at the time of the surfaceChanged() callback, but becomes
abandoned moments later despite surfaceDestroyed() not being called.

We are able to detect when the Surface is in such a state from C++
code by calling ANativeWindow_getWidth(), as that will return a
negative value to indicate an error.

This patch uses this method to check whether the Surface is in such a
state prior to resuming the compositor. If so, rather than immediately
resuming the compositor it instead toggles the SurfaceView's
visibility. This tricks the SurfaceView in to providing a new (and
hopefully valid) Surface, which will in turn resume the compositor via
the surfaceChanged callback.

Differential Revision: https://phabricator.services.mozilla.com/D151479
2022-07-13 15:38:51 +00:00
Makoto Kato 7fa5d58a6b Bug 1596164 - Use PR_Now instead of location service's acquired time. r=geckoview-reviewers,agi
`android.location.Location.getTime()` will return the acquired location time
that depends on location service. But `maximumAge` will be calculated by
current time (`PR_Now()`). So if the acquired time is old time,
`nsGeolocationRequest::SendLocation` won't send the location due to too old
(`isTooOld=true` in `nsGeolocationRequest::SendLocation`).

Like other platforms, we should pass PR_Now as the location time instead.

Also, GVE sometimes hits debug assertion since heading and/or speed aren't
expected value, so this patch fixes this situation.

Differential Revision: https://phabricator.services.mozilla.com/D148452
2022-06-14 04:20:42 +00:00
Jamie Nicol 53e5256e21 Bug 1755381 - Avoid relaunching GPU process immediately on Android if app is in background. r=agi,aosmond
If the android system kills the GPU process to free memory while the
app is in the background, then we want to avoid immediately restarting
the GPU process.

To achieve this, we make GPUProcessManager keep track of whether it is
in the foreground or background. If HandleProcessLost() gets called
while in the background then we destroy the existing compositor
sessions as before, but return early instead of immediately
relaunching the process. If the process has not been launched when the
app later gets foregrounded then we do so then.

The final part of HandleProcessLost(), which reinitializes the content
bridges and emits the "compositor-reinitialized" signal, has been
moved to a new function ReinitializeRendering(). If the GPU process
has been disabled, this gets called as-before at the end of
HandleProcessLost(). When the GPU process is enabled, however, we now
call it from OnProcessLaunchComplete(), so that it gets called
regardless of whether the process is launched immediately or after a
delay.

While we're here, rename the functions RebuildRemoteSessions() and
RebuildInProcessSessions() to DestroyRemoteCompositorSessions() and
DestroyInProcessCompositorSessions(), to better reflect what they
actually do: the "rebuilding" part occurs later on. Also update the
mega-comment documenting the restart sequence, as it was somewhat
outdated.

In case a caller of EnsureGPUReady() gets called before the foreground
signal arrives (eg in nsBaseWidget::CreateCompositorSession() due to a
refresh tick paint), make EnsureGPUReady() launch the GPU process
itself if the GPU process is enabled but not yet launched. As a
consequence, to avoid launching the GPU process unnecessarily, change
a couple callers of EnsureGPUReady() to simply check whether the
process is enabled instead.

Additionally, guard against a null pointer deref if the compositor has
been destroyed when the widget receives a memory pressure event. This
is now more likely to occur as there may be a gap between the
compositor being destroyed and recreated.

Differential Revision: https://phabricator.services.mozilla.com/D139042
2022-02-22 15:59:13 +00:00
Emilio Cobos Álvarez f7c36a8d26 Bug 1754858 - Simplify screen orientation API implementation. r=smaug,m_kato,geckoview-reviewers
Make the ScreenOrientation part of the screen struct, as it should. Stop
using HAL to propagate just screen orientation updates, use the more
general screen manager.

Instead of HAL observers, add a simple observer service notification,
and clean a bunch of the code.

This will simplify bug 1754802 a bit, and is generally simpler.
Shouldn't change behavior. I've tested the events and some common
orientation locking use cases like Youtube, and they behave the same.

Differential Revision: https://phabricator.services.mozilla.com/D138477
2022-02-15 20:22:54 +00:00
Makoto Kato 6049553892 Bug 1753919 - AndroidWebAuthnTokenManager uses GeckoResult directly instead of callback. r=geckoview-reviewers,agi
Since WebAuthnTokenManager uses GeckoReuslt, we can remove callback of WebAuthnTokenManager.

Differential Revision: https://phabricator.services.mozilla.com/D137973
2022-02-09 06:59:52 +00:00
Jamie Nicol b0afb8051b Bug 1742569 - Create RemoteSurfaceAllocator in either parent or GPU process. r=agi,gfx-reviewers,aosmond
On Android we use SurfaceTextures and Surfaces to render video and
webgl. These are allocated by content processes using the
SurfaceAllocator, which connects to a SurfaceAllocatorService running
in the parent process. The content process renders in to the
Surface (by attaching it to a media codec, or creating a GL context
with it for webgl), and the compositor renders the output
SurfaceTexture in the parent process.

With the GPU process this poses a difficulty, as we need to allocate
SurfaceTextures in either the parent process or GPU process, depending
on whether the GPU process is enabled. Additionally, we don't want to
run extra android Services in child processes such as the GPU process,
as process management is tricky and we want to contain it to a single
place.

This patch makes it so that SurfaceAllocatorService is not really an
android Service any more, just an singleton object which implements
the ISurfaceAllocator interface. It is renamed to
RemoteSurfaceAllocator to reflect that. A new method
getProcessManager() is added to the IProcessManager interface, which
child processes can use to fetch the surface allocator. It returns
either the parent process instance, or fetches the instance from the
GPU process using IChildProcess.getSurfaceAllocator().

Differential Revision: https://phabricator.services.mozilla.com/D133107
2022-01-14 16:20:59 +00:00
Marian-Vasile Laza c1863147d9 Backed out changeset 65f8b0434e1e (bug 1708580) for causing Btime failures. CLOSED TREE 2021-08-14 00:44:48 +03:00
Aaron Klotz c59e370c28 Bug 1708580: When the "quit-application" event fires in GeckoView, annotate the GeckoThread.State and force crash on nightly and early beta; r=agi
AFAICT, all roads lead though [`nsAppStartup::Quit`](https://searchfox.org/mozilla-central/rev/0fec57c05d3996cc00c55a66f20dd5793a9bfb5d/toolkit/components/startup/nsAppStartup.cpp#448),
which is responsible for firing the `"quit-application"` observer notification
and then posting the `nsAppExitEvent` that causes the `nsAppShell` to break out
of its event loop and proceed with shutdown.

If we trigger a native crash in the observer, we should be able to capture a
symbolicated stack of whatever called `Quit`. We might as well force-crash
anyway, since AC is going to throw an exception regardless...

Before we crash, we annotate the current `GeckoThread` state to enable us to
find out whether we were fully initialized at the time of the shutdown.

Differential Revision: https://phabricator.services.mozilla.com/D122256
2021-08-13 15:45:37 +00:00
Dorel Luca 356e8b8c86 Backed out changeset 27e6d1f6f6c1 (bug 1708580) on Dev's request. CLOSED TREE 2021-08-12 22:30:34 +03:00
Aaron Klotz cf9893d8f2 Bug 1708580: When the "quit-application" event fires in GeckoView, annotate the GeckoThread.State and force crash on nightly and early beta; r=agi
AFAICT, all roads lead though [`nsAppStartup::Quit`](https://searchfox.org/mozilla-central/rev/0fec57c05d3996cc00c55a66f20dd5793a9bfb5d/toolkit/components/startup/nsAppStartup.cpp#448),
which is responsible for firing the `"quit-application"` observer notification
and then posting the `nsAppExitEvent` that causes the `nsAppShell` to break out
of its event loop and proceed with shutdown.

If we trigger a native crash in the observer, we should be able to capture a
symbolicated stack of whatever called `Quit`. We might as well force-crash
anyway, since AC is going to throw an exception regardless...

Before we crash, we annotate the current `GeckoThread` state to enable us to
find out whether we were fully initialized at the time of the shutdown.

Differential Revision: https://phabricator.services.mozilla.com/D122256
2021-08-12 19:12:49 +00:00
Agi Sferro 8c94daa001 Bug 1701269 - Remove PrefsHelper. r=owlish
Differential Revision: https://phabricator.services.mozilla.com/D109927
2021-05-20 22:03:07 +00:00
Valentin Gosu 317c45feef Bug 1694662 - Remove cacheservice from android appshell r=geckoview-reviewers,kershaw,agi
Differential Revision: https://phabricator.services.mozilla.com/D106460
2021-04-30 07:20:26 +00:00
Agi Sferro f6bb49db1c Bug 1558103 - Don't try to dispatch XPCOM events during shutdown. r=aklotz
XPCOM complains when events are dispatched during shutdown. Since we're
shutting down, there's no really any point in dispatching these messages
anyway, so we can safely ignore them.

Differential Revision: https://phabricator.services.mozilla.com/D113203
2021-04-26 20:49:27 +00:00
Agi Sferro 3f2dd3aace Bug 1567341 - Don't listen to xpcom-shutdown twice in nsAppShell. r=esawin
nsBaseAppShell already listens to xpcom-shutdown and calls |Exit| when it
receives it so we don't need to also listen for it in nsAppShell (which causes
two calls to xpcom-shutdown instead of one).

Differential Revision: https://phabricator.services.mozilla.com/D106209
2021-03-24 21:49:37 +00:00
Alexandru Michis 14e1db974b Backed out 24 changesets (bug 1567341) for causing xpcshell failures in test_telemetry.js
CLOSED TREE

Backed out changeset deb795c7d0ed (bug 1567341)
Backed out changeset 62d24a3e5e33 (bug 1567341)
Backed out changeset 1185cabd94e0 (bug 1567341)
Backed out changeset 73a4ae419261 (bug 1567341)
Backed out changeset b6eb111329f3 (bug 1567341)
Backed out changeset 0dc0bfedc042 (bug 1567341)
Backed out changeset 9dca635e41d7 (bug 1567341)
Backed out changeset c34928580933 (bug 1567341)
Backed out changeset f9ba384bb407 (bug 1567341)
Backed out changeset ec25c2df380e (bug 1567341)
Backed out changeset 9e8ea542b51e (bug 1567341)
Backed out changeset 3dc62863a028 (bug 1567341)
Backed out changeset 6c104f865540 (bug 1567341)
Backed out changeset c422ca4207ea (bug 1567341)
Backed out changeset e3df748ed62f (bug 1567341)
Backed out changeset 9d1f27796a97 (bug 1567341)
Backed out changeset 1d93ba23f809 (bug 1567341)
Backed out changeset 55652f6af6ed (bug 1567341)
Backed out changeset 9fb892955a88 (bug 1567341)
Backed out changeset 1cdd95c43416 (bug 1567341)
Backed out changeset 5a839d5e3e33 (bug 1567341)
Backed out changeset ea84b5749a27 (bug 1567341)
Backed out changeset dcb1ae146475 (bug 1567341)
Backed out changeset d72accc274ac (bug 1567341)
2021-03-24 23:37:43 +02:00
Agi Sferro cbbefd435e Bug 1567341 - Don't listen to xpcom-shutdown twice in nsAppShell. r=esawin
nsBaseAppShell already listens to xpcom-shutdown and calls |Exit| when it
receives it so we don't need to also listen for it in nsAppShell (which causes
two calls to xpcom-shutdown instead of one).

Differential Revision: https://phabricator.services.mozilla.com/D106209
2021-03-24 20:20:00 +00:00
Agi Sferro 9df5e4a34a Bug 1697844 - Remove unused Fennec telemetry code. r=esawin
Differential Revision: https://phabricator.services.mozilla.com/D108044
2021-03-24 20:06:24 +00:00
Alexandru Michis 3bba4a94fb Backed out 10 changesets (bug 1697844) for causing mpu failures in test_visualmetrics.py
CLOSED TREE

Backed out changeset 63b3268b0d2d (bug 1697844)
Backed out changeset 875b2aa342d9 (bug 1697844)
Backed out changeset 4fb528aaf7d5 (bug 1697844)
Backed out changeset 6ef5e1c9ca21 (bug 1697844)
Backed out changeset 430d6c940eb9 (bug 1697844)
Backed out changeset 7a306f28dc64 (bug 1697844)
Backed out changeset 871a40e2fc00 (bug 1697844)
Backed out changeset 083e9ce71d14 (bug 1697844)
Backed out changeset b53930a3f065 (bug 1697844)
Backed out changeset 24326d04dd37 (bug 1697844)
2021-03-24 21:59:28 +02:00
Agi Sferro 09ef42ac23 Bug 1697844 - Remove unused Fennec telemetry code. r=esawin
Differential Revision: https://phabricator.services.mozilla.com/D108044
2021-03-24 18:54:44 +00:00
Kagami Sascha Rosylight 589834d763 Bug 1699707 - Remove DeviceProximityEvent and UserProximityEvent r=agi,annevk,smaug
Note that this removes `window.ondeviceproximity` and `window.onuserproximity` which unexpectedly have been exposed unconditionally.

Differential Revision: https://phabricator.services.mozilla.com/D109160
2021-03-22 18:16:16 +00:00
Simon Giesecke 95c38cc6b8 Bug 1691913 - Rename nsBaseHashtable::Put to InsertOrUpdate. r=xpcom-reviewers,necko-reviewers,jgilbert,dragana,nika
This makes the naming more consistent with other functions called
Insert and/or Update. Also, it removes the ambiguity whether
Put expects that an entry already exists or not, in particular because
it differed from nsTHashtable::PutEntry in that regard.

Differential Revision: https://phabricator.services.mozilla.com/D105473
2021-02-26 09:11:46 +00:00
owlishDeveloper aa7444f3b1 Bug 1523577 - Don't initialize GeckoViewStateListener in GeckoThread if on a child process r=geckoview-reviewers,aklotz
Differential Revision: https://phabricator.services.mozilla.com/D105371
2021-02-17 20:34:01 +00:00
Gerald Squelart f25e1c0093 Bug 1691589 - Reduce reliance on GeckoProfiler.h when only labels (and maybe markers) are needed - r=necko-reviewers,geckoview-reviewers,sg,agi,florian
There are no code changes, only #include changes.
It was a fairly mechanical process: Search for all "AUTO_PROFILER_LABEL", and in each file, if only labels are used, convert "GeckoProfiler.h" into "ProfilerLabels.h" (or just add that last one where needed).
In some files, there were also some marker calls but no other profiler-related calls, in these cases "GeckoProfiler.h" was replaced with both "ProfilerLabels.h" and "ProfilerMarkers.h", which still helps in reducing the use of the all-encompassing "GeckoProfiler.h".

Differential Revision: https://phabricator.services.mozilla.com/D104588
2021-02-16 04:44:19 +00:00
Dave Townsend 08237760e9 Bug 1675329: Add an API for returning an exit code from the application. r=dthayer,necko-reviewers,dragana,nika
Callers can pass an exit code to nsIAppStartup::Quit and it will be returned from the process when
it exits.

Note that I have using uint16_t as the exit code because on Windows the exit code can be a uint and
elsewhere it is an int. A uint16_t will safely convert to either of those and no-one will ever need
more than 64k exit codes!

Differential Revision: https://phabricator.services.mozilla.com/D96857
2020-12-03 20:19:47 +00:00
Simon Giesecke 46908cfb51 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00
Markus Stange 48afb89b7a Bug 1676768 - Add some missing includes. r=geckoview-reviewers,snorp
Depends on D96792

Differential Revision: https://phabricator.services.mozilla.com/D96793
2020-11-12 16:11:58 +00:00
Markus Stange 1e9efd9c3d Bug 1676768 - Move WebAuthnTokenManager class definition into a header file, because nsAppShell.cpp calls WebAuthnTokenManager::Init(). r=geckoview-reviewers,snorp
This only happened to work because unified build included WebAuthnTokenManager.cpp
and nsAppShell.cpp into the same compilation unit.

Differential Revision: https://phabricator.services.mozilla.com/D96792
2020-11-12 16:12:10 +00:00
Marco Bonardo 2126d8e487 Bug 1626016 - Remove createFixupURI and move postData inside URIFixupInfo. r=Gijs,geckoview-reviewers,preferences-reviewers,snorp
Differential Revision: https://phabricator.services.mozilla.com/D93189
2020-10-13 10:20:16 +00:00
Simon Giesecke a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Haik Aftandilian ef28d0ee08 Bug 1632845 - Firefox gets stuck when quit from the dock if the user cancels quitting from a beforeunload prompt r=Gijs,spohl,necko-reviewers,geckoview-reviewers,dragana,agi
Return NSTerminateCancel from applicationShouldTerminate when the user chooses to "Stay on Page".

Differential Revision: https://phabricator.services.mozilla.com/D78839
2020-06-09 18:20:36 +00:00
Aaron Klotz 383ce64df3 Bug 1637452: Part 1 - Fix JNI includes in widget/android; r=geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D75364
2020-05-15 17:04:10 +00:00
Gerald Squelart e9549c4bd9 Bug 1609907 - Remove AUTO_PROFILER_THREAD_SLEEP before mozilla::CondVar waits - r=mstange
CondVar already calls `AUTO_PROFILER_THREAD_SLEEP`, which shouldn't be called recursively.

mozilla::Monitor also uses CondVar, so it shouldn't be surrounded by `AUTO_PROFILER_THREAD_SLEEP` either.

Depends on D72850

Differential Revision: https://phabricator.services.mozilla.com/D72851
2020-05-01 22:12:22 +00:00
Makoto Kato c301243632 Bug 1629759 - Remove unused dom.event.touch.coalescing.enabled preference. r=geckoview-reviewers,agi
No one seems to reference `dom.event.touch.coalescing.enabled` after landing Bug 1291373.
So remove it.

Differential Revision: https://phabricator.services.mozilla.com/D70794
2020-04-15 21:20:11 +00:00
Randall E. Barker d4cfaf04ff Bug 1626979 - Add GeckoView API for appending app notes to crash report. r=geckoview-reviewers,snorp,droeh
Differential Revision: https://phabricator.services.mozilla.com/D69662
2020-04-07 23:42:42 +00:00
James Willcox 07049af616 Bug 1619778 - Remove unused GeckoThread#waitOnGecko methods. r=geckoview-reviewers,aklotz
Differential Revision: https://phabricator.services.mozilla.com/D66584
2020-03-12 15:33:57 +00:00
Aaron Klotz c5883a0281 Bug 1595834: Make GeckoProcessManager interface e10s-multi aware; r=snorp
This patch does not change any of the *internals* of process management in
`GeckoProcessManager`, however it upgrades the interface in preparation for
such changes.

* We add a java equivalent to Gecko's `GeckoProcessType` enumeration;
* We add the `GeckoProcessType.Selector` class which will be used for
  identifying running content processes;
* We update `ContentParent::MarkAsDead` to use `GeckoProcessType.Selector` for
  indicating which process should be marked.

Differential Revision: https://phabricator.services.mozilla.com/D60539
2020-01-23 18:12:51 +00:00
Aaron Klotz b699bc81a5 Bug 1594820: Part 1 - Modify XPCOMEventTarget to accept method calls before JNI is ready; r=snorp
Since `XPCOMEventTarget` uses JNI, this patch makes it possible for consumers to
retrieve and invoke methods on one without needing to worry about whether JNI
is actually up yet.

To achieve this, we create the `IXPCOMEventTarget` interface, and observe that
both of its methods can be handled by a proxy if JNI is not ready:

* Calls to `dispatch` may be enqueued until JNI is up;
* Observe that, when JNI is not up yet, the result of `isOnCurrentThread`
  can never be `true`.

Once JNI is up and the event targets have been resolved, the proxies are
replaced with the real, concrete `XPCOMEventTarget`s and are no longer used for
the remainder of the Gecko instance's lifetime.

Differential Revision: https://phabricator.services.mozilla.com/D57837
2020-01-20 07:44:07 +00:00
Narcis Beleuzu ffffde7252 Backed out 4 changesets (bug 1594820) for geckoview failures. CLOSED TREE
Backed out changeset 5bf29e6ca1e8 (bug 1594820)
Backed out changeset a6554cbe8a2f (bug 1594820)
Backed out changeset 9cc8d70c23bb (bug 1594820)
Backed out changeset b7ff66be3a86 (bug 1594820)
2020-01-10 03:16:20 +02:00
Aaron Klotz a342516fcb Bug 1594820: Part 1 - Modify XPCOMEventTarget to accept method calls before JNI is ready; r=snorp
Since `XPCOMEventTarget` uses JNI, this patch makes it possible for consumers to
retrieve and invoke methods on one without needing to worry about whether JNI
is actually up yet.

To achieve this, we create the `IXPCOMEventTarget` interface, and observe that
both of its methods can be handled by a proxy if JNI is not ready:

* Calls to `dispatch` may be enqueued until JNI is up;
* Observe that, when JNI is not up yet, the result of `isOnCurrentThread`
  can never be `true`.

Once JNI is up and the event targets have been resolved, the proxies are
replaced with the real, concrete `XPCOMEventTarget`s and are no longer used for
the remainder of the Gecko instance's lifetime.

Differential Revision: https://phabricator.services.mozilla.com/D57837
2020-01-09 21:39:31 +00:00
James Willcox 87f10dd09e Bug 1595176 - Don't wait for a window to finish GeckoView startup r=geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D57543
2019-12-18 20:22:22 +00:00
Gabriele Svelto f03cdb2b2d Bug 1600545 - Remove useless inclusions of header files generated from IDL files in modules/, netwerk/, parser/, security/, startupcache/, storage/, toolkit/, tools/, uriloader/, widget/, xpcom/ and xpfe/ r=Ehsan
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
2019-12-06 09:17:57 +00:00