• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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