<commit_before><html><head>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<link rel="stylesheet" href="test_page.css">
<script>
function AdjustHeight(frameWin) {
  var div = frameWin.document.getElementsByTagName("div")[0];
  var height = frameWin.getComputedStyle(div).height;
  frameWin.frameElement.style.height = height;
}

function DidExecuteTests() {
  if (window == top)
    return;

  // Otherwise, we are in a subframe, so we can use this opportunity to resize
  // ourselves.
  AdjustHeight(window);
}

function AppendFrame(testcase, i) {
  var p = document.createElement("P");
  p.setAttribute("class", "frame-container");

  var title = document.createElement("H2");
  title.appendChild(document.createTextNode(testcase));
  p.appendChild(title);

  var frame = document.createElement("IFRAME");
  var mode = ExtractSearchParameter("mode");
  if (mode == "nacl")
    frame.setAttribute("src", "?testcase=" + testcase + "&mode=nacl");
  else
    frame.setAttribute("src", "?testcase=" + testcase);
  frame.setAttribute("onload", "LoadNext(" + (i + 1) + ")");
  p.appendChild(frame);

  document.body.appendChild(p);
}

function LoadNext(i) {
  var links = document.links;
  if (links.length > i)
    AppendFrame(links[i].firstChild.nodeValue, i);
}

function RunAll() {
  // Remove any existing frames.
  var existing = document.getElementsByClassName("frame-container");
  while (existing.length)
    existing[0].parentNode.removeChild(existing[0]);

  // Add new frames for each test, but do so one frame at a time.
  LoadNext(0);
}

function ExtractSearchParameter(name) {
  var nameIndex = location.search.indexOf(name + "=");
  if (nameIndex != -1) {
    var value = location.search.substring(nameIndex + name.length + 1);
    var endIndex = value.indexOf("&");
    if (endIndex != -1)
      value = value.substring(0, endIndex);
    return value;
  }
  return "";
}

// Parses the message, looking for strings of the form:
// TESTING_MESSAGE:<message_type>:<message_contents>
//
// If the message_data is not a string or does not match the above format, then
// undefined is returned.
//
// Otherwise, returns an array containing 2 items. The 0th element is the
// message_type, one of:
//  - ClearContents
//  - DidExecuteTests
//  - LogHTML
//  - SetCookie
// The second item is the verbatim message_contents.
function ParseTestingMessage(message_data) {
  if (typeof(message_data)!='string')
    return undefined;
  var testing_message_prefix = "TESTING_MESSAGE";
  var delim_str = ":";
  var delim1 = message_data.indexOf(delim_str);
  if (message_data.substring(0, delim1) !== testing_message_prefix)
    return undefined;
  var delim2 = message_data.indexOf(delim_str, delim1 + 1);
  if (delim2 == -1)
    delim2 = message_data.length;
  var message_type = message_data.substring(delim1 + 1, delim2);
  var message_contents = message_data.substring(delim2 + 1);
  return [message_type, message_contents];
}

function ClearConsole() {
  window.document.getElementById("console").innerHTML = "";
}

function LogHTML(html) {
  window.document.getElementById("console").innerHTML += html;
}

function SetCookie(key_value_string) {
  window.document.cookie = key_value_string + "; path=/";
}

function IsTestingMessage(message_data) {
  return (ParseTestingMessage(message_data) != undefined);
}

function handleTestingMessage(message_event) {
  var type_contents_tuple = ParseTestingMessage(message_event.data);
  if (type_contents_tuple) {
    var type = type_contents_tuple[0];
    var contents = type_contents_tuple[1];
    if (type === "ClearConsole")
      ClearConsole();
    else if (type === "DidExecuteTests")
      DidExecuteTests();
    else if (type === "LogHTML")
      LogHTML(contents);
    else if (type === "SetCookie")
      SetCookie(contents);
  }
}

onload = function() {
  var testcase = ExtractSearchParameter("testcase");
  var mode = ExtractSearchParameter("mode");
  document.title = 'Test ' + testcase;
  var obj;
  if (mode == "nacl") {
    obj = document.createElement("EMBED");
    obj.setAttribute("src", "test_case.nmf");
    obj.setAttribute("type", "application/x-nacl");
    obj.setAttribute("mode", mode);
  } else {
    var mimeType = "application/x-ppapi-tests";
    if (mimeType in navigator.mimeTypes) {
      obj = document.createElement("EMBED");
      obj.setAttribute("src", "http://a.b.c/test");
      obj.setAttribute("type", mimeType);
      obj.setAttribute("width", 80);
      obj.setAttribute("height", 80);
      obj.setAttribute("style",
                       "background-color:#AAAAAA;border:1px solid black;");
    } else {
      document.getElementById("console").innerHTML =
          '<span class="fail">FAIL</span>: ' +
          '<span class="err_msg">Test plug-in is not registered.</span>';
    }
  }
  if (obj) {
    obj.setAttribute("id", "plugin");
    obj.setAttribute("testcase", testcase);
    obj.setAttribute("protocol", window.location.protocol);
    var container = document.getElementById("container");
    container.appendChild(obj);
    container.addEventListener("message", handleTestingMessage, true);
  }
}
</script><commit_msg>Fix a small race condition in loading/executing the PPAPI tests.<commit_after><html><head>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<link rel="stylesheet" href="test_page.css">
<script>
function AdjustHeight(frameWin) {
  var div = frameWin.document.getElementsByTagName("div")[0];
  var height = frameWin.getComputedStyle(div).height;
  frameWin.frameElement.style.height = height;
}

