<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[197038] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/197038">197038</a></dd>
<dt>Author</dt> <dd>dbates@webkit.org</dd>
<dt>Date</dt> <dd>2016-02-24 10:51:58 -0800 (Wed, 24 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>CSP: Enable plugin-types directive by default
https://bugs.webkit.org/show_bug.cgi?id=154420
&lt;rdar://problem/24730322&gt;

Reviewed by Brent Fulgham.

Source/WebCore:

* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::isExperimentalDirectiveName): Move plugin-types from the directives considered
experimental to...
(WebCore::isCSPDirectiveName): ...the list of standard directives.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Move logic to parse the plugin-types
directive outside the ENABLE(CSP_NEXT) macro guarded section/experimental feature runtime flag.

LayoutTests:

* TestExpectations: Mark http/tests/security/contentSecurityPolicy/1.1/plugintypes*.html tests as PASS so that we run them.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid-expected.txt: Update expected result.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid.html: Call runTests() following changes to multiple-iframe-plugin-test.js.
Also add closing tags for &lt;body&gt; and &lt;html&gt; to make the document well-formed.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html: Substitute &quot;Content-Security-Policy&quot; for &quot;X-WebKit-CSP&quot;;
no behavior change.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html: Ditto.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html: Ditto.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url-expected.txt: Update expected result.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html: Substitute &quot;Content-Security-Policy&quot; for &quot;X-WebKit-CSP&quot;;
no behavior change.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-allowed.html: Ditto.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html: Ditto.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-01.html: Call runTests() following changes to multiple-iframe-plugin-test.js.
Also add closing tags for &lt;body&gt; and &lt;html&gt; to make the document well-formed.
* http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-02.html: Ditto.
* http/tests/security/contentSecurityPolicy/resources/echo-object-data.pl: Remove logic to support Content Security Policy header X-WebKit-CSP
as it is sufficient to make use of the standardized header Content-Security-Policy.
* http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js: Simplify code now that we do not pass query string parameter
experimental to script echo-object-data.pl.
(runTests): Runs all the sub-tests.
(runNextTest.iframe.onload): Formerly named testImpl.iframe.onload.
(runNextTest): Formerly named testImpl. Runs the next sub-test.
(testExperimentalPolicy): Deleted.
(test): Deleted.
(testImpl.iframe.onload): Deleted.
(testImpl): Deleted.
(finishTesting): Deleted.
* http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon-expected.txt: Update expected result based on change to test (below).
* http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon.html: Modified to test that we emit
a console warning when plugin-types is used as a source expression.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesinvalidexpectedtxt">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesinvalidhtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesmismatcheddatahtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesmismatchedurlhtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnotypedatahtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnotypeurlexpectedtxt">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnotypeurlhtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnourlallowedhtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-allowed.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnourlblockedhtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesurl01html">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-01.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesurl02html">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-02.html</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicyresourcesechoobjectdatapl">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/echo-object-data.pl</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicyresourcesmultipleiframeplugintestjs">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicysourcelistparsingnosemicolonexpectedtxt">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycontentSecurityPolicysourcelistparsingnosemicolonhtml">trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicyDirectiveListcpp">trunk/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/ChangeLog        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2016-02-24  Daniel Bates  &lt;dabates@apple.com&gt;
+
+        CSP: Enable plugin-types directive by default
+        https://bugs.webkit.org/show_bug.cgi?id=154420
+        &lt;rdar://problem/24730322&gt;
+
+        Reviewed by Brent Fulgham.
+
+        * TestExpectations: Mark http/tests/security/contentSecurityPolicy/1.1/plugintypes*.html tests as PASS so that we run them.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid-expected.txt: Update expected result.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid.html: Call runTests() following changes to multiple-iframe-plugin-test.js.
+        Also add closing tags for &lt;body&gt; and &lt;html&gt; to make the document well-formed.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html: Substitute &quot;Content-Security-Policy&quot; for &quot;X-WebKit-CSP&quot;;
+        no behavior change.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html: Ditto.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html: Ditto.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url-expected.txt: Update expected result.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html: Substitute &quot;Content-Security-Policy&quot; for &quot;X-WebKit-CSP&quot;;
+        no behavior change.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-allowed.html: Ditto.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html: Ditto.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-01.html: Call runTests() following changes to multiple-iframe-plugin-test.js.
+        Also add closing tags for &lt;body&gt; and &lt;html&gt; to make the document well-formed.
+        * http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-02.html: Ditto.
+        * http/tests/security/contentSecurityPolicy/resources/echo-object-data.pl: Remove logic to support Content Security Policy header X-WebKit-CSP
+        as it is sufficient to make use of the standardized header Content-Security-Policy.
+        * http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js: Simplify code now that we do not pass query string parameter
+        experimental to script echo-object-data.pl.
+        (runTests): Runs all the sub-tests.
+        (runNextTest.iframe.onload): Formerly named testImpl.iframe.onload.
+        (runNextTest): Formerly named testImpl. Runs the next sub-test.
+        (testExperimentalPolicy): Deleted.
+        (test): Deleted.
+        (testImpl.iframe.onload): Deleted.
+        (testImpl): Deleted.
+        (finishTesting): Deleted.
+        * http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon-expected.txt: Update expected result based on change to test (below).
+        * http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon.html: Modified to test that we emit
+        a console warning when plugin-types is used as a source expression.
+
</ins><span class="cx"> 2016-02-24  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Rebaseline two W3C tests for ios-simulator after r197014
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/TestExpectations        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -817,6 +817,16 @@
</span><span class="cx"> webkit.org/b/154203 http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-overrides-xfo.html
</span><span class="cx"> webkit.org/b/154203 http/tests/security/contentSecurityPolicy/1.1/scripthash-default-src.html
</span><span class="cx"> webkit.org/b/154203 http/tests/security/contentSecurityPolicy/1.1/stylehash-default-src.html
</span><ins>+http/tests/security/contentSecurityPolicy/1.1/plugintypes-affects-child.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-allowed.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-01.html [ Pass ]
+http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-02.html [ Pass ]
</ins><span class="cx"> webkit.org/b/111869 http/tests/security/contentSecurityPolicy/eval-blocked-and-sends-report.html
</span><span class="cx"> webkit.org/b/115700 http/tests/security/contentSecurityPolicy/inline-event-handler-blocked-after-injecting-meta.html [ Failure ]
</span><span class="cx"> webkit.org/b/153148 http/tests/security/contentSecurityPolicy/eval-allowed-in-report-only-mode-and-sends-report.html
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesinvalidexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid-expected.txt (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid-expected.txt        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid-expected.txt        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -6,6 +6,10 @@
</span><span class="cx"> 
</span><span class="cx"> CONSOLE MESSAGE: Refused to load 'data:application/x-webkit-test-netscape,logifloaded' (MIME type 'application/x-webkit-test-netscape') because it violates the following Content Security Policy Directive: 'plugin-types '.
</span><span class="cx"> 
</span><ins>+CONSOLE MESSAGE: Invalid plugin type in 'plugin-types' Content Security Policy directive: ''none''.
+
+CONSOLE MESSAGE: Refused to load 'data:application/x-webkit-test-netscape,logifloaded' (MIME type 'application/x-webkit-test-netscape') because it violates the following Content Security Policy Directive: 'plugin-types 'none''.
+
</ins><span class="cx"> CONSOLE MESSAGE: Invalid plugin type in 'plugin-types' Content Security Policy directive: 'text'.
</span><span class="cx"> 
</span><span class="cx"> CONSOLE MESSAGE: Refused to load 'data:application/x-webkit-test-netscape,logifloaded' (MIME type 'application/x-webkit-test-netscape') because it violates the following Content Security Policy Directive: 'plugin-types text'.
</span><span class="lines">@@ -70,6 +74,11 @@
</span><span class="cx"> --------
</span><span class="cx"> Frame: '&lt;!--framePath //&lt;!--frame7--&gt;--&gt;'
</span><span class="cx"> --------
</span><ins>+
+
+--------
+Frame: '&lt;!--framePath //&lt;!--frame8--&gt;--&gt;'
+--------
</ins><span class="cx"> PASS.
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesinvalidhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-invalid.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -16,9 +16,11 @@
</span><span class="cx"> ];
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><del>-&lt;body onload=&quot;testExperimentalPolicy()&quot;&gt;
</del><ins>+&lt;body onload=&quot;runTests()&quot;&gt;
</ins><span class="cx">     &lt;p&gt;
</span><span class="cx">         This tests our handling of invalid `plugin-types` CSP directives.
</span><span class="cx">         Consider this test passing if each of the following frames contains
</span><span class="cx">         either &quot;PASS&quot; or no text at all.
</span><span class="cx">     &lt;/p&gt;
</span><ins>+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesmismatcheddatahtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx">     testRunner.dumpChildFramesAsText();
</span><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</del><ins>+&lt;meta http-equiv=&quot;Content-Security-Policy&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">     This tests that plugin content that doesn't match the declared type doesn't
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesmismatchedurlhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;/plugins/resources/mock-plugin-logger.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</del><ins>+&lt;meta http-equiv=&quot;Content-Security-Policy&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">     This tests that plugin content that doesn't match the declared type doesn't
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnotypedatahtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -11,7 +11,7 @@
</span><span class="cx">     runAfterPluginLoad(null, NotifyDone);
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;/plugins/resources/mock-plugin-logger.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</del><ins>+&lt;meta http-equiv=&quot;Content-Security-Policy&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">     Given a `plugin-types` directive, plugins have to declare a type explicitly.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnotypeurlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url-expected.txt (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url-expected.txt        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url-expected.txt        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -1,8 +1,3 @@
</span><span class="cx"> CONSOLE MESSAGE: Refused to load 'http://127.0.0.1:8000/plugins/resources/mock-plugin.pl' (MIME type '') because it violates the following Content Security Policy Directive: 'plugin-types application/x-invalid-type'. When enforcing the 'plugin-types' directive, the plugin's media type must be explicitly declared with a 'type' attribute on the containing element (e.g. '&lt;object type=&quot;[TYPE GOES HERE]&quot; ...&gt;').
</span><span class="cx"> 
</span><span class="cx"> Given a `plugin-types` directive, plugins have to declare a type explicitly. No declared type, no load. This test passes if there's a console message above.  
</span><del>-
---------
-Frame: '&lt;!--framePath //&lt;!--frame0--&gt;--&gt;'
---------
-
</del></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnotypeurlhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx">     testRunner.dumpChildFramesAsText();
</span><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</del><ins>+&lt;meta http-equiv=&quot;Content-Security-Policy&quot; content=&quot;plugin-types application/x-invalid-type&quot;&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">     Given a `plugin-types` directive, plugins have to declare a type explicitly.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnourlallowedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-allowed.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-allowed.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-allowed.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> if (window.testRunner)
</span><span class="cx">     testRunner.dumpAsText();
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;plugin-types application/x-webkit-test-netscape&quot;&gt;
</del><ins>+&lt;meta http-equiv=&quot;Content-Security-Policy&quot; content=&quot;plugin-types application/x-webkit-test-netscape&quot;&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> This test passes if there isn't a console message saying the plugin was blocked.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesnourlblockedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-nourl-blocked.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> 
</span><span class="cx">     runAfterPluginLoad(null, NotifyDone);
</span><span class="cx"> &lt;/script&gt;
</span><del>-&lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;plugin-types text/plain&quot;&gt;
</del><ins>+&lt;meta http-equiv=&quot;Content-Security-Policy&quot; content=&quot;plugin-types text/plain&quot;&gt;
</ins><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> This test passes if there is a console message saying the plugin was blocked.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesurl01html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-01.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-01.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-01.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -11,9 +11,11 @@
</span><span class="cx"> ];
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><del>-&lt;body onload=&quot;testExperimentalPolicy()&quot;&gt;
</del><ins>+&lt;body onload='runTests()'&gt;
</ins><span class="cx">     &lt;p&gt;
</span><span class="cx">         This tests our handling of `data:` URLs, given a `plugin-types` CSP
</span><span class="cx">         directive. Consider this test passing if each of the following frames
</span><span class="cx">         contains &quot;PASS&quot; or no text at all, and no console warnings appear above.
</span><span class="cx">     &lt;/p&gt;
</span><ins>+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicy11plugintypesurl02html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-02.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-02.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-url-02.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -10,9 +10,11 @@
</span><span class="cx"> ];
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><del>-&lt;body onload=&quot;testExperimentalPolicy()&quot;&gt;
</del><ins>+&lt;body onload='runTests()'&gt;
</ins><span class="cx">     &lt;p&gt;
</span><span class="cx">         This tests our handling of non-`data:` URLs, given a `plugin-types` CSP
</span><span class="cx">         directive. Consider this test passing if none of the following frames
</span><span class="cx">         contains &quot;FAIL&quot; and four sets of console logs appear above.
</span><span class="cx">     &lt;/p&gt;
</span><ins>+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicyresourcesechoobjectdatapl"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/echo-object-data.pl (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/echo-object-data.pl        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/echo-object-data.pl        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -5,12 +5,7 @@
</span><span class="cx"> my $cgi = new CGI;
</span><span class="cx"> 
</span><span class="cx"> print &quot;Content-Type: text/html; charset=UTF-8\n&quot;;
</span><del>-my $experimental = $cgi-&gt;param('experimental') || &quot;&quot;;
-if ($experimental eq 'true') {
-    print &quot;X-WebKit-CSP: &quot; . $cgi-&gt;param('csp') . &quot;\n\n&quot;;
-} else {
-    print &quot;Content-Security-Policy: &quot; . $cgi-&gt;param('csp') . &quot;\n\n&quot;;
-}
</del><ins>+print &quot;Content-Security-Policy: &quot; . $cgi-&gt;param('csp') . &quot;\n\n&quot;;
</ins><span class="cx"> 
</span><span class="cx"> print &quot;&lt;!DOCTYPE html&gt;\n&quot;;
</span><span class="cx"> print &quot;&lt;html&gt;\n&quot;;
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicyresourcesmultipleiframeplugintestjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -4,51 +4,30 @@
</span><span class="cx">     testRunner.dumpChildFramesAsText();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-function testExperimentalPolicy() {
-    testImpl(true);
</del><ins>+function runTests()
+{
+    runNextTest();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-function test() {
-    testImpl(false);
-}
-
-function testImpl(experimental) {
-    if (tests.length === 0)
-        return finishTesting();
-    var baseURL = &quot;/security/contentSecurityPolicy/&quot;;
-    var current = tests.shift();
-    var iframe = document.createElement(&quot;iframe&quot;);
-    iframe.src = baseURL + &quot;resources/echo-object-data.pl?&quot; +
-                 &quot;experimental=&quot; + (experimental ? &quot;true&quot; : &quot;false&quot;) +
-                 &quot;&amp;csp=&quot; + escape(current[1]);
-
-    if (current[0])
-        iframe.src += &quot;&amp;log=PASS.&quot;;
-    else
-        iframe.src += &quot;&amp;log=FAIL.&quot;;
-
-    if (current[2])
-        iframe.src += &quot;&amp;plugin=&quot; + escape(current[2]);
-    else {
-        iframe.src += &quot;&amp;plugin=data:application/x-webkit-test-netscape,logifloaded&quot;;
</del><ins>+function runNextTest()
+{
+    var currentTest = tests.shift();
+    if (!currentTest) {
+        if (window.testRunner)
+            setTimeout(&quot;testRunner.notifyDone()&quot;, 0);
+        return;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (current[3] !== undefined)
-        iframe.src += &quot;&amp;type=&quot; + escape(current[3]);
-    else
-        iframe.src += &quot;&amp;type=application/x-webkit-test-netscape&quot;;
-
</del><ins>+    var iframe = document.createElement(&quot;iframe&quot;);
</ins><span class="cx">     iframe.onload = function() {
</span><span class="cx">         if (window.internals)
</span><span class="cx">             internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(iframe);
</span><del>-        testImpl(experimental);
</del><ins>+        runNextTest();
</ins><span class="cx">     };
</span><ins>+    var url = &quot;/security/contentSecurityPolicy/resources/echo-object-data.pl?csp=&quot; + encodeURIComponent(currentTest[1]);
+    url += &quot;&amp;log=&quot; + (currentTest[0] ? &quot;PASS.&quot; : &quot;FAIL.&quot;);
+    url += &quot;&amp;plugin=&quot; + (currentTest[2] ? encodeURIComponent(currentTest[2]) : &quot;data:application/x-webkit-test-netscape,logifloaded&quot;);
+    url += &quot;&amp;type=&quot; + (currentTest[3] !== undefined ? encodeURIComponent(currentTest[3]) : &quot;application/x-webkit-test-netscape&quot;);
+    iframe.src = url;
</ins><span class="cx">     document.body.appendChild(iframe);
</span><span class="cx"> }
</span><del>-
-function finishTesting() {
-    if (window.testRunner) {
-        setTimeout(&quot;testRunner.notifyDone()&quot;, 0);
-    }
-    return true;
-}
</del></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicysourcelistparsingnosemicolonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon-expected.txt (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon-expected.txt        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon-expected.txt        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -3,6 +3,7 @@
</span><span class="cx"> CONSOLE MESSAGE: The Content Security Policy directive 'script-src' contains 'style-src' as a source expression. Did you mean 'script-src ...; style-src...' (note the semicolon)?
</span><span class="cx"> CONSOLE MESSAGE: The Content Security Policy directive 'script-src' contains 'form-action' as a source expression. Did you mean 'script-src ...; form-action...' (note the semicolon)?
</span><span class="cx"> CONSOLE MESSAGE: The Content Security Policy directive 'script-src' contains 'base-uri' as a source expression. Did you mean 'script-src ...; base-uri...' (note the semicolon)?
</span><ins>+CONSOLE MESSAGE: The Content Security Policy directive 'script-src' contains 'plugin-types' as a source expression. Did you mean 'script-src ...; plugin-types...' (note the semicolon)?
</ins><span class="cx"> If a web author forgets a semicolon, we should do our best to warn them that the policy they've defined is probably not what they intended.
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycontentSecurityPolicysourcelistparsingnosemicolonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon.html (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon.html        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-no-semicolon.html        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> var tests = [
</span><span class="cx">     ['yes', 'default-src \'self\' script-src example.com', 'resources/script.js'],
</span><del>-    ['yes', &quot;script-src 'self' object-src 'self' style-src * form-action 'self' base-uri 'self'&quot;, 'resources/script.js'],
</del><ins>+    ['yes', &quot;script-src 'self' object-src 'self' style-src * form-action 'self' base-uri 'self' plugin-types application/x-webkit-test-netscape&quot;, 'resources/script.js'],
</ins><span class="cx"> ];
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/Source/WebCore/ChangeLog        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2016-02-24  Daniel Bates  &lt;dabates@apple.com&gt;
+
+        CSP: Enable plugin-types directive by default
+        https://bugs.webkit.org/show_bug.cgi?id=154420
+        &lt;rdar://problem/24730322&gt;
+
+        Reviewed by Brent Fulgham.
+
+        * page/csp/ContentSecurityPolicyDirectiveList.cpp:
+        (WebCore::isExperimentalDirectiveName): Move plugin-types from the directives considered
+        experimental to...
+        (WebCore::isCSPDirectiveName): ...the list of standard directives.
+        (WebCore::ContentSecurityPolicyDirectiveList::addDirective): Move logic to parse the plugin-types
+        directive outside the ENABLE(CSP_NEXT) macro guarded section/experimental feature runtime flag.
+
</ins><span class="cx"> 2016-02-24  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Speculative fix for ios build.
</span></span></pre></div>
<a id="trunkSourceWebCorepagecspContentSecurityPolicyDirectiveListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp (197037 => 197038)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp        2016-02-24 18:49:45 UTC (rev 197037)
+++ trunk/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp        2016-02-24 18:51:58 UTC (rev 197038)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> 
</span><span class="cx"> static inline bool isExperimentalDirectiveName(const String&amp; name)
</span><span class="cx"> {
</span><del>-    return equalLettersIgnoringASCIICase(name, pluginTypes) || equalLettersIgnoringASCIICase(name, reflectedXSS);
</del><ins>+    return equalLettersIgnoringASCIICase(name, reflectedXSS);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #else
</span><span class="lines">@@ -82,6 +82,7 @@
</span><span class="cx">         || equalLettersIgnoringASCIICase(name, imgSrc)
</span><span class="cx">         || equalLettersIgnoringASCIICase(name, mediaSrc)
</span><span class="cx">         || equalLettersIgnoringASCIICase(name, objectSrc)
</span><ins>+        || equalLettersIgnoringASCIICase(name, pluginTypes)
</ins><span class="cx">         || equalLettersIgnoringASCIICase(name, reportURI)
</span><span class="cx">         || equalLettersIgnoringASCIICase(name, sandbox)
</span><span class="cx">         || equalLettersIgnoringASCIICase(name, scriptSrc)
</span><span class="lines">@@ -602,15 +603,15 @@
</span><span class="cx">         setCSPDirective&lt;ContentSecurityPolicySourceListDirective&gt;(name, value, m_formAction);
</span><span class="cx">     else if (equalLettersIgnoringASCIICase(name, baseURI))
</span><span class="cx">         setCSPDirective&lt;ContentSecurityPolicySourceListDirective&gt;(name, value, m_baseURI);
</span><ins>+    else if (equalLettersIgnoringASCIICase(name, pluginTypes))
+        setCSPDirective&lt;ContentSecurityPolicyMediaListDirective&gt;(name, value, m_pluginTypes);
</ins><span class="cx">     else if (equalLettersIgnoringASCIICase(name, sandbox))
</span><span class="cx">         applySandboxPolicy(name, value);
</span><span class="cx">     else if (equalLettersIgnoringASCIICase(name, reportURI))
</span><span class="cx">         parseReportURI(name, value);
</span><span class="cx"> #if ENABLE(CSP_NEXT)
</span><span class="cx">     else if (m_policy.experimentalFeaturesEnabled()) {
</span><del>-        if (equalLettersIgnoringASCIICase(name, pluginTypes))
-            setCSPDirective&lt;ContentSecurityPolicyMediaListDirective&gt;(name, value, m_pluginTypes);
-        else if (equalLettersIgnoringASCIICase(name, reflectedXSS))
</del><ins>+        if (equalLettersIgnoringASCIICase(name, reflectedXSS))
</ins><span class="cx">             parseReflectedXSS(name, value);
</span><span class="cx">         else
</span><span class="cx">             m_policy.reportUnsupportedDirective(name);
</span></span></pre>
</div>
</div>

</body>
</html>