toolkit/mozapps/extensions/test/browser/browser_bug587970.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 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 // Bug 587970 - Provide ability "Update all now" within 'Available Updates' screen
     7 var gManagerWindow;
     8 var gProvider;
    10 function test() {
    11   waitForExplicitFinish();
    13   gProvider = new MockProvider();
    15   gProvider.createAddons([{
    16     id: "addon1@tests.mozilla.org",
    17     name: "addon 1",
    18     version: "1.0",
    19     applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE
    20   }, {
    21     id: "addon2@tests.mozilla.org",
    22     name: "addon 2",
    23     version: "2.0",
    24     applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE
    25   }, {
    26     id: "addon3@tests.mozilla.org",
    27     name: "addon 3",
    28     version: "3.0",
    29     applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE
    30   }]);
    33   open_manager("addons://updates/available", function(aWindow) {
    34     gManagerWindow = aWindow;
    35     run_next_test();
    36   });
    37 }
    40 function end_test() {
    41   close_manager(gManagerWindow, finish);
    42 }
    45 add_test(function() {
    46   var list = gManagerWindow.document.getElementById("updates-list");
    47   is(list.childNodes.length, 0, "Available updates list should be empty");
    49   var emptyNotice = gManagerWindow.document.getElementById("empty-availableUpdates-msg");
    50   is_element_visible(emptyNotice, "Empty notice should be visible");
    52   var updateSelected = gManagerWindow.document.getElementById("update-selected-btn");
    53   is_element_hidden(updateSelected, "Update Selected button should be hidden");
    55   info("Adding updates");
    56   gProvider.createInstalls([{
    57     name: "addon 1",
    58     version: "1.1",
    59     existingAddon: gProvider.addons[0]
    60   }, {
    61     name: "addon 2",
    62     version: "2.1",
    63     existingAddon: gProvider.addons[1]
    64   }, {
    65     name: "addon 3",
    66     version: "3.1",
    67     existingAddon: gProvider.addons[2]
    68   }]);
    70   function wait_for_refresh() {
    71     if (list.childNodes.length == 3 &&
    72         list.childNodes[0].mManualUpdate &&
    73         list.childNodes[1].mManualUpdate &&
    74         list.childNodes[2].mManualUpdate) {
    75       run_next_test();
    76     } else {
    77       info("Waiting for pane to refresh");
    78       setTimeout(wait_for_refresh, 10);
    79     }
    80   }
    81   info("Waiting for pane to refresh");
    82   setTimeout(wait_for_refresh, 10);
    83 });
    86 add_test(function() {
    87   var list = gManagerWindow.document.getElementById("updates-list");
    88   is(list.childNodes.length, 3, "Available updates list should have 2 items");
    90   var item1 = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org");
    91   isnot(item1, null, "Item for addon1@tests.mozilla.org should be in list");
    92   var item2 = get_addon_element(gManagerWindow, "addon2@tests.mozilla.org");
    93   isnot(item2, null, "Item for addon2@tests.mozilla.org should be in list");
    94   var item3 = get_addon_element(gManagerWindow, "addon3@tests.mozilla.org");
    95   isnot(item3, null, "Item for addon3@tests.mozilla.org should be in list");
    97   var emptyNotice = gManagerWindow.document.getElementById("empty-availableUpdates-msg");
    98   is_element_hidden(emptyNotice, "Empty notice should be hidden");
   100   var updateSelected = gManagerWindow.document.getElementById("update-selected-btn");
   101   is_element_visible(updateSelected, "Update Selected button should be visible");
   102   is(updateSelected.disabled, false, "Update Selected button should be enabled by default");
   104   is(item1._includeUpdate.checked, true, "Include Update checkbox should be checked by default for addon1");
   105   is(item2._includeUpdate.checked, true, "Include Update checkbox should be checked by default for addon2");
   106   is(item3._includeUpdate.checked, true, "Include Update checkbox should be checked by default for addon3");
   108   info("Unchecking Include Update checkbox for addon1");
   109   EventUtils.synthesizeMouse(item1._includeUpdate, 2, 2, { }, gManagerWindow);
   110   is(item1._includeUpdate.checked, false, "Include Update checkbox should now be be unchecked for addon1");
   111   is(updateSelected.disabled, false, "Update Selected button should still be enabled");
   113   info("Unchecking Include Update checkbox for addon2");
   114   EventUtils.synthesizeMouse(item2._includeUpdate, 2, 2, { }, gManagerWindow);
   115   is(item2._includeUpdate.checked, false, "Include Update checkbox should now be be unchecked for addon2");
   116   is(updateSelected.disabled, false, "Update Selected button should still be enabled");
   118   info("Unchecking Include Update checkbox for addon3");
   119   EventUtils.synthesizeMouse(item3._includeUpdate, 2, 2, { }, gManagerWindow);
   120   is(item3._includeUpdate.checked, false, "Include Update checkbox should now be be unchecked for addon3");
   121   is(updateSelected.disabled, true, "Update Selected button should now be disabled");
   123   info("Checking Include Update checkbox for addon2");
   124   EventUtils.synthesizeMouse(item2._includeUpdate, 2, 2, { }, gManagerWindow);
   125   is(item2._includeUpdate.checked, true, "Include Update checkbox should now be be checked for addon2");
   126   is(updateSelected.disabled, false, "Update Selected button should now be enabled");
   128   info("Checking Include Update checkbox for addon3");
   129   EventUtils.synthesizeMouse(item3._includeUpdate, 2, 2, { }, gManagerWindow);
   130   is(item3._includeUpdate.checked, true, "Include Update checkbox should now be be checked for addon3");
   131   is(updateSelected.disabled, false, "Update Selected button should now be enabled");
   133   var installCount = 0;
   134   var listener = {
   135     onDownloadStarted: function(aInstall) {
   136       isnot(aInstall.existingAddon.id, "addon1@tests.mozilla.org", "Should not have seen a download start for addon1");
   137     },
   139     onInstallEnded: function(aInstall) {
   140       if (++installCount < 2)
   141         return;
   143       gProvider.installs[0].removeTestListener(listener);
   144       gProvider.installs[1].removeTestListener(listener);
   145       gProvider.installs[2].removeTestListener(listener);
   147       // Installs are started synchronously so by the time an executeSoon is
   148       // executed all installs that are going to start will have started
   149       executeSoon(function() {
   150         is(gProvider.installs[0].state, AddonManager.STATE_AVAILABLE, "addon1 should not have been upgraded");
   151         is(gProvider.installs[1].state, AddonManager.STATE_INSTALLED, "addon2 should have been upgraded");
   152         is(gProvider.installs[2].state, AddonManager.STATE_INSTALLED, "addon3 should have been upgraded");
   154         run_next_test();
   155       });
   156     }
   157   }
   158   gProvider.installs[0].addTestListener(listener);
   159   gProvider.installs[1].addTestListener(listener);
   160   gProvider.installs[2].addTestListener(listener);
   161   info("Clicking Update Selected button");
   162   EventUtils.synthesizeMouseAtCenter(updateSelected, { }, gManagerWindow);
   163 });
   166 add_test(function() {
   167   var updateSelected = gManagerWindow.document.getElementById("update-selected-btn");
   168   is(updateSelected.disabled, true, "Update Selected button should be disabled");
   170   var item1 = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org");
   171   isnot(item1, null, "Item for addon1@tests.mozilla.org should be in list");
   172   is(item1._includeUpdate.checked, false, "Include Update checkbox should not have changed");
   174   info("Checking Include Update checkbox for addon1");
   175   EventUtils.synthesizeMouse(item1._includeUpdate, 2, 2, { }, gManagerWindow);
   176   is(item1._includeUpdate.checked, true, "Include Update checkbox should now be be checked for addon1");
   177   is(updateSelected.disabled, false, "Update Selected button should now not be disabled");
   179   run_next_test();
   180 });

mercurial