Commit Graph

327 Commits

Author SHA1 Message Date
Jonathan Watt
db3a21cec4 Bug 1866011 p1. Rename nsISHEntry.contentViewer. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D194369
2023-11-24 09:10:52 +00:00
Jonathan Watt
3130103f95 Bug 1865918 p1. Update HasContentViewer to reflect nsIDocumentViewer's new name. r=emilio
(Snuck in a rename of a similarly named local variable too.)

Differential Revision: https://phabricator.services.mozilla.com/D194287
2023-11-22 13:50:56 +00:00
Jonathan Watt
d8c2b7cde9 Bug 1865891 p12. Rename NotifyListenersContentViewerEvicted to match nsIDocumentViewer's new name. r=emilio
Depends on D194284

Differential Revision: https://phabricator.services.mozilla.com/D194285
2023-11-22 08:08:16 +00:00
Jonathan Watt
ccb32ca75a Bug 1865891 p11. Rename OnContentViewerEvicted to match nsIDocumentViewer's new name. r=emilio
Depends on D194283

Differential Revision: https://phabricator.services.mozilla.com/D194284
2023-11-22 08:08:16 +00:00
Jonathan Watt
fb3f8e5141 Bug 1865891 p10. Rename GloballyEvictContentViewers to match nsIDocumentViewer's new name. r=emilio
Depends on D194282

Differential Revision: https://phabricator.services.mozilla.com/D194283
2023-11-22 08:08:16 +00:00
Jonathan Watt
9c14f3f9a7 Bug 1865891 p9. Rename GloballyEvictAllContentViewers to match nsIDocumentViewer's new name. r=emilio
Depends on D194281

Differential Revision: https://phabricator.services.mozilla.com/D194282
2023-11-22 08:08:15 +00:00
Jonathan Watt
ad5b6015e2 Bug 1865891 p8. Rename EvictContentViewer to match nsIDocumentViewer's new name. r=emilio
Depends on D194280

Differential Revision: https://phabricator.services.mozilla.com/D194281
2023-11-22 08:08:15 +00:00
Jonathan Watt
3d70eaafa6 Bug 1865891 p6. Rename EvictExpiredContentViewerForEntry to match nsIDocumentViewer's new name. r=emilio
Depends on D194278

Differential Revision: https://phabricator.services.mozilla.com/D194279
2023-11-22 08:08:14 +00:00
Jonathan Watt
ad273acd54 Bug 1865891 p5. Rename EvictContentViewerForEntry to match nsIDocumentViewer's new name. r=emilio
Depends on D194277

Differential Revision: https://phabricator.services.mozilla.com/D194278
2023-11-22 08:08:13 +00:00
Jonathan Watt
ac04fa217f Bug 1865891 p4. Rename EvictContentViewersOrReplaceEntry to match nsIDocumentViewer's new name. r=emilio
Depends on D194276

Differential Revision: https://phabricator.services.mozilla.com/D194277
2023-11-22 08:08:13 +00:00
Jonathan Watt
901a6e2456 Bug 1865891 p3. Rename EvictOutOfRangeContentViewers to match nsIDocumentViewer's new name. r=emilio
Depends on D194275

Differential Revision: https://phabricator.services.mozilla.com/D194276
2023-11-22 08:08:13 +00:00
Jonathan Watt
24a1543220 Bug 1865891 p2. Rename EvictAllContentViewers to match nsIDocumentViewer's new name. r=emilio
Depends on D194274

