Commit graph

101 commits

Author SHA1 Message Date
Olli Pettay
b27238627f Bug 1713365, don't try to bfcache if the session history entry already has a frameloader, r=peterv
The crash happens currently when there are more than one loading session history entries at the same time and when
the latter load then accesses current active entry, it has already the bfcached frameloader.

I have tried and failed to write a testcase for this. The Pernosco record is from running
https://searchfox.org/mozilla-central/source/devtools/client/webconsole/test/browser/browser_webconsole_message_categories.js
and the crash has happened when there is a race condition between a load initiated in the parent process and another load initiated in a child
process.

The patch tries to make the setup rather safe. If active entry has changed or it has gotten frameloader, don't try to bfcache.

Differential Revision: https://phabricator.services.mozilla.com/D116410
2021-06-03 20:34:24 +00:00
Nika Layzell
af56264610 Bug 1663757 - Part 2: Don't suspend webProgress on process switch, r=annyG,mattwoodrow
Previously, we would need to suspend progress events from the previous
BrowserParent, as otherwise we would receive STATE_STOP progress notifications
from the previous browser when it is destroyed, which would throw off frontend
code. With the new checks added by part 1, we will now catch these cases by
detecting that the current window global has changed, and we can get rid of this
explicit override.

Differential Revision: https://phabricator.services.mozilla.com/D105557
2021-03-09 15:29:40 +00:00
Olli Pettay
a46567f045 Bug 1696266, limit the load types which may cause the page to enter bfcache, r=peterv
The change to dom/base/nsFrameLoaderOwner.cpp is to log about the issues but still ensure we don't crash.

I'd prefer to not put error loads to bfcache.

Differential Revision: https://phabricator.services.mozilla.com/D107300
2021-03-09 13:42:43 +00:00
Olli Pettay
0d29b12841 Bug 1689601, Rename RemotenessChangeState to RemotenessChangeOptions, r=peterv
This addresses part of the review comment from https://phabricator.services.mozilla.com/D105229

Differential Revision: https://phabricator.services.mozilla.com/D106561
2021-03-02 12:13:21 +00:00
Olli Pettay
0d8dbfb17e Bug 1689601, evict frameloaders from bfcache (missing still the time based eviction), r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D105239
2021-03-02 12:13:20 +00:00
Olli Pettay
911d46a8b6 Bug 1689601, try to use bfcache for top level pages, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D105238
2021-03-02 12:13:20 +00:00
Olli Pettay
3df3621351 Bug 1689601, pass various states of remoteness change / browsing context swap using a helper struct, r=peterv
The name RemotenessChangeState uses same the convention as the related methods, even though there might
not be a remoteness change happening, only a browsing context switch. But the naming
inconsistency exists there even without any bfcache work.

RemotenessChangeState will be renamed to RemotenessChangeOptions in a followup.

Differential Revision: https://phabricator.services.mozilla.com/D105229
2021-03-02 12:13:16 +00:00
Mihai Alexandru Michis
87f481bf9a Backed out 16 changesets (bug 1689601) for causing cpp bustages in nsFrameLoader.
CLOSED TREE

Backed out changeset 6e5523a7210d (bug 1689601)
Backed out changeset 745eaa468c74 (bug 1689601)
Backed out changeset a594bd02b8b6 (bug 1689601)
Backed out changeset 0c5fe977ced6 (bug 1689601)
Backed out changeset 2fca23521891 (bug 1689601)
Backed out changeset 334aeb627855 (bug 1689601)
Backed out changeset 2b2081a15d67 (bug 1689601)
Backed out changeset 307bde43cc96 (bug 1689601)
Backed out changeset 04aadec67ce2 (bug 1689601)
Backed out changeset 701eccb34772 (bug 1689601)
Backed out changeset 278db692aa8b (bug 1689601)
Backed out changeset c261c243a64d (bug 1689601)
Backed out changeset 7e8022e5696a (bug 1689601)
Backed out changeset 6138bfc6c08d (bug 1689601)
Backed out changeset 63295b3a62d0 (bug 1689601)
Backed out changeset 6d02e59ddc51 (bug 1689601)
2021-03-02 13:15:10 +02:00
Olli Pettay
42a29f41de Bug 1689601, Rename RemotenessChangeState to RemotenessChangeOptions, r=peterv
This addresses part of the review comment from https://phabricator.services.mozilla.com/D105229

