<!DOCTYPE html>
<!--
Copyright 2015 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<link rel="import" href="/core/scripting_controller.html">
<link rel="import" href="/extras/tquery/filter.html">

<script>
'use strict';

tr.exportTo('tr.e.tquery', function() {
  function FilterAllOf(opt_subExpressions) {
    tr.e.tquery.Filter.call(this);
    this.subExpressions = opt_subExpressions || [];
  }

  FilterAllOf.prototype = {
    __proto__: tr.e.tquery.Filter.prototype,

    set subExpressions(exprs) {
      this.subExpressions_ = [];
      for (var i = 0; i < exprs.length; i++) {
        this.subExpressions_.push(
            tr.e.tquery.Filter.normalizeFilterExpression(exprs[i]));
      }
    },

    get subExpressions() {
      return this.subExpressions_;
    },

    evaluate: function(context) {
      if (!this.subExpressions.length)
        return true;
      for (var i = 0; i < this.subExpressions.length; i++) {
        if (!this.subExpressions[i].evaluate(context))
          return false;
      }
      return true;
    }
  };
  tr.c.ScriptingObjectRegistry.register(
      function() {
        var exprs = [];
        for (var i = 0; i < arguments.length; i++) {
          exprs.push(arguments[i]);
        }
        return new FilterAllOf(exprs);
      },
      {
        name: 'allOf'
      }
  );
  return {
    FilterAllOf: FilterAllOf
  };
});
</script>
