blob: a8200d1d5116d08bcf689edc47d4f3791daffc94 [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package
{
import flash.display.Sprite;
import flash.events.StatusEvent;
import flash.net.LocalConnection;
import flash.trace.Trace;
import flash.utils.getTimer;
public class CodeCoveragePreloadSWF extends Sprite
{
public function CodeCoveragePreloadSWF()
{
Trace.setLevel(Trace.METHODS_AND_LINES, Trace.LISTENER);
Trace.setListener(callback);
lc = new LocalConnection();
lc.addEventListener(StatusEvent.STATUS, onStatus);
lc.send("_CodeCoverageLC", "reset");
}
private var lc:LocalConnection;
private var stringMap:Object = {};
private var stringIndex:int = 0;
private function onStatus(event:StatusEvent):void
{
}
private var ids:String = "";
private var lines:String = "";
private var lastTime:Number = 0;
public function callback(file_name:String, linenum:int, method_name:String, method_args:String):void
{
if (linenum > 0)
{
// trace(file_name, linenum);
if (!stringMap.hasOwnProperty(file_name))
{
lc.send("_CodeCoverageLC", "newString", file_name);
stringMap[file_name] = stringIndex.toString();
stringIndex++;
}
var id:String = stringMap[file_name];
var line:String = linenum.toString();
if (ids.length > 0)
{
ids += " ";
lines += " ";
}
ids += id;
lines += line;
if (ids.length > 20000 || lines.length > 20000 || (lastTime > 0 && getTimer() - lastTime > 500))
{
lc.send("_CodeCoverageLC", "debugline", ids, lines);
ids = "";
lines = "";
}
lastTime = getTimer();
}
}
}
}