/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" [scriptable, uuid(b5fd5629-d04c-4138-9529-9311f291ecd4)] interface nsICaptivePortalServiceCallback : nsISupports { /** * Invoke callbacks after captive portal detection finished. */ void complete(in bool success, in nsresult error); }; /** * Service used for captive portal detection. * The service is only active in the main process. It is also available in the * content process, but only to mirror the captive portal state from the main * process. */ [scriptable, uuid(bdbe0555-fc3d-4f7b-9205-c309ceb2d641)] interface nsICaptivePortalService : nsISupports { const long UNKNOWN = 0; const long NOT_CAPTIVE = 1; const long UNLOCKED_PORTAL = 2; const long LOCKED_PORTAL = 3; /** * Called from XPCOM to trigger a captive portal recheck. * A network request will only be performed if no other checks are currently * ongoing. * Will not do anything if called in the content process. */ void recheckCaptivePortal(); /** * Returns the state of the captive portal. */ readonly attribute long state; /** * Returns the time difference between NOW and the last time a request was * completed in milliseconds. */ readonly attribute unsigned long long lastChecked; }; %{C++ /** * This observer notification will be emitted when the captive portal state * changes. After receiving it, the ContentParent will send an IPC message * to the ContentChild, which will set the state in the captive portal service * in the child. */ #define NS_IPC_CAPTIVE_PORTAL_SET_STATE "ipc:network:captive-portal-set-state" /** * This notification will be emitted when the captive portal service has * determined that we can connect to the internet. * The service will pass either "captive" if there is an unlocked captive portal * present, or "clear" if no captive portal was detected. * Note: this notification only gets sent in the parent process. */ #define NS_CAPTIVE_PORTAL_CONNECTIVITY "network:captive-portal-connectivity" %}