Commit Graph

488 Commits

Author SHA1 Message Date
Steven MacLeod
a8a5d5d11c Bug 1585070 - move nsPIDOMWindowOuter::mIsActive to BrowsingContext. r=kmag
A new `BrowsingContext` field has been added to track the active
browser window for the `:-moz-window-inactive` pseudoclass. This
field takes the place of `nsPIDOMWindowOuter::mIsActive`.

With this change `:-moz-window-inactive` is now fission compatible.

Differential Revision: https://phabricator.services.mozilla.com/D86422
2020-11-20 15:16:58 +00:00
Kartikaya Gupta
7dd1e0a575 Bug 1678334 - Mark some functions as const. r=tnikkel
This functions are conceptually getters and should be const.

Differential Revision: https://phabricator.services.mozilla.com/D97621
2020-11-19 22:44:42 +00:00
Johann Hofmann
c6d76d6c06 Bug 1650095 - Part 2 - Implement SessionHistoryEntry::Get/SetHasUserInteraction. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D93346
2020-11-18 11:51:00 +00:00
Noemi Erli
bc4586b638 Backed out changeset 18448a7ebf82 (bug 1585070) for causing failures in test_cocoa_window_focus.html CLOSED TREE 2020-11-17 06:09:50 +02:00
Steven MacLeod
9727243f2f Bug 1585070 - move nsPIDOMWindowOuter::mIsActive to BrowsingContext. r=kmag
A new `BrowsingContext` field has been added to track the active
browser window for the `:-moz-window-inactive` pseudoclass. This
field takes the place of `nsPIDOMWindowOuter::mIsActive`.

With this change `:-moz-window-inactive` is now fission compatible.

Differential Revision: https://phabricator.services.mozilla.com/D86422
2020-11-16 22:37:51 +00:00
Chris Peterson
10bbb16715 Bug 1676797 - Replace MOZ_MUST_USE with [[nodiscard]] in docshell. r=smaug
The MOZ_MUST_USE macro is defined as clang's and gcc's nonstandard __attribute((warn_unused_result))__. Now that we compile as C++17 by default (bug 1560664), we can replace MOZ_MUST_USE with C++17's standard [[nodiscard]] attribute.

Differential Revision: https://phabricator.services.mozilla.com/D96802
2020-11-13 10:24:04 +00:00
Steven MacLeod
cc94eb3f9f Bug 1606061 - move TouchEventsOverride to BrowsingContext. r=farre,devtools-backward-compat-reviewers
This change removes docshell's `mTouchEventsOverride` and replaces it
with a new `BrowsingContext` field `TouchEventsOverrideInternal`.
All uses of the old field have been replaced and an override should
now work under fission when there are cross-origin descendent frames.

Differential Revision: https://phabricator.services.mozilla.com/D96414
2020-11-10 15:57:30 +00:00
Olli Pettay
8ad3337d21 Bug 1671962 - Iframes loaded from restored session are loaded out of order when Fission enabled, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D94904
2020-10-30 22:10:15 +00:00
Narcis Beleuzu
cc40242343 Backed out 2 changesets (bug 1673947, bug 1671962) for wpt failure on nested-context-navigations-iframe.html . CLOSED TREE
Backed out changeset 8c71945d53bd (bug 1673947)
Backed out changeset 84ed543cd810 (bug 1671962)
2020-10-30 21:05:41 +02:00
Olli Pettay
ed33c8b544 Bug 1671962 - Iframes loaded from restored session are loaded out of order when Fission enabled, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D94904
2020-10-30 11:48:23 +00:00
Emilio Cobos Álvarez
8529bb07b8 Bug 1673707 - Simplify handling of the suspendMediaWhenInactive flag. r=nika
Make it a synced field on the top browsing context. This handling the
propagation right and is much simpler.

This should fix cases where we don't look at the top level docshell to
figure out if we should suspend media.

Differential Revision: https://phabricator.services.mozilla.com/D94878
2020-10-27 19:55:47 +00:00
Randell Jesup
27a2ada105 Bug 1670848: Handling aborting history navigations when others run r=smaug
Handles edge cases around history.go() with one event loop spin

