1/* 2 * GMExpectedResultsLoader: 3 * Reads an expected-results.json file, and imports its data into $scope. 4 */ 5var GMExpectedResultsLoader = angular.module( 6 'GMExpectedResultsLoader', 7 [], 8 function($httpProvider) { 9 /* Override transformResponse so that the numeric checksums are interpreted as 10 * strings instead, since Javascript cannot handle 64-bit integers. */ 11 $httpProvider.defaults.transformResponse = function(data, headersGetter) { 12 return JSON.parse(data.replace(/\s(\d+)\s/g, " \"$1\" ")); 13 } 14 } 15); 16GMExpectedResultsLoader.controller( 17 'GMExpectedResultsLoader.Controller', 18 function($scope, $http) { 19 /* When the changePlatformPath function is called, download expected-results.json 20 * from the desired platform directory. 21 * 22 * When the JSON is received, predigest it and return it to the frontend as 23 * $scope.gmExpectedResults . 24 */ 25 $scope.changePlatformPath = function() { 26 $http.get($scope.platformPath + "/expected-results.json").success( 27 function(response) { 28 var jsonResults = []; 29 var imageNameRegex = /^(.+)_([^_]+).png/; 30 angular.forEach(response['expected-results'], function(imageExpectations, imageName) { 31 var matched = imageNameRegex.exec(imageName); 32 var allowedImages = []; 33 angular.forEach(imageExpectations['allowed-digests'], function(allowedDigest, key) { 34 var thisImage = { 35 hashType: allowedDigest[0], hashValue: allowedDigest[1] 36 }; 37 allowedImages.push(thisImage); 38 }); 39 var thisResult = { 40 test: matched[1], config: matched[2], 41 allowedImages: allowedImages, 42 bugs: imageExpectations['bugs'], 43 reviewedByHuman: imageExpectations['reviewed-by-human'] 44 }; 45 jsonResults.push(thisResult); 46 }); 47 $scope.gmExpectedResults = jsonResults; 48 } 49 ); 50 }; 51 } 52); 53