Skip to content

Commit

Permalink
Bug 1543990 - Simplify nsISpeculativeConnect API, r=necko-reviewers,g…
Browse files Browse the repository at this point in the history
…eckoview-reviewers,search-reviewers,valentin,m_kato

Differential Revision: https://phabricator.services.mozilla.com/D179066
KershawChang committed Jun 1, 2023
1 parent 7b6e087 commit ee5b4d0
Showing 16 changed files with 31 additions and 54 deletions.
3 changes: 2 additions & 1 deletion browser/components/places/PlacesUIUtils.sys.mjs
Original file line number Diff line number Diff line change
@@ -1849,7 +1849,8 @@ export var PlacesUIUtils = {
Services.io.speculativeConnect(
uri,
window.gBrowser.contentPrincipal,
null
null,
false
);
} catch (ex) {
// Can't setup speculative connection for this url, just ignore it.
2 changes: 1 addition & 1 deletion browser/components/sessionstore/SessionStore.sys.mjs
Original file line number Diff line number Diff line change
@@ -4496,7 +4496,7 @@ var SessionStoreInternal = {
let sc = Services.io.QueryInterface(Ci.nsISpeculativeConnect);
let uri = Services.io.newURI(url);
try {
sc.speculativeConnect(uri, principal, null);
sc.speculativeConnect(uri, principal, null, false);
return true;
} catch (error) {
// Can't setup speculative connection for this url.
3 changes: 2 additions & 1 deletion browser/components/urlbar/UrlbarUtils.sys.mjs
Original file line number Diff line number Diff line change
@@ -752,7 +752,8 @@ export var UrlbarUtils = {
Services.io.speculativeConnect(
uri,
window.gBrowser.contentPrincipal,
null
null,
false
);
} catch (ex) {
// Can't setup speculative connection for this url, just ignore it.
7 changes: 2 additions & 5 deletions dom/base/Document.cpp
Original file line number Diff line number Diff line change
@@ -12485,11 +12485,8 @@ void Document::MaybePreconnect(nsIURI* aOrigURI, mozilla::CORSMode aCORSMode) {
return;
}

if (aCORSMode == CORS_ANONYMOUS) {
speculator->SpeculativeAnonymousConnect(uri, NodePrincipal(), nullptr);
} else {
speculator->SpeculativeConnect(uri, NodePrincipal(), nullptr);
}
speculator->SpeculativeConnect(uri, NodePrincipal(), nullptr,
aCORSMode == CORS_ANONYMOUS);
}

void Document::ForgetImagePreload(nsIURI* aURI) {
2 changes: 1 addition & 1 deletion dom/base/Element.cpp
Original file line number Diff line number Diff line change
@@ -3262,7 +3262,7 @@ nsresult Element::PostHandleEventForLinks(EventChainPostVisitor& aVisitor) {
nsCOMPtr<nsISpeculativeConnect> sc =
do_QueryInterface(nsContentUtils::GetIOService());
nsCOMPtr<nsIInterfaceRequestor> ir = do_QueryInterface(shell);
sc->SpeculativeConnect(absURI, NodePrincipal(), ir);
sc->SpeculativeConnect(absURI, NodePrincipal(), ir, false);
}
}
}
4 changes: 2 additions & 2 deletions netwerk/base/Predictor.cpp
Original file line number Diff line number Diff line change
@@ -677,7 +677,7 @@ void Predictor::PredictForLink(nsIURI* targetURI, nsIURI* sourceURI,
nsCOMPtr<nsIPrincipal> principal =
BasePrincipal::CreateContentPrincipal(targetURI, originAttributes);

mSpeculativeService->SpeculativeConnect(targetURI, principal, nullptr);
mSpeculativeService->SpeculativeConnect(targetURI, principal, nullptr, false);
if (verifier) {
PREDICTOR_LOG((" sending verification"));
verifier->OnPredictPreconnect(targetURI);
@@ -1158,7 +1158,7 @@ bool Predictor::RunPredictions(nsIURI* referrer,
++totalPreconnects;
nsCOMPtr<nsIPrincipal> principal =
BasePrincipal::CreateContentPrincipal(uri, originAttributes);
mSpeculativeService->SpeculativeConnect(uri, principal, this);
mSpeculativeService->SpeculativeConnect(uri, principal, this, false);
predicted = true;
if (verifier) {
PREDICTOR_LOG((" sending preconnect verification"));
18 changes: 5 additions & 13 deletions netwerk/base/nsIOService.cpp
Original file line number Diff line number Diff line change
@@ -1961,11 +1961,8 @@ IOServiceProxyCallback::OnProxyAvailable(nsICancelable* request,

nsLoadFlags loadFlags = 0;
channel->GetLoadFlags(&loadFlags);
if (loadFlags & nsIRequest::LOAD_ANONYMOUS) {
speculativeHandler->SpeculativeAnonymousConnect(uri, principal, mCallbacks);
} else {
speculativeHandler->SpeculativeConnect(uri, principal, mCallbacks);
}
bool anonymous = !!(loadFlags & nsIRequest::LOAD_ANONYMOUS);
speculativeHandler->SpeculativeConnect(uri, principal, mCallbacks, anonymous);

return NS_OK;
}
@@ -2059,14 +2056,9 @@ nsresult nsIOService::SpeculativeConnectInternal(

NS_IMETHODIMP
nsIOService::SpeculativeConnect(nsIURI* aURI, nsIPrincipal* aPrincipal,
nsIInterfaceRequestor* aCallbacks) {
return SpeculativeConnectInternal(aURI, aPrincipal, aCallbacks, false);
}

NS_IMETHODIMP
nsIOService::SpeculativeAnonymousConnect(nsIURI* aURI, nsIPrincipal* aPrincipal,
nsIInterfaceRequestor* aCallbacks) {
return SpeculativeConnectInternal(aURI, aPrincipal, aCallbacks, true);
nsIInterfaceRequestor* aCallbacks,
bool aAnonymous) {
return SpeculativeConnectInternal(aURI, aPrincipal, aCallbacks, aAnonymous);
}

NS_IMETHODIMP
8 changes: 3 additions & 5 deletions netwerk/base/nsISpeculativeConnect.idl
Original file line number Diff line number Diff line change
@@ -26,15 +26,13 @@ interface nsISpeculativeConnect : nsISupports
* channel of the hinted transaction.
* @param aCallbacks any security callbacks for use with SSL for interfaces.
* May be null.
* @param aAnonymous indicates if this is an anonymous connection.
*
*/
void speculativeConnect(in nsIURI aURI,
in nsIPrincipal aPrincipal,
in nsIInterfaceRequestor aCallbacks);

void speculativeAnonymousConnect(in nsIURI aURI,
in nsIPrincipal aPrincipal,
in nsIInterfaceRequestor aCallbacks);
in nsIInterfaceRequestor aCallbacks,
in boolean aAnonymous);
};

/**
6 changes: 1 addition & 5 deletions netwerk/ipc/NeckoParent.cpp
Original file line number Diff line number Diff line change
@@ -531,11 +531,7 @@ mozilla::ipc::IPCResult NeckoParent::RecvSpeculativeConnect(
return IPC_FAIL(this, "aURI must not be null");
}
if (aURI && speculator) {
if (aAnonymous) {
speculator->SpeculativeAnonymousConnect(aURI, principal, nullptr);
} else {
speculator->SpeculativeConnect(aURI, principal, nullptr);
}
speculator->SpeculativeConnect(aURI, principal, nullptr, aAnonymous);
}
return IPC_OK();
}
7 changes: 2 additions & 5 deletions netwerk/protocol/http/EarlyHintPreconnect.cpp
Original file line number Diff line number Diff line change
@@ -99,11 +99,8 @@ void EarlyHintPreconnect::MaybePreconnect(const LinkHeader& aHeader,
// connections we can make, so it should be fine we don't check duplicate
// preconnect attempts here.
CORSMode corsMode = dom::Element::StringToCORSMode(aHeader.mCrossOrigin);
if (corsMode == CORS_ANONYMOUS) {
gIOService->SpeculativeAnonymousConnect(uri, aPrincipal, callbacks);
} else {
gIOService->SpeculativeConnect(uri, aPrincipal, callbacks);
}
gIOService->SpeculativeConnect(uri, aPrincipal, callbacks,
corsMode == CORS_ANONYMOUS);
}

} // namespace mozilla::net
12 changes: 3 additions & 9 deletions netwerk/protocol/http/nsHttpHandler.cpp
Original file line number Diff line number Diff line change
@@ -2302,15 +2302,9 @@ nsresult nsHttpHandler::SpeculativeConnectInternal(

NS_IMETHODIMP
nsHttpHandler::SpeculativeConnect(nsIURI* aURI, nsIPrincipal* aPrincipal,
nsIInterfaceRequestor* aCallbacks) {
return SpeculativeConnectInternal(aURI, aPrincipal, aCallbacks, false);
}

NS_IMETHODIMP
nsHttpHandler::SpeculativeAnonymousConnect(nsIURI* aURI,
nsIPrincipal* aPrincipal,
nsIInterfaceRequestor* aCallbacks) {
return SpeculativeConnectInternal(aURI, aPrincipal, aCallbacks, true);
nsIInterfaceRequestor* aCallbacks,
bool aAnonymous) {
return SpeculativeConnectInternal(aURI, aPrincipal, aCallbacks, aAnonymous);
}

void nsHttpHandler::TickleWifi(nsIInterfaceRequestor* cb) {
2 changes: 1 addition & 1 deletion netwerk/test/unit/test_speculative_connect.js
Original file line number Diff line number Diff line change
@@ -160,7 +160,7 @@ function test_speculative_connect() {

ios
.QueryInterface(Ci.nsISpeculativeConnect)
.speculativeConnect(URI, principal, null);
.speculativeConnect(URI, principal, null, false);
}

/* Speculative connections should not be allowed for hosts with local IP
Original file line number Diff line number Diff line change
@@ -44,7 +44,8 @@ add_task(async function test_speculative_connect() {
Services.io.speculativeConnect(
uri,
Services.scriptSecurityManager.getSystemPrincipal(),
null
null,
false
);
await notificationPromise;

Original file line number Diff line number Diff line change
@@ -99,7 +99,7 @@ export class RemoteWebNavigation {
attrs
);
}
Services.io.speculativeConnect(uri, principal, null);
Services.io.speculativeConnect(uri, principal, null, false);
}
} catch (ex) {
// Can't setup speculative connection for this uri for some
4 changes: 2 additions & 2 deletions toolkit/components/search/SearchEngine.sys.mjs
Original file line number Diff line number Diff line change
@@ -1719,7 +1719,7 @@ export class SearchEngine {
);

try {
connector.speculativeConnect(searchURI, principal, callbacks);
connector.speculativeConnect(searchURI, principal, callbacks, false);
} catch (e) {
// Can't setup speculative connection for this url, just ignore it.
console.error(e);
@@ -1732,7 +1732,7 @@ export class SearchEngine {
).uri;
if (suggestURI.prePath != searchURI.prePath) {
try {
connector.speculativeConnect(suggestURI, principal, callbacks);
connector.speculativeConnect(suggestURI, principal, callbacks, false);
} catch (e) {
// Can't setup speculative connection for this url, just ignore it.
console.error(e);
2 changes: 1 addition & 1 deletion widget/android/nsAppShell.cpp
Original file line number Diff line number Diff line change
@@ -141,7 +141,7 @@ class GeckoThreadSupport final
OriginAttributes attrs;
nsCOMPtr<nsIPrincipal> principal =
BasePrincipal::CreateContentPrincipal(uri, attrs);
specConn->SpeculativeConnect(uri, principal, nullptr);
specConn->SpeculativeConnect(uri, principal, nullptr, false);
}

static void OnPause() {

0 comments on commit ee5b4d0

Please sign in to comment.