Differential Revision: https://phabricator.services.mozilla.com/D106561
2021-03-02 09:44:13 +00:00
Olli Pettay
07a607c53d Bug 1689601, evict frameloaders from bfcache (missing still the time based eviction), r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D105239
2021-03-02 09:44:13 +00:00
Olli Pettay
101955fa30 Bug 1689601, try to use bfcache for top level pages, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D105238
2021-03-02 09:44:12 +00:00
Olli Pettay
0b5b9fc66a Bug 1689601, pass various states of remoteness change / browsing context swap using a helper struct, r=peterv
The name RemotenessChangeState uses same the convention as the related methods, even though there might
not be a remoteness change happening, only a browsing context switch. But the naming
inconsistency exists there even without any bfcache work.

RemotenessChangeState will be renamed to RemotenessChangeOptions in a followup.

Differential Revision: https://phabricator.services.mozilla.com/D105229
2021-03-02 09:44:09 +00:00
Simon Giesecke
971b645fe3 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
Anny Gakhokidze
7804c5bdd9 Bug 1661833 - Fix duplicate OnStateChange events during process switches, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D96228
2020-11-19 23:21:04 +00:00
Henri Sivonen
96ae695458 Bug 1618386 - Add action ids to filter out stale active browsing context updates. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D94969
2020-11-16 19:16:20 +00:00
Sylvestre Ledru
9c192aa9ca Bug 1519636 - Reformat recent changes to the Google coding style r=andi
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D88713
2020-08-31 09:23:02 +00:00
Mihai Alexandru Michis
261d01524b Backed out changeset d0f173a90792 (bug 1519636) for causing bustages.
CLOSED TREE
2020-08-31 10:14:58 +03:00
Sylvestre Ledru
939dd426e6 Bug 1519636 - Reformat recent changes to the Google coding style r=andi
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D88713
2020-08-31 06:51:21 +00:00
Anny Gakhokidze
bd0938ed77 Bug 1589102 - Part 3: Enable about:blank loads to take place via DocumentChannel, r=mattwoodrow
In process selection logic, ensure that we don't use the original URI for
about:blank and instead use the result principal. If the about:blank load has a
null principal, then revert to using the original URI.

Also, remove an extra about:blank load when an nsFrameLoaderOwner is changing
remoteness to prevent races.

Differential Revision: https://phabricator.services.mozilla.com/D85081
2020-08-28 17:20:40 +00:00
Butkovits Atila
3bd0e5497c Backed out 10 changesets (bug 1589102) for failure at browser_saveHeapSnapshot_e10s_01.js CLOSED TREE
Backed out changeset 0d22ad297b19 (bug 1589102)
Backed out changeset 14bcaf2a452c (bug 1589102)
Backed out changeset 20905f91e2bb (bug 1589102)
Backed out changeset 29ee0fbe855f (bug 1589102)
Backed out changeset d1f6185030af (bug 1589102)
Backed out changeset 31949872cc1d (bug 1589102)
Backed out changeset ec04e1a20597 (bug 1589102)
Backed out changeset ffe8da473b91 (bug 1589102)
Backed out changeset 3b92f7306c64 (bug 1589102)
Backed out changeset b187548e258f (bug 1589102)
2020-08-05 21:47:50 +03:00
Anny Gakhokidze
1f4b006e42 Bug 1589102 - Part 3: Enable about:blank loads to take place via DocumentChannel, r=mattwoodrow
In process selection logic, ensure that we don't use the original URI for
about:blank and instead use the result principal. If the about:blank load has a
null principal, then revert to using the original URI.

