Commit Graph

631 Commits

Author SHA1 Message Date
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
Nika Layzell
83c189c2cf Bug 1691410 - Add support for reverting racy changes in CanSet, r=kmag
In some cases, a content process may think they should be able to make a change
to a synced field, but in the meantime something in the parent process has
changed and the change can no longer be applied. This was the cause of a number
of issues around the in-flight process ID, and can cause issues such as crashes
if the CanSet method was made too strict.

This patch introduces a new possible return type from `CanSet` which allows
requesting a `Revert`. A reverted field change will either be cancelled at the
source (if the CanSet fails in the setting process), or will be cancelled by
sending a new transaction back to the source process reverting the change to
ensure consistency.

In addition, some additional logging is added which made it easier to locate the
underlying bug and verify the correctness of the change.

The current primary use-case for this new feature is the CurrentInnerWindowId
field which can be updated by the previous process' docshell after the parent
process has already performed a switch to a new process. This can lead to the
current WindowContext being inaccurate for a BrowsingContext in some edge cases
as we allow the flawed set due the in-flight process ID matching.

This patch changes the logic to no longer check the in-flight process ID, and
instead revert any changes to the CurrentInnerWindowId field coming from a
process which is not currently active in the BrowsingContext.

No tests were added as it is very timing-sensitive, and difficult to create the
specific scenario, however without these changes my patch for bug 1663757
consistently causes geckoview-junit crashes due to currentWindowGlobal being
incorrect.

Differential Revision: https://phabricator.services.mozilla.com/D105553
2021-02-20 03:55:06 +00:00
Eitan Isaacson
a434046b4c Bug 1693597 - P2: Rename ProxyAccessible to RemoteAccessible. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D105671
2021-02-19 23:14:33 +00:00
Kris Maglione
57467158f0 Bug 1662840: Move overrideDPPX from nsIContentViewer to BrowsingContext. r=whimboo,remote-protocol-reviewers,mtigley,emilio
Differential Revision: https://phabricator.services.mozilla.com/D104001
2021-02-10 01:30:35 +00:00
Edgar Chen
82dbb6fe52 Bug 1690747 - Should also check blur is allowed in BrowsingContext::Blur(); r=hsivonen
When binding delegates blur() to BrowsingContext::Blur, the remote side skips
the check given that there is no js on the stack, but we should not skip the
check. This only affects design-mode which allows the focus moving to the root
element.

Differential Revision: https://phabricator.services.mozilla.com/D104008
2021-02-09 14:56:56 +00:00
Andreea Pavel
f5a83d1c26 Backed out changeset ebb61065ad47 (bug 1690747) for failing mochitests at test_focus_design_mode.html on a CLOSED TREE 2021-02-09 15:11:05 +02:00
Edgar Chen
427c05c1c2 Bug 1690747 - Should also check blur is allowed in BrowsingContext::Blur(); r=hsivonen
When binding delegates blur() to BrowsingContext::Blur, the remote side skips
the check given that there is no js on the stack, but we should not skip the
check. This only affects design-mode which allows the focus moving to the root
element.

Differential Revision: https://phabricator.services.mozilla.com/D104008
2021-02-09 12:18:15 +00:00
Emilio Cobos Álvarez
ee46f8a29e Bug 1655967 - Clean up touch events override code. r=farre
Differential Revision: https://phabricator.services.mozilla.com/D103756
2021-02-04 06:16:25 +00:00
Emilio Cobos Álvarez
3cfe0c8cd9 Bug 1591120 - Move print and color-scheme simulation to browsingContext. r=ochameau,nika,devtools-backward-compat-reviewers
We keep mMedium in nsPresContext rather than just looking it up in the
browsing context because that's used quite more frequently.

