toolkit/components/places/tests/queries/test_transitions.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 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim:set ts=2 sw=2 sts=2 et: */
     3 /* ***** BEGIN LICENSE BLOCK *****
     4   Any copyright is dedicated to the Public Domain.
     5   http://creativecommons.org/publicdomain/zero/1.0/
     6  * ***** END LICENSE BLOCK ***** */
     7 var beginTime = Date.now();
     8 var testData = [
     9   {
    10     isVisit: true,
    11     title: "page 0",
    12     uri: "http://mozilla.com/",
    13     transType: Ci.nsINavHistoryService.TRANSITION_TYPED
    14   },
    15   {
    16     isVisit: true,
    17     title: "page 1",
    18     uri: "http://google.com/",
    19     transType: Ci.nsINavHistoryService.TRANSITION_DOWNLOAD
    20   },
    21   {
    22     isVisit: true,
    23     title: "page 2",
    24     uri: "http://microsoft.com/",
    25     transType: Ci.nsINavHistoryService.TRANSITION_DOWNLOAD
    26   },
    27   {
    28     isVisit: true,
    29     title: "page 3",
    30     uri: "http://en.wikipedia.org/",
    31     transType: Ci.nsINavHistoryService.TRANSITION_BOOKMARK
    32   },
    33   {
    34     isVisit: true,
    35     title: "page 4",
    36     uri: "http://fr.wikipedia.org/",
    37     transType: Ci.nsINavHistoryService.TRANSITION_DOWNLOAD
    38   },
    39   {
    40     isVisit: true,
    41     title: "page 5",
    42     uri: "http://apple.com/",
    43     transType: Ci.nsINavHistoryService.TRANSITION_TYPED
    44   },
    45   {
    46     isVisit: true,
    47     title: "page 6",
    48     uri: "http://campus-bike-store.com/",
    49     transType: Ci.nsINavHistoryService.TRANSITION_DOWNLOAD
    50   },
    51   {
    52     isVisit: true,
    53     title: "page 7",
    54     uri: "http://uwaterloo.ca/",
    55     transType: Ci.nsINavHistoryService.TRANSITION_TYPED
    56   },
    57   {
    58     isVisit: true,
    59     title: "page 8",
    60     uri: "http://pugcleaner.com/",
    61     transType: Ci.nsINavHistoryService.TRANSITION_BOOKMARK
    62   },
    63   {
    64     isVisit: true,
    65     title: "page 9",
    66     uri: "http://de.wikipedia.org/",
    67     transType: Ci.nsINavHistoryService.TRANSITION_TYPED
    68   },
    69   {
    70     isVisit: true,
    71     title: "arewefastyet",
    72     uri: "http://arewefastyet.com/",
    73     transType: Ci.nsINavHistoryService.TRANSITION_DOWNLOAD
    74   },
    75   {
    76     isVisit: true,
    77     title: "arewefastyet",
    78     uri: "http://arewefastyet.com/",
    79     transType: Ci.nsINavHistoryService.TRANSITION_BOOKMARK
    80   }];
    81 // sets of indices of testData array by transition type
    82 var testDataTyped = [0, 5, 7, 9];
    83 var testDataDownload = [1, 2, 4, 6, 10]; 
    84 var testDataBookmark = [3, 8, 11];
    86 /**
    87  * run_test is where the magic happens.  This is automatically run by the test
    88  * harness.  It is where you do the work of creating the query, running it, and
    89  * playing with the result set.
    90  */
    91 function run_test()
    92 {
    93   run_next_test();
    94 }
    96 add_task(function test_transitions()
    97 {
    98   let timeNow = Date.now();
    99   for each (let item in testData) {
   100     yield promiseAddVisits({
   101       uri: uri(item.uri),
   102       transition: item.transType,
   103       visitDate: timeNow++ * 1000,
   104       title: item.title
   105     });
   106   }
   108   //dump_table("moz_places");
   109   //dump_table("moz_historyvisits");
   111   var numSortFunc = function (a,b) { return (a - b); };
   112   var arrs = testDataTyped.concat(testDataDownload).concat(testDataBookmark)
   113               .sort(numSortFunc);
   115   // Four tests which compare the result of a query to an expected set.
   116   var data = arrs.filter(function (index) {
   117       return (testData[index].uri.match(/arewefastyet\.com/) &&
   118               testData[index].transType ==
   119                 Ci.nsINavHistoryService.TRANSITION_DOWNLOAD);
   120     });
   122   compareQueryToTestData("place:domain=arewefastyet.com&transition=" +
   123                          Ci.nsINavHistoryService.TRANSITION_DOWNLOAD,
   124                          data.slice());
   126   compareQueryToTestData("place:transition=" +
   127                          Ci.nsINavHistoryService.TRANSITION_DOWNLOAD,
   128                          testDataDownload.slice());
   130   compareQueryToTestData("place:transition=" +
   131                          Ci.nsINavHistoryService.TRANSITION_TYPED,
   132                          testDataTyped.slice());
   134   compareQueryToTestData("place:transition=" +
   135                          Ci.nsINavHistoryService.TRANSITION_DOWNLOAD +
   136                          "&transition=" +
   137                          Ci.nsINavHistoryService.TRANSITION_BOOKMARK,
   138                          data);
   140   // Tests the live update property of transitions.
   141   var query = {};
   142   var options = {};
   143   PlacesUtils.history.
   144     queryStringToQueries("place:transition=" +
   145                          Ci.nsINavHistoryService.TRANSITION_DOWNLOAD,
   146                          query, {}, options);
   147   query = (query.value)[0];
   148   options = PlacesUtils.history.getNewQueryOptions();
   149   var result = PlacesUtils.history.executeQuery(query, options);
   150   var root = result.root;
   151   root.containerOpen = true;
   152   do_check_eq(testDataDownload.length, root.childCount);
   153   yield promiseAddVisits({
   154     uri: uri("http://getfirefox.com"),
   155     transition: TRANSITION_DOWNLOAD
   156   });
   157   do_check_eq(testDataDownload.length + 1, root.childCount);
   158   root.containerOpen = false;
   159 });
   161 /*
   162  * Takes a query and a set of indices. The indices correspond to elements
   163  * of testData that are the result of the query.
   164  */
   165 function compareQueryToTestData(queryStr, data) {
   166   var query = {};
   167   var options = {};
   168   PlacesUtils.history.queryStringToQueries(queryStr, query, {}, options);
   169   query = query.value[0];
   170   options = options.value;
   171   var result = PlacesUtils.history.executeQuery(query, options);
   172   var root = result.root;
   173   for (var i = 0; i < data.length; i++) {
   174     data[i] = testData[data[i]];
   175     data[i].isInQuery = true;
   176   }
   177   compareArrayToResult(data, root);
   178 }

mercurial