Commit Graph

2990 Commits

Author SHA1 Message Date
Matt Woodrow
c168ffe7c0 Bug 1578624 - P3: Move conversion from LoadURIOptions processing into a static constructor for nsDocShellLoadState. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D44759
2019-10-09 04:53:39 +00:00
Matt Woodrow
7a1fd26761 Bug 1578624 - P2: Extend nsDocShellLoadState for the extra options needed to describe front end loads. r=kmag,nika
Differential Revision: https://phabricator.services.mozilla.com/D44758
2019-10-09 04:53:06 +00:00
Sylvestre Ledru
49802d0a8e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D47737
2019-10-06 18:29:55 +00:00
Csoregi Natalia
107c11ccab Backed out 7 changesets (bug 1576714) for fission permafailures on test_bug590812.html. a=backout
Backed out changeset d0c49f00eb91 (bug 1576714)
Backed out changeset faecc9f35b49 (bug 1576714)
Backed out changeset 2e156655c31e (bug 1576714)
Backed out changeset eece722082c7 (bug 1576714)
Backed out changeset ebda40f96884 (bug 1576714)
Backed out changeset 7dce423417d8 (bug 1576714)
Backed out changeset 9a5072019168 (bug 1576714)
2019-10-05 00:08:33 +03:00
Nika Layzell
59a927155f Bug 1576714 - Part 3: Initiate subframe process switches from the parent, r=kmag
This flips the direction in which the BrowserBridge actor is generally created
such that it is generally created in the parent and sent down to a child
process.

This is done by making the decision about what kind of switch to perform in the
parent, and sending messages down to child processes async to orchestrate these
process changes.

Process launching is changed to use an async `MozPromise`-returning API in this
patch, though the actual process launching still occurs synchronously. A future
patch will enable performing async process launching through the
NewOrUsedBrowserProcess mechanism.

I know of at least a few timing issues which exist with the new logic,
especially around the state of the BrowsingContext during the process
transition. I decided to not try to fix all of these issues in this patch, as
many are complex and will require changing how we manage the lifecycle of
BrowsingContext substantially. I do, however, think that the new logic is more
reliable and has fewer timing issues than the previous logic.

Differential Revision: https://phabricator.services.mozilla.com/D47310
2019-10-03 21:40:24 +00:00
Brindusan Cristian
f5f4823217 Backed out 6 changesets (bug 1576714) for build bustages at nsFrameLoaderOwner.cpp. CLOSED TREE
Backed out changeset 083967e704d2 (bug 1576714)
Backed out changeset b3467f1bdde7 (bug 1576714)
Backed out changeset 88e3b4b7fbaf (bug 1576714)
Backed out changeset b91221da32c7 (bug 1576714)
Backed out changeset 6996b7705f06 (bug 1576714)
Backed out changeset a303fc193f60 (bug 1576714)
2019-10-02 04:14:53 +03:00
Nika Layzell
eb7940e4be Bug 1576714 - Part 3: Initiate subframe process switches from the parent, r=kmag
This flips the direction in which the BrowserBridge actor is generally created
such that it is generally created in the parent and sent down to a child
process.

This is done by making the decision about what kind of switch to perform in the
parent, and sending messages down to child processes async to orchestrate these
process changes.

Process launching is changed to use an async `MozPromise`-returning API in this
patch, though the actual process launching still occurs synchronously. A future
patch will enable performing async process launching through the
NewOrUsedBrowserProcess mechanism.

I know of at least a few timing issues which exist with the new logic,
especially around the state of the BrowsingContext during the process
transition. I decided to not try to fix all of these issues in this patch, as
many are complex and will require changing how we manage the lifecycle of
BrowsingContext substantially. I do, however, think that the new logic is more
reliable and has fewer timing issues than the previous logic.

Differential Revision: https://phabricator.services.mozilla.com/D47310
2019-10-01 18:09:03 +00:00
Matt Woodrow
60ca720fe8 Bug 1584374 - Unblock parent load events for OOP iframes that don't send an actual load event. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D47353
2019-09-29 23:51:59 +00:00
Brindusan Cristian
8633c6f1f4 Backed out 2 changesets (bug 1582716, bug 1575051) for gv-junit failures, new exception. CLOSED TREE
Backed out changeset b5aa3ac4483e (bug 1582716)
Backed out changeset c385531b4ee3 (bug 1575051)
2019-09-24 19:47:00 +03:00
Andreas Farre
0a55dca131 Bug 1582716 - Remove nsDocShell::GetIsOnlyToplevelInTabGroup. r=nika
We can remove isOnlyToplevelInTabGroup entirely since we have
BrowsingContext/BrowsingContextGroup exposed through
chrome-webidl. Checking if a browsing context is the only top level
(auxilliary or otherwise) is only a matter of checking that there
isn't a parent, and that the size of the browsing context group is 1.