Differential Revision: https://phabricator.services.mozilla.com/D93302
2020-10-23 20:27:50 +00:00
Andreas Farre
e4556a3316 Bug 1667767 - Expose the BC's HistoryID field through WebIDL. r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D92893
2020-10-23 10:07:09 +00:00
alwu
e3ecb6756c Bug 1670841 - part2 : prevent tab with a main controller from being suspended. r=snorp,nika
When a tab is owning a main controller, which means that the tab is either playing media, or still waiting for media keys in order to control its media again.

In those situations, we should not suspend the tab so that its script can continue to run for playing media or handling the future task for media keys.

Differential Revision: https://phabricator.services.mozilla.com/D93445
2020-10-22 21:31:18 +00:00
Agi Sferro
f3ed600503 Bug 1648157 - Move DisplayMode to BrowsingContext. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D92484
2020-10-09 17:31:59 +00:00
Olli Pettay
aee6f990e5 Bug 1668577 - Make child process to send offset to parent process, not index, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D92074
2020-10-02 16:15:47 +00:00
Cameron McCormack
1a10f8e9fc Bug 1662839 - Set author style disabled state correctly on newly created iframes. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D90953
2020-10-04 03:25:16 +00:00
Razvan Maries
e7522539a9 Backed out changeset a3cbffeb24a3 (bug 1668577) for perma failures on location_reload.html. CLOSED TREE 2020-10-02 19:11:53 +03:00
Olli Pettay
83ddcf9adc Bug 1668577 - Make child process to send offset to parent process, not index, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D92074
2020-10-02 12:05:57 +00:00
Peter Van der Beken
527c3ba7c7 Bug 1659102 - Fix fragment navigation for session history in parent. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D91593
2020-09-29 12:09:59 +00:00
Peter Van der Beken
9e53805747 Bug 1659102 - Merge SetActiveSessionHistoryEntryForTop and SetActiveSessionHistoryEntryForFrame. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D91592
2020-09-29 12:04:20 +00:00
Emilio Cobos Álvarez
1d86dbcf50 Bug 1666827 - Make nsDocShell::mIsPrintPreview a flag in the top browsing context. r=smaug
This should make it work on fission, plus is simpler than the
alternative of traversing the whole docshell tree and then undo it.

It also is going to make easier the actual fix for this bug.

Differential Revision: https://phabricator.services.mozilla.com/D91438
2020-09-27 12:07:19 +00:00
Bogdan Tara
0b359244d1 Backed out changeset 1bfa83880712 (bug 1662839) for browser_disable_author_style_oop.js failures CLOSED TREE 2020-09-24 05:55:25 +03:00
Cameron McCormack
bbad6d2354 Bug 1662839 - Set author style disabled state correctly on newly created iframes. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D90953
2020-09-24 01:24:57 +00:00
Kashav Madan
a38531ab04 Bug 1666485 - Make BrowsingContext::CreatedDynamically non-synced, r=nika,kmag
Differential Revision: https://phabricator.services.mozilla.com/D89223
2020-09-23 13:43:38 +00:00
Butkovits Atila
c2d7327248 Backed out changeset a81b4130ac14 (bug 1666485) for causing bustages on BrowsingContext. CLOSED TREE 2020-09-23 16:18:53 +03:00
Kashav Madan
fb01408d2e Bug 1666485 - Make BrowsingContext::CreatedDynamically non-synced, r=nika,kmag
Differential Revision: https://phabricator.services.mozilla.com/D89223
2020-09-23 12:45:38 +00:00
pbz
5c176a0ded Bug 1314912 - Rate limit calls to History and Location interfaces. r=smaug
This adds a rate limit to methods and setters of the History and Location
for non-system callers.
The rate limit is counted per BrowsingContext and can be controlled by prefs.

This patch is based on the original rate limit patch by :freesamael.

Differential Revision: https://phabricator.services.mozilla.com/D90136
2020-09-21 11:54:50 +00:00
Peter Van der Beken
073b9fe8a3 Bug 1664656 - Decide whether to add a new entry based on the load type. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D90028
2020-09-20 12:40:10 +00:00
Dorel Luca
ec20fe3b28 Backed out 3 changesets (bug 1664656, bug 1664655) for multiple failures in checkouts/gecko/docshell/base/nsDocShell.cpp
Backed out changeset ac1e652efeb6 (bug 1664655)
Backed out changeset c8c1abf5f616 (bug 1664656)
Backed out changeset 3c1e9e36a39e (bug 1664656)
2020-09-19 16:38:26 +03:00
Peter Van der Beken
b8bc59f244 Bug 1664656 - Decide whether to add a new entry based on the load type. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D90028
2020-09-18 16:49:35 +00:00
Nika Layzell
cbb7e8111c Bug 1659696 - Check PendingInitialization before targeting in window.open, r=kmag
This requires adding the flag as a synced field on the BrowsingContext, and
checking it in a few more places. Attempts to open a new window in this racy
manner will now raise an exception.

