Commit Graph

682 Commits

Author SHA1 Message Date
Kris Maglione
89e21d6e79 Bug 1574593: Silently ignore load attempt on/from discarded BrowsingContext. r=nika
The (non-normative) window.open spec does not specify what should happen when
window.open is called on a window with a null/discarded browsing context, but
in general the lookup and creation rules do not make sense when the window has
no BC. It does, however, specify that we should return null when a target BC
cannot be found or created, and gives us broad discretion over when we decide
to ignore a load request and return null. Since we can't trigger a
cross-process load from a discarded BC, simply aborting in that case seems
like the logical solution.

For Location objects, the spec is more specific, and requires that we ignore
load attempts on Location objects whose documents are null, which in our
implementation corresponds to a discarded BrowsingContext.
LocationBase::SetURI already enforces this, but a second check in
BrowsingContext::LoadURI is probably a good idea as well.

Differential Revision: https://phabricator.services.mozilla.com/D45635
2019-09-12 11:37:01 +00:00
Andreas Farre
fee24f7a71 Bug 1560110 - Cache children of detached browsing contexts. r=nika
To be able to reach all BrowsingContexts in
BrowsingContextGroup::EnsureSubscribed we need to make sure that if a
BrowsingContext is detached, we need to cache all of its children in
case we call BrowsingContextGroup::EnsureSubscribed before the
children in turn are detached.

Differential Revision: https://phabricator.services.mozilla.com/D45337
2019-09-10 15:37:54 +00:00
Nika Layzell
52ad660fe5 Bug 1579437 - Check for discarded BrowsingContext in more places, r=farre
Differential Revision: https://phabricator.services.mozilla.com/D45088
2019-09-09 12:04:13 +00:00
Edgar Chen
c8f8d4b1b0 Bug 1577499 - Part 1: Implement transient activation flag; r=smaug
https://github.com/whatwg/html/pull/3851

Differential Revision: https://phabricator.services.mozilla.com/D44479
2019-09-07 19:12:20 +00:00
Edgar Chen
4327dc19b1 Bug 1577175 - Part 1: Set UserGestureActivation in all ancestor of the BrowsingContext that user has interacted with; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D44358
2019-09-02 22:25:57 +00:00
Kris Maglione
358b648b28 Bug 1576407: Part 1 - Add HadOriginalOpener flag to BrowsingContext. r=farre
This is currently only available on the outer window, but needs to move to
BrowsingContext in order from us to remove redundant opener tracking from the
former.

Differential Revision: https://phabricator.services.mozilla.com/D43690
2019-08-28 18:07:31 +00:00
Mihai Alexandru Michis
5bf8e80ffd Backed out 6 changesets (bug 1576407) for causing wpt and mochitest failures. CLOSED TREE
Backed out changeset 3b0498064cbf (bug 1576407)
Backed out changeset 38e4ea431445 (bug 1576407)
Backed out changeset 19bf40067233 (bug 1576407)
Backed out changeset 0ddbc451dcab (bug 1576407)
Backed out changeset 08d4c25fc670 (bug 1576407)
Backed out changeset be7cbc61f825 (bug 1576407)
2019-08-29 03:00:47 +03:00
Kris Maglione
1d5f606615 Bug 1576407: Part 1 - Add HadOriginalOpener flag to BrowsingContext. r=farre
This is currently only available on the outer window, but needs to move to
BrowsingContext in order from us to remove redundant opener tracking from the
former.

Differential Revision: https://phabricator.services.mozilla.com/D43690
2019-08-28 18:07:31 +00:00
Kris Maglione
984813c612 Bug 1532994: Part 2 - Support SetHref() and Replace() in RemoteLocationProxy. r=farre
MANUAL PUSH: Can't update phabricator patch.

