diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
index d7772a646ea..20469940355 100644
--- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
@@ -105,6 +105,7 @@
#include "nsITimerCallback.h"
#include "nsDOMError.h"
#include "nsIScrollable.h"
+#include "nsContentPolicyUtils.h"
#ifdef ALLOW_ASYNCH_STYLE_SHEETS
const PRBool kBlockByDefault=PR_FALSE;
@@ -4614,6 +4615,25 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode)
if (NS_FAILED(rv))
return rv;
+ // After the security manager, the content-policy stuff gets a veto
+ // For pinkerton: a symphony for string conversion, in 3 parts.
+ nsXPIDLCString urlCString;
+ mScriptURI->GetSpec(getter_Copies(urlCString));
+ nsAutoString url;
+ url.AssignWithConversion((const char *)urlCString);
+ nsCOMPtr DOMElement = do_QueryInterface(element, &rv);
+
+ PRBool shouldLoad = PR_TRUE;
+ if (NS_SUCCEEDED(rv) &&
+ (rv = NS_CheckContentLoadPolicy(nsIContentPolicy::CONTENT_SCRIPT,
+ url, DOMElement, &shouldLoad),
+ NS_SUCCEEDED(rv)) &&
+ !shouldLoad) {
+
+ // content-policy veto causes silent failure
+ return NS_OK;
+ }
+
nsCOMPtr loadGroup;
nsIStreamLoader* loader;
diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
index d7772a646ea..20469940355 100644
--- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
@@ -105,6 +105,7 @@
#include "nsITimerCallback.h"
#include "nsDOMError.h"
#include "nsIScrollable.h"
+#include "nsContentPolicyUtils.h"
#ifdef ALLOW_ASYNCH_STYLE_SHEETS
const PRBool kBlockByDefault=PR_FALSE;
@@ -4614,6 +4615,25 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode)
if (NS_FAILED(rv))
return rv;
+ // After the security manager, the content-policy stuff gets a veto
+ // For pinkerton: a symphony for string conversion, in 3 parts.
+ nsXPIDLCString urlCString;
+ mScriptURI->GetSpec(getter_Copies(urlCString));
+ nsAutoString url;
+ url.AssignWithConversion((const char *)urlCString);
+ nsCOMPtr DOMElement = do_QueryInterface(element, &rv);
+
+ PRBool shouldLoad = PR_TRUE;
+ if (NS_SUCCEEDED(rv) &&
+ (rv = NS_CheckContentLoadPolicy(nsIContentPolicy::CONTENT_SCRIPT,
+ url, DOMElement, &shouldLoad),
+ NS_SUCCEEDED(rv)) &&
+ !shouldLoad) {
+
+ // content-policy veto causes silent failure
+ return NS_OK;
+ }
+
nsCOMPtr loadGroup;
nsIStreamLoader* loader;