Commit 759ef2eb authored by Alexandra Borovova's avatar Alexandra Borovova
Browse files

Bug 1790185 - [marionette] Use PollPromise when trying to connect to...

Bug 1790185 - [marionette] Use PollPromise when trying to connect to marionette server. r=webdriver-reviewers,whimboo

Differential Revision: https://phabricator.services.mozilla.com/D177134
parent c0d574a4
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -226,7 +226,6 @@ class MarionetteParentProcess {
      this.server.start();
    } catch (e) {
      lazy.logger.fatal("Marionette server failed to start", e);
      await this.uninit();
      Services.startup.quit(Ci.nsIAppStartup.eForceQuit);
      return;
    }
+16 −7
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
  Log: "chrome://remote/content/shared/Log.sys.mjs",
  MarionettePrefs: "chrome://remote/content/marionette/prefs.sys.mjs",
  Message: "chrome://remote/content/marionette/message.sys.mjs",
  PollPromise: "chrome://remote/content/shared/Sync.sys.mjs",
  Response: "chrome://remote/content/marionette/message.sys.mjs",
});

@@ -68,13 +69,21 @@ export class TCPListener {
  set acceptConnections(value) {
    if (value) {
      if (!this.socket) {
        lazy.PollPromise(
          (resolve, reject) => {
            try {
              const flags = KeepWhenOffline | LoopbackOnly;
              const backlog = 1;
              this.socket = new lazy.ServerSocket(this.port, flags, backlog);
              resolve();
            } catch (e) {
          throw new Error(`Could not bind to port ${this.port} (${e.name})`);
              const message = `Could not bind to port ${this.port} (${e.name})`;
              lazy.logger.debug(message);
              reject(message);
            }
          },
          { interval: 250, timeout: 5000 }
        );

        this.port = this.socket.port;