Also, remove an extra about:blank load when an nsFrameLoaderOwner is changing
remoteness to prevent races.

Differential Revision: https://phabricator.services.mozilla.com/D85081
2020-08-05 16:44:11 +00:00
Nika Layzell
cafcceeb34 Bug 1599579 - Part 1: Add the ability to specify a specific BrowsingContextGroup during process switch, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D80254
2020-07-06 20:10:43 +00:00
Simon Giesecke
cd8b8939b9 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
Butkovits Atila
146ad267af Backed out 6 changesets (bug 1599579) for bc failures at test_chrome_ext_contentscript_data_uri.html.
Backed out changeset b767f26b10ed (bug 1599579)
Backed out changeset c5bc0ea42193 (bug 1599579)
Backed out changeset cfdd8d5973d4 (bug 1599579)
Backed out changeset 73f6c956fc30 (bug 1599579)
Backed out changeset 14698ab42ee4 (bug 1599579)
Backed out changeset b4bdd8759433 (bug 1599579)
2020-06-30 21:41:27 +03:00
Nika Layzell
824c8da580 Bug 1599579 - Part 1: Add the ability to specify a specific BrowsingContextGroup during process switch, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D80254
2020-06-30 16:52:53 +00:00
Kris Maglione
13c5c78fa5 Bug 1645946: Don't force frameloader creation during remoteness change. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D79872
2020-06-23 02:30:45 +00:00
Kashav Madan
960bd54cfd Bug 1646563 - Remove BrowserId from nsFrameLoaderOwner, r=nika
We can just use BrowsingContext::BrowserId directly, so it's unnecessary to have
the field on nsFrameLoaderOwner as well.

This also makes it so that we only ever generate browser IDs in
BrowsingContext::CreatedDetached.

Differential Revision: https://phabricator.services.mozilla.com/D80121
2020-06-22 21:46:03 +00:00
Narcis Beleuzu
46e3b1ce2c Backed out 5 changesets (bug 1599579) for twinopen failures. CLOSED TREE
Backed out changeset 053229a30ef1 (bug 1599579)
Backed out changeset c2828aec4caf (bug 1599579)
Backed out changeset 085558fe56dc (bug 1599579)
Backed out changeset a4e7334f8ce6 (bug 1599579)
Backed out changeset 9ebd2eb155da (bug 1599579)
2020-06-23 02:23:48 +03:00
Nika Layzell
59e9c1cfcc Bug 1599579 - Part 1: Add the ability to specify a specific BrowsingContextGroup during process switch, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D80254
2020-06-22 20:43:14 +00:00
Matt Woodrow
d3e50c8f76 Bug 1644943 - Create single webprogress for CanonicalBrowsingContext, regardless of process the browser element contents are in. r=nika,kmag,Gijs
I think at this point we can remove all of RemoteWebProgressManager, some/all of the TabProgressListener recreations, and probably a bunch more.

Differential Revision: https://phabricator.services.mozilla.com/D79240
2020-06-17 02:59:29 +00:00
Razvan Maries
c350ad5bd6 Backed out changeset f56d5efc5e43 (bug 1644943) for build bustages on nsFrameLoaderOwner.cpp. CLOSED TREE 2020-06-17 02:55:01 +03:00
Matt Woodrow
645b2bc301 Bug 1644943 - Create single webprogress for CanonicalBrowsingContext, regardless of process the browser element contents are in. r=nika,kmag,Gijs
I think at this point we can remove all of RemoteWebProgressManager, some/all of the TabProgressListener recreations, and probably a bunch more.

Differential Revision: https://phabricator.services.mozilla.com/D79240
2020-06-16 23:24:49 +00:00
Kashav Madan
1a71fed80e Bug 1580766 - Add a unique ID for the BrowsingContext tree inside a browser element. r=kmag
This adds a `browserId` property to all browsing contexts. This ID is the same
for the entire tree of contexts inside a frame element. Each new top-level
context created for a given frame also inherits this ID. This allows identifying
the frame element for a given browsing context.

