// Copyright 2017 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.

// https://rawgit.com/w3c/keyboard-lock/gh-pages/index.html.
// TODO(zijiehe, garykac): Update the spec to match the implementation.
// 1. "System" should be removed from both the function names: these functions
//    are not for system keys or key combinations only.
//    See https://github.com/w3c/keyboard-lock/issues/6
// 2. Returns Promise<void> from requestKeyboardLock() function: user agents can
//    decline the request, and web page can get a notification once the
//    requested keys should be received.
//    See https://github.com/w3c/keyboard-lock/issues/7
// 3. The parameter of requestKeyboardLock() should be
//        optional sequence<DOMString> keyCodes = []
//    See https://github.com/w3c/keyboard-lock/issues/21
// 4. cancelKeyboardLock() function is implicitly called whenever the unloading
//    document cleanup steps run with a document.
//    See https://github.com/w3c/keyboard-lock/issues/22
partial interface Navigator {
    [SecureContext, RuntimeEnabled=KeyboardLock, CallWith=ScriptState] Promise<void> requestKeyboardLock(optional sequence<DOMString> keyCodes = []);
    [SecureContext, RuntimeEnabled=KeyboardLock] void cancelKeyboardLock();
};
