toolkit/components/places/tests/expiration/test_analyze_runs.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 ////////////////////////////////////////////////////////////////////////////////
     5 //// Constants
     7 const TOPIC_AUTOCOMPLETE_FEEDBACK_INCOMING = "autocomplete-will-enter-text";
     9 ////////////////////////////////////////////////////////////////////////////////
    10 //// Helpers
    12 /**
    13  * Ensures that we have no data in the tables created by ANALYZE.
    14  */
    15 function clearAnalyzeData()
    16 {
    17   let db = DBConn();
    18   if (!db.tableExists("sqlite_stat1")) {
    19     return;
    20   }
    21   db.executeSimpleSQL("DELETE FROM sqlite_stat1");
    22 }
    24 /**
    25  * Checks that we ran ANALYZE on the specified table.
    26  *
    27  * @param aTableName
    28  *        The table to check if ANALYZE was ran.
    29  * @param aRan
    30  *        True if it was expected to run, false otherwise
    31  */
    32 function do_check_analyze_ran(aTableName, aRan)
    33 {
    34   let db = DBConn();
    35   do_check_true(db.tableExists("sqlite_stat1"));
    36   let stmt = db.createStatement("SELECT idx FROM sqlite_stat1 WHERE tbl = :table");
    37   stmt.params.table = aTableName;
    38   try {
    39     if (aRan) {
    40       do_check_true(stmt.executeStep());
    41       do_check_neq(stmt.row.idx, null);
    42     }
    43     else {
    44       do_check_false(stmt.executeStep());
    45     }
    46   }
    47   finally {
    48     stmt.finalize();
    49   }
    50 }
    52 ////////////////////////////////////////////////////////////////////////////////
    53 //// Tests
    55 function run_test()
    56 {
    57   run_next_test();
    58 }
    60 add_task(function init_tests()
    61 {
    62   const TEST_URI = NetUtil.newURI("http://mozilla.org/");
    63   const TEST_TITLE = "This is a test";
    64   let bs = PlacesUtils.bookmarks;
    65   bs.insertBookmark(PlacesUtils.unfiledBookmarksFolderId, TEST_URI,
    66                     bs.DEFAULT_INDEX, TEST_TITLE);
    67   yield promiseAddVisits(TEST_URI);
    68   let thing = {
    69     QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteInput,
    70                                            Ci.nsIAutoCompletePopup,
    71                                            Ci.nsIAutoCompleteController]),
    72     get popup() { return thing; },
    73     get controller() { return thing; },
    74     popupOpen: true,
    75     selectedIndex: 0,
    76     getValueAt: function() { return TEST_URI.spec; },
    77     searchString: TEST_TITLE,
    78   };
    79   Services.obs.notifyObservers(thing, TOPIC_AUTOCOMPLETE_FEEDBACK_INCOMING,
    80                                null);
    81 });
    83 add_task(function test_timed()
    84 {
    85   clearAnalyzeData();
    87   // Set a low interval and wait for the timed expiration to start.
    88   let promise = promiseTopicObserved(PlacesUtils.TOPIC_EXPIRATION_FINISHED);
    89   setInterval(3);
    90   yield promise;
    91   setInterval(3600);
    93   do_check_analyze_ran("moz_places", false);
    94   do_check_analyze_ran("moz_bookmarks", false);
    95   do_check_analyze_ran("moz_historyvisits", false);
    96   do_check_analyze_ran("moz_inputhistory", true);
    97 });
    99 add_task(function test_debug()
   100 {
   101   clearAnalyzeData();
   103   yield promiseForceExpirationStep(1);
   105   do_check_analyze_ran("moz_places", true);
   106   do_check_analyze_ran("moz_bookmarks", true);
   107   do_check_analyze_ran("moz_historyvisits", true);
   108   do_check_analyze_ran("moz_inputhistory", true);
   109 });
   111 add_task(function test_clear_history()
   112 {
   113   clearAnalyzeData();
   115   let promise = promiseTopicObserved(PlacesUtils.TOPIC_EXPIRATION_FINISHED);
   116   let listener = Cc["@mozilla.org/places/expiration;1"]
   117                  .getService(Ci.nsINavHistoryObserver);
   118   listener.onClearHistory();
   119   yield promise;
   121   do_check_analyze_ran("moz_places", true);
   122   do_check_analyze_ran("moz_bookmarks", false);
   123   do_check_analyze_ran("moz_historyvisits", true);
   124   do_check_analyze_ran("moz_inputhistory", true);
   125 });

mercurial