Differential Revision: https://phabricator.services.mozilla.com/D46590
2019-09-24 14:29:18 +00:00
shindli
0be2b2524a Backed out changeset db132849d960 (bug 1582716) for causing linting failures in /builds/worker/checkouts/gecko/toolkit/modules/E10SUtils.jsm CLOSED TREE 2019-09-24 17:09:06 +03:00
Andreas Farre
fc08906a75 Bug 1582716 - Remove nsDocShell::GetIsOnlyToplevelInTabGroup. r=nika
We can remove isOnlyToplevelInTabGroup entirely since we have
BrowsingContext/BrowsingContextGroup exposed through
chrome-webidl. Checking if a browsing context is the only top level
(auxilliary or otherwise) is only a matter of checking that there
isn't a parent, and that the size of the browsing context group is 1.

Differential Revision: https://phabricator.services.mozilla.com/D46590
2019-09-24 13:22:47 +00:00
Andreas Farre
adc8fc7fb5 Bug 1575051 - Remove nsIDocShellTreeItem.findItemWithName. r=kmag
This also allows us to remove TabGroup::FindItemWithName, which is a
big step towards removing TabGroup entirely.

Differential Revision: https://phabricator.services.mozilla.com/D46285
2019-09-24 13:16:26 +00:00
Brindusan Cristian
f52298b70e Backed out changeset 0ebd1612a4ae (bug 1575051) for gv-junit crashes and bc failures on browser_browsingContext-02.js. CLOSED TREE 2019-09-24 15:08:41 +03:00
Andreas Farre
24fa934f6b Bug 1575051 - Remove nsIDocShellTreeItem.findWithName. r=kmag
This also allows us to remove TabGroup::FindItemWithName, which is a
big step towards removing TabGroup entirely.

Differential Revision: https://phabricator.services.mozilla.com/D46285
2019-09-24 10:58:47 +00:00
Edgar Chen
9ce65d9730 Bug 1578355 - Part 1: Move user-activation code from EventStateManager to UserActivation; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D45168
2019-09-20 20:51:25 +00:00
Agi Sferro
cadada31d6 Bug 1570115 - Move LoadURIDelegate to Actor. r=kmag,snorp
Differential Revision: https://phabricator.services.mozilla.com/D44051
2019-09-20 18:15:25 +00:00
Daniel Varga
0c8477fc87 Backed out 3 changesets (bug 1578355) for build bustage at build/src/dom/base/nsSyncLoadService.h:48:21. On a CLOSED TREE
Backed out changeset d50ad759f129 (bug 1578355)
Backed out changeset 339ab54ca471 (bug 1578355)
Backed out changeset 284299dac42c (bug 1578355)
2019-09-20 14:05:12 +03:00
Edgar Chen
91a465e33d Bug 1578355 - Part 1: Move user-activation code from EventStateManager to UserActivation; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D45168
2019-09-20 10:31:55 +00:00
Kris Maglione
5c9235777f Bug 1580355: Run findWithName checks in the correct process and update to expect access checks. r=farre
BrowsingContext.findWithName is required to do access checks based on the
requestor, which can only be done in the process which owns it. This change
also alters the behavior of the existing CanAccess origin checks, which
typically treat any item as same-origin, but only when the docshells are
actually same process.

Removing the exemption fixes the behavior discrepancy between Fission and
non-Fission runs, but also requires that the test be updated to expect proper
access checks. Which is the situation we really want to test, anyway.

Differential Revision: https://phabricator.services.mozilla.com/D45837
2019-09-19 11:33:53 +00:00
Jonathan Watt
c25ce80903 Bug 1559841. Make the 'load' event wait for OOP-iframes to load. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D41953
2019-09-19 00:00:44 +00:00
Jean-Yves Avenard
a6337010e5 Bug 1581470 - Check for CSP navigate-to during ConfigureChannel so that it runs in the parent process. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D45985
2019-09-18 04:36:51 +00:00
Ehsan Akhgari
2363fb83fc Bug 1580617 - Make nsDocShell::GetContentBlockingLog() reject its returned promise when there's no content viewer; r=baku
Differential Revision: https://phabricator.services.mozilla.com/D45587
2019-09-15 13:06:28 +00:00
Benjamin
c5beb1096e Bug 1529068 - Implementation of the navigate-to CSP directive as defined in CSP Level 3. r=ckerschb,mccr8
https://www.w3.org/TR/CSP3/#directive-navigate-to

