[Laszlo-dev] Waiting for your review of Change 20071018-ptw-X Summary: Be more careful detecting DOM nodes
P T Withington
ptw at pobox.com
Tue Oct 23 06:39:28 PDT 2007
Good catch. This is because SWF does not implement `in`, and the run-
time emulation will trip up on undefined properties.
I was trying to avoid .hasOwnProperty because it blows up in some
browsers on native objects (e.g., the DOM div behind a DHTML
sprite). I worked around it by putting the .hasOwnProperty test
inside ignoring Errors.
I assume you approve the rest of the change?
On 2007-10-22, at 17:33 EDT, André Bargull wrote:
> not approved.
>
> "Debug.objectOwnProperties(..)" [LzDebug.lzs]:
> You should stay with "hasOwnProperty(..)" instead of testing "(key
> in proto)", otherwise you'll get a different output in swf compared
> to dhtml for "undefined" values.
>
> testcase:
> [code]
> <script>
> class test01 extends Instance {
> var attr01 = void(0);
> }
> Debug.write(new test01());
> </script>
> [/code]
>
> P T Withington wrote:
>> Hi André, didn't know if you might have missed this, or if you
>> don't have time, I can ask someone else to review. Thanks!
>>
>> Begin forwarded message:
>>
>>> From: P T Withington <ptw at pobox.com>
>>> Date: 18 October 2007 19:28:41 EDT
>>> To: André Bargull <a.bargull at intensis.de>, Steve O'Sullivan
>>> <sosullivan at laszlosystems.com>
>>> Cc: laszlo-dev at openlaszlo.org
>>> Subject: For Review: Change 20071018-ptw-X Summary: Be more
>>> careful detecting DOM nodes
>>>
>>> Change 20071018-ptw-X by ptw at dueling-banjos.local on 2007-10-18
>>> 18:34:57 EDT
>>> in /Users/ptw/OpenLaszlo/ringding-2
>>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>>
>>> Summary: Be more careful detecting DOM nodes
>>>
>>> Bugs Fixed:
>>> LPP-4739 'Printing LzDataText in Debugger is erronous for "%w"'
>>>
>>> Technical Reviewer: a.bargull at intensis.de (pending)
>>> QA Reviewer: sosullivan at laszlosystems.com (pending)
>>>
>>> Details:
>>> LzDebug.lzs: objectOwnProperties: Be more careful detecting
>>> prototypes, simplify test for 'own' properties to be any
>>> property
>>> that is different from that same property in the prototype
>>> (or all
>>> properties, if there is no prototype). Take care poking at the
>>> prototype, which may be a runtime native object.
>>>
>>> LzDebug.js: Tighten up the test for DOM nodes so that we don't
>>> mistake an LZ node for one.
>>>
>>> LzRuntime: Eliminate old debugging output that was there
>>> just to
>>> verify source warnings were working. Add Debug.ignoringErrors
>>> which can be used on any platform to evaluate a closure without
>>> recursing into the debugger.
>>>
>>> Tests:
>>> 1. Verified that LzDataText is printed as an LZX object (in SWF,
>>> Firefox, Safari, Opera):
>>>
>>> lzx> Debug.write("%#w\n", new LzDataText('test'))
>>> «LzDataText(0)#71| test»
>>>
>>> 2. Verified that DOM nodes can still be inspected (does not
>>> apply to SWF):
>>>
>>> lzx> Debug.inspect(canvas.sprite.__LZdiv)
>>> «HTMLDivElement#22| #document/html/body/div#lzappContainer/
>>> div.lzcanvasdiv[1]» {
>>> align: ''
>>> attributes: [object NamedNodeMap]
>>> ...
>>> tagName: 'DIV'
>>> textContent: ''
>>> title: ''
>>> }
>>> #document/html/body/div#lzappContainer/div.lzcanvasdiv[1]
>>>
>>> 3. Verified that movieclips can still be inspected (only
>>> applies to
>>> SWF):
>>>
>>> lzx> Debug.inspect(_level0.spriteroot)
>>> «MovieClip#160| _level0.spriteroot» {
>>> _currentframe: 0
>>> _opacity: «undefined»
>>> ...
>>> _visible: true
>>> _x: 0
>>> _xscale: 100
>>> _y: 0
>>> _yscale: 100
>>> }«MovieClip#160| _level0.spriteroot»
>>> lzx>
>>>
>>> 4. Ran smokecheck in swf and dhtml on Firefox
>>>
>>> Files:
>>> M WEB-INF/lps/lfc/debugger/LzDebug.lzs
>>> M WEB-INF/lps/lfc/debugger/platform/dhtml/LzDebug.js
>>> M WEB-INF/lps/lfc/compiler/LzRuntime.lzs
>>>
>>>
>>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071018-
>>> ptw-X.tar
>>
>>
More information about the Laszlo-dev
mailing list