// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/**
 * Coverage controller logic - used by coverage test harness to embed tests in
 * DumpRenderTree and extract coverage information.
 */

var LONG_LINE = 60000;

function onReceive(e) {
  if (e.data == 'unittest-suite-done') {
    var s = JSON.stringify(top._$jscoverage);
    var res = '';
    // DumpRenderTree has a bug on lines longer than 2^16, so we split them
    while (s.length > LONG_LINE) {
      res += s.substr(0, LONG_LINE) + '<br>\n';
      s = s.substr(LONG_LINE);
    }
    res += s;
    window.document.body.innerHTML = res;
    window.layoutTestController.notifyDone();
  }
}

if (window.layoutTestController) {
  window.layoutTestController.dumpAsText();
  window.layoutTestController.waitUntilDone();
  window.addEventListener("message", onReceive, false);
}
