[Laszlo-checkins] r12011 - openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf

bargull@openlaszlo.org bargull at openlaszlo.org
Mon Dec 8 12:29:08 PST 2008


Author: bargull
Date: 2008-12-08 12:29:02 -0800 (Mon, 08 Dec 2008)
New Revision: 12011

Added:
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzXMLLoader.lzs
Modified:
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/Library.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzXMLTranslator.as
Log:
Change 20081127-bargull-2Ji by bargull at dell--p4--2-53 on 2008-11-27 10:07:23
    in /home/Admin/src/svn/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: misc data changes (II - swf-kernel)

New Features:

Bugs Fixed: LPP-7350

Technical Reviewer: hminsky
QA Reviewer: (pending)
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:
LzLibraryLoader:
- marked overriden methods
LzMediaLoader:
- added "minHeader" attribute (was declared in LzLoader, but actually only used for LzMediaLoader)
LzLoader:
- extend from LzEventable, because it takes part in the event-system
- removed stale attributes:
  - doPersist: was used for persistent connection
  - attachDepth/minHeader: only used in LzMediaLoader
- removed all xml-loading specific methods/attributes
  - copyTaskDel, startCopyTask(), removeCopyTask()
  - oncontent, requestheaders, setHeaders() 
  - requestDirectXML(), rawtext, xmlloadobj, gotRawData()
  - copyFlashXML(), copyQueue, translateXML(), copyFlashData(), queuedCopyFlashXML(), copyLoopsPerFrame, maxLoopTime, queuedCopyFlashXML_internal()