Originally authored by :mossop in D56245.

Differential Revision: https://phabricator.services.mozilla.com/D77911
2020-06-16 18:12:46 +00:00
Razvan Maries
73dfe9d277 Backed out changeset 585e0230b2d5 (bug 1580766) as requested. CLOSED TREE 2020-06-16 21:01:26 +03:00
Dave Townsend
7a5ade2788 Bug 1580766 - Add a unique ID for the BrowsingContext tree inside a browser element. r=kmag
This adds a `browserId` property to all browsing contexts. This ID is the same
for the entire tree of contexts inside a frame element. Each new top-level
context created for a given frame also inherits this ID. This allows identifying
the frame element for a given browsing context.

Originally authored by :mossop in D56245.

Differential Revision: https://phabricator.services.mozilla.com/D77911
2020-06-16 17:25:16 +00:00
Nika Layzell
ae9eaf84c4 Bug 1640019 - Part 5: Remove a number of now-unused 'updateBrowserRemoteness' parameters, r=Gijs
These were only used by process switches triggered via DocumentChannel, which
now take the PROCESS_BEHAVIOR_STANDARD codepath.

Differential Revision: https://phabricator.services.mozilla.com/D78973
2020-06-15 23:23:58 +00:00
Nika Layzell
025dcf4a90 Bug 1640019 - Part 3: Also allow switching between remote and non-remote, r=mattwoodrow,necko-reviewers,valentin
Due to the PPDC process switching changes, we also handle switching between
remote and non-remote browsers with DocumentLoadListener. Adds support to
CanonicalBrowsingContext::ChangeFrameRemoteness to allow it to handle non-remote
browsers as well.

Differential Revision: https://phabricator.services.mozilla.com/D78971
2020-06-15 23:23:53 +00:00
Nika Layzell
0e74912c80 Bug 1640019 - Part 2: Use new process switch logic in tabbrowser, r=mattwoodrow,Gijs
Add a series of extra hooks and methods to allow tabbrowser to use the new
process switching codepath. This duplicates some of the logic from
`updateBrowserRemoteness` into event handlers.

Differential Revision: https://phabricator.services.mozilla.com/D78970
2020-06-15 23:23:46 +00:00
Nika Layzell
212943c862 Bug 1640019 - Part 1: Support toplevel process switches outside of tabbrowser, r=mattwoodrow
This new process switching behavior is only enabled for some browser elements,
which have specified a specific attribute. Turning this on for all browsers with
a `remote` attribute causes breakage in reftests.

The initial version does not handle switching from remote to parent or
vice-versa, that is covered in a later part.

Differential Revision: https://phabricator.services.mozilla.com/D78969
2020-06-15 23:23:43 +00:00
Bogdan Tara
74ca6cc819 Backed out changeset 26231891f004 (bug 1644943) for browser_backforward_userinteraction.js and browser_sessionHistory.js failures CLOSED TREE 2020-06-16 02:46:15 +03:00
Matt Woodrow
d075fa7e08 Bug 1644943 - Create single webprogress for CanonicalBrowsingContext, regardless of process the browser element contents are in. r=nika,kmag,Gijs
I think at this point we can remove all of RemoteWebProgressManager, some/all of the TabProgressListener recreations, and probably a bunch more.

Differential Revision: https://phabricator.services.mozilla.com/D79240
2020-06-15 22:01:34 +00:00
Kris Maglione
391fb42766 Bug 1644439: Don't force frame loader initialization during reflow from focus manager. r=hsivonen
When trying to get the current focused element during reflow, when the current
focused element in the document is a frame which has yet to be initialized,
attempting to walk through that frame's BrowsingContext causes immediate frame
loader initialization. Since frame loader initialization often requires running
scripts, that's unsafe, which is why we defer initialization until the end of
any in-progress reflow or document update.

