<!DOCTYPE html>
<!--
Copyright (C) 2017 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<link rel="import"
    href="../bower_components/polymer-resin/standalone/polymer-resin.html" />
<script>
  security.polymer_resin.install({
    allowedIdentifierPrefixes: [''],
    reportHandler(isViolation, fmt, ...args) {
      const log = security.polymer_resin.CONSOLE_LOGGING_REPORT_HANDLER;
      log(isViolation, fmt, ...args);
      if (isViolation) {
        // This will cause the test to fail if there is a data binding
        // violation.
        throw new Error(
            'polymer-resin violation: ' + fmt
            + JSON.stringify(args));
      }
    },
  });
</script>
<script>
  // eslint-disable-next-line no-unused-vars
  const mockPromise = () => {
    let res;
    const promise = new Promise(resolve => {
      res = resolve;
    });
    promise.resolve = res;
    return promise;
  };
</script>
<link rel="import"
    href="../bower_components/iron-test-helpers/iron-test-helpers.html" />
<link rel="import" href="test-router.html" />
