From dd82fb9c782c48689936cd6db58489bb7a9d9a80 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Fri, 15 Sep 2006 09:52:05 +0000 Subject: [PATCH] Move the safe vs unsafe about: distinction out of the security manager and into nsIAboutModule implementations. Bug 337746, r=dveditz, sr=darin git-svn-id: svn://10.0.0.236/trunk@211810 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsAboutRedirector.cpp | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/mozilla/docshell/base/nsAboutRedirector.cpp b/mozilla/docshell/base/nsAboutRedirector.cpp index 75abe9a95a3..41363da8d02 100644 --- a/mozilla/docshell/base/nsAboutRedirector.cpp +++ b/mozilla/docshell/base/nsAboutRedirector.cpp @@ -43,6 +43,7 @@ #include "plstr.h" #include "nsIScriptSecurityManager.h" #include "nsAboutProtocolUtils.h" +#include "nsSimpleNestedURI.h" NS_IMPL_ISUPPORTS1(nsAboutRedirector, nsIAboutModule) @@ -129,6 +130,29 @@ nsAboutRedirector::NewChannel(nsIURI *aURI, nsIChannel **result) return NS_ERROR_ILLEGAL_VALUE; } +NS_IMETHODIMP +nsAboutRedirector::GetURIFlags(nsIURI *aURI, PRUint32 *result) +{ + NS_ENSURE_ARG_POINTER(aURI); + + nsCAutoString name; + nsresult rv = NS_GetAboutModuleName(aURI, name); + NS_ENSURE_SUCCESS(rv, rv); + + for (int i=0; i < kRedirTotal; i++) + { + if (name.EqualsASCII(kRedirMap[i].id)) + { + *result = kRedirMap[i].dropChromePrivs ? + nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT : 0; + return NS_OK; + } + } + + NS_ERROR("nsAboutRedirector called for unknown case"); + return NS_ERROR_ILLEGAL_VALUE; +} + NS_METHOD nsAboutRedirector::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult) {