This patch fixes the focus manager code to ignore any uninitialized frame
loaders it comes across, since by definition they cannot have any
currently-focused element until their subdocuments have been created.

Differential Revision: https://phabricator.services.mozilla.com/D79392
2020-06-12 10:22:56 +00:00
Narcis Beleuzu
a8dde16e58 Backed out 10 changesets (bug 1508306, bug 1640019) for bc failures on browser_autoOpen.js . CLOSED TREE
Backed out changeset 8844170ff408 (bug 1508306)
Backed out changeset b750f1d873cf (bug 1508306)
Backed out changeset c7170e76e676 (bug 1640019)
Backed out changeset 5905995e4815 (bug 1640019)
Backed out changeset 7bf86513348e (bug 1640019)
Backed out changeset f7d0605295f7 (bug 1640019)
Backed out changeset 521b4d5a9a89 (bug 1640019)
Backed out changeset 8542edc564bc (bug 1640019)
Backed out changeset 4f6a03152526 (bug 1640019)
Backed out changeset 30d2bf04719b (bug 1640019)
2020-06-12 22:47:50 +03:00
Nika Layzell
6069ccac68 Bug 1640019 - Part 5: Remove a number of now-unused 'updateBrowserRemoteness' parameters, r=Gijs
These were only used by process switches triggered via DocumentChannel, which
now take the PROCESS_BEHAVIOR_STANDARD codepath.

Differential Revision: https://phabricator.services.mozilla.com/D78973
2020-06-12 16:52:04 +00:00
Nika Layzell
a97cf42257 Bug 1640019 - Part 3: Also allow switching between remote and non-remote, r=mattwoodrow,necko-reviewers,valentin
Due to the PPDC process switching changes, we also handle switching between
remote and non-remote browsers with DocumentLoadListener. Adds support to
CanonicalBrowsingContext::ChangeFrameRemoteness to allow it to handle non-remote
browsers as well.

Differential Revision: https://phabricator.services.mozilla.com/D78971
2020-06-12 16:52:01 +00:00
Nika Layzell
aaf6c3a006 Bug 1640019 - Part 2: Use new process switch logic in tabbrowser, r=mattwoodrow,Gijs
Add a series of extra hooks and methods to allow tabbrowser to use the new
process switching codepath. This duplicates some of the logic from
`updateBrowserRemoteness` into event handlers.

Differential Revision: https://phabricator.services.mozilla.com/D78970
2020-06-12 16:52:01 +00:00
Nika Layzell
e999957c00 Bug 1640019 - Part 1: Support toplevel process switches outside of tabbrowser, r=mattwoodrow
This new process switching behavior is only enabled for some browser elements,
which have specified a specific attribute. Turning this on for all browsers with
a `remote` attribute causes breakage in reftests.

The initial version does not handle switching from remote to parent or
vice-versa, that is covered in a later part.

Differential Revision: https://phabricator.services.mozilla.com/D78969
2020-06-12 16:52:00 +00:00
Nika Layzell
c507cc54ac Bug 1633812 - Simplify the subframe crash codepath, r=farre
Previously the BrowsingContext was also being sent down, despite it being
obvious from the PBrowserBridge actor which the message was sent over.

Differential Revision: https://phabricator.services.mozilla.com/D72929
2020-04-29 09:58:50 +00:00
Eden Chuang
f519d74b3b Bug 1598131 - Propagate the browsingContext's COEP to the new created one in nsFrameLoader::Recreate r=farre
The COEP header needs to propagate to the new created BrowsingContext for process switching.

Differential Revision: https://phabricator.services.mozilla.com/D69936
2020-04-17 11:29:13 +00:00
Nika Layzell
07b8c7a5be Bug 1610850 - Part 1: Switch BrowsingContext when navigating parent to remote, r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D67921

--HG--
extra : moz-landing-system : lando
2020-03-26 17:37:19 +00:00