aboutsummaryrefslogblamecommitdiffstats
path: root/tests/test-pageMod.js
blob: 5434bbdde431c374c9f4fa09d346a93ab3b9dfb3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15














                                                                                      








                                                                             







                                                             





                                  


                                            
                   
              
                                                     

                               















                                                                     



































                                                                                                      
                                         

                                                                  


                                                                      




































                                                                                                            
/*jslint white: false, eqeqeq: false, plusplus: false, onevar: false, newcap: false */
/*global exports: false, require: false, console: false, log: false */
"use strict";
var Cc = require("chrome").Cc;
var Ci = require("chrome").Ci;
var main = require("main");
var utilMod = require("util");
var testPageMod = require("pagemod-test-helpers").testPageMod;
var self = require("self");

var theURL = main.theURL;
var testURL = self.data.url('tests/change-more-bugs01.html');
var JSONifiedMessage = '{"cmd":"testMessage","data":{"a":"first","b":"second"}}';

exports.ensureMessagesWork = function(test) {
  var msg = new utilMod.Message("testMessage", { a: "first", b: "second" } );
  test.assertEqual(msg.cmd, "testMessage",
    "msg.cmd comes over well");
  test.assertEqual(msg.data.a, "first",
    "msg.data.a comes over well");
  test.assertEqual(msg.data.b, "second",
    "msg.data.b comes over well");
  test.assertEqual(JSON.stringify(msg), JSONifiedMessage,
    "JSONification of Message works as well");
};

/*

var theURL = main.theURL;
var testURL = self.data.url('tests/change-more-bugs01.html');

var contentScriptLibraries = {
  "bugzilla.redhat.com": [
    self.data.url("util.js"),
    self.data.url("color.js"),
     self.data.url("rhbzpage.js"),
    self.data.url("bzpage.js")
  ]
};

libbz.initialize(libbz.config, function () {
  pageMod.PageMod({
    include: [
      "https://bugzilla.redhat.com/show_bug.cgi?id=*"
    ],
    contentScriptWhen: 'ready',
    contentScriptFile: contentScriptLibraries["bugzilla.redhat.com"],
    onAttach: function onAttach(worker, msg) {
      console.log("worker: " + worker);
      worker.on('message', function (msg) {
        messageHandler(worker, msg);
      });
    }
  });
});

pageMod.PageMod({
  include: [
    "https://bugzilla.redhat.com/process_bug.cgi"
  ],
  contentScriptWhen: 'ready',
  contentScriptFile: self.data.url("skip-bug.js")
});
 */

var ensureSimplePageLoad = function (test) {
	console.log("testURL = " + testURL);
	testPageMod(test, testURL, [{
		include: ["*"],
		contentScriptWhen: 'ready',
		contentScriptFile: [
			self.data.url("libPW.js"),
			self.data.url("simplePageWorker.js")
		],
		onAttach: function onAttach(worker) {
			worker.on('message', function (msg) {
				switch (msg.cmd) {
					case "LogMessage":
						log(msg.data);
						break;
					case "CallBack":
						worker.postMessage(new utilMod.Message("Main", null));
						break;
					default:
						console.error(msg);
				}
			});
		}
	}],
	function (win, done) {
		test.assertNotEqual(win.document.getElementsByTagName("form")[0],
			null, "test of loading the page");
		done();
	});
};

var ensurePageLoadsWell = function (test) {
  var wm = Cc['@mozilla.org/appshell/window-mediator;1']
       .getService(Ci.nsIWindowMediator);
  var browserWindow = wm.getMostRecentWindow("navigator:browser");
  if (!browserWindow) {
  test.fail("page-mod tests: could not find the browser window, so " +
        "will not run. Use -a firefox to run the pagemod tests.");
  return null;
  }

  var loader = test.makeSandboxedLoader();
  var pageMod = loader.require("page-mod");
  var testDoc = {}, b = {}, tabBrowser = {}, newTab  = {};

  pageMod.PageMod({
		include: ["*"],
		contentScriptWhen: 'ready',
		contentScriptFile: [
			self.data.url("libPW.js"),
			self.data.url("pageWorker.js")
		],
		onAttach: function onAttach(worker) {
			worker.on('message', function (msg) {
				switch (msg.cmd) {
					case "testReady":
						testDoc = b.contentWindow.wrappedJSObject.document;
						test.assertNotEqual(testDoc.getElementById("dupeid_action"),
							null, "test of DOM modifications of the page");
						pageMod.destroy();
						tabBrowser.removeTab(newTab);
						test.done();
						// the test itself
						break;
					default:
						main.messageHandler(worker, msg);
				}
			});
		}
	});

  tabBrowser = browserWindow.gBrowser;
  newTab = tabBrowser.addTab(testURL);
  tabBrowser.selectedTab = newTab;
  b = tabBrowser.getBrowserForTab(newTab);
};