Differential Revision: https://phabricator.services.mozilla.com/D43328
2019-08-23 16:20:37 -07:00
Kris Maglione
b6c1b7ff06 Bug 1532994: Part 1 - Move cross-origin-accessible Location logic to base class. r=farre
Differential Revision: https://phabricator.services.mozilla.com/D43327
2019-08-23 15:26:51 -07:00
Abdoulaye O. Ly
dfe95e81d9 Bug 1562990 - [Fission] Make AudioPlayback work with JSWindowActor. r=NeilDeakin,farre
Differential Revision: https://phabricator.services.mozilla.com/D36648
2019-08-19 21:17:21 +00:00
Brindusan Cristian
d6b0ae3ead Merge mozilla-central to autoland. a=merge CLOSED TREE 2019-08-15 12:50:36 +03:00
Jon Coppeard
84f9d85099 Bug 1573844 - Remove external references to js::Class r=mccr8
Depends on D41985

Differential Revision: https://phabricator.services.mozilla.com/D41986
2019-08-14 17:15:15 +00:00
Andrew McCreight
b9c5444472 Bug 1559489, part 4 - Remote-to-local window transplanting. r=tcampbell,bzbarsky
This patch cleans up remote outer window proxies when we navigate back
into the process.

It adds a flag to mDanglingRemoteOuterProxies that is set in between
BrowsingContext::SetDocShell(), where we can tell that the browsing
context is going from being remote to being local, to
nsGlobalWindowOuter::SetNewDocument(), where the local outer window
proxy is actually created. Once the outer window is created, the
remote window proxies can be cleaned up in
CleanUpDanglingRemoteOuterWindowProxies().

The clean up is done by a process that is similar to object
transplanting, except that instead of looking in the cross-compartment
wrapper table for each compartment to find objects to be turned into
CCWs to the new object, it looks in the remote proxy map for each
compartment. SpiderMonkey doesn't know about the proxy maps, so this
has to be done by a new callback object CompartmentTransplantCallback.

Now that this cleanup is being done, it shouldn't be possible to wrap
a remote outer window proxy when the browsing context is local, so
MaybeWrapWindowProxy() can be simplified. I had to drop the assert
here that the browsing context has a window proxy because during clean
up we call wrap on a local outer window proxy before the BC gets the
window proxy set on it. I had the assert because my original plan was
to implicitly fix remote proxies during wrapping, but that is no
longer necessary.

Differential Revision: https://phabricator.services.mozilla.com/D38343
2019-08-13 19:09:59 +00:00
Sylvestre Ledru
3067b10938 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D41559
2019-08-13 07:15:25 +00:00
Nika Layzell
a090090326 Bug 1571063 - Simplify BrowsingContext field sync logic, r=farre
Differential Revision: https://phabricator.services.mozilla.com/D40524
2019-08-09 14:51:30 +00:00
Daniel Varga
7076f626c1 Backed out changeset 14e11bbc0dd3 (bug 1571063) for geckoview-web-platform-tests failures at /html/cross-origin/anonymous.tentative.html 2019-08-09 00:02:18 +03:00
Junior Hsu
69d6023ba0 Bug 1543068 - P1.5 Remove InheritedEmbedderPolicy r=nika
I believe it's the right thing to do.
COEP inherits opener's COEP and is overwritten if COEP by response is stricter.
i.e., we no more need the inherited one.

Differential Revision: https://phabricator.services.mozilla.com/D40143
2019-08-08 18:56:30 +00:00
Junior Hsu
8cbdc3d3eb Bug 1543068 - P1 Substitute Cross-Origin header with COEP r=nika
(a) Substitute Cross-Origin header with COEP
(b) Forcing cors in FetchDriver is removed since COEP doesn't need to IIUC

Differential Revision: https://phabricator.services.mozilla.com/D38788
2019-08-08 18:38:03 +00:00
Kris Maglione
6c6f6fb7d9 Bug 1570773: Move browsingContext getter to nsIDocShellTreeItem and add notxpcom variant. r=nika
This also renames the existing infallible nsDocShell:GetBrowsingContext()
getter to BrowsingContextRef(), and changes the return type, since several
callers rely on it returning a raw pointer rather than an already_AddRefed.

Differential Revision: https://phabricator.services.mozilla.com/D40312
2019-08-07 16:59:30 +00:00
Nika Layzell
c942bb4df9 Bug 1571063 - Simplify BrowsingContext field sync logic, r=farre
Differential Revision: https://phabricator.services.mozilla.com/D40524
2019-08-07 17:07:19 +00:00
Kris Maglione
c59c54711f Bug 1570207: Part 1 - Move CanAccess logic from DocShell to BrowsingContext. r=nika
This change is necessary in order to support named targeting of remote
BrowsingContexts, since the current arrangement only supports in-process
contexts. It also considerably simplifies the logic, since named targetting is
now restricted to the same TabGroup/BrowsingContextGroup, which in and of
itself guarantees that origin attributes will always match in the cases that
we care about.

