aboutsummaryrefslogtreecommitdiffhomepage
path: root/expectations/gm/loader.js
blob: c5d8a7c8c19b4124d391265495f7fc262f5864c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
 * 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;
            }
         );
      };
    }
);