// Copyright 2014 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.gcdPrivate</code> API to discover GCD APIs and register // them. namespace gcdPrivate { enum Status { // Success. success, // populateWifiPassword was true and the password has not been prefetched. wifiPasswordError, // populateWifiPassword was true and the message cannot be parsed as a setup // message. setupParseError, // Could not connect to the device. connectionError, // Error in establishing session. sessionError, // Unknown session. unknownSessionError, // Bad pairing code. badPairingCodeError, // Device error with details in response object. deviceError, // Service resulution failed. serviceResolutionError }; enum PairingType { pinCode, embeddedCode }; // Generic callback for session calls, with status only. callback SessionCallback = void(Status status); // Called when the device info is available or on error. // |status| : The status of operation (success or type of error). // |deviceInfo| : Content of /privet/info response. // https://developers.google.com/cloud-devices/v1/reference/local-api/info callback GetDeviceInfoCallback = void(Status status, object deviceInfo); // Called when device starts to establish a secure session. // If |status| is |success| app should call |startPairing|. // |sessionId| : The session ID (identifies the session for future calls). // |status| : The status of operation (success or type of error). // |pairingTypes| is the list of supported pairing types. callback CreateSessionCallback = void(long sessionId, Status status, PairingType[] pairingTypes); // Called when the response to the message sent is available or on error. // |status| : The status of operation (success or type of error). // |response| : The response object with result or error description. May be // empty for some errors. callback SendMessageCallback = void(Status status, object response); // Called as a response to |prefetchWifiPassword| // |success| : Denotes whether the password fetch has succeeded or failed. callback SuccessCallback = void(boolean success); interface Functions { // Returns local device information. // |serviceName| : The mDns service name of the device. static void getDeviceInfo(DOMString serviceName, GetDeviceInfoCallback callback); // Create new pairing. // |serviceName| : The mDns service name of the device. static void createSession(DOMString serviceName, CreateSessionCallback callback); // Start pairing with selected method. Should be called after // |establishSession|. // |sessionId| : The ID of the session created with |establishSession|. // |pairingType| : The value selected from the list provided in // callback of |establishSession|. static void startPairing(long sessionId, PairingType pairingType, SessionCallback callback); // Confirm pairing code. Should be called after |startPairing|. // |sessionId| : The ID of the session created with |establishSession|. // |code| : The string generated by pairing process and available to the // user. static void confirmCode(long sessionId, DOMString code, SessionCallback callback); // Send an encrypted message to the device. // If the message is a setup message with a wifi SSID specified but no // password, the password cached by |prefetchWifiPassword| will be used and // the call will fail if it's not available. For open networks use an empty // string as the password. // |sessionId| : The ID of the session created with |establishSession|. // |api| : The Privet API name to call. // |input| : Input data for |api|. static void sendMessage(long sessionId, DOMString api, object input, SendMessageCallback callback); // Terminate the session with the device. // |sessionId| : The ID of the session created with |establishSession|. static void terminateSession(long sessionId); }; };