Differential Revision: https://phabricator.services.mozilla.com/D39991
2019-07-31 11:40:39 -07:00
Andrew McCreight
53537fa230 Bug 1510760, part 5 - Support local-to-remote window proxy transplanting. r=tcampbell,peterv
When a BrowsingContext changes from being local to remote, we have to
change all window proxies from being local to remote, using
transplanting. The actual window proxy becomes a remote window
proxy. Cross compartment wrappers (CCWs) to the window proxy also
become remote window proxies in their respective compartments, rather
than CCWs to a remote proxy in the old compartment of the window
proxy, because the window is no longer actually in that
compartment. This also avoids having to figure out what Xray behavior
for remote window proxies should be.

This patch uses the transplanting support I added to
GetRemoteOuterWindowProxy() in the previous patch to ensure that the
remote proxy map holds the correct value after transplanting finishes.

It drops the requirement that both arguments to JS_TransplantObject
have the same class, because we need to transplant a window proxy with
a remote window proxy. It also deals with this by not adding origobj
to the wrapper map unless it is a CCW, to handle transplanting to a
remote proxy.

The core design here, with the remote window proxies in every
compartment, is taken from a patch by peterv.

Differential Revision: https://phabricator.services.mozilla.com/D35730
2019-07-18 19:36:19 +00:00
Andrew McCreight
d572a4de73 Bug 1510760, part 4 - Add transplant support to GetRemoteOuterWindowProxy(). r=peterv
When we call GetRemoteOuterWindowProxy in the middle of a transplant,
the remote proxy that the function returns will be almost immediately
swapped with some other object. Rather than trying to fix up the
remote proxy map when that happens, this patch adds a new argument
that is a pointer to the object, if any, that the remote proxy is
going to be swapped to. This will be used in the remote proxy map.

Having a value in the remote proxy map that is not a remote proxy
could cause issues if somebody ends up calling
GetRemoteOuterWindowProxy() a second time before the transplant has
finished. To avoid that, my patch asserts that we are returning an
object with the appropriate class.

Differential Revision: https://phabricator.services.mozilla.com/D37598
2019-07-18 19:36:17 +00:00
Noemi Erli
4321d3240d Backed out 5 changesets (bug 1510760) for bustages in nsGlobalWindowOuter.cpp
Backed out changeset 19a972ea7855 (bug 1510760)
Backed out changeset 524ac8b3040d (bug 1510760)
Backed out changeset 3bc5442338bc (bug 1510760)
Backed out changeset cb12d4068aca (bug 1510760)
Backed out changeset 75b769608cce (bug 1510760)
2019-07-18 19:18:47 +03:00
Andrew McCreight
24a58efda9 Bug 1510760, part 5 - Support local-to-remote window proxy transplanting. r=tcampbell,peterv
When a BrowsingContext changes from being local to remote, we have to
change all window proxies from being local to remote, using
transplanting. The actual window proxy becomes a remote window
proxy. Cross compartment wrappers (CCWs) to the window proxy also
become remote window proxies in their respective compartments, rather
than CCWs to a remote proxy in the old compartment of the window
proxy, because the window is no longer actually in that
compartment. This also avoids having to figure out what Xray behavior
for remote window proxies should be.

This patch uses the transplanting support I added to
GetRemoteOuterWindowProxy() in the previous patch to ensure that the
remote proxy map holds the correct value after transplanting finishes.

It drops the requirement that both arguments to JS_TransplantObject
have the same class, because we need to transplant a window proxy with
a remote window proxy. It also deals with this by not adding origobj
to the wrapper map unless it is a CCW, to handle transplanting to a
remote proxy.

The core design here, with the remote window proxies in every
compartment, is taken from a patch by peterv.

