// Copyright 2017 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.

// OME for the chromium gerrit codereview site.

let clicked_element = null;

document.addEventListener('contextmenu', (event) => {
  clicked_element = event.target;
});

function handleGerritFilePaths(request, sendResponse) {
  let files = [];

  let elements = document.querySelectorAll('.file-row');
  for (var i = 1; i < elements.length; ++i) {
    let path = elements[i].getAttribute('data-path');
    if (!path || !path.length)
      continue;  // Empty file path in the file list: ignore.
    let stat = elements[i].querySelector('.status');
    if (!stat.textContent || stat.textContent.trim() == 'D')
      continue;  // File path has status D (deleted): ignore.
    files.push(path);
  }

  sendResponse({files: files});
}

function handleGerritFile(request, sendResponse) {
  let file = clicked_element.getAttribute('title');
  if (!file || !file.length)
    return;
  if (file.indexOf('Commit message') >= 0)
    return;

  sendResponse({file: file});
}

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (clicked_element && request == 'getFiles')
    handleGerritFilePaths(request, sendResponse);
  else if (clicked_element && request == 'getFile')
    handleGerritFile(request, sendResponse);
  clicked_element = null;
});
