Files
2013-04-25 13:46:55 -07:00

79 lines
2.8 KiB
ActionScript

import flash.events.*;
import flash.net.*;
import flash.system.*;
import flash.utils.*;
private var qaLoader:URLLoader = null;
private var qaPerfString:String = "PERF_";
private var oldIrrelevantNumber:Number = 0;
private var newIrrelevantNumber:Number = 0;
// If/when we test on mobile, these will need to be set dynamically.
// Maybe we can generate this file on the fly right before compiling,
// filled in with the needed values, like we did for Flex.
private var server:String = "localhost";
private var port:String = "31671";
public function sayHello():void{
trace("hello");
}
/**
* Sends info. to the server. Pass in an array of objects. Each object
* needs to have a field called "key" and a field called "value".
**/
public function qaSendInfo( key:String, value:String, done:Boolean ):void{
// Only on Windows, we have to add something irrelevant, but different, to the URL or else the
// player won't send it.
// Sometimes the number is the same (e.g. after uploading the last result, getting a complete
// event, then sending another request telling the server everything is done) so loop until it's
// different.
do{
newIrrelevantNumber = new Date().getTime();
}while( newIrrelevantNumber == oldIrrelevantNumber );
var req:URLRequest = new URLRequest( "http://" + server + ":" + port + "?irrelevantNumber=" + newIrrelevantNumber.toString() );
var headers:Array = new Array();
var i:int;
if( qaLoader == null ){
qaLoader = new URLLoader();
qaLoader.addEventListener( flash.events.IOErrorEvent.IO_ERROR, QAHandleError );
qaLoader.addEventListener( flash.events.SecurityErrorEvent.SECURITY_ERROR, QAHandleError );
qaLoader.addEventListener( flash.events.Event.COMPLETE, qaHandleComplete );
}
// When the final data has been successfully sent, we'll send a final "complete" event to the server.
if( done ){
qaLoader.addEventListener( flash.events.Event.COMPLETE, qaHandleCompleteDone );
}
// Create the array of URLRequestHeaders to send.
var key:String = escape( key );
var value:String = value;
headers.push( new URLRequestHeader( key, value ) );
req.requestHeaders = headers;
req.method = "POST";
req.data="";
trace( "request url: " + req.url + ", key: " + key + ", value: " + value );
qaLoader.load( req );
oldIrrelevantNumber = newIrrelevantNumber;
}
private function QAHandleError( e:Event ):void{
trace("QAHandleError");
}
private function qaHandleComplete( e:Event ):void{
trace("QAHandleComplete");
}
// When the final data has been successfully sent, we'll send a final "complete" event to the server.
private function qaHandleCompleteDone( e:Event ):void{
qaSendInfo( [ {key:qaPerfString + "TestingComplete", value:1}], true );
qaLoader.removeEventListener( flash.events.Event.COMPLETE, qaHandleCompleteDone );
}