Bug 778201 - Remove nsPluginHost::FindProxyByURL and nsProtocolProxyService::DeprecatedBlockingResolve. r=bsmedberg r=mcmanus
MozReview-Commit-ID: 9xuddxdw5cd
--- a/dom/plugins/base/nsNPAPIPlugin.cpp
+++ b/dom/plugins/base/nsNPAPIPlugin.cpp
@@ -2458,25 +2458,20 @@ NPError
if (!url || !*url || !len) {
return NPERR_INVALID_URL;
}
*len = 0;
switch (variable) {
case NPNURLVProxy:
- {
- nsCOMPtr<nsIPluginHost> pluginHostCOM(do_GetService(MOZ_PLUGIN_HOST_CONTRACTID));
- nsPluginHost *pluginHost = static_cast<nsPluginHost*>(pluginHostCOM.get());
- if (pluginHost && NS_SUCCEEDED(pluginHost->FindProxyForURL(url, value))) {
- *len = *value ? strlen(*value) : 0;
- return NPERR_NO_ERROR;
- }
- break;
- }
+ // NPNURLVProxy is no longer supported.
+ *value = nullptr;
+ return NPERR_GENERIC_ERROR;
+
case NPNURLVCookie:
// NPNURLVCookie is no longer supported.
*value = nullptr;
return NPERR_GENERIC_ERROR;
default:
// Fall through and return an error...
;
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -25,17 +25,16 @@
#include "nsIUploadChannel.h"
#include "nsIByteRangeRequest.h"
#include "nsIStreamListener.h"
#include "nsIInputStream.h"
#include "nsIOutputStream.h"
#include "nsIURL.h"
#include "nsTArray.h"
#include "nsReadableUtils.h"
-#include "nsProtocolProxyService.h"
#include "nsIStreamConverterService.h"
#include "nsIFile.h"
#if defined(XP_MACOSX)
#include "nsILocalFileMac.h"
#endif
#include "nsISeekableStream.h"
#include "nsNetUtil.h"
#include "nsIFileStreams.h"
@@ -271,22 +270,16 @@ nsPluginHost::nsPluginHost()
, mPluginEpoch(0)
{
// Bump the pluginchanged epoch on startup. This insures content gets a
// good plugin list the first time it requests it. Normally we'd just
// init this to 1, but due to the unique nature of our ctor we need to do
// this manually.
if (XRE_IsParentProcess()) {
IncrementChromeEpoch();
- } else {
- // When NPAPI requests the proxy setting by calling |FindProxyForURL|,
- // the service is requested and initialized asynchronously, but
- // |FindProxyForURL| is synchronous, so we should initialize this earlier.
- nsCOMPtr<nsIProtocolProxyService> proxyService =
- do_GetService(NS_PROTOCOLPROXYSERVICE_CONTRACTID);
}
// check to see if pref is set at startup to let plugins take over in
// full page mode for certain image mime types that we handle internally
mOverrideInternalTypes =
Preferences::GetBool("plugin.override_internal_types", false);
mPluginsDisabled = Preferences::GetBool("plugin.disable", false);
@@ -592,98 +585,16 @@ nsresult nsPluginHost::PostURL(nsISuppor
if (streamListener) {
rv = NewPluginURLStream(NS_ConvertUTF8toUTF16(url), instance,
streamListener,
postStream, postHeaders, postHeadersLength);
}
return rv;
}
-/* This method queries the prefs for proxy information.
- * It has been tested and is known to work in the following three cases
- * when no proxy host or port is specified
- * when only the proxy host is specified
- * when only the proxy port is specified
- * This method conforms to the return code specified in
- * http://developer.netscape.com/docs/manuals/proxy/adminnt/autoconf.htm#1020923
- * with the exception that multiple values are not implemented.
- */
-
-nsresult nsPluginHost::FindProxyForURL(const char* url, char* *result)
-{
- if (!url || !result) {
- return NS_ERROR_INVALID_ARG;
- }
- nsresult res;
-
- nsCOMPtr<nsIProtocolProxyService> proxyService =
- do_GetService(NS_PROTOCOLPROXYSERVICE_CONTRACTID, &res);
- if (NS_FAILED(res) || !proxyService)
- return res;
-
- RefPtr<nsProtocolProxyService> rawProxyService = do_QueryObject(proxyService);
- if (!rawProxyService) {
- return NS_ERROR_FAILURE;
- }
-
- // make a temporary channel from the argument url
- nsCOMPtr<nsIURI> uri;
- res = NS_NewURI(getter_AddRefs(uri), nsDependentCString(url));
- NS_ENSURE_SUCCESS(res, res);
-
- nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
- // The following channel is never openend, so it does not matter what
- // securityFlags we pass; let's follow the principle of least privilege.
- nsCOMPtr<nsIChannel> tempChannel;
- res = NS_NewChannel(getter_AddRefs(tempChannel), uri, nullPrincipal,
- nsILoadInfo::SEC_REQUIRE_SAME_ORIGIN_DATA_IS_BLOCKED,
- nsIContentPolicy::TYPE_OTHER);
- NS_ENSURE_SUCCESS(res, res);
-
- nsCOMPtr<nsIProxyInfo> pi;
-
- // Remove this deprecated call in the future (see Bug 778201):
- res = rawProxyService->DeprecatedBlockingResolve(tempChannel, 0, getter_AddRefs(pi));
- if (NS_FAILED(res))
- return res;
-
- nsAutoCString host, type;
- int32_t port = -1;
-
- // These won't fail, and even if they do... we'll be ok.
- if (pi) {
- pi->GetType(type);
- pi->GetHost(host);
- pi->GetPort(&port);
- }
-
- if (!pi || host.IsEmpty() || port <= 0 || host.EqualsLiteral("direct")) {
- *result = PL_strdup("DIRECT");
- } else if (type.EqualsLiteral("http")) {
- *result = PR_smprintf("PROXY %s:%d", host.get(), port);
- } else if (type.EqualsLiteral("socks4")) {
- *result = PR_smprintf("SOCKS %s:%d", host.get(), port);
- } else if (type.EqualsLiteral("socks")) {
- // XXX - this is socks5, but there is no API for us to tell the
- // plugin that fact. SOCKS for now, in case the proxy server
- // speaks SOCKS4 as well. See bug 78176
- // For a long time this was returning an http proxy type, so
- // very little is probably broken by this
- *result = PR_smprintf("SOCKS %s:%d", host.get(), port);
- } else {
- NS_ASSERTION(false, "Unknown proxy type!");
- *result = PL_strdup("DIRECT");
- }
-
- if (nullptr == *result)
- res = NS_ERROR_OUT_OF_MEMORY;
-
- return res;
-}
-
nsresult nsPluginHost::UnloadPlugins()
{
PLUGIN_LOG(PLUGIN_LOG_NORMAL, ("nsPluginHost::UnloadPlugins Called\n"));
if (!mPluginsLoaded)
return NS_OK;
// we should call nsIPluginInstance::Stop and nsIPluginInstance::SetWindow
--- a/dom/plugins/base/nsPluginHost.h
+++ b/dom/plugins/base/nsPluginHost.h
@@ -134,17 +134,16 @@ public:
const char* target,
nsNPAPIPluginStreamListener* streamListener,
const char* altHost,
const char* referrer,
bool forceJSEnabled,
uint32_t postHeadersLength,
const char* postHeaders);
- nsresult FindProxyForURL(const char* url, char* *result);
nsresult UserAgent(const char **retstring);
nsresult ParsePostBufferToFixHeaders(const char *inPostData,
uint32_t inPostDataLen,
char **outPostData,
uint32_t *outPostDataLen);
nsresult CreateTempFileToPost(const char *aPostDataURL, nsIFile **aTmpFile);
nsresult NewPluginNativeWindow(nsPluginNativeWindow ** aPluginNativeWindow);
--- a/netwerk/base/nsProtocolProxyService.cpp
+++ b/netwerk/base/nsProtocolProxyService.cpp
@@ -1161,94 +1161,16 @@ private:
nsresult mStatus;
nsCString mPACString;
nsCString mPACURL;
bool mCompleted;
};
NS_IMPL_ISUPPORTS0(nsAsyncBridgeRequest)
-// nsProtocolProxyService
-nsresult
-nsProtocolProxyService::DeprecatedBlockingResolve(nsIChannel *aChannel,
- uint32_t aFlags,
- nsIProxyInfo **retval)
-{
- NS_ENSURE_ARG_POINTER(aChannel);
-
- nsCOMPtr<nsIURI> uri;
- nsresult rv = GetProxyURI(aChannel, getter_AddRefs(uri));
- if (NS_FAILED(rv)) return rv;
-
- nsProtocolInfo info;
- rv = GetProtocolInfo(uri, &info);
- if (NS_FAILED(rv))
- return rv;
-
- nsCOMPtr<nsIProxyInfo> pi;
- bool usePACThread;
-
- // SystemProxySettings and PAC files can block the main thread
- // but if neither of them are in use, we can just do the work
- // right here and directly invoke the callback
-
- rv = Resolve_Internal(aChannel, info, aFlags,
- &usePACThread, getter_AddRefs(pi));
- if (NS_FAILED(rv))
- return rv;
-
- if (!usePACThread || !mPACMan) {
- ApplyFilters(aChannel, info, pi);
- pi.forget(retval);
- return NS_OK;
- }
-
- // Use the PAC thread to do the work, so we don't have to reimplement that
- // code, but block this thread on that completion.
- RefPtr<nsAsyncBridgeRequest> ctx = new nsAsyncBridgeRequest();
- ctx->Lock();
- if (NS_SUCCEEDED(mPACMan->AsyncGetProxyForURI(uri, ctx, false))) {
- // this can really block the main thread, so cap it at 3 seconds
- ctx->Wait();
- }
- ctx->Unlock();
- if (!ctx->mCompleted)
- return NS_ERROR_FAILURE;
- if (NS_FAILED(ctx->mStatus))
- return ctx->mStatus;
-
- // pretty much duplicate real DoCallback logic
-
- // Generate proxy info from the PAC string if appropriate
- if (!ctx->mPACString.IsEmpty()) {
- LOG(("sync pac thread callback %s\n", ctx->mPACString.get()));
- ProcessPACString(ctx->mPACString, 0, getter_AddRefs(pi));
- ApplyFilters(aChannel, info, pi);
- pi.forget(retval);
- return NS_OK;
- }
-
- if (!ctx->mPACURL.IsEmpty()) {
- NS_WARNING("sync pac thread callback indicates new pac file load\n");
- // This is a problem and is one of the reasons this blocking interface
- // is deprecated. The main loop needs to spin to make this reload happen. So
- // we are going to kick off the reload and return an error - it will work
- // next time. Because this sync interface is only used in the java plugin it
- // is extremely likely that the pac file has already been loaded anyhow.
-
- rv = ConfigureFromPAC(ctx->mPACURL, false);
- if (NS_FAILED(rv))
- return rv;
- return NS_ERROR_NOT_AVAILABLE;
- }
-
- *retval = nullptr;
- return NS_OK;
-}
-
nsresult
nsProtocolProxyService::AsyncResolveInternal(nsIChannel *channel, uint32_t flags,
nsIProtocolProxyCallback *callback,
nsICancelable **result,
bool isSyncOK)
{
NS_ENSURE_ARG_POINTER(channel);
NS_ENSURE_ARG_POINTER(callback);
--- a/netwerk/base/nsProtocolProxyService.h
+++ b/netwerk/base/nsProtocolProxyService.h
@@ -46,19 +46,16 @@ public:
NS_DECL_NSIPROTOCOLPROXYSERVICE
NS_DECL_NSIOBSERVER
NS_DECLARE_STATIC_IID_ACCESSOR(NS_PROTOCOL_PROXY_SERVICE_IMPL_CID)
nsProtocolProxyService();
nsresult Init();
- nsresult DeprecatedBlockingResolve(nsIChannel *aChannel,
- uint32_t aFlags,
- nsIProxyInfo **retval);
protected:
friend class nsAsyncResolveRequest;
~nsProtocolProxyService();
/**
* This method is called whenever a preference may have changed or