Differential Revision: https://phabricator.services.mozilla.com/D194275
2023-11-22 08:08:12 +00:00
Jonathan Watt
e635b259b2 Bug 1865891 p1. Rename EvictOutOfRangeWindowContentViewer to match nsIDocumentViewer's new name. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D194274
2023-11-22 08:08:12 +00:00
Jonathan Watt
efb5a74fbc Bug 1865480. Rename nsIContentViewer to nsIDocumentViewer. r=layout-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D193987
2023-11-21 12:45:59 +00:00
serge-sans-paille
59eeffffb2 Bug 1854478 - Improve constness of array of preferences r=KrisWright
Differential Revision: https://phabricator.services.mozilla.com/D188884
2023-09-28 15:04:00 +00:00
Andreas Farre
91a2bef90a Bug 1799326 - Don't restore replaced browsing contexts from BFCache. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D188688
2023-09-20 11:50:49 +00:00
Malte Juergens
e9b9c95fe2 Bug 1847918 - Limit nsDocShellLoadState::IsExemptFromHTTPSOnlyMode to HTTPS-First r=freddyb
`nsDocShellLoadState::IsExemptFromHTTPSOnlyMode` is currently only used by HTTPS-First. It is used for fixing upgrade-downgrade loops and when loading history entries, as when we already know if HTTPS-First succeeded there or not, we have no need for trying to upgrade again and can disable HTTPS-First. With the changes introduced by Bug 1839612, `nsDocShellLoadState::IsExemptFromHTTPSOnlyMode` also applies to HTTPS-Only, which is a problem because disabling HTTPS-Only for history entries will result in them potentially being loaded insecurely without the user setting an exception. As a solution this patch just applies `nsILoadInfo::HTTPS_ONLY_EXEMPT_NEXT_LOAD`, the flag being set when `nsDocShellLoadState::IsExemptFromHTTPSOnlyMode` is set, when HTTPS-First is enabled, and renames both flags to reflect that behavior.

Differential Revision: https://phabricator.services.mozilla.com/D185829
2023-09-11 12:14:30 +00:00
Peter Van der Beken
9ec5838ef5 Bug 1843968 - Hold some strong references. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D184803
2023-08-01 12:09:36 +00:00
Olli Pettay
51ad6b6c06 Bug 1798780, ensure we don't evict the current frameloader, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D163391
2022-11-30 15:38:00 +00:00
Andrew McCreight
c7320ddb6e Bug 1766305, part 2 - Return a wireframe with GetLayoutHistoryState. r=smaug,mconley
The main goal here is to get the wireframe test to work with
parent-controlled navigation.

This means we don't need to collect the wireframe any more in
PersistLayoutHistoryState, I think, because it is redundant.

I think we need to clear the wireframe in finish restore for
when we navigate back.

As a result of these changes, the two todo subtests in the
wireframe test now pass.

Differential Revision: https://phabricator.services.mozilla.com/D146252
2022-06-27 12:02:48 +00:00
Peter Van der Beken
4e2427a37f Bug 1765951 - Stop storing BC pointer in nsSHistory. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D146205
2022-06-08 05:53:17 +00:00
Andrew McCreight
e48459e4f0 Bug 1661862 - Don't assert when we leak nsSHistories. r=peterv
nsSHistories are kept in a linked list. When we leak one, we hit
a linked list assertion. This patch works around that by adding
a helper that removes everything from the list before it is
destroyed. We'll still have test failures, but they'll be in
the leak checker, which is hopefully more informative.

Differential Revision: https://phabricator.services.mozilla.com/D145977
2022-05-11 14:00:57 +00:00
Peter Van der Beken
a7a91a7711 Bug 1766131 - Always synchronize layout history state on the previous page when restoring a page from BFCache. r=smaug
This fixes docshell/test/chrome/bug321671_window.xhtml running with SHIP.

Differential Revision: https://phabricator.services.mozilla.com/D144517
2022-04-28 09:54:36 +00:00
Cathy Lu
616188e86a Bug 1753700 - Rename ActivityChanged to BrowserPriorityChanged. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D141531
2022-04-01 14:42:41 +00:00
Paul Bone
0e6a095b06 Bug 1697737 - pt 2. Remove the NOTIFY_LISTENERS macro r=nika
We can replace this macro with a static function to make the code here
easier to read.

Differential Revision: https://phabricator.services.mozilla.com/D107805
2022-03-21 02:31:30 +00:00
Paul Bone
5aefc5059a Bug 1697737 - pt 1. Remove NOTIFY_LISTENERS_CANCELABLE r=nika
This macro was used in two places to do the same thing.  We can remove this
over-generalisation and have clearer code.

Differential Revision: https://phabricator.services.mozilla.com/D107804
2022-03-21 02:31:29 +00:00
Olli Pettay
af7fce84a3 Bug 1759444, null check webProgress before using it, r=peterv
this should fix the crash, but I'm investigating if beforeunload handling should be tweaked too as followup work.

