Home | History | Annotate | Download | only in gm
      1 /*
      2  * GMExpectedResultsLoader:
      3  * Reads an expected-results.json file, and imports its data into $scope.
      4  */
      5 var 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 );
     16 GMExpectedResultsLoader.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