Obteniendo el código fuente de la página actual desde la extensión de Chrome

Tengo una extensión de cromo. Necesito analizar desde la fuente HTML de la página actual. Encontré aquí todo tipo de soluciones con páginas de fondo y scripts de contenido, pero ninguna me ayudó. Esto es lo que tengo hasta ahora:
manifest.json:

{
  "name": "Extension",
  "version": "1.0",
  "description": "Extension",
  "browser_action": {
    "default_icon": "bmarkred.ico",
    "popup": "Test.html"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["content.js"]
    }
  ],
  "background": {
    "page": "backgroundPage.html"
  },
  "permissions": [
    "cookies",
    "tabs",
    "http://*/*", 
    "https://*/*"
  ]
}

background.html:

<html>
<head>
<script type="text/javascript">
    try {
        chrome.tabs.getSelected(null, function (tab) {
            chrome.tabs.sendRequest(tab.id, {action: "getSource"}, function(source) {
                alert(source);
            });
        });
    }
    catch (ex) {
        alert(ex);
    }
</script>
</head>
</html>

content.js:

chrome.extension.onRequest.addListener(function(request, sender, callback) {
    if (request.action == "getSource") {
        callback(document.getElementsByTagName('html')[0].innerHTML);
    }
});

La alerta siempre alerta indefinida. incluso si cambio en el archivo content.js la función de devolución de llamada a:

callback('hello'); 

sigue siendo el mismo resultado. ¿Qué estoy haciendo mal? tal vez estoy yendo por este camino equivocado Lo que realmente necesito es esto. Cuando el usuario abre la ventana emergente de extensión (y solo entonces), necesito HTML de la página actual para poder analizarla. ¿alguna sugerencia?

Respuestas a la pregunta(1)

Su respuesta a la pregunta