<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Web Inspector: Start moving toward better multi-target support"
   href="https://bugs.webkit.org/show_bug.cgi?id=191345">191345</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Web Inspector: Start moving toward better multi-target support
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>WebKit Nightly Build
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Web Inspector
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned@lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>joepeck@webkit.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>inspector-bugzilla-changes@group.apple.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Start moving toward better multi-target support

A world where we do:

    if (PageAgent.foo)
        PageAgent.foo(...);

Is ambiguous in a multi-target world:

  • Which target is the `PageAgent.foo` command going to go to?
  • Which target is the `PageAgent.foo` feature check happening on? Is that important?

Ultimately, the behavior that we would like to have is to always do:

  • target.PageAgent

Then it is clear exactly which target we are operating on.

Another possibility is that we don't care or have a Target, we just want to "feature check" (common for enums as well)

    if (FooAgent.hasEvent("someEvent"))
       ... support something else ...

In these cases, we should have an agnostic way to just get the complete list of whatever the backend supports:

    InspectorBackend.domains.Foo.hasEvent("someEvent")

The key part being:

    InspectorBackend.domains.<DomainName>

---

For now we have hundreds of places in our code that are using unprefixed or window prefixed agents. As we bring up multi-target support we should start eliminating these. Currently the behavior is they use the "Main Target Connection". That ends up being fine right now as the main target is limited to being a Page or ServiceWorker debuggable. But as we move toward supporting multiple such targets each unprefixed access to "PageAgent", "DOMAgent", "NetworkAgent", etc will need to be explicit per-target.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>