Differential Revision: https://phabricator.services.mozilla.com/D103782
2021-02-03 10:38:09 +00:00
Olli Pettay
60c6f03eaf Bug 1683751 - Removing iframes should update history.length r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D100274
2021-02-03 00:02:29 +00:00
Kris Maglione
1c35164c4d Bug 1647519: Reject javascript: requests targeting other content processes. r=nika
Loads targeting cross-process BrowsingContexts are by definition cross-origin,
which should preclude any javascript: loads. While those loads are currently
prevented by principal checks in the final target process, sending IPC
messages for the attempts is unnecessary, and potentially opens a door to
privilege escalation exploits by a compromised content process.

This patch prevents any cross-process load requests from being sent by content
processes, and adds checks in the parent process to kill any (potentially
compromised) content process which attempts to send them.

Differential Revision: https://phabricator.services.mozilla.com/D103529
2021-02-02 22:24:47 +00:00
Brindusan Cristian
96ac923d39 Backed out changeset e4cefba9f87e (bug 1647519) for build bustages in BrowsingContext.cpp. CLOSED TREE 2021-02-03 00:08:53 +02:00
Kris Maglione
f533d213f0 Bug 1647519: Reject javascript: requests targeting other content processes. r=nika
Loads targeting cross-process BrowsingContexts are by definition cross-origin,
which should preclude any javascript: loads. While those loads are currently
prevented by principal checks in the final target process, sending IPC
messages for the attempts is unnecessary, and potentially opens a door to
privilege escalation exploits by a compromised content process.

This patch prevents any cross-process load requests from being sent by content
processes, and adds checks in the parent process to kill any (potentially
compromised) content process which attempts to send them.

Differential Revision: https://phabricator.services.mozilla.com/D103529
2021-02-02 21:46:53 +00:00
Mihai Alexandru Michis
15e3cc11e1 Backed out changeset c0ecccf36d56 (bug 1647519) for causing bustages in BrowsingContext.cpp
CLOSED TREE
2021-02-02 22:47:01 +02:00
Kris Maglione
7731d7d180 Bug 1647519: Reject javascript: requests targeting other content processes. r=nika
Loads targeting cross-process BrowsingContexts are by definition cross-origin,
which should preclude any javascript: loads. While those loads are currently
prevented by principal checks in the final target process, sending IPC
messages for the attempts is unnecessary, and potentially opens a door to
privilege escalation exploits by a compromised content process.

This patch prevents any cross-process load requests from being sent by content
processes, and adds checks in the parent process to kill any (potentially
compromised) content process which attempts to send them.

Differential Revision: https://phabricator.services.mozilla.com/D103529
2021-02-02 20:32:04 +00:00
Brindusan Cristian
a235b9837e Backed out changeset 0395717ea76d (bug 1647519) for build bustages at BrowsingContext.cpp. CLOSED TREE 2021-02-02 22:07:10 +02:00
Kris Maglione
967bbfc75c Bug 1647519: Reject javascript: requests targeting other content processes. r=nika
Loads targeting cross-process BrowsingContexts are by definition cross-origin,
which should preclude any javascript: loads. While those loads are currently
prevented by principal checks in the final target process, sending IPC
messages for the attempts is unnecessary, and potentially opens a door to
privilege escalation exploits by a compromised content process.

This patch prevents any cross-process load requests from being sent by content
processes, and adds checks in the parent process to kill any (potentially
compromised) content process which attempts to send them.

Differential Revision: https://phabricator.services.mozilla.com/D103529
2021-02-02 19:47:12 +00:00
Emilio Cobos Álvarez
7f16942679 Bug 1690099 - Move focus for window.open() on a targeted tab. r=hsivonen
That doesn't go through BrowsingContext::InternalLoad. This matches the
behavior of clicking links and the behavior of other browsers.

Differential Revision: https://phabricator.services.mozilla.com/D103720
2021-02-02 14:33:48 +00:00
Kris Maglione
8504261280 Bug 1688715: Rename BrowsingContext::CheckOnlyOwningProcessCanSet to LegacyCheckOnlyOwningProcessCanSet. r=nika
It is inherently buggy and should not be used in new code.

