Bug 1435615 - Reuse the same process when loading URIs on about:newtab when requests have POST data. r=mconley, a=jcristau
authorDrew Willcoxon <adw@mozilla.com>
Fri, 27 Apr 2018 10:48:42 -0700
changeset 805969 a41872ae8adb19002a7416146299ce4c0f5d0c8a
parent 805968 788dd61d4625e176bfef64d54e6bf71ebdaf2905
child 805970 9587d5f8a452b9ea73181cb72846956c0242bf2c
push id112832
push userbballo@mozilla.com
push dateFri, 08 Jun 2018 21:11:22 +0000
reviewersmconley, jcristau
bugs1435615
milestone60.0.2
Bug 1435615 - Reuse the same process when loading URIs on about:newtab when requests have POST data. r=mconley, a=jcristau MozReview-Commit-ID: 201VupYACvX
toolkit/modules/E10SUtils.jsm
--- a/toolkit/modules/E10SUtils.jsm
+++ b/toolkit/modules/E10SUtils.jsm
@@ -232,21 +232,25 @@ var E10SUtils = {
 
       // If not originally loaded in this process allow it if the URI would
       // normally be allowed to load in this process by default.
       let remoteType = Services.appinfo.remoteType;
       return remoteType ==
         this.getRemoteTypeForURIObject(aURI, true, remoteType, webNav.currentURI);
     }
 
-    if (sessionHistory.count == 1 && webNav.currentURI.spec == "about:newtab") {
+    if (!aHasPostData &&
+        Services.appinfo.remoteType == WEB_REMOTE_TYPE &&
+        sessionHistory.count == 1 &&
+        webNav.currentURI.spec == "about:newtab") {
       // This is possibly a preloaded browser and we're about to navigate away for
       // the first time. On the child side there is no way to tell for sure if that
       // is the case, so let's redirect this request to the parent to decide if a new
-      // process is needed.
+      // process is needed. But we don't currently properly handle POST data in
+      // redirects (bug 1457520), so if there is POST data, don't return false here.
       return false;
     }
 
     // If the URI can be loaded in the current process then continue
     return this.shouldLoadURIInThisProcess(aURI);
   },
 
   redirectLoad(aDocShell, aURI, aReferrer, aTriggeringPrincipal, aFreshProcess, aFlags) {