chromium/chrome/test/data/extensions/subscribe_page_action_v3/src/sniff_common.js

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// The possible log levels.
var logLevels = {
    "none": 0,
    "error": 1,
    "info": 2
};

// Defines the current log level. Values other than "none" are for debugging
// only and should at no point be checked in.
var currentLogLevel = logLevels.none;

function containsFeed(doc) {
  debugMsg(logLevels.info, "containsFeed called");

  // Find all the RSS link elements.
  var result = doc.evaluate(
      '//*[local-name()="rss" or local-name()="feed" or local-name()="RDF"]',
      doc, null, 0, null);

  if (!result) {
    debugMsg(logLevels.info, "exiting: document.evaluate returned no results");
    return false;  // This is probably overly defensive, but whatever.
  }

  var node = result.iterateNext();

  if (!node) {
    debugMsg(logLevels.info, "returning: iterateNext() returned no nodes");
    return false;  // No RSS tags were found.
  }

  // The feed for arab dash jokes dot net, for example, contains
  // a feed that is a child of the body tag so we continue only if the
  // node contains no parent or if the parent is the body tag.
  if (node.parentElement && node.parentElement.tagName != "BODY") {
    debugMsg(logLevels.info, "exiting: parentElement that's not BODY");
    return false;
  }

  debugMsg(logLevels.info, "Found feed");

  return true;
}

function debugMsg(loglevel, text) {
  if (loglevel <= currentLogLevel) {
    console.log("RSS Subscription extension: " + text);
  }
}