browser/base/content/test/plugins/browser_bug743421.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 var rootDir = getRootDirectory(gTestPath);
     2 const gTestRoot = rootDir.replace("chrome://mochitests/content/", "http://mochi.test:8888/");
     4 var gTestBrowser = null;
     5 var gNextTest = null;
     7 Components.utils.import("resource://gre/modules/Services.jsm");
     9 function test() {
    10   waitForExplicitFinish();
    11   registerCleanupFunction(function() {
    12     clearAllPluginPermissions();
    13     Services.prefs.clearUserPref("plugins.click_to_play");
    14   });
    15   Services.prefs.setBoolPref("plugins.click_to_play", true);
    16   setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY);
    18   var newTab = gBrowser.addTab();
    19   gBrowser.selectedTab = newTab;
    20   gTestBrowser = gBrowser.selectedBrowser;
    21   gTestBrowser.addEventListener("load", pageLoad, true);
    22   prepareTest(test1a, gTestRoot + "plugin_add_dynamically.html");
    23 }
    25 function finishTest() {
    26   gTestBrowser.removeEventListener("load", pageLoad, true);
    27   gBrowser.removeCurrentTab();
    28   window.focus();
    29   finish();
    30 }
    32 function pageLoad() {
    33   // The plugin events are async dispatched and can come after the load event
    34   // This just allows the events to fire before we then go on to test the states
    35   executeSoon(gNextTest);
    36 }
    38 function prepareTest(nextTest, url) {
    39   gNextTest = nextTest;
    40   gTestBrowser.contentWindow.location = url;
    41 }
    43 // Tests that navigation within the page and the window.history API doesn't break click-to-play state.
    44 function test1a() {
    45   var popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
    46   ok(!popupNotification, "Test 1a, Should not have a click-to-play notification");
    47   var plugin = new XPCNativeWrapper(XPCNativeWrapper.unwrap(gTestBrowser.contentWindow).addPlugin());
    49   var condition = function() PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
    50   waitForCondition(condition, test1b, "Test 1a, Waited too long for plugin notification");
    51 }
    53 function test1b() {
    54   var popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
    55   ok(popupNotification, "Test 1b, Should have a click-to-play notification");
    56   var plugin = gTestBrowser.contentDocument.getElementsByTagName("embed")[0];
    57   var objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
    58   ok(!objLoadingContent.activated, "Test 1b, Plugin should not be activated");
    60   // Click the activate button on doorhanger to make sure it works
    61   popupNotification.reshow();
    62   PopupNotifications.panel.firstChild._primaryButton.click();
    64   ok(objLoadingContent.activated, "Test 1b, Doorhanger should activate plugin");
    66   test1c();
    67 }
    69 function test1c() {
    70   var popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
    71   ok(popupNotification, "Test 1c, Should still have a click-to-play notification");
    72   var plugin = new XPCNativeWrapper(XPCNativeWrapper.unwrap(gTestBrowser.contentWindow).addPlugin());
    74   var objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
    75   var condition = function() objLoadingContent.activated;
    76   waitForCondition(condition, test1d, "Test 1c, Waited too long for plugin activation");
    77 }
    79 function test1d() {
    80   var plugin = gTestBrowser.contentDocument.getElementsByTagName("embed")[1];
    81   var objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
    82   ok(objLoadingContent.activated, "Test 1d, Plugin should be activated");
    84   gNextTest = test1e;
    85   gTestBrowser.contentWindow.addEventListener("hashchange", test1e, false);
    86   gTestBrowser.contentWindow.location += "#anchorNavigation";
    87 }
    89 function test1e() {
    90   gTestBrowser.contentWindow.removeEventListener("hashchange", test1e, false);
    92   var plugin = new XPCNativeWrapper(XPCNativeWrapper.unwrap(gTestBrowser.contentWindow).addPlugin());
    94   var objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
    95   var condition = function() objLoadingContent.activated;
    96   waitForCondition(condition, test1f, "Test 1e, Waited too long for plugin activation");
    97 }
    99 function test1f() {
   100   var plugin = gTestBrowser.contentDocument.getElementsByTagName("embed")[2];
   101   var objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
   102   ok(objLoadingContent.activated, "Test 1f, Plugin should be activated");
   104   gTestBrowser.contentWindow.history.replaceState({}, "", "replacedState");
   105   var plugin = new XPCNativeWrapper(XPCNativeWrapper.unwrap(gTestBrowser.contentWindow).addPlugin());
   106   var objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
   107   var condition = function() objLoadingContent.activated;
   108   waitForCondition(condition, test1g, "Test 1f, Waited too long for plugin activation");
   109 }
   111 function test1g() {
   112   var plugin = gTestBrowser.contentDocument.getElementsByTagName("embed")[3];
   113   var objLoadingContent2 = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
   114   ok(objLoadingContent2.activated, "Test 1g, Plugin should be activated");
   115   finishTest();
   116 }

mercurial