Differential Revision: https://phabricator.services.mozilla.com/D35730
2019-07-18 15:02:59 +00:00
Andrew McCreight
df38d35fe0 Bug 1510760, part 4 - Add transplant support to GetRemoteOuterWindowProxy(). r=peterv
When we call GetRemoteOuterWindowProxy in the middle of a transplant,
the remote proxy that the function returns will be almost immediately
swapped with some other object. Rather than trying to fix up the
remote proxy map when that happens, this patch adds a new argument
that is a pointer to the object, if any, that the remote proxy is
going to be swapped to. This will be used in the remote proxy map.

Having a value in the remote proxy map that is not a remote proxy
could cause issues if somebody ends up calling
GetRemoteOuterWindowProxy() a second time before the transplant has
finished. To avoid that, my patch asserts that we are returning an
object with the appropriate class.

Differential Revision: https://phabricator.services.mozilla.com/D37598
2019-07-18 15:02:57 +00:00
Kashav Madan
cdb97e4669 Bug 1554070 - Ensure that the selected window has a targetable BrowsingContext, r=nika
When searching for a target by name, don't select a window if its associated
BrowsingContext is closed, discarded, or cached.

Differential Revision: https://phabricator.services.mozilla.com/D37876
2019-07-17 15:35:04 +00:00
Kashav Madan
154f57eed2 Bug 1527321 - Implement BrowsingContext::IsTargetable, r=nika
Renames IsActive to IsTargetable, and updates its implementation to check that
the current browsing context is neither closed nor cached.

Differential Revision: https://phabricator.services.mozilla.com/D36670
2019-07-17 15:31:04 +00:00
Nika Layzell
b763de2b6a Bug 1563604 - Part 2: Assert on the sending side that BrowsingContexts are in valid states, r=peterv
This should help us more easily identify where the crashing issues are coming
from. The issue in part 1 was found due to these assertion changes.

Differential Revision: https://phabricator.services.mozilla.com/D36996
2019-07-15 20:44:57 +00:00
Nika Layzell
f6076d6d71 Bug 1563604 - Part 1: Confirm detach calls before dropping refs, r=peterv
This ensures that the object is not discarded while there are still in-flight
messages from the parent process, and vice-versa, which could cause crashes if a
CC was run before any pending messages have arrived.

Differential Revision: https://phabricator.services.mozilla.com/D36995
2019-07-15 20:44:50 +00:00
Nika Layzell
e60cf46ef8 Bug 1563542 - Correctly align usage of mIsDiscarded and mClosed for BrowsingContext, r=peterv
In the bug which introduced mIsDiscarded, the code was changed to not set
mClosed during Detach, and only set mIsDiscarded. This was a mistake because a
bunch of places are only reading mClosed. Specifically when creating a
BrowsingContext for an iframe, we check GetClosed() to see whether to skip
creating it. Not doing this check can lead to assertions like the one in this
bug.

This patch changes the behaviour to continue setting `mClosed`, and also updates
the relevant `GetClosed()` checks to correctly check `IsDiscarded()`

Differential Revision: https://phabricator.services.mozilla.com/D37267
2019-07-08 17:27:27 +00:00
Kris Maglione
421d522b2c Bug 1532795: Part 4 - Add helper to get BrowsingContext from WindowProxy. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D35377
2019-06-19 13:06:32 -07:00
Kris Maglione
ab886207b0 Bug 1532795: Part 1 - Support sending BrowsingContexts via structured clone. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D35698
2019-07-01 15:24:09 -07:00
Andreas Farre
c824bc1db2 Bug 1561899 - Add mIsDiscarded and use that when detaching. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D36195
2019-07-02 20:48:13 +00:00
Ciure Andrei
985ba69b12 Backed out changeset a30ecde306ef (bug 1555287) for causing bug 1559537 a=backout 2019-06-25 09:36:36 +03:00
Andreas Farre
d46b408846 Bug 1555287 - Make sure to detach browsing context children early. r=nika
Waiting for docshells and frameloaders to destroy will leave attached
browsing contexts attached too long. In case the children of a
browsing contexts cannot be cached we want to detach all of them as
soon as possible.

Also normalizes the use of BrowsingContext::mGroup.