Differential Revision: https://phabricator.services.mozilla.com/D37139
2019-09-10 22:33:51 +00:00
Dorel Luca
1a9552b2ad Backed out changeset 890bcaee9b7d (bug 1529068) for causing massive tier2 failures on central in dom/security/test/csp/test_navigate_to.html. CLOSED TREE 2019-09-05 09:47:35 +03:00
Benjamin
ba0cb3fafb Bug 1529068 - Implementation of the navigate-to CSP directive as defined in CSP Level 3. r=ckerschb,mccr8
https://www.w3.org/TR/CSP3/#directive-navigate-to

Differential Revision: https://phabricator.services.mozilla.com/D37139
2019-09-04 20:29:37 +00:00
Csoregi Natalia
3f8382e243 Backed out changeset 99b313550fb8 (bug 1529068) for eslint failure on test_navigate_to.html. CLOSED TREE 2019-09-04 21:15:18 +03:00
Benjamin
bdc89781de Bug 1529068 - Implementation of the navigate-to CSP directive as defined in CSP Level 3. r=ckerschb,mccr8
https://www.w3.org/TR/CSP3/#directive-navigate-to

Differential Revision: https://phabricator.services.mozilla.com/D37139
2019-09-04 17:44:14 +00:00
Jean-Yves Avenard
7e84791f59 Bug 1556489 - P23 - Only create new ClientSource objects in the content, but use the recreated info from redirects in the parent. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D42260
2019-09-03 10:19:53 +10:00
Jean-Yves Avenard
778122dda8 Bug 1556489 - P22 - Manually add history entries for all DocumentChannel redirects, since these aren't exposed to the content process as channel redirects. r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D42259
2019-09-03 10:19:53 +10:00
Matt Woodrow
f5f911a2ba Bug 1556489 - P18. Add DocumentChannel and hook it up. r=nika,mayhemer
DocumentChannel acts as a replacement for HttpChannel where redirects are now entirely handled in the DocumentChannelParent. The ContentChild will receive the final nsIChannel once all redirects have been handled.

Differential Revision: https://phabricator.services.mozilla.com/D37490
2019-09-03 10:19:38 +10:00
Matt Woodrow
825de1942c Bug 1556489 - P13. Use LoadInfo redirect chain to determine when a channel has redirected and we should skip uri fixup. r=mayhemer
Differential Revision: https://phabricator.services.mozilla.com/D40970
2019-09-03 10:19:36 +10:00
Matt Woodrow
e64da8e83a Bug 1556489 - P12. Move code into static utility method. r=nika
We will need access to this method in a following change.

Differential Revision: https://phabricator.services.mozilla.com/D40969
2019-09-03 10:19:35 +10:00
Matt Woodrow
85b239c131 Bug 1556489 - P9. Make method static. r=nika,mayhemer
Differential Revision: https://phabricator.services.mozilla.com/D40966
2019-09-03 10:19:20 +10:00
Thomas Nguyen
a688b675a4 Bug 1528697 - Expose ReferrerPolicy.webidl and use referrerpolicy enum r=smaug
ReferrerPolicy gets tossed back and forth as a uint32_t and
ReferrerPolicy enum in header file. Expose ReferrerPolicyValues from
webidl file and use consistently in native code.

Differential Revision: https://phabricator.services.mozilla.com/D41954
2019-08-21 13:24:45 +00:00
Kershaw Chang
5cd32511f1 Bug 1553267 - Cancel the redirect load if docshell is being destroyed r=mayhemer
When the docshell is being destroyed, HttpChannelChild::CompleteRedirectSetup is not called and HttpChannelChild::mListener is not also assigned. In this case, I think we should cancel the channel and propagate the error to the http channel parent.

Differential Revision: https://phabricator.services.mozilla.com/D41515
2019-08-16 11:41:04 +00:00
Brindusan Cristian
1ee0dd23fd Merge inbound to mozilla-central. a=merge 2019-08-15 12:45:55 +03:00
Boris Zbarsky
c93f8a53d4 Bug 1422334. replaceState should update all the URI state for the entry being replaced. r=smaug
If we don't update the resultPrincipalURI, then things that examine it
(e.g. Location APIs and the URL bar) will show the wrong (pre-replaceState) URL.
I believe there is no effective difference between setting the result principal
URI to null and setting it to aNewURI here: the ultimate consumer of it is
NS_GetFinalChannelURI, which will fall back to the originalURI if it's null, and
in this case the originalURI is aNewURI.

