toolkit/components/places/tests/bookmarks/test_417228-exclude-from-backup.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 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 const EXCLUDE_FROM_BACKUP_ANNO = "places/excludeFromBackup";
     8 // Menu, Toolbar, Unsorted, Tags
     9 const PLACES_ROOTS_COUNT  = 4;
    10 var tests = [];
    12 /*
    14 Backup/restore tests example:
    16 var myTest = {
    17   populate: function () { ... add bookmarks ... },
    18   validate: function () { ... query for your bookmarks ... }
    19 }
    21 this.push(myTest);
    23 */
    25 var test = {
    26   populate: function populate() {
    27     // check initial size
    28     var rootNode = PlacesUtils.getFolderContents(PlacesUtils.placesRootId,
    29                                                  false, false).root;
    30     do_check_eq(rootNode.childCount, PLACES_ROOTS_COUNT );
    31     rootNode.containerOpen = false;
    33     var idx = PlacesUtils.bookmarks.DEFAULT_INDEX;
    35     // create a root to be restore
    36     this._restoreRootTitle = "restore root";
    37     var restoreRootId = PlacesUtils.bookmarks
    38                                    .createFolder(PlacesUtils.placesRootId,
    39                                                  this._restoreRootTitle, idx);
    40     // add a test bookmark
    41     this._restoreRootURI = uri("http://restore.uri");
    42     PlacesUtils.bookmarks.insertBookmark(restoreRootId, this._restoreRootURI,
    43                                          idx, "restore uri");
    44     // add a test bookmark to be exclude
    45     this._restoreRootExcludeURI = uri("http://exclude.uri");
    46     var exItemId = PlacesUtils.bookmarks
    47                               .insertBookmark(restoreRootId,
    48                                               this._restoreRootExcludeURI,
    49                                               idx, "exclude uri");
    50     // Annotate the bookmark for exclusion.
    51     PlacesUtils.annotations.setItemAnnotation(exItemId,
    52                                               EXCLUDE_FROM_BACKUP_ANNO, 1, 0,
    53                                               PlacesUtils.annotations.EXPIRE_NEVER);
    55     // create a root to be exclude 
    56     this._excludeRootTitle = "exclude root";
    57     this._excludeRootId = PlacesUtils.bookmarks
    58                                      .createFolder(PlacesUtils.placesRootId,
    59                                                    this._excludeRootTitle, idx);
    60     // Annotate the root for exclusion.
    61     PlacesUtils.annotations.setItemAnnotation(this._excludeRootId,
    62                                               EXCLUDE_FROM_BACKUP_ANNO, 1, 0,
    63                                               PlacesUtils.annotations.EXPIRE_NEVER);
    64     // add a test bookmark exclude by exclusion of its parent
    65     PlacesUtils.bookmarks.insertBookmark(this._excludeRootId,
    66                                          this._restoreRootExcludeURI,
    67                                          idx, "exclude uri");
    68   },
    70   validate: function validate(aEmptyBookmarks) {
    71     var rootNode = PlacesUtils.getFolderContents(PlacesUtils.placesRootId,
    72                                                  false, false).root;
    74     if (!aEmptyBookmarks) {
    75       // since restore does not remove backup exclude items both
    76       // roots should still exist.
    77       do_check_eq(rootNode.childCount, PLACES_ROOTS_COUNT + 2);
    78       // open exclude root and check it still contains one item
    79       var restoreRootIndex = PLACES_ROOTS_COUNT;
    80       var excludeRootIndex = PLACES_ROOTS_COUNT+1;
    81       var excludeRootNode = rootNode.getChild(excludeRootIndex);
    82       do_check_eq(this._excludeRootTitle, excludeRootNode.title);
    83       excludeRootNode.QueryInterface(Ci.nsINavHistoryQueryResultNode);
    84       excludeRootNode.containerOpen = true;
    85       do_check_eq(excludeRootNode.childCount, 1);
    86       var excludeRootChildNode = excludeRootNode.getChild(0);
    87       do_check_eq(excludeRootChildNode.uri, this._restoreRootExcludeURI.spec);
    88       excludeRootNode.containerOpen = false;
    89     }
    90     else {
    91       // exclude root should not exist anymore
    92       do_check_eq(rootNode.childCount, PLACES_ROOTS_COUNT + 1);
    93       var restoreRootIndex = PLACES_ROOTS_COUNT;
    94     }
    96     var restoreRootNode = rootNode.getChild(restoreRootIndex);
    97     do_check_eq(this._restoreRootTitle, restoreRootNode.title);
    98     restoreRootNode.QueryInterface(Ci.nsINavHistoryQueryResultNode);
    99     restoreRootNode.containerOpen = true;
   100     do_check_eq(restoreRootNode.childCount, 1);
   101     var restoreRootChildNode = restoreRootNode.getChild(0);
   102     do_check_eq(restoreRootChildNode.uri, this._restoreRootURI.spec);
   103     restoreRootNode.containerOpen = false;
   105     rootNode.containerOpen = false;
   106   }
   107 }
   109 function run_test() {
   110   run_next_test();
   111 }
   113 add_task(function() {
   114   // make json file
   115   let jsonFile = OS.Path.join(OS.Constants.Path.profileDir, "bookmarks.json");
   117   // populate db
   118   test.populate();
   120   yield BookmarkJSONUtils.exportToFile(jsonFile);
   122   // restore json file
   123   yield BookmarkJSONUtils.importFromFile(jsonFile, true);
   125   // validate without removing all bookmarks
   126   // restore do not remove backup exclude entries
   127   test.validate(false);
   129   // cleanup
   130   remove_all_bookmarks();
   131   // manually remove the excluded root
   132   PlacesUtils.bookmarks.removeItem(test._excludeRootId);
   133   // restore json file
   134   yield BookmarkJSONUtils.importFromFile(jsonFile, true);
   136   // validate after a complete bookmarks cleanup
   137   test.validate(true);
   139   // clean up
   140   yield OS.File.remove(jsonFile);
   141 });

mercurial