diff -r 000000000000 -r 6474c204b198 browser/base/content/test/plugins/browser_bug797677.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/base/content/test/plugins/browser_bug797677.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,47 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +var rootDir = getRootDirectory(gTestPath); +const gHttpTestRoot = rootDir.replace("chrome://mochitests/content/", "http://127.0.0.1:8888/"); +const Cc = Components.classes; +const Ci = Components.interfaces; +var gTestBrowser = null; +var gConsoleErrors = 0; + +function test() { + waitForExplicitFinish(); + var newTab = gBrowser.addTab(); + gBrowser.selectedTab = newTab; + gTestBrowser = gBrowser.selectedBrowser; + gTestBrowser.addEventListener("PluginBindingAttached", pluginBindingAttached, true, true); + var consoleService = Cc["@mozilla.org/consoleservice;1"] + .getService(Ci.nsIConsoleService); + var errorListener = { + observe: function(aMessage) { + if (aMessage.message.contains("NS_ERROR")) + gConsoleErrors++; + } + }; + consoleService.registerListener(errorListener); + registerCleanupFunction(function() { + gTestBrowser.removeEventListener("PluginBindingAttached", pluginBindingAttached, true); + consoleService.unregisterListener(errorListener); + gBrowser.removeCurrentTab(); + window.focus(); + }); + gTestBrowser.contentWindow.location = gHttpTestRoot + "plugin_bug797677.html"; +} + +function pluginBindingAttached() { + // Let browser-plugins.js handle the PluginNotFound event, then run the test + executeSoon(runTest); +} + +function runTest() { + var doc = gTestBrowser.contentDocument; + var plugin = doc.getElementById("plugin"); + ok(plugin, "plugin should be in the page"); + is(gConsoleErrors, 0, "should have no console errors"); + finish(); +}