Differential Revision: https://phabricator.services.mozilla.com/D141117
2022-03-15 16:28:42 +00:00
Sean Feng
4410360610 Bug 1741671 - Enable BFCache for pages with beforeunload event listeners on Desktop r=smaug
The changes only made it works in SHIP(session-history-in-parent) only.

Differential Revision: https://phabricator.services.mozilla.com/D131715
2022-03-03 19:13:47 +00:00
Cristian Tuns
37ee21657d Backed out 2 changesets (bug 1741671) for causing wpt failures on back-forward-cache/events.html CLOSED TREE
Backed out changeset 7fffe4e20ea8 (bug 1741671)
Backed out changeset fc9c97d475c2 (bug 1741671)
2022-03-01 14:44:53 -05:00
Sean Feng
6fd4c742d7 Bug 1741671 - Enable BFCache for pages with beforeunload event listeners on Desktop r=smaug
The changes only made it works in SHIP(session-history-in-parent) only.

Differential Revision: https://phabricator.services.mozilla.com/D131715
2022-03-01 18:50:45 +00:00
Olli Pettay
9e49ca038d Bug 1729545, Try to ensure session history loads can't get stuck because of bogus requested index, r=peterv
Requested index handling is very fragile. We should try to figure out a way to remove it altogether.
(But unfortunately some behavior similar to it is needed in certain cases).
The patch is a stop-gap solution.

Differential Revision: https://phabricator.services.mozilla.com/D137479
2022-02-01 20:30:32 +00:00
Olli Pettay
66beeb6efe Bug 1745730, disable bfcache when loading the current uri again, r=peterv
The idea is to get us to https://searchfox.org/mozilla-central/rev/25d26b0a62cc5bb4aa3bb90a11f3b0b7c52859c4/docshell/base/nsDocShell.cpp#10824,10829 so that
we can do a replace load.
It should be ok to disable bfcache in all the cases, not only in the cases nsDocShell checks for replace load.

Differential Revision: https://phabricator.services.mozilla.com/D134876
2021-12-31 12:14:36 +00:00
Niklas Goegge
003500ef54 Bug 1742899: Exempt history entry loads from https-first mode. r=ckerschb,smaug
Differential Revision: https://phabricator.services.mozilla.com/D132566
2021-12-09 16:12:09 +00:00
Peter Van der Beken
f6ae783fb1 Bug 1743353 - Fire pageshow after pagehide/unload with session history in the parent. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D132354
2021-11-30 13:01:03 +00:00
Peter Van der Beken
5e030bf017 Bug 1741132 - Add a property for whether an entry is in the BFCache (holds a content viewer or a frame loader). r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D131893
2021-11-27 11:14:09 +00:00
Marian-Vasile Laza
465f8a2eb1 Backed out 4 changesets (bug 1741132, bug 1740516, bug 1740517) for causing mochitest failures on test_bug1741132.html.
Backed out changeset 9b91c4d469d7 (bug 1741132)
Backed out changeset 1ad268a75fec (bug 1741132)
Backed out changeset 6a6e91c8eeeb (bug 1740517)
Backed out changeset c8a789ba6dc7 (bug 1740516)
2021-11-23 19:07:58 +02:00
Peter Van der Beken
f9d0048919 Bug 1741132 - Add a property for whether an entry is in the BFCache (holds a content viewer or a frame loader). r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D131893
2021-11-23 15:37:24 +00:00
Olli Pettay
e5c3e23693 Bug 1734858, use the real index when updating the index after a bfcache load, r=peterv
The issue is that when going back from a non-bfcacheable page to a bfcacheable page and the first page
modifies requested index around the same time, UpdateIndex() doesn't have the right requested index. This is a variant of bug 1725680.
The test case loads a non-bfcacheable page, then bfcachable, then another non-bfcacheable and then goes back and forward.
Without the patch indexes go wrong and forward doesn't do anything.

