diff --git a/mozilla/parser/htmlparser/src/Makefile.in b/mozilla/parser/htmlparser/src/Makefile.in
index 94facbfca1e..74ad47086b9 100644
--- a/mozilla/parser/htmlparser/src/Makefile.in
+++ b/mozilla/parser/htmlparser/src/Makefile.in
@@ -66,6 +66,10 @@ REQUIRES = xpcom \
nkcache \
intl \
xpconnect \
+ layout \
+ widget \
+ caps \
+ js \
$(NULL)
SHARED_LIBRARY_LIBS = \
diff --git a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp
index fab4e1eaaff..f0507f40816 100644
--- a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp
+++ b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp
@@ -56,6 +56,9 @@
#include "nsCRT.h"
#include "nsIConsoleService.h"
#include "nsIScriptError.h"
+#include "nsIContentPolicy.h"
+#include "nsContentPolicyUtils.h"
+#include "nsContentErrors.h"
#include "nsXPCOMCIDInternal.h"
#include "nsUnicharInputStream.h"
@@ -796,6 +799,24 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const PRUnichar* aFPIStr,
localURI.swap(uri);
}
+ nsCOMPtr sink = do_QueryInterface(mSink);
+ nsCOMPtr doc;
+ if (sink)
+ doc = do_QueryInterface(sink->GetTarget());
+ PRInt16 shouldLoad = nsIContentPolicy::ACCEPT;
+ rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_OTHER,
+ uri,
+ (doc ? doc->NodePrincipal() : nsnull),
+ doc,
+ EmptyCString(), //mime guess
+ nsnull, //extra
+ &shouldLoad);
+ if (NS_FAILED(rv)) return rv;
+ if (NS_CP_REJECTED(shouldLoad)) {
+ // Disallowed by content policy
+ return NS_ERROR_CONTENT_BLOCKED;
+ }
+
rv = NS_OpenURI(aStream, uri);
nsCAutoString absURL;