Bug 1706383: Set process priority manager grace periods for GeckoView Nightly; r=geckoview-reviewers,agi

Because of the way the process priority manager works, a tab switch may alter
priorities like so:

1. User switches from `tab1` to `tab2`;
2. We drop `tab1`'s content process priority;
3. We raise `tab2`'s content process priority;

But if `tab1` and `tab2` live in the same content process, then not only is
the priority adjustment redundant, it gives Android an opportunity to kill
the content process between steps (2) and (3)!

By setting a brief grace period, the priority manager will wait a bit until
dropping priority of `tab1`:

1. User switches from `tab1` to `tab2`;
2. We start the grace period for dropping `tab1`'s priority;
3. We go to raise `tab2`'s priority, but since the content process is already
   foreground, this becomes a no-op;
4. Grace period expires for `tab1`, but we see that `tab2` is still using our
   content process, so the "drop" becomes a no-op.

Nightly only for now, we'll see how this affects tab kills.

Differential Revision: https://phabricator.services.mozilla.com/D114507
This commit is contained in:
Aaron Klotz 2021-05-06 17:36:52 +00:00
Родитель 016a4d3635
Коммит a50e0c2e71
1 изменённых файлов: 8 добавлений и 0 удалений

Просмотреть файл

@ -2305,12 +2305,20 @@
- name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
type: uint32_t
#if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
value: 3000
#else
value: 0
#endif
mirror: always
- name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
type: uint32_t
#if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
value: 3000
#else
value: 0
#endif
mirror: always
# Is support for HTMLElement.autocapitalize enabled?