This should avoid the issue from bug 1658854 by blocking the buggy attempts to
load before the nested event loop has been exited.

Differential Revision: https://phabricator.services.mozilla.com/D87927
2020-09-16 20:47:55 +00:00
Olli Pettay
eb56ea3f79 Bug 1574261 - Make nsDocShell::MaybeHandleSubFrameHistory work with session history in parent, r=peterv
This has couple of different pieces and one may want to focus on each of those separately when
reviewing. The first two as small changes.

- Moving mDynamicallyCreated from nsDocShell to be a sync'ed field on BrowsingContext.
  CanonicalBrowsingContext::CreateLoadingSessionHistoryEntryForLoad sets that on a newly created entry.
- Adding mActiveEntryIsLoadingFromSessionHistory. mLoadingEntry + mActiveEntryIsLoadingFromSessionHistory has roughly
  the same lifetime as mLSHE. mLoadingActiveEntry is needed so that child docshell can know whether its parent is loading from session history.
- The main part is in MaybeHandleSubframeHistory which checks if the parent docshell is loading from session history,
  and if so, asks for a LoadingSessionHistoryInfo. In the case of docshell living in a child process that operation is asynchronous,
  so when the data is back from the parent process, LoadURI is called again with the possibly updated data.
  One could possibly split the code to smaller methods and then deal with aContinueHandlingSubframeHistory only in LoadURI,
  but MaybeHandleSubframeHistory does have some early returns which would make that approach possibly hard to follow.

Differential Revision: https://phabricator.services.mozilla.com/D89685
2020-09-17 18:22:08 +00:00
Andreas Farre
4589444b55 Bug 1662410 - Part 1: Fix usage of ChildSHistory.legacySHistory . r=peterv
ChildSHistory.legacySHistory isn't valid for content processes when
session history in the parent is enabled. We try to fix this by either
delegating to the parent by IPC or move the implementation partially
or as a whole to the parent.

Differential Revision: https://phabricator.services.mozilla.com/D89353
2020-09-16 14:51:01 +00:00
Tim Huang
7cdafb631c Bug 444222 - Add a flag 'SetHasLoadedNonInitialDocument' in the BrowsingContext. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D88416
2020-09-11 07:52:11 +00:00
Anny Gakhokidze
6d9067a987 Bug 1663238 - Only use the principal to inherit if it's equal to the flattened one, r=nika
With fission enabled, when we are starting a load, we might be saving
principals for a specific browsing context in process A, and then end up
targetting process B for the load, so during deserialization of the
LoadInfoArgs struct, we will end up using principals that were saved during a
previous load targetting that browsing context (with the same id) but in
process B.

Therefore, we cannot assert (without clearing the saved principals in the
original browsing context when a load is done, which can be done as a follow up
work) that the saved principal will be equal to the serialized one from
LoadInfoArgs.

Differential Revision: https://phabricator.services.mozilla.com/D89728
2020-09-10 14:40:31 +00:00
Peter Van der Beken
891496b6f7 Bug 1663486 - Synchronize ChildSHistory state when sending a browsing context to a new process. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D89419
2020-09-08 15:24:13 +00:00
Peter Van der Beken
1031757a1d Bug 1662407 - Call nsSHistory::GotoIndex directly when loading from session history in the parent process. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D88976
2020-09-08 19:32:27 +00:00
Kris Maglione
c67b4248ac Bug 1650257: Part 2 - Abort SetNewDocument() if ancestors are discarded/cached. r=nika,smaug,sg
Differential Revision: https://phabricator.services.mozilla.com/D87486
2020-08-31 18:51:56 +00:00
Kris Maglione
d6859a14a7 Bug 1650257: Part 1 - Stop discarding BCs from the parent on WindowGlobal destruction. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87485
2020-08-31 18:51:45 +00:00
Anny Gakhokidze
68c83c5040 Bug 1589102 - Part 13: Fix a race in process switching code due to reftest.js forcing a process switch, r=kmag
The race occurs when the parent changes the owner process for a BC, but the
child does not know about it and proceeds to call SetCurrentInnerWindowId on a
BC it no longer owns. To fix this, in child process, whenever we call
SetCurrentInnerWindowId on a BC, check that the BC is in process and that the
docshell has not been notified about an upcoming process change.