Differential Revision: https://phabricator.services.mozilla.com/D102960
2021-01-28 03:31:50 +00:00
Steven MacLeod
8e4c90b237 Bug 1677774 - Relax CanSet for TouchEventsOverrideInternal. r=nika
As a temporary fix to prevent crashes we are loosening the `CanSet`
restrictions for TouchEventsOverrideInternal. In the future this will
be fixed properly by changing DevTools to set this property from the
parent only, at which time tighter restrictions on setting
`TouchEventsOverrideInternal` may be added.

Differential Revision: https://phabricator.services.mozilla.com/D103080
2021-01-26 20:38:20 +00:00
Nika Layzell
220abc75bf Bug 1643450 - Part 1: Allow creating windows from closing tabs, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D100165
2021-01-14 19:42:07 +00:00
Emilio Cobos Álvarez
73a16e79d9 Bug 1572798 - Make content browsing contexts for tabs start as inactive. r=nika
Otherwise autoplay blocking until-in-foreground breaks with the other
patch in this bug, because it unblocks media playback once a browsing
context is active for the first time.

Differential Revision: https://phabricator.services.mozilla.com/D42329
2021-01-21 20:20:57 +00:00
Cosmin Sabou
36851bbb53 Backed out changeset 975f6057245a (bug 1572798) for turning bug 1511706 to perma. CLOSED TREE 2021-01-21 21:35:33 +02:00
Emilio Cobos Álvarez
4aeecb504c Bug 1572798 - Make content browsing contexts for tabs start as inactive. r=nika
Otherwise autoplay blocking until-in-foreground breaks with the other
patch in this bug, because it unblocks media playback once a browsing
context is active for the first time.

Differential Revision: https://phabricator.services.mozilla.com/D42329
2021-01-21 17:40:12 +00:00
Dorel Luca
cc8fec8923 Backed out 2 changesets (bug 1572798) for multiple failures. CLOSED TREE
Backed out changeset cfdebb863454 (bug 1572798)
Backed out changeset f2d3a6800638 (bug 1572798)
2021-01-20 00:15:48 +02:00
Emilio Cobos Álvarez
e8fa29326b Bug 1572798 - Make content browsing contexts for tabs start as inactive. r=nika
Otherwise autoplay blocking until-in-foreground breaks with the other
patch in this bug, because it unblocks media playback once a browsing
context is active for the first time.

Differential Revision: https://phabricator.services.mozilla.com/D42329
2021-01-19 19:14:33 +00:00
Henri Sivonen
fb676b14a8 Bug 1659383 - Check if focus() is allowed even when Window_Binding::focus() delegates to BrowsingContext::Focus(). r=nika
Differential Revision: https://phabricator.services.mozilla.com/D100005
2021-01-18 12:48:42 +00:00
Csoregi Natalia
5cf34d127c Backed out changeset d2c7360e9d01 (bug 1659383) for failures on iframe-focuses-parent-different-site.html. CLOSED TREE 2021-01-18 12:36:49 +02:00
Henri Sivonen
82633069e5 Bug 1659383 - Check if focus() is allowed even when Window_Binding::focus() delegates to BrowsingContext::Focus(). r=nika
Differential Revision: https://phabricator.services.mozilla.com/D100005
2021-01-18 07:45:29 +00:00
Andreas Farre
73ab5df607 Bug 1612147 - Don't store FeaturePolicy in BrowsingContext. r=smaug
Syncing the container FeaturePolicy across BrowsingContext is actually
a bit more heavy-handed than necessary. We only ever need a container
FeaturePolicy when inheriting a FeaturePolicy in exactly the document
the container contains. Not every process that the tree the container
is a part of. So instead of storing a FeaturePolicy in a synced field,
we manually send it to the correct WindowGlobalChild (which
corresponds to a document) and retrieve it from there.