Motivation: the general LzLoader class does not need to know how to load and parse xml-data. Therefore I've created a specific subclass (XMLLoader). Similar to the LzMediaLoader class, which is specific for media-loading.
LzXMLLoader:
- contains all xml-code from LzLoader
- renamed requestDirectXML() to request()
- also moved LzLoadQueue.XMLOnDataHandler to this class
LzXMLTranslator:
- call LzXMLLoader instead of LzLoader to translate XML
LzLoadQueue:
- updated code to use LzXMLLoader
- use encodeURIComponent() instead of escape() for string-encoding (encodeURIComponent() is just an alias for escape() in the swf8-runtime, but nevertheless we always call encodeURIComponent(), so let's be consistent and call the function under that name)
- renamed loadMovieProxiedOrDirect() to loadMovie()
- moved XMLOnDataHandler to LzXMLLoader (see above)
- updated description
LzHTTPLoader:
- use LzXMLLoader instead of LzLoader
- removed the whole dataloader-movieclip code, we don't use that anymore
- removed LzHTTPLoader.urlencode(), no where referenced and we don't need another alias for escape() ;-)
 
    

Tests:
alldata passes



Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/Library.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/Library.lzs	2008-12-08 19:53:54 UTC (rev 12010)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/Library.lzs	2008-12-08 20:29:02 UTC (rev 12011)
@@ -15,6 +15,7 @@
 #include "kernel/swf/LzInputTextSprite.as"
 #include "kernel/swf/LzMakeLoadSprite.as"
 #include "kernel/swf/LzLoader.lzs"
+#include "kernel/swf/LzXMLLoader.lzs"
 #include "kernel/swf/LzMediaLoader.lzs"
 #include "kernel/swf/LzLibraryLoader.lzs"
 #include "kernel/swf/LzFontManager.as"

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as	2008-12-08 19:53:54 UTC (rev 12010)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as	2008-12-08 20:29:02 UTC (rev 12011)
@@ -12,9 +12,9 @@
   * @shortdesc Send and receive text data over HTTP
   */
 
-// We have an internal 'lzloader' property which points to an LzLoader (Flash-7-8-specific)
+// We have an internal 'lzloader' property which points to an LzXMLLoader (Flash-7-8-specific)
 var LzHTTPLoader = function (owner, proxied) {
-    this.lzloader = this.makeLzLoader(proxied);
+    this.lzloader = new LzXMLLoader( this, {timeout : Infinity, proxied : proxied} );
     this.owner = owner;
     this.options = {
         // enable server (proxy) caching
@@ -32,7 +32,7 @@
     this.dsloadDel = new LzDelegate( this , "_loadSuccessHandler" ,
                                      this.lzloader , "ondata" );
     // Handler for raw string content, before parsing
-    this.dsloadDel = new LzDelegate( this , "loadContent" ,
+    this.dscontentDel = new LzDelegate( this , "loadContent" ,
                                      this.lzloader , "oncontent" );
     this.dserrorDel = new LzDelegate( this , "_loadErrorHandler" ,
                                       this.lzloader , "onerror" );
@@ -184,7 +184,7 @@
     //Debug.info("LzHTTPLoader.send parsexml", this.options.parsexml, content);
     this.xmlrequestobj.rawpostbody = content;
     this.lzloader.setHeaders(this.requestheaders);
-    this.lzloader.requestDirectXML( this.xmlrequestobj );
+    this.lzloader.request( this.xmlrequestobj );
 }
 
 
@@ -221,35 +221,3 @@
     // [todo hqm 2006-07] Should we have  an API method for setting LzLoader timeout?
     this.lzloader.timeout = timeout;
 }
-
-////////////////////////////////////////////////////////////////
-// swf-specific stuff
-
-/**
-  * This is a helper method to create a loader for the dataset.
-  * @access private
-  * @return LzLoader 
-  */
-LzHTTPLoader.prototype.makeLzLoader = function (proxied){
-    if ( ! $dataloaders ){
-        // SWF-specific
-        _root.attachMovie("empty", "$dataloaders", 4242);
-        var mc = $dataloaders;
-        mc.dsnum = 1;
-    }
-
-    $dataloaders.attachMovie( "empty", 
-                                   "dsloader" + $dataloaders.dsnum,
-                                   $dataloaders.dsnum );
-    var newloadermc = $dataloaders[ "dsloader" + 
-                                          $dataloaders.dsnum ];
-    $dataloaders.dsnum++;
-    
-    return new LzLoader( this, { attachRef : newloadermc ,
-                                       timeout : Infinity,
-                                       proxied: proxied} );
-}
-
-LzHTTPLoader.urlencode = function (str) {
-    return escape(str);
-}

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs	2008-12-08 19:53:54 UTC (rev 12010)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs	2008-12-08 20:29:02 UTC (rev 12011)
@@ -29,7 +29,7 @@
 /**
   * @access private
   */
-function request( req ) {
+override function request( req ) {
     //Debug.write("LzLibraryLoader.request() this.proxied=", this.proxied);
     var o = { libpath: req, url: req , lzt: "lib", proxied: this.proxied};
     super.request( o );
@@ -89,7 +89,7 @@
   * @param data: unused by library loading, ResponderLIB server does not return an error swf
   * @access private
   */
-function returnData ( loadobj , data ){
+override function returnData ( loadobj , data ){
     LzLoadQueue.unloadRequest(loadobj);
 
     var lib = this.owner.owner;

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as	2008-12-08 19:53:54 UTC (rev 12010)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as	2008-12-08 20:29:02 UTC (rev 12011)
@@ -9,8 +9,7 @@
   */
 
 /**
-  * The load queue controls the queuing of data, media, and persistent 
-  * connection requests at runtime.
+  * The load queue controls the queuing of data and media requests at runtime.
   */
 var LzLoadQueue = new Object;
 
@@ -75,52 +74,9 @@
     }
 }
 
-
 /**
   * @access private
-  * This function is the callback ondata handler which gets attached to
-  * the XML object that is getting data loaded into it. It is
-  * responsible for parsing the raw string into the xmlobj XML object,
-  * and then converting that datastructure into an LzDataElement tree,
-  * via the xmltolzdata() method.
-  * 
-  * N.B.: when this callback is invoked, 'this' is bound the the Flash
-  * XML object which is being used to handle the load request. It is *not* bound to 
-  * LzLoadQueue!
   */
-LzLoadQueue.XMLOnDataHandler = function (src) {
-    // cancel the timeout handler
-    LzLoadQueue.unloadRequest(this);
-
-    if (src == undefined) {
-        if ($debug) {
-            if (! this.proxied) {
-                Debug.warn("LzLoadQueue.XMLOnDataHandler load failed from URL %w, no data received.", this.url);
-                Debug.warn("Failure to load data in serverless apps may be caused by Flash player security policies. Check your data server crossdomain.xml file");
-            }
-        }
-        this.onload(false);
-        //Debug.write("this.loader.onerror.ready =", this.loader.onerror.ready);
-        if (this.loader.onerror.ready) {
-            this.loader.onerror.sendEvent(null);
-        }
-    } else {
-        // If we timed out, and this response came in late, ignore it.
-        if (this.timedout) {
-            return;
-        }
-
-        // Create a queue containing one root node, myself, and convert it and all children to
-        // LzDataNodes.
-
-        this.onload(true);
-        this.loader.gotRawData(src, this);
-    }
-}
-
-/**
-  * @access private
-  */
 LzLoadQueue.checkTimeout = function(ignore){
     // A timed out load may cause new entries on loading, so it is
     // important to make a second pass to compute the next timeout
@@ -315,11 +271,8 @@
 
     this.loading.push( loadobj );
 
-    if (loadobj.isaudio == true) {
-        //Debug.write('LzLoadQueue makeRequest', loadobj)
-        this.loadMovieProxiedOrDirect(loadobj);
-    } else if (typeof(loadobj) == "movieclip") {
-        this.loadMovieProxiedOrDirect(loadobj);
+    if (loadobj.isaudio == true || typeof(loadobj) == "movieclip") {
+        this.loadMovie(loadobj);
     } else {
         this.loadXML(loadobj);
     }
@@ -330,7 +283,7 @@
 /**
   * @access private
   */
-LzLoadQueue.loadMovieProxiedOrDirect = function (loadobj) {
+LzLoadQueue.loadMovie = function (loadobj) {
     var reqstr;
     // TODO [2008-06 hqm] We will eventually deprecate the "proxied" flag, and just use
     // proxyurl != null to indicate that we are proxied via the PROXYURL.
@@ -365,7 +318,7 @@
         var dopost = (loadobj.reqobj.reqtype.toUpperCase() == 'POST');
         if (!dopost) {
             for ( var keys in loadobj.reqobj ){
-                reqstr += sep + keys + "=" + escape( loadobj.reqobj[ keys ] );
+                reqstr += sep + keys + "=" + encodeURIComponent( loadobj.reqobj[ keys ] );
                 if ( sep == "?" ){
                     sep = "&";
                 }
@@ -414,7 +367,6 @@
     }
 }
 
-
 /**
   * @access private
   */
@@ -439,7 +391,7 @@
     */
     
     // Set the onData handler to intercept returning data
-    loadobj.onData = LzLoadQueue.XMLOnDataHandler;
+    loadobj.onData = LzXMLLoader.XMLOnDataHandler;
 
     var dopost = (loadobj.reqtype.toUpperCase() == 'POST');
     var lvar = new LoadVars();
@@ -510,6 +462,3 @@
     
     lvar.sendAndLoad(reqstr, loadobj, method );
 }
-
-
-

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs	2008-12-08 19:53:54 UTC (rev 12010)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs	2008-12-08 20:29:02 UTC (rev 12011)
@@ -11,15 +11,16 @@
 /**
   * @access private
   */
-class LzLoader {
+class LzLoader extends LzEventable {
 
-function LzLoader ( owner , args ){
-    super(owner, args);
+function LzLoader (owner, args) {
+    super();
     //Debug.write("LzLoader initialize owner=",owner,'attachref=', args.attachRef, args);
     this.mc = args.attachRef == null ? owner.__LZmovieClipRef : args.attachRef;
     //this breaks media loading in swf: this.mc = args.attachRef == null ? owner.getMCRef() : args.attachRef;
 
     if ( args.attachRef == null && args.attachname != null ){
+        // attachname is only used in LzRemote
         this.mc.attachMovie( "empty" , args.attachname , this.newContextDepth );
         this.mc = this.mc[ args.attachname ];
     }
@@ -37,58 +38,29 @@
     }
 
     this.owner = owner;
-
-    // For SOLO requests, we need to make an idle task to
-    // split up the work of copying the Flash XML tree into an LzDataNode tree
-    this.copyTaskDel = new LzDelegate( this , "copyFlashData" );
-
 }
 
 /**
   * @access private
   * (not really, but the doc tools will complain
   */
-function destroy () {
+override function destroy () {
     // [2005-08-25 ptw] Hosie doorknob black magic: removing a movie
     // clip from anywhere will magically delete any properties that
     // reference it (i.e., all movieclip references are weak,
     // apparently).
     this.mc.removeMovieClip();
+    super.destroy();
 }
 
-/**
-  * @access private
-  */
-function startCopyTask ( ){
-    //    Debug.write("starting copy idle task ");
-    this.copyTaskDel.register( lz.Idle, "onidle" );
-}
-
-/**
-  * @access private
-  */
-function removeCopyTask() {
-    // Remove copyTask delegate
-    //    Debug.write("removing copy idle task ", this);
-    this.copyTaskDel.unregisterAll();
-    this.copyQueue = null;
-}
-
-
 var ondata = LzDeclaredEvent;
-var oncontent = LzDeclaredEvent;
 var onrequest = LzDeclaredEvent;
 var ontimeout = LzDeclaredEvent;
 var onerror = LzDeclaredEvent;
 
-var requestheaders = {};
 var timeout = 30000;
-var doPersist = false;
 var doCacheRequest = true;
 
-var attachDepth = 9;
-var minHeader = 10;
-
 var queuing = false;
 
 var secure = false;
@@ -232,7 +204,6 @@
     }
 }
 
-
 /**
   * @access private
   */
@@ -273,7 +244,7 @@
     loadobj.loading = false;
     loadobj.data = null;
     // N.B. Do _NOT_ re-initialize lmcnum.  See comment in
-    // LzLoadQueue.loadMovieProxiedOrDirect
+    // LzLoadQueue.loadMovie
 
     // Set to false if aborted
     loadobj.valid = true;
@@ -348,28 +319,8 @@
     if (this.onrequest.ready) this.onrequest.sendEvent(o);
 }
 
-function setHeaders (headers) {
-    this.requestheaders = headers;
-}
-
 /**
-  * Request a data load using Flash XML object
   * @access private
-  */
-function requestDirectXML ( o ){
-    if ($debug) {
-        LzLoader.debugLoadObj(o);
-    }
-    this.initializeRequestObj(o);
-
-    LzLoadQueue.enqueueRequest( o );
-    // We should probably be passing something other than the obj itself to
-    // the onrequest event
-    if (this.onrequest.ready) this.onrequest.sendEvent(o);
-}
-
-/**
-  * @access private
   * @param MovieClip loadobj: the LoadMovie to unload, defaults to the
   * lastrequest
   */
@@ -427,275 +378,6 @@
     }
 }
 
-// Recursively copy a Flash XML(Node) tree into a LzDataElement
-// tree. Used by LzDataNode.stringToLzData
-/**
-  * @param boolean trimwhitespace: trim whitespace from start and end of text nodes
-  * @param boolean nsprefix: preserve namespace prefixes on node names and attribute names
-  * @access private
-  */
-function copyFlashXML (node, trimwhitespace, nsprefix) {
-    var nv = node.nodeValue;
-    var lfcnode = null;
-    // text node?
-    if (node.nodeType == 3) {
-        if (trimwhitespace == true) {
-            nv = LzDataElement.trim(nv);
-        }
-        lfcnode = new LzDataText(nv);
-    } else {
-        if (! nsprefix) {
-            // slow but sure way to copy attributes
-            var nattrs = node.attributes;
-            var cattrs = {};
-            var attrlist = [];
-            for (var key in nattrs) {
-                var nkey = key;
-                // strip namespace prefixes
-                var colpos = key.indexOf(':');
-                if (colpos >= 0) {
-                    nkey = key.substring(colpos + 1);
-                }
-                //cattrs[nkey] = nattrs[key];
-                attrlist.push(nkey, nattrs[key]);
-            }
-            
-            // Flash iterates over an object in reversed insertion order. 
-            // But as we want to preserve the original xml-attribute order, 
-            // we need to insert the attributes also in reversed order. 
-            for (var i = attrlist.length - 1; i >= 0; i -= 2) {
-                cattrs[attrlist[i - 1]] = attrlist[i];
-            }
-        } else {
-            // this is the fast path 
-            var cattrs = node.attributes;
-            cattrs.__proto__ = Object.prototype;
-            cattrs.constructor = Object;
-            ASSetPropFlags(cattrs, ['__proto__', 'constructor'], 1, 7);
-        }
-
-        var nname = node.nodeName;
-        if (nname && !nsprefix) {
-            // strip namespace prefix
-            var npos = nname.indexOf(':');
-            if (npos >= 0) {
-                nname = nname.substring(npos+1);
-            }
-        }
-
-        lfcnode = new LzDataElement(nname, cattrs);
-        var children = node.childNodes;
-        var newchildren = [];
-        for (var i  = 0; i < children.length; i++ ) {
-            var child = children[i];
-            var lfcchild = LzLoader.prototype.copyFlashXML(child, trimwhitespace, nsprefix);
-            newchildren[i] = lfcchild;
-        }
-        lfcnode.setChildNodes(newchildren);
-    }
-    return lfcnode;
-}
-
-// Holds the state of the copy queue.
-// {ptr: int   where we are in the queue
-//  q: array of pending work, entries are XMLNodes to be copied.
-//  xmlobj: the root Flash XML node we started with
-// }
-//
-var copyQueue = null;
-
-var rawtext = null;
-// native XML request/loader object
-var xmlloadobj = null;
-
-/**
- * @access private
- * called by loader when raw data was arrived, but not yet been parsed 
- */
-function gotRawData(content:String, loadobj:XML) {
-    this.rawtext = content;
-    this.xmlloadobj = loadobj;
-    if (this.oncontent.ready) this.oncontent.sendEvent(content);
-}
-
-
-function translateXML (content) {
-    this.xmlloadobj.parseXML(content);
-    // Copy the Flash XML tree into  tree of LFC LzData classes
-    this.queuedCopyFlashXML(this.xmlloadobj);
-}
-
-
-// Task that is called periodically from Idle loop.
-// This does the work of copying the Flash XML tree into a LzDataElement tree.
-// Run the copy queue
-/**
-  * @access private
-  */
-function copyFlashData ( ignore ) {
-    //    Debug.write("copyFlashData [1]", this.copyQueue.ptr);
-    if (this.copyQueue != null) {
-        //Debug.write("copyFlashData [2]");
-        this.queuedCopyFlashXML_internal();
-    } else {
-        this.removeCopyTask();
-    }
-}
-
-
-// Set up the work queue
-/**
-  * @access private
-  */
-function queuedCopyFlashXML(xmlnode) {
-    var rootnode = new LzDataElement('body');
-    this.lfcrootnode = rootnode;
-    rootnode.ownerDocument = rootnode;
-    xmlnode._lfcparent = rootnode;
-    var queue = [xmlnode];
-    // set up the work queue
-    this.copyQueue = {ptr: 0, q: queue, xmlobj: xmlnode};
-    this.trimwhitespace = xmlnode.trimwhitespace;
-    this.nsprefix       = xmlnode.nsprefix; 
-    var done = this.queuedCopyFlashXML_internal();
-    // If the copy wasn't completed in this quanta, start a task to finish it.
-    if (!done) {
-        this.startCopyTask();
-    }
-}
-
-var copyLoopsPerFrame = 1000;
-var maxLoopTime = 2000; // 2 seconds
-
-// Iterative implementation, using a queue, to translate a XMLNode tree into
-// a tree of LzDataElement.
-//
-// Queue contains list of XMLNodes to be copied
-/**
-  * @access private
-  */
-function queuedCopyFlashXML_internal () {
-    var nsprefix = this.nsprefix;
-    var trimwhitespace = this.trimwhitespace;
-    var ptr = this.copyQueue.ptr;
-    var q = this.copyQueue.q;
-    var iter = 0;
-    var maxiter = this.copyLoopsPerFrame;
-    var loopstart = (new Date).getTime();
-    var oproto = Object.prototype;
-    while (ptr < q.length && iter++ < maxiter) {
-
-        // check time once every 100 iterations
-        if ((iter % 100) == 0) {
-            var elapsed = (new Date).getTime() - loopstart;
-            if (elapsed > this.maxLoopTime) {
-                //Debug.write("too much time in queuedCopyFlashXML_internal, break");
-                break;
-            }
-        }
-
-        var node = q[ptr++];
-        var lfcparent = node._lfcparent;
-        delete node._lfcparent;
-        var nv = node.nodeValue;
-        var lfcnode = null;
-
-        // text node?
-        if (node.nodeType == 3) {
-            if (trimwhitespace == true) {
-                nv = LzDataElement.trim(nv);
-            }
-            // FIXME: [2008-3-31 pbr] This bypasses initialization
-            lfcnode = {__proto__: LzDataText.prototype, data: nv, parentNode: lfcparent, nodeType: LzDataElement.TEXT_NODE};
-        } else {
-            // Do we need to copy attributes list as well?
-            // After this works, try bashing the __proto__
-            // and see if GC still works.
-
-            if (! nsprefix) {
-                // this is slow, we iterate over every attribute name
-                var nattrs = node.attributes;
-                var cattrs = {};
-                var attrlist = [];
-                for (var key in nattrs) {
-                    var nkey = key;
-                    // strip namespace prefixes
-                    var colpos = key.indexOf(':');
-                    if (colpos >= 0) {
-                        nkey = key.substring(colpos + 1);
-                    }
-                    //cattrs[nkey] = nattrs[key];
-                    attrlist.push(nkey, nattrs[key]);
-                }
-                
-                // Flash iterates over an object in reversed insertion order. 
-                // But as we want to preserve the original xml-attribute order, 
-                // we need to insert the attributes also in reversed order. 
-                for (var i = attrlist.length - 1; i >= 0; i -= 2) {
-                    cattrs[attrlist[i - 1]] = attrlist[i];
-                }
-            } else {
-                // this is the fast path 
-                var cattrs = node.attributes;
-                cattrs.__proto__ = oproto;
-                cattrs.constructor = Object;
-                ASSetPropFlags(cattrs, ['__proto__', 'constructor'], 1, 7);
-             }
-
-            //lfcnode = new LzDataElement(node.nodeName, cattrs);
-
-            ////////
-
-            var nodename = node.nodeName;
-            if (nodename && !nsprefix) {
-                var npos = nodename.indexOf(':');
-                if (npos >= 0) {
-                    nodename = nodename.substring(npos+1);
-                }
-            }
-
-            // FIXME: [2008-3-31 pbr] This bypasses initialization
-            lfcnode = { __proto__: LzDataElement.prototype,
-                        nodeType: LzDataElement.ELEMENT_NODE,
-                        nodeName: nodename,
-                        attributes: cattrs,
-                        ownerDocument: lfcparent.ownerDocument,
-                        parentNode: lfcparent};
-        }
-
-        // Add to the parent's childnodes.
-        if (lfcparent.childNodes == null) {
-            lfcparent.childNodes = [lfcnode];
-        } else {
-            lfcparent.childNodes.push(lfcnode);
-        }
-
-        // queue the XMLNode children for processing
-        var children = node.childNodes;
-        if (children != null) {
-            for ( var i = 0; i < children.length; i++ ){
-                var c = children[i];
-                c._lfcparent = lfcnode;
-                q[q.length] = c;
-            }
-        }
-    }
-    this.copyQueue.ptr = ptr;
-    //Debug.write("leaving queuedCopyFlashXML_internal main loop", ptr, iter);
-    if (ptr >= q.length) {
-        // If we get here, we're finished with the tree copy.
-        // Unregister the idle loop handler
-        var xmlobj = this.copyQueue.xmlobj;
-        this.removeCopyTask();
-        // Proceed with getting this dataset returned to the customer
-        xmlobj.loader.returnData(xmlobj, this.lfcrootnode.childNodes[0].childNodes[0]);
-        // Indicate that we finished it all in one go, no need to queue more copy tasks
-        return true;
-    } else {
-        return false;
-    }
-}
-
 if ($debug) {
 /**
   * @access private

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs	2008-12-08 19:53:54 UTC (rev 12010)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs	2008-12-08 20:29:02 UTC (rev 12011)
@@ -45,6 +45,9 @@
 /** @access private */
 var LOADERDEPTH = 9;
 
+/** @access private */
+var minHeader = 10;
+
 /**
   * @access private
   */

Added: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzXMLLoader.lzs


Property changes on: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzXMLLoader.lzs
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzXMLTranslator.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzXMLTranslator.as	2008-12-08 19:53:54 UTC (rev 12010)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzXMLTranslator.as	2008-12-08 20:29:02 UTC (rev 12011)
@@ -1,7 +1,7 @@
 /**
-  * LzXMLTranslator.js
+  * LzXMLTranslator.as
   *
-  * @copyright Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -15,7 +15,7 @@
 var LzXMLTranslator = new Object;
 
 LzXMLTranslator.copyXML = function (xmlobj, trimwhitespace, nsprefix) {
-    var lfcnode = LzLoader.prototype.copyFlashXML(xmlobj, trimwhitespace, nsprefix);
+    var lfcnode = LzXMLLoader.prototype.copyFlashXML(xmlobj, trimwhitespace, nsprefix);
     var fc = lfcnode.childNodes[0];
     if ( fc instanceof LzDataText ) return null;
     return fc;



More information about the Laszlo-checkins mailing list