blob: c5d8a7c8c19b4124d391265495f7fc262f5864c1 [file] [log] [blame]
/*
* GMExpectedResultsLoader:
* Reads an expected-results.json file, and imports its data into $scope.
*/
var GMExpectedResultsLoader = angular.module(
'GMExpectedResultsLoader',
[],
function($httpProvider) {
/* Override transformResponse so that the numeric checksums are interpreted as
* strings instead, since Javascript cannot handle 64-bit integers. */
$httpProvider.defaults.transformResponse = function(data, headersGetter) {
return JSON.parse(data.replace(/\s(\d+)\s/g, " \"$1\" "));
}
}
);
GMExpectedResultsLoader.controller(
'GMExpectedResultsLoader.Controller',
function($scope, $http) {
/* When the changePlatformPath function is called, download expected-results.json
* from the desired platform directory.
*
* When the JSON is received, predigest it and return it to the frontend as
* $scope.gmExpectedResults .
*/
$scope.changePlatformPath = function() {
$http.get($scope.platformPath + "/expected-results.json").success(
function(response) {
var jsonResults = [];
var imageNameRegex = /^(.+)_([^_]+).png/;
angular.forEach(response['expected-results'], function(imageExpectations, imageName) {
var matched = imageNameRegex.exec(imageName);
var allowedImages = [];
angular.forEach(imageExpectations['allowed-digests'], function(allowedDigest, key) {
var thisImage = {
hashType: allowedDigest[0], hashValue: allowedDigest[1]
};
allowedImages.push(thisImage);
});
var thisResult = {
test: matched[1], config: matched[2],
allowedImages: allowedImages,
bugs: imageExpectations['bugs'],
reviewedByHuman: imageExpectations['reviewed-by-human']
};
jsonResults.push(thisResult);
});
$scope.gmExpectedResults = jsonResults;
}
);
};
}
);