blob: 78b5bc6653efb27770ec5bd806a591e4cc18ff63 [file] [log] [blame]
// 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 <code>networking.config</code> 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 <code>GUID</code>,
// <code>SSID</code> or <code>HexSSID</code> must be set. <code>BSSID</code>
// and <code>Security</code> 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. <code>BSSID</code> 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
// <code>None</code>, <code>WEP-PSK</code>, <code>WPA-PSK</code> and
// <code>WPA-EAP</code>.
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 <code>NetworkInfo</code> must
// either have the <code>SSID</code> or <code>HexSSID</code>
// 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 <code>GUID</code>
// 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);
};
};