<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I took a look at CodeGeneratorJS.pm to see how hard it would be to port this over.&nbsp; I have no idea where to start&#8230;&nbsp;&nbsp; The structure of CodeGeneratorJS.pm and CodeGeneratorV8.pm seem quite different.&nbsp; This also seems like a lot of work to do just to enable/disable one feature, but I guess if there&#8217;s no framework for enabling/disabling JS features in JSC at all then it&#8217;s necessary.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Is there wide agreement that porting the RuntimeEnabledFeatures to JSC is a good idea?&nbsp; If so I&#8217;ll file a bug.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Joe<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> jorlow@google.com [mailto:jorlow@google.com] <b>On Behalf Of </b>Jeremy Orlow<br><b>Sent:</b> Thursday, January 06, 2011 2:43 PM<br><b>To:</b> Joe Mason<br><b>Cc:</b> webkit-dev Development<br><b>Subject:</b> Re: [webkit-dev] Getting at Settings object from WorkerContext<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Btw, the reason that this behavior has to live in the bindings and not WebCore is to ensure feature detection code still works. &nbsp;For example, if indexedDB is disabled at runtime, then the webkitIndexedDB attribute on window needs to not exist in any form.<o:p></o:p></p><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>Also, IIRC, because of optimizations, the runtime features are actually more of initialize time features in v8. &nbsp;I.e. once window has been accessed, any of the RuntimeEnabledFeatures settings are locked in until you restart WebKit. &nbsp;I don't know how hard it'd be to make it something that can change on the fly.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'>J<o:p></o:p></p><div><p class=MsoNormal>On Thu, Jan 6, 2011 at 7:38 PM, Jeremy Orlow &lt;<a href="mailto:jorlow@chromium.org">jorlow@chromium.org</a>&gt; wrote:<o:p></o:p></p><p class=MsoNormal>Hmm. &nbsp;It might still be v8-only, though I'm surprised since the class was moved from the v8 directory to generic. &nbsp;If that's the case, then I suppose it'll need to be ported to JSC.<o:p></o:p></p><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal><span style='color:#888888'>J<o:p></o:p></span></p></div><div><div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><p class=MsoNormal>On Thu, Jan 6, 2011 at 7:24 PM, Joe Mason &lt;<a href="mailto:jmason@rim.com" target="_blank">jmason@rim.com</a>&gt; wrote:<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>Hmm, I can&#8217;t get the RuntimeEnabledFeatures class working.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>bool RuntimeEnabledFeatures::webSocketEnabled()</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>{</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>&nbsp;&nbsp;&nbsp; return WebSocket::isAvailable();</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>}</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>So it looks from that like I should just be able to call WebSocket::setIsAvailable(false), and then websockets would automatically drop out.&nbsp; But when I tried that (and I&#8217;ve verified that nothings setting it to true behind my back), JSDOMWindow::webSocket still gets called and returns the socket prototype.&nbsp; I can&#8217;t seem to find any code that calls webSocketEnabled.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>I notice that RuntimeEnabledFeatures is referenced in CodeGeneratorV8.pm, but not any other code generator.&nbsp; Is this a V8-only thing?</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>Joe</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:10.0pt'>From:</span></b><span style='font-size:10.0pt'> <a href="mailto:webkit-dev-bounces@lists.webkit.org" target="_blank">webkit-dev-bounces@lists.webkit.org</a> [mailto:<a href="mailto:webkit-dev-bounces@lists.webkit.org" target="_blank">webkit-dev-bounces@lists.webkit.org</a>] <b>On Behalf Of </b>Joe Mason<br><b>Sent:</b> Thursday, January 06, 2011 1:52 PM<br><b>To:</b> Jeremy Orlow</span><o:p></o:p></p><div><div><p class=MsoNormal><br><b>Cc:</b> webkit-dev Development<br><b>Subject:</b> Re: [webkit-dev] Getting at Settings object from WorkerContext<o:p></o:p></p></div></div></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>Aha, there is already a &#8220;websocketsEnabled&#8221; method there!&nbsp; Thanks, that&#8217;s perfect.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:10.0pt'>From:</span></b><span style='font-size:10.0pt'> <a href="mailto:jorlow@google.com" target="_blank">jorlow@google.com</a> [mailto:<a href="mailto:jorlow@google.com" target="_blank">jorlow@google.com</a>] <b>On Behalf Of </b>Jeremy Orlow<br><b>Sent:</b> Thursday, January 06, 2011 1:25 PM<br><b>To:</b> Joe Mason<br><b>Cc:</b> webkit-dev Development<br><b>Subject:</b> Re: [webkit-dev] Getting at Settings object from WorkerContext</span><o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>The RuntimeEnabledFeatures class [1] seems like what you're looking for.<o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>J<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'>[1]&nbsp;<a href="http://codesearch.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/WebCore/bindings/generic/RuntimeEnabledFeatures.h&amp;q=RuntimeFeature&amp;exact_package=chromium&amp;d=6" target="_blank">http://codesearch.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/WebCore/bindings/generic/RuntimeEnabledFeatures.h&amp;q=RuntimeFeature&amp;exact_package=chromium&amp;d=6</a><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>On Thu, Jan 6, 2011 at 6:05 PM, Joe Mason &lt;<a href="mailto:jmason@rim.com" target="_blank">jmason@rim.com</a>&gt; wrote:<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I'm trying to add a setting to enable/disable WebSockets at runtime (so that the browser can make websockets available as a user preference, for instance). &nbsp;It's easy to add a flag to Settings, and check it from JSDOMWindowCustom::webSocket to return undefined for the websocket object when it's disabled. &nbsp;But you can also get a websocket object from a worker, with JSWorkerContext::webSocket. &nbsp;And since there's no frame or page associated here, there's no way to get a Settings object.<br><br>Is it possible to get a Settings object from a WorkerContext?<br><br>If not, I think I need to make the setting a static on the Settings object. &nbsp;There's precedent for this in setMinDOMTimerInterval and setShouldUseHighResolutionTimer, but it doesn't feel right for a high-level feature like this.<br><br>Joe<br><br>---------------------------------------------------------------------<br>This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.<br>_______________________________________________<br>webkit-dev mailing list<br><a href="mailto:webkit-dev@lists.webkit.org" target="_blank">webkit-dev@lists.webkit.org</a><br><a href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev" target="_blank">http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev</a><o:p></o:p></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p></div></div></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>--------------------------------------------------------------------- <br>This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful. <o:p></o:p></p></div></div></div></div><p class=MsoNormal>--------------------------------------------------------------------- <o:p></o:p></p><div><p class=MsoNormal>This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful. <o:p></o:p></p></div></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></div></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></div></div>--------------------------------------------------------------------- <br>
This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.
</body></html>