Differential Revision: https://phabricator.services.mozilla.com/D41788
2019-08-14 19:29:49 +00:00
Olli Pettay
cc4f459e90 Bug 1563587, Make history.back/forward/go asynchronous, r=farre
The main part of the change is the change to ChildSHistory - make it possible to have Go() to be called asynchronously
and also let one to cancel pending history navigations. History object (window.history) can then use either the sync or
async Go(), depending on the dom.window.history.async pref.

LoadDelegate, which is used by GeckoView, needs special handling, since
it spins event loop nestedly. With session history loads and same-document loads we can just
bypass it.
To deal with same-document case, MaybeHandleSameDocumentNavigation is split to IsSameDocumentNavigation,
which collects relevant information about the request and returns true if same-document navigation should happen,
and then later HandleSameDocumentNavigation uses that information to trigger the navigation.
SameDocumentNavigationState is used to pass the information around.

referrer-policy-test-case.sub.js is buggy causing tests to pass only on Firefox with sync history API.

nested-context-navigations-iframe.html.ini is added because of https://bugzilla.mozilla.org/show_bug.cgi?id=1572932

Differential Revision: https://phabricator.services.mozilla.com/D41199
2019-08-14 06:38:47 +00:00
Coroiu Cristina
58b0b4e8ce Backed out 2 changesets (bug 1563587) for junit failures on a CLOSED TREE
Backed out changeset d07f2e7d6f5e (bug 1563587)
Backed out changeset a365d3c43261 (bug 1563587)
2019-08-13 22:33:52 +03:00
Olli Pettay
c2ebbf5f1c Bug 1563587, Make history.back/forward/go asynchronous, r=farre
The main part of the change is the change to ChildSHistory - make it possible to have Go() to be called asynchronously
and also let one to cancel pending history navigations. History object (window.history) can then use either the sync or
async Go(), depending on the dom.window.history.async pref.

LoadDelegate, which is used by GeckoView, needs special handling, since
it spins event loop nestedly. With session history loads and same-document loads we can just
bypass it.
To deal with same-document case, MaybeHandleSameDocumentNavigation is split to IsSameDocumentNavigation,
which collects relevant information about the request and returns true if same-document navigation should happen,
and then later HandleSameDocumentNavigation uses that information to trigger the navigation.
SameDocumentNavigationState is used to pass the information around.

referrer-policy-test-case.sub.js is buggy causing tests to pass only on Firefox with sync history API.

nested-context-navigations-iframe.html.ini is added because of https://bugzilla.mozilla.org/show_bug.cgi?id=1572932

Differential Revision: https://phabricator.services.mozilla.com/D41199
2019-08-13 17:11:35 +00:00
Nika Layzell
8f12a56d0d Bug 1523638 - Part 9: Use provided 'WindowGlobalChild' actors to create the initial about:blank document, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D37656
2019-08-08 16:07:12 +00:00
Nika Layzell
3d14470ce0 Bug 1523638 - Part 8: Remove unused arguments from nsDocShell::Embed(), r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D37655
2019-08-08 16:07:10 +00:00
Nika Layzell
1e7685d089 Bug 1523638 - Part 4: Move NextWindowId logic into nsContentUtils, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D37651
2019-08-08 16:07: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
Kannan Vijayan
c110dbe443 Bug 1569262 - Rename nsIDocShellTreeItem::GetRootTreeItem to GetInProcessRootTreeItem for Fission marking. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D41064
2019-08-07 19:24:00 +00:00
Andreea Pavel
2bcc109ae1 Backed out changeset d0aae34d9b95 (bug 1529068) for failing form-redirected-blocked.sub.html on a CLOSED TREE 2019-08-07 01:39:29 +03:00
Benjamin
0a71f21f72 Bug 1529068 - navigate-to r=ckerschb,mccr8
Implementation of the navigate-to CSP directive as defined in CSP Level 3, https://www.w3.org/TR/CSP3/#directive-navigate-to

Differential Revision: https://phabricator.services.mozilla.com/D37139
2019-08-06 18:27:45 +00:00
Kris Maglione
1bb60064a6 Bug 1561015: Part 1 - Use BrowsingContext in window provider APIs. r=bzbarsky,mossop
This is the first step in making it possible to return remote WindowProxy
objects from window.open() and related APIs.

This patch also incidentally fixes a bug where getContentWindowOrOpenURI
returned the top-level browser window rather than the new content window when
passed OPEN_NEWWINDOW for the `aWhere` parameter. This was not the expected
behavior, and was a potentially major footgun for any new users who expected
to always get the content window for the URL they were loading, rather than
sometimes getting a chrome browser window instead.

For now, that case just returns null, which is only a minor footgun, rather
than the major one we had before.

Differential Revision: https://phabricator.services.mozilla.com/D35688
2019-08-02 20:48:33 +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