Differential Revision: https://phabricator.services.mozilla.com/D127963
2021-10-12 11:23:17 +00:00
Peter Van der Beken
0b75a32878 Bug 1729662 - UNED exam page flickers / reloads infinitely. r=smaug
When we navigate in history to the same entry that we're current at then we
actually do a reload. The problem is in the way we detect whether to do a reload
in the parent process.

If a page does a back and a forward one after the other in a script, then the
parent will calculate the index for the back and tell the child to load the
entry at that index. While the child is processing the load of that entry, the
BC in the parent process still has the same entry as its active entry (until the
child commits the load of the entry over IPC). The parent then processes the
forward, calculates the index for the forward and finds the entry at that index.
This is the same entry that we were at before doing anything, and so the same
entry as the active entry in the BC in the parent process. We used to compare
the entry that we're going to load with the active entry in the BC to determine
whether we're doing a reload, and so in this situation we would assume the
forward navigation was actually doing a reload. The child would reload the page,
and we'd run the script again and we'd end up in a reload loop.

Comparing the offset with 0 to determine whether we're doing a reload fixes this
issue.

Differential Revision: https://phabricator.services.mozilla.com/D126585
2021-10-04 15:01:30 +00:00
Alexandru Michis
2866dbbf91 Backed out changeset d25df1c9e0e2 (bug 1729662) for causing wpt failures in overlapping-navigations-and-traversals
CLOSED TREE
2021-09-30 14:31:50 +03:00
Peter Van der Beken
61652c5fe9 Bug 1729662 - UNED exam page flickers / reloads infinitely. r=smaug
When we navigate in history to the same entry that we're current at then we
actually do a reload. The problem is in the way we detect whether to do a reload
in the parent process.

If a page does a back and a forward one after the other in a script, then the
parent will calculate the index for the back and tell the child to load the
entry at that index. While the child is processing the load of that entry, the
BC in the parent process still has the same entry as its active entry (until the
child commits the load of the entry over IPC). The parent then processes the
forward, calculates the index for the forward and finds the entry at that index.
This is the same entry that we were at before doing anything, and so the same
entry as the active entry in the BC in the parent process. We used to compare
the entry that we're going to load with the active entry in the BC to determine
whether we're doing a reload, and so in this situation we would assume the
forward navigation was actually doing a reload. The child would reload the page,
and we'd run the script again and we'd end up in a reload loop.

Comparing the offset with 0 to determine whether we're doing a reload fixes this
issue.

Differential Revision: https://phabricator.services.mozilla.com/D126585
2021-09-30 07:56:52 +00:00
Olli Pettay
7ecc9afd1d Bug 1725680, requested index should be used only by the nsSHistory (and related code in CanonicalBrowsingContext), r=peterv
Using requestedIndex on the child side is hard, because there are race conditions when a session history load is triggered
and at the same time a non-session history load commits a new active entry.

Differential Revision: https://phabricator.services.mozilla.com/D126619
2021-09-29 13:22:34 +00:00
Iulian Moraru
82a9a640ee Backed out changeset a399e91dd5c2 (bug 1729662) for causing wpt failures on cross-document-traversal-cross-document-traversal.html. 2021-09-28 19:14:02 +03:00
Peter Van der Beken
d36b8a8d08 Bug 1729662 - UNED exam page flickers / reloads infinitely. r=smaug
When we navigate in history to the same entry that we're current at then we
actually do a reload. The problem is in the way we detect whether to do a reload
in the parent process.

If a page does a back and a forward one after the other in a script, then the
parent will calculate the index for the back and tell the child to load the
entry at that index. While the child is processing the load of that entry, the
BC in the parent process still has the same entry as its active entry (until the
child commits the load of the entry over IPC). The parent then processes the
forward, calculates the index for the forward and finds the entry at that index.
This is the same entry that we were at before doing anything, and so the same
entry as the active entry in the BC in the parent process. We used to compare
the entry that we're going to load with the active entry in the BC to determine
whether we're doing a reload, and so in this situation we would assume the
forward navigation was actually doing a reload. The child would reload the page,
and we'd run the script again and we'd end up in a reload loop.

Comparing the offset with 0 to determine whether we're doing a reload fixes this
issue.

