// Copyright 2015 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 networking.config API to authenticate to captive // portals. namespace networking.config { // Indicator for the type of network used in $(ref:NetworkInfo). enum NetworkType { WiFi }; // A dictionary identifying filtered networks. One of GUID, // SSID or HexSSID must be set. BSSID // and Security are ignored when filtering networks. dictionary NetworkInfo { // Currently only WiFi supported. NetworkType Type; // A unique identifier of the network. DOMString? GUID; // A hex-encoded byte sequence. DOMString? HexSSID; // The decoded SSID of the network (default encoding is UTF-8). To filter // for non-UTF-8 SSIDs, use HexSSID instead. DOMString? SSID; // The basic service set identification (BSSID) uniquely identifying the // basic service set. BSSID is represented as a human readable, // hex-encoded string with bytes separated by colons, e.g. // 45:67:89:ab:cd:ef. DOMString? BSSID; // Identifier indicating the security type of the network. Valid values are // None, WEP-PSK, WPA-PSK and // WPA-EAP. DOMString? Security; }; // Argument to $(ref:finishAuthentication) indicating the result of the // captive portal authentication attempt. enum AuthenticationResult { // The extension does not handle this network or captive portal (e.g. server // end-point not found or not compatible). unhandled, // The extension handled this network and authenticated successfully. succeeded, // The extension handled this network, tried to authenticate, however was // rejected by the server. rejected, // The extension handled this network, tried to authenticate, however failed // due to an unspecified error. failed }; // Invoked by $(ref:setNetworkFilter) when the respective operation is // finished. callback SetNetworkFilterCallback = void(); // Invoked by $(ref:finishAuthentication) when the respective operation is // finished. callback FinishAuthenticationCallback = void(); interface Functions { // Allows an extension to define network filters for the networks it can // handle. A call to this function will remove all filters previously // installed by the extension before setting the new list. // |networks|: Network filters to set. Every NetworkInfo must // either have the SSID or HexSSID // set. Other fields will be ignored. // |callback|: Called back when this operation is finished. void setNetworkFilter(NetworkInfo[] networks, SetNetworkFilterCallback callback); // Called by the extension to notify the network config API that it finished // a captive portal authentication attempt and hand over the result of the // attempt. This function must only be called with the GUID of the latest // $(ref:onCaptivePortalDetected) event. // |GUID|: Unique network identifier obtained from // $(ref:onCaptivePortalDetected). // |result|: The result of the authentication attempt. // |callback|: Called back when this operation is finished. void finishAuthentication(DOMString GUID, AuthenticationResult result, optional FinishAuthenticationCallback callback); }; interface Events { // This event fires everytime a captive portal is detected on a network // matching any of the currently registered network filters and the user // consents to use the extension for authentication. Network filters may be // set using the $(ref:setNetworkFilter). // Upon receiving this event the extension should start its authentication // attempt with the captive portal. When the extension finishes its attempt, // it must call $(ref:finishAuthentication) with the GUID // received with this event and the appropriate authentication result. // |networkInfo|: Information about the network on which a captive portal // was detected. static void onCaptivePortalDetected(NetworkInfo networkInfo); }; };