Differential Revision: https://phabricator.services.mozilla.com/D61479
2021-01-14 11:15:24 +00:00
Mihai Alexandru Michis
6699f1022e Backed out changeset 5eacf74bc04f (bug 1643450) for causing android mochitest failures in test_window_open_from_closing.html
CLOSED TREE
2021-01-06 19:44:21 +02:00
Nika Layzell
22c84a22b1 Bug 1643450 - Allow creating windows from closing tabs, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D100165
2021-01-06 15:19:32 +00:00
Razvan Maries
50e24c409f Backed out changeset 7d10fe1f2f2e (bug 1684490) for causing bug 1685106. a=backout DONTBUILD 2021-01-05 17:59:54 +02:00
Emilio Cobos Álvarez
1c606f2c8f Bug 1684490 - Make some BrowsingContext/WindowContext asserts DIAGNOSTIC_ASSERTS. r=edgar
These would've caught the issue a lot sooner.

Differential Revision: https://phabricator.services.mozilla.com/D100579
2021-01-04 20:54:15 +00:00
Narcis Beleuzu
63f58ff8b8 Backed out 2 changesets (bug 1684490) as per emilio`s request
Backed out changeset 1f44b3e9ec62 (bug 1684490)
Backed out changeset 7ad6088bb2c2 (bug 1684490)
2021-01-04 23:51:15 +02:00
Emilio Cobos Álvarez
9e669d0c2e Bug 1684490 - Make some BrowsingContext/WindowContext asserts DIAGNOSTIC_ASSERTS. r=edgar DONTBUILD
These would've caught the issue a lot sooner.

Differential Revision: https://phabricator.services.mozilla.com/D100579
2021-01-04 20:54:15 +00:00
Peter Van der Beken
a1af39795c Bug 1681729 - Pass the right value for aCloneChildren to AddChildSHEntryHelper with SHIP. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D99481
2020-12-15 15:02:33 +00:00
Emilio Cobos Álvarez
136e604164 Bug 1635914 - Move active flag handling explicitly to BrowsingContext. r=nika
And have it mirror in the parent process more automatically.

The docShellIsActive setter in the browser-custom-element side needs to
be there rather than in the usual DidSet() calls because the
AsyncTabSwitcher code relies on getting an exact amount of notifications
as response to that specific setter. Not pretty, but...

BrowserChild no longer sets IsActive() on the docshell itself for OOP
iframes. This fixes bug 1679521. PresShell activeness is used to
throttle rAF as well, which handles OOP iframes nicely as well.

Differential Revision: https://phabricator.services.mozilla.com/D96072
2020-12-11 15:43:19 +00:00
Steven MacLeod
8a0736cfed Bug 1677774 - don't clear descendant's overrides when setting TouchEventsOverride. r=farre
This should prevent content process crashes when there are
cross-origin descendants with an override set.

There is a slight change in behaviour when an override is set after
a descendant context has previously set one. This shouldn't be a
problem since devtools only wants to expose touch simulation at the
tab level. Additionally this new behaviour is reasonable and would
allow devtools to implement the same semantics by doing the clearing
themselves (if needed).

Differential Revision: https://phabricator.services.mozilla.com/D97797
2020-11-27 14:53:27 +00:00
Simon Giesecke
fafab6cabc Bug 1660470 - Avoid including DocShellMessageUtils.h from header files. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D93239

Depends on D93238
2020-11-23 16:04:08 +00:00
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
Henrik Skupin
7261b61c5d Bug 1676709 - Send a "browsing-context-attached" notification when attached, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D97002
2020-11-18 22:19:10 +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
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
8bb67aa0d3 Bug 1673947 - CreatedDynamically isn't updated on parent side, r=kashav
Depends on D94904

Differential Revision: https://phabricator.services.mozilla.com/D95068
2020-10-30 22:10:22 +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