Differential Revision: https://phabricator.services.mozilla.com/D126585
2021-09-28 13:25:15 +00:00
Mike Conley
a2ba24131b Bug 1728375 - Notify session history listeners when entries are being removed via purging or truncation. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D124101
2021-09-02 15:33:16 +00:00
Olli Pettay
2bbe9e46cc Bug 1723282, let nonbfcacheable page update layout history state when the new page is coming from the bfcache, r=peterv
The fix let's ContentParent::RecvSynchronizeLayoutHistoryState update the layout history state.

Using an existing test to launch a subtest for this. Hopefully the description of the test helps with reviewing it.
(These BroadcastChannel based tests can be hard to follow.)

Differential Revision: https://phabricator.services.mozilla.com/D122376
2021-08-30 19:50:05 +00:00
Nika Layzell
1c8639f49c Bug 1650089 - Part 3: Rework DocumentChannel-triggered process switches to support null principals, r=annyG,kmag
This is a large refactoring of the DocumentChannel process switch codepath,
with the end goal of being better able to support future process switch
requirements such as dynamic isolation on android, as well as the immediate
requirement of null principal handling.

The major changes include:
1. The logic is in C++ and has less failure cases, meaning it should be harder
   for us to error out unexpectedly and not process switch.
2. Process selection decisions are more explicit, and tend to rely less on
   state such as the current remoteType when possible. This makes reasoning
   about where a specific load will complete easier.
3. Additional checks are made after a "WebContent" behavior is selected to
   ensure that if an existing document in the same BCG is found, the load will
   finish in the required content process. This should make dynamic checks such
   as Android's logged-in site isolation easier to implement.
4. ProcessIsolation logging is split out from DocumentChannel so that it's
   easier to log just the information related to process selection when
   debugging.
5. Null result principal precursors are considered when performing process
   selection.

Other uses of E10SUtils for process selection have not yet been migrated to the
new design as they have slightly different requirements. This will be done in
follow-up bugs.

Differential Revision: https://phabricator.services.mozilla.com/D120673
2021-08-10 14:31:17 +00:00
Olli Pettay
dcd62ef4f8 Bug 1724451, activate the relevant processes when restoring a bfcached page on the foreground tab, r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D122008
2021-08-06 17:39:21 +00:00
Butkovits Atila
0d09646c51 Backed out 8 changesets (bug 1650089) for causing Xpcshell failures on test_ext_redirects.js. CLOSED TREE
Backed out changeset ee763318d378 (bug 1650089)
Backed out changeset 24d7898ec4bd (bug 1650089)
Backed out changeset bcdd2f5c9840 (bug 1650089)
Backed out changeset 24a5bd7f97dd (bug 1650089)
Backed out changeset 1b8b4e939e82 (bug 1650089)
Backed out changeset a7a4f37a5d72 (bug 1650089)
Backed out changeset 78c012d4b071 (bug 1650089)
Backed out changeset e870508c1ddc (bug 1650089)
2021-08-06 04:35:52 +03:00
Nika Layzell
e0aa4defb5 Bug 1650089 - Part 3: Rework DocumentChannel-triggered process switches to support null principals, r=annyG,kmag
This is a large refactoring of the DocumentChannel process switch codepath,
with the end goal of being better able to support future process switch
requirements such as dynamic isolation on android, as well as the immediate
requirement of null principal handling.

The major changes include:
1. The logic is in C++ and has less failure cases, meaning it should be harder
   for us to error out unexpectedly and not process switch.
2. Process selection decisions are more explicit, and tend to rely less on
   state such as the current remoteType when possible. This makes reasoning
   about where a specific load will complete easier.
3. Additional checks are made after a "WebContent" behavior is selected to
   ensure that if an existing document in the same BCG is found, the load will
   finish in the required content process. This should make dynamic checks such
   as Android's logged-in site isolation easier to implement.
4. ProcessIsolation logging is split out from DocumentChannel so that it's
   easier to log just the information related to process selection when
   debugging.
5. Null result principal precursors are considered when performing process
   selection.

Other uses of E10SUtils for process selection have not yet been migrated to the
new design as they have slightly different requirements. This will be done in
follow-up bugs.

Differential Revision: https://phabricator.services.mozilla.com/D120673
2021-08-06 00:10:57 +00:00