Differential Revision: https://phabricator.services.mozilla.com/D87934
2020-08-28 17:21:17 +00:00
Anny Gakhokidze
a7185cba9a Bug 1589102 - Part 1: Enable about:srcdoc loads via DocumentChannel, r=mattwoodrow
This patch enables sandboxed srcdoc loads to take place via DocumentChannel,
and adds mechanisms for enabling unsandboxed ones.

Both unsandboxed srcdoc, and in subsequent patches, about:blank, loads require
that the triggering principal and the principal to inherit point to the same
instance if the load takes place in the same process as where we are inheriting
those principals from. We save those principals on a target browsing context before
we load the URI, and later, when we are deserializing LoadInfoArgs into
LoadInfo in the content process, we retrieve the saved principals if the
current load identifier of the target BC matches the load identifier saved
along with the principals.

We also need to make sure that during a process switch for about:srcdoc load,
we don't use the original URI for about:srcdoc to determine the remote type and
instead we use channel's result principal.

Differential Revision: https://phabricator.services.mozilla.com/D85079
2020-08-28 17:20:30 +00:00
Nika Layzell
758beeb5cd Bug 1659520 - Use explicit type arguments for SyncedContext field setters, r=farre
Differential Revision: https://phabricator.services.mozilla.com/D87466
2020-08-26 07:53:26 +00:00
Peter Van der Beken
78c82ffa68 Bug 1660869 - Forward RemoveFromSessionHistory to the parent process for session history in the parent. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D88061
2020-08-25 16:20:17 +00:00
Peter Van der Beken
c49bf30ba7 Bug 1660868 - Forward RemoveDynEntries to the parent process for session history in the parent. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D88060
2020-08-25 16:04:51 +00:00
Emilio Cobos Álvarez
2c0dea8fd4 Bug 1636728 - Centralize printing entry points in nsGlobalWindowOuter, and move cloning out of nsPrintJob. r=jwatt,geckoview-reviewers,smaug,agi
This centralizes our print and preview setup in nsGlobalWindowOuter so
that we never re-clone a clone, and so that we reuse the window.open()
codepath to create the browsing context to clone into.

For window.print, for both old print dialog / silent printing and new
print preview UI, we now create a hidden browser (as in with visibility:
collapse, which takes no space but still gets a layout box).

 * In the modern UI case, this browser is swapped with the actual print
   preview clone, and the UI takes care of removing the browser.

 * In the print dialog / silent printing case, the printing code calls
   window.close() from nsDocumentViewer::OnDonePrinting().

 * We don't need to care about the old print preview UI for this case
   because it can't be open from window.print().

We need to fall back to an actual window when there's no
nsIBrowserDOMWindow around for WPT print tests and the like, which don't
have one. That seems fine, we could special-case this code path more if
needed but it doesn't seem worth it.

Differential Revision: https://phabricator.services.mozilla.com/D87063
2020-08-25 17:45:12 +00:00
Peter Van der Beken
bcaca89c59 Bug 1649131 - Implement history.pushState/.replaceState for session history in the parent. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D87039
2020-08-23 17:41:03 +00:00
Emilio Cobos Álvarez
04fb12730e Bug 1602410 - Make window.print() work with tab-modal printing. r=nika,geckoview-reviewers,agi
Do this by spinning the event loop until we've done the clone for
preview as appropriate.

This should be much less risky than finishing the previous patches
which would still be nice, but realistically landing them for 81 is not
going to happen.

This just returns without doing nothing in a couple cases, like when
there's already another modal dialog or such. That seems acceptable to
me, it's not clear what better way to do would be.

Differential Revision: https://phabricator.services.mozilla.com/D87484
2020-08-19 09:27:18 +00:00
Edgar Chen
6fed29e010 Bug 1611961 - Move UserActivationState from BrowsingContext to WindowContext; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D83126
2020-08-17 11:02:34 +00:00
Dorel Luca
282e4df17e Backed out changeset 178fa7e29bb6 (bug 1585070) for Browser-chrome failures in general/browser_windowactivation.js. CLOSED TREE 2020-08-12 20:10:46 +03:00