widget/tests/unit/test_taskbar_jumplistitems.js

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 // This tests taskbar jump list functionality available on win7 and up.
     8 const Cc = Components.classes;
     9 const Ci = Components.interfaces;
    11 function test_basics()
    12 {
    13   var item = Cc["@mozilla.org/windows-jumplistitem;1"].
    14   createInstance(Ci.nsIJumpListItem);
    16   var sep = Cc["@mozilla.org/windows-jumplistseparator;1"].
    17   createInstance(Ci.nsIJumpListSeparator);
    19   var shortcut = Cc["@mozilla.org/windows-jumplistshortcut;1"].
    20   createInstance(Ci.nsIJumpListShortcut);
    22   var link = Cc["@mozilla.org/windows-jumplistlink;1"].
    23   createInstance(Ci.nsIJumpListLink);
    25   do_check_false(item.equals(sep));
    26   do_check_false(item.equals(shortcut));
    27   do_check_false(item.equals(link));
    29   do_check_false(sep.equals(item));
    30   do_check_false(sep.equals(shortcut));
    31   do_check_false(sep.equals(link));
    33   do_check_false(shortcut.equals(item));
    34   do_check_false(shortcut.equals(sep));
    35   do_check_false(shortcut.equals(link));
    37   do_check_false(link.equals(item));
    38   do_check_false(link.equals(sep));
    39   do_check_false(link.equals(shortcut));
    41   do_check_true(item.equals(item));
    42   do_check_true(sep.equals(sep));
    43   do_check_true(link.equals(link));
    44   do_check_true(shortcut.equals(shortcut));
    45 }
    47 function test_separator()
    48 {
    49   // separators:
    51   var item = Cc["@mozilla.org/windows-jumplistseparator;1"].
    52   createInstance(Ci.nsIJumpListSeparator);
    54   do_check_true(item.type == Ci.nsIJumpListItem.JUMPLIST_ITEM_SEPARATOR);
    55 }
    57 function test_hashes()
    58 {
    59   var link = Cc["@mozilla.org/windows-jumplistlink;1"]
    60              .createInstance(Ci.nsIJumpListLink);
    61   var uri1 = Cc["@mozilla.org/network/simple-uri;1"]
    62             .createInstance(Ci.nsIURI);
    63   var uri2 = Cc["@mozilla.org/network/simple-uri;1"]
    64             .createInstance(Ci.nsIURI);
    66   uri1.spec = "http://www.123.com/";
    67   uri2.spec = "http://www.123.com/";
    69   link.uri = uri1;
    71   do_check_true(link.compareHash(uri2))
    72   uri2.spec = "http://www.456.com/";
    73   do_check_false(link.compareHash(uri2))
    74   uri2.spec = "http://www.123.com/";
    75   do_check_true(link.compareHash(uri2))
    76   uri2.spec = "https://www.123.com/";
    77   do_check_false(link.compareHash(uri2))
    78   uri2.spec = "http://www.123.com/test/";
    79   do_check_false(link.compareHash(uri2))
    80   uri1.spec = "http://www.123.com/test/";
    81   uri2.spec = "http://www.123.com/test/";
    82   do_check_true(link.compareHash(uri2))
    83   uri1.spec = "https://www.123.com/test/";
    84   uri2.spec = "https://www.123.com/test/";
    85   do_check_true(link.compareHash(uri2))
    86   uri2.spec = "ftp://www.123.com/test/";
    87   do_check_false(link.compareHash(uri2))
    88   uri2.spec = "http://123.com/test/";
    89   do_check_false(link.compareHash(uri2))
    90   uri1.spec = "https://www.123.com/test/";
    91   uri2.spec = "https://www.123.com/Test/";
    92   do_check_false(link.compareHash(uri2))
    94   uri1.spec = "http://www.123.com/";
    95   do_check_eq(link.uriHash, "QGLmWuwuTozr3tOfXSf5mg==");
    96   uri1.spec = "http://www.123.com/test/";
    97   do_check_eq(link.uriHash, "AG87Ls+GmaUYSUJFETRr3Q==");
    98   uri1.spec = "https://www.123.com/";
    99   do_check_eq(link.uriHash, "iSx6UH1a9enVPzUA9JZ42g==");
   101   var uri3 = Cc["@mozilla.org/network/simple-uri;1"]
   102             .createInstance(Ci.nsIURI);
   103   link.uri = uri3;
   104   do_check_eq(link.uriHash, "hTrpDwNRMkvXPqYV5kh1Fw==");
   105 }
   107 function test_links()
   108 {
   109   // links:
   110   var link1 = Cc["@mozilla.org/windows-jumplistlink;1"]
   111              .createInstance(Ci.nsIJumpListLink);
   112   var link2 = Cc["@mozilla.org/windows-jumplistlink;1"]
   113               .createInstance(Ci.nsIJumpListLink);
   115   var uri1 = Cc["@mozilla.org/network/simple-uri;1"]
   116             .createInstance(Ci.nsIURI);
   117   var uri2 = Cc["@mozilla.org/network/simple-uri;1"]
   118             .createInstance(Ci.nsIURI);
   120   uri1.spec = "http://www.test.com/";
   121   uri2.spec = "http://www.test.com/";
   123   link1.uri = uri1;
   124   link1.uriTitle = "Test";
   125   link2.uri = uri2;
   126   link2.uriTitle = "Test";
   128   do_check_true(link1.equals(link2));
   130   link2.uriTitle = "Testing";
   132   do_check_false(link1.equals(link2));
   134   link2.uriTitle = "Test";
   135   uri2.spec = "http://www.testing.com/";
   137   do_check_false(link1.equals(link2));
   138 }
   140 function test_shortcuts()
   141 {
   142   // shortcuts:
   143   var sc = Cc["@mozilla.org/windows-jumplistshortcut;1"]
   144            .createInstance(Ci.nsIJumpListShortcut);
   146   var handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
   147                    .createInstance(Ci.nsILocalHandlerApp);
   149   handlerApp.name = "TestApp";
   150   handlerApp.detailedDescription = "TestApp detailed description.";
   151   handlerApp.appendParameter("-test");
   153   sc.iconIndex = 1;
   154   do_check_eq(sc.iconIndex, 1);
   156   var faviconPageUri = Cc["@mozilla.org/network/simple-uri;1"]
   157                     .createInstance(Ci.nsIURI);
   158   faviconPageUri.spec = "http://www.123.com/";
   159   sc.faviconPageUri = faviconPageUri;
   160   do_check_eq(sc.faviconPageUri, faviconPageUri);
   162   var dirSvc = Cc["@mozilla.org/file/directory_service;1"].
   163                   getService(Ci.nsIProperties).
   164                   QueryInterface(Ci.nsIDirectoryService);
   165   var notepad = dirSvc.get("WinD", Ci.nsIFile);
   166   notepad.append("notepad.exe");
   167   if (notepad.exists()) {
   168     handlerApp.executable = notepad;
   169     sc.app = handlerApp;
   170     do_check_eq(sc.app.detailedDescription, "TestApp detailed description.");
   171     do_check_eq(sc.app.name, "TestApp");
   172     do_check_true(sc.app.parameterExists("-test"));
   173     do_check_false(sc.app.parameterExists("-notset"));
   174   }
   175 }
   177 function test_jumplist()
   178 {
   179   // Jump lists can't register links unless the application is the default
   180   // protocol handler for the protocol of the link, so we skip off testing
   181   // those in these tests. We'll init the jump list for the xpc shell harness,
   182   // add a task item, and commit it.
   184   // not compiled in
   185   if (Ci.nsIWinTaskbar == null)
   186     return;
   188   var taskbar = Cc["@mozilla.org/windows-taskbar;1"]
   189                 .getService(Ci.nsIWinTaskbar);
   191   var builder = taskbar.createJumpListBuilder();
   193   do_check_neq(builder, null);
   195   // Win7 and up only
   196   try {
   197     var sysInfo = Cc["@mozilla.org/system-info;1"].
   198                   getService(Ci.nsIPropertyBag2);
   199     var ver = parseFloat(sysInfo.getProperty("version"));
   200     if (ver < 6.1) {
   201       do_check_false(builder.available, false);
   202       return;
   203     }
   204   } catch (ex) { }
   206   do_check_true(taskbar.available);
   208   builder.deleteActiveList();
   210   var items = Cc["@mozilla.org/array;1"]
   211               .createInstance(Ci.nsIMutableArray);
   213   var sc = Cc["@mozilla.org/windows-jumplistshortcut;1"]
   214            .createInstance(Ci.nsIJumpListShortcut);
   216   var handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
   217                    .createInstance(Ci.nsILocalHandlerApp);
   219   handlerApp.name = "Notepad";
   220   handlerApp.detailedDescription = "Testing detailed description.";
   222   var dirSvc = Cc["@mozilla.org/file/directory_service;1"].
   223                   getService(Ci.nsIProperties).
   224                   QueryInterface(Ci.nsIDirectoryService);
   225   var notepad = dirSvc.get("WinD", Ci.nsIFile);
   226   notepad.append("notepad.exe");
   227   if (notepad.exists()) {
   228     handlerApp.executable = notepad;
   229     sc.app = handlerApp;
   230     items.appendElement(sc, false);
   232     var removed = Cc["@mozilla.org/array;1"]
   233                   .createInstance(Ci.nsIMutableArray);
   234     do_check_true(builder.initListBuild(removed));
   235     do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_TASKS, items));
   236     do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_RECENT));
   237     do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_FREQUENT));
   238     do_check_true(builder.commitListBuild());
   240     builder.deleteActiveList();
   242     do_check_true(builder.initListBuild(removed));
   243     do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_CUSTOM, items, "Custom List"));
   244     do_check_true(builder.commitListBuild());
   246     builder.deleteActiveList();
   247   }
   248 }
   250 function run_test()
   251 {
   252   var isWindows = ("@mozilla.org/windows-registry-key;1" in Components.classes);
   253   if (!isWindows)
   254     return;
   256   test_basics();
   257   test_separator();
   258   test_hashes();
   259   test_links();
   260   test_shortcuts();
   261   test_jumplist();
   262 }

mercurial