Differential Revision: https://phabricator.services.mozilla.com/D33602
2019-06-13 16:11:47 +00:00
Noemi Erli
d2f577db57 Backed out changeset c807d0b9d872 (bug 1555287) for valgrind bustages CLOSED TREE 2019-06-13 12:50:32 +03:00
Andreas Farre
28ad206e7f Bug 1555287 - Make sure to detach browsing context children early. r=nika
Waiting for docshells and frameloaders to destroy will leave attached
browsing contexts attached too long. In case the children of a
browsing contexts cannot be cached we want to detach all of them as
soon as possible.

Also normalizes the use of BrowsingContext::mGroup.

Differential Revision: https://phabricator.services.mozilla.com/D33602
2019-06-12 15:35:17 +00:00
Nika Layzell
15f08e0857 Bug 1555753 - Always enable Browsing Context preservation in fission windows, r=farre
Differential Revision: https://phabricator.services.mozilla.com/D33544
2019-06-10 13:06:46 +00:00
Nika Layzell
d5729dfedc Bug 1555488 - Part 1: Clear WindowProxy cache when flipping processes, r=peterv,mccr8
This is sorta-part of the work for bug 1510760. Currently if you do a process
switch, the window proxy state is completely borked, and a lot of stuff doesn't
work.

This patch aims to make it so that, while not transplanted correctly, methods
generally don't return the wrong WindowProxy object anymore after a process
swap.

Differential Revision: https://phabricator.services.mozilla.com/D33082
2019-06-06 14:57:18 +00:00
Valentin Gosu
ecd0b9f635 Bug 1533877 - Frame navigations should check their parent's Cross-Origin policy r=nika
Differential Revision: https://phabricator.services.mozilla.com/D32972
2019-06-04 12:24:56 +00:00
shindli
6bfdff1bbd Backed out 2 changesets (bug 1555488) for ES lint failure in /builds/worker/checkouts/gecko/dom/tests/browser/browser_windowProxy_transplant.js CLOSED TREE
Backed out changeset bcc2d99534d1 (bug 1555488)
Backed out changeset 1bef4720c4ee (bug 1555488)
2019-06-03 23:41:46 +03:00
Nika Layzell
02bc505595 Bug 1555488 - Part 1: Clear WindowProxy cache when flipping processes, r=peterv,mccr8
This is sorta-part of the work for bug 1510760. Currently if you do a process
switch, the window proxy state is completely borked, and a lot of stuff doesn't
work.

This patch aims to make it so that, while not transplanted correctly, methods
generally don't return the wrong WindowProxy object anymore after a process
swap.

Differential Revision: https://phabricator.services.mozilla.com/D33082
2019-06-03 20:03:15 +00:00
shindli
133eac42ed Backed out 5 changesets (bug 1533877) for causing wpt permafailure in /html/cross-origin/anonymous.tentative.html CLOSED TREE
Backed out changeset 1804d3178cd4 (bug 1533877)
Backed out changeset b5a3e938f421 (bug 1533877)
Backed out changeset 08efb10cceb2 (bug 1533877)
Backed out changeset c4b8d755873b (bug 1533877)
Backed out changeset e53056e11429 (bug 1533877)
2019-06-03 22:06:38 +03:00
Valentin Gosu
7ace88603e Bug 1533877 - Frame navigations should check their parent's Cross-Origin policy r=nika
Differential Revision: https://phabricator.services.mozilla.com/D32972
2019-06-03 14:57:13 +00:00
Andreas Farre
807e665d15 Bug 1553490 - Make RestoreBrowsingContextChildren take an array of BCs. r=nika
Also remove BrowsingContextId now when it's not needed.

Differential Revision: https://phabricator.services.mozilla.com/D32151
2019-05-28 07:40:00 +00:00
Sylvestre Ledru
69746836db Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D30883
2019-05-25 17:46:15 +00:00
Nika Layzell
bc0ae69841 Bug 1535835 - Remove global weak ref to BrowsingContext within Unlink(), r=farre
Differential Revision: https://phabricator.services.mozilla.com/D30683
2019-05-24 20:15:53 +00:00
arthur.iakab
699b884244 Backed out changeset a296439a25ff (bug 1519636) for frequent Windows cppunit failures CLOSED TREE 2019-05-24 14:26:01 +03:00