function DidExecuteTests() {
  if (window == top)
    return;

  // Otherwise, we are in a subframe, so we can use this opportunity to resize
  // ourselves.
  AdjustHeight(window);
}

function AppendFrame(testcase, i) {
  var p = document.createElement("P");
  p.setAttribute("class", "frame-container");

  var title = document.createElement("H2");
  title.appendChild(document.createTextNode(testcase));
  p.appendChild(title);

  var frame = document.createElement("IFRAME");
  var mode = ExtractSearchParameter("mode");
  if (mode == "nacl")
    frame.setAttribute("src", "?testcase=" + testcase + "&mode=nacl");
  else
    frame.setAttribute("src", "?testcase=" + testcase);
  frame.setAttribute("onload", "LoadNext(" + (i + 1) + ")");
  p.appendChild(frame);

  document.body.appendChild(p);
}

function LoadNext(i) {
  var links = document.links;
  if (links.length > i)
    AppendFrame(links[i].firstChild.nodeValue, i);
}

function RunAll() {
  // Remove any existing frames.
  var existing = document.getElementsByClassName("frame-container");
  while (existing.length)
    existing[0].parentNode.removeChild(existing[0]);

  // Add new frames for each test, but do so one frame at a time.
  LoadNext(0);
}

function ExtractSearchParameter(name) {
  var nameIndex = location.search.indexOf(name + "=");
  if (nameIndex != -1) {
    var value = location.search.substring(nameIndex + name.length + 1);
    var endIndex = value.indexOf("&");
    if (endIndex != -1)
      value = value.substring(0, endIndex);
    return value;
  }
  return "";
}

// Parses the message, looking for strings of the form:
// TESTING_MESSAGE:<message_type>:<message_contents>
//
// If the message_data is not a string or does not match the above format, then
// undefined is returned.
//
// Otherwise, returns an array containing 2 items. The 0th element is the
// message_type, one of:
//  - ClearContents
//  - DidExecuteTests
//  - LogHTML
//  - SetCookie
// The second item is the verbatim message_contents.
function ParseTestingMessage(message_data) {
  if (typeof(message_data)!='string')
    return undefined;
  var testing_message_prefix = "TESTING_MESSAGE";
  var delim_str = ":";
  var delim1 = message_data.indexOf(delim_str);
  if (message_data.substring(0, delim1) !== testing_message_prefix)
    return undefined;
  var delim2 = message_data.indexOf(delim_str, delim1 + 1);
  if (delim2 == -1)
    delim2 = message_data.length;
  var message_type = message_data.substring(delim1 + 1, delim2);
  var message_contents = message_data.substring(delim2 + 1);
  return [message_type, message_contents];
}

function ClearConsole() {
  window.document.getElementById("console").innerHTML = "";
}

function LogHTML(html) {
  window.document.getElementById("console").innerHTML += html;
}

function SetCookie(key_value_string) {
  window.document.cookie = key_value_string + "; path=/";
}

function IsTestingMessage(message_data) {
  return (ParseTestingMessage(message_data) != undefined);
}

function handleTestingMessage(message_event) {
  var type_contents_tuple = ParseTestingMessage(message_event.data);
  if (type_contents_tuple) {
    var type = type_contents_tuple[0];
    var contents = type_contents_tuple[1];
    if (type === "ClearConsole")
      ClearConsole();
    else if (type === "DidExecuteTests")
      DidExecuteTests();
    else if (type === "LogHTML")
      LogHTML(contents);
    else if (type === "SetCookie")
      SetCookie(contents);
  }
}

onload = function() {
  var testcase = ExtractSearchParameter("testcase");
  var mode = ExtractSearchParameter("mode");
  document.title = 'Test ' + testcase;
  var obj;
  if (mode == "nacl") {
    obj = document.createElement("EMBED");
    obj.setAttribute("src", "test_case.nmf");
    obj.setAttribute("type", "application/x-nacl");
    obj.setAttribute("mode", mode);
  } else {
    var mimeType = "application/x-ppapi-tests";
    if (mimeType in navigator.mimeTypes) {
      obj = document.createElement("EMBED");
      obj.setAttribute("src", "http://a.b.c/test");
      obj.setAttribute("type", mimeType);
      obj.setAttribute("width", 80);
      obj.setAttribute("height", 80);
      obj.setAttribute("style",
                       "background-color:#AAAAAA;border:1px solid black;");
    } else {
      document.getElementById("console").innerHTML =
          '<span class="fail">FAIL</span>: ' +
          '<span class="err_msg">Test plug-in is not registered.</span>';
    }
  }
  if (obj) {
    obj.setAttribute("id", "plugin");
    obj.setAttribute("testcase", testcase);
    obj.setAttribute("protocol", window.location.protocol);
    var container = document.getElementById("container");
    container.addEventListener("message", handleTestingMessage, true);
    container.appendChild(obj);
  }
}
</script>
{'fraction_non_alphanumeric': 0.14608796073525165, 'fraction_numerical': 0.006544124723318256, 'mean_word_length': 4.099116781157998, 'pattern_counts': {'":': 2, '<': 29, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2330187', 'n_tokens_mistral': 3209, 'n_tokens_neox': 3162, 'n_words': 724}