Bug 1416377 - Use new async Places APIs in test_refresh_firefox.py. r=standard8 draft
authorMarco Bonardo <mbonardo@mozilla.com>
Tue, 23 Jan 2018 15:14:38 +0100
changeset 723547 5a21dba36985008f5383ed6332571f91565716a5
parent 723473 e2bb11b88bd45bdb2e055042e1624b74d414e73c
child 746886 aceb32f80efe03e501b788a038912db0d5883828
push id96458
push usermak77@bonardo.net
push dateTue, 23 Jan 2018 14:17:25 +0000
reviewersstandard8
bugs1416377
milestone60.0a1
Bug 1416377 - Use new async Places APIs in test_refresh_firefox.py. r=standard8 MozReview-Commit-ID: HvN8oHgIbbq
browser/components/migration/tests/marionette/test_refresh_firefox.py
--- a/browser/components/migration/tests/marionette/test_refresh_firefox.py
+++ b/browser/components/migration/tests/marionette/test_refresh_firefox.py
@@ -40,55 +40,51 @@ class TestFirefoxRefresh(MarionetteTestC
             arguments[1],
             "username",
             "password"
           );
           Services.logins.addLogin(myLogin)
         """, script_args=(self._username, self._password))
 
     def createBookmarkInMenu(self):
-        self.marionette.execute_script("""
+        error = self.runAsyncCode("""
           let url = arguments[0];
           let title = arguments[1];
-          PlacesUtils.bookmarks.insertBookmark(PlacesUtils.bookmarks.bookmarksMenuFolder,
-            makeURI(url), 0, title);
+          PlacesUtils.bookmarks.insert({
+            parentGuid: PlacesUtils.bookmarks.menuGuid, url, title
+          }).then(() => marionetteScriptFinished(false), marionetteScriptFinished);
         """, script_args=(self._bookmarkURL, self._bookmarkText))
+        if error:
+            print error
 
     def createBookmarksOnToolbar(self):
-        self.marionette.execute_script("""
+        error = self.runAsyncCode("""
+          let children = [];
           for (let i = 1; i <= 5; i++) {
-            PlacesUtils.bookmarks.insertBookmark(PlacesUtils.toolbarFolderId,
-              makeURI(`about:rights?p=${i}`), 0, `Bookmark ${i}`);
+            children.push({url: `about:rights?p=${i}`, title: `Bookmark ${i}`});
           }
+          PlacesUtils.bookmarks.insertTree({
+            guid: PlacesUtils.bookmarks.toolbarGuid,
+            children
+          }).then(() => marionetteScriptFinished(false), marionetteScriptFinished);
         """)
+        if error:
+            print error
 
     def createHistory(self):
         error = self.runAsyncCode("""
-          // Copied from PlacesTestUtils, which isn't available in Marionette tests.
-          let didReturn;
-          PlacesUtils.asyncHistory.updatePlaces(
-            [{title: arguments[1], uri: makeURI(arguments[0]), visits: [{
-                transitionType: Ci.nsINavHistoryService.TRANSITION_LINK,
-                visitDate: (Date.now() - 5000) * 1000,
-                referrerURI: makeURI("about:mozilla"),
-              }]
-            }],
-            {
-              handleError(resultCode, place) {
-                didReturn = true;
-                marionetteScriptFinished("Unexpected error in adding visit: " + resultCode);
-              },
-              handleResult() {},
-              handleCompletion() {
-                if (!didReturn) {
-                  marionetteScriptFinished(false);
-                }
-              },
-            }
-          );
+          PlacesUtils.history.insert({
+            url: arguments[0],
+            title: arguments[1],
+            visits: [{
+              date: new Date(Date.now() - 5000),
+              referrer: "about:mozilla"
+            }]
+          }).then(() => marionetteScriptFinished(false),
+                  ex => marionetteScriptFinished("Unexpected error in adding visit: " + ex));
         """, script_args=(self._historyURL, self._historyTitle))
         if error:
             print error
 
     def createFormHistory(self):
         error = self.runAsyncCode("""
           let updateDefinition = {
             op: "add",
@@ -204,20 +200,22 @@ class TestFirefoxRefresh(MarionetteTestC
 
         loginCount = self.marionette.execute_script("""
           return Services.logins.getAllLogins().length;
         """)
         # Note that we expect 2 logins - one from us, one from sync.
         self.assertEqual(loginCount, 2, "No other logins are present")
 
     def checkBookmarkInMenu(self):
-        titleInBookmarks = self.marionette.execute_script("""
+        titleInBookmarks = self.runAsyncCode("""
           let url = arguments[0];
-          let bookmarkIds = PlacesUtils.bookmarks.getBookmarkIdsForURI(makeURI(url), {}, {});
-          return bookmarkIds.length == 1 ? PlacesUtils.bookmarks.getItemTitle(bookmarkIds[0]) : "";
+          PlacesUtils.bookmarks.fetch({url}).then(
+            bookmark => marionetteScriptFinished(bookmark ? bookmark.title : ""),
+            ex => marionetteScriptFinished(ex)
+          );
         """, script_args=(self._bookmarkURL,))
         self.assertEqual(titleInBookmarks, self._bookmarkText)
 
     def checkBookmarkToolbarVisibility(self):
         toolbarVisible = self.marionette.execute_script("""
           const BROWSER_DOCURL = "chrome://browser/content/browser.xul";
           let xulStore = Cc["@mozilla.org/xul/xulstore;1"].getService(Ci.nsIXULStore);
           return xulStore.getValue(BROWSER_DOCURL, "PersonalToolbar", "collapsed")