devtools/client/webide/test/test_autoconnect_runtime.html
author Matt R <matthieu.rigolot@gmail.com>
Sat, 20 May 2017 13:31:10 +0100
changeset 361835 1d250422890a24fd71f473e457009a2257726da8
parent 344949 a072d7934ff7c6fd2ad974d7abc0b08d11041aca
child 393358 e2993f4377faf706eb2cf158721c484a4607422b
permissions -rw-r--r--
Bug 1346009 - Convert 'defer' to 'new Promise' in client/webide; r=tromey MozReview-Commit-ID: 1adrD8A96Dx

<!DOCTYPE html>

<html>

  <head>
    <meta charset="utf8">
    <title></title>

    <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    <script type="application/javascript" src="chrome://mochikit/content/chrome-harness.js"></script>
    <script type="application/javascript" src="head.js"></script>
    <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
  </head>

  <body>

    <script type="application/javascript">
      window.onload = function() {
        SimpleTest.waitForExplicitFinish();

        Task.spawn(function*() {
          if (!DebuggerServer.initialized) {
            DebuggerServer.init();
            DebuggerServer.addBrowserActors();
          }

          let win = yield openWebIDE();
          let docRuntime = getRuntimeDocument(win);

          let fakeRuntime = {
            type: "USB",
            connect: function(connection) {
              is(connection, win.AppManager.connection, "connection is valid");
              connection.host = null; // force connectPipe
              connection.connect();
              return Promise.resolve();
            },

            get id() {
              return "fakeRuntime";
            },

            get name() {
              return "fakeRuntime";
            }
          };
          win.AppManager.runtimeList.usb.push(fakeRuntime);
          win.AppManager.update("runtime-list");

          let panelNode = docRuntime.querySelector("#runtime-panel");
          let items = panelNode.querySelectorAll(".runtime-panel-item-usb");
          is(items.length, 1, "Found one runtime button");

          let connectionsChanged = waitForConnectionChange("opened", 2);
          items[0].click();

          ok(win.document.querySelector("window").className, "busy", "UI is busy");
          yield win.UI._busyPromise;

          yield connectionsChanged;
          is(Object.keys(DebuggerServer._connections).length, 2, "Connected");

          connectionsChanged = waitForConnectionChange("closed", 2);

          yield nextTick();
          yield closeWebIDE(win);

          yield connectionsChanged;
          is(Object.keys(DebuggerServer._connections).length, 0, "Disconnected");

          connectionsChanged = waitForConnectionChange("opened", 2);

          win = yield openWebIDE();

          win.AppManager.runtimeList.usb.push(fakeRuntime);
          win.AppManager.update("runtime-list");

          yield waitForUpdate(win, "runtime-targets");

          yield connectionsChanged;
          is(Object.keys(DebuggerServer._connections).length, 2, "Automatically reconnected");

          yield win.Cmds.disconnectRuntime();

          yield closeWebIDE(win);

          DebuggerServer.destroy();

          SimpleTest.finish();
        });
      }
    </script>
  </body>
</html>