// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Use the <code>chrome.dial</code> API to discover devices that support DIAL. // Protocol specification: http://www.dial-multiscreen.org/ namespace dial { // Represents a unique device that responded to a DIAL discovery request. dictionary DialDevice { // A label identifying the device within this instance of the browser. // Not guaranteed to persist beyond browser instances. DOMString deviceLabel; // A URL pointing to the device description resource for the device. DOMString deviceDescriptionUrl; // The uPnP configuration ID reported by the device. Corresponds to the // CONFIGID.UPNP.ORG header in the M-SEARCH response. long? configId; }; enum DialErrorCode { no_listeners, no_valid_network_interfaces, network_disconnected, cellular_network, socket_error, unknown }; dictionary DialError { DialErrorCode code; }; callback BooleanCallback = void (boolean result); interface Functions { // Requests that DIAL discovery happen immediately. The request may not be // honored as discovery may already be happening in the background. The // callback is invoked with |true| if discovery was initiated or |false| // otherwise. static void discoverNow(BooleanCallback callback); }; interface Events { // Event fired to inform clients of the current, complete set of responsive // devices. Clients should only need to store the list from the most recent // event. May be fired in response to multiple circumstances: // // (1) The DIAL service refreshed its device list through periodic polling. // (2) A client invoked discoverNow(). // (3) An event happened that should invalidate the device list // (e.g., a network interface went offline), in which case it is fired // with an empty array. static void onDeviceList(DialDevice[] result); // Event fired to inform clients on errors during device discovery. static void onError(DialError error); }; };