()
| 622 | } |
| 623 | |
| 624 | function makeInputRecorder() { |
| 625 | var _inputId = null; |
| 626 | var inputRecorderWrapper = { |
| 627 | setupInputId: function (inputId) { |
| 628 | _inputId = inputId; |
| 629 | _inputRecorderWrapperMap[inputId] = inputRecorderWrapper; |
| 630 | }, |
| 631 | inputRecorder: { |
| 632 | wrapUserInputListener: wrapUserInputListener |
| 633 | }, |
| 634 | /** |
| 635 | * key: op, |
| 636 | */ |
| 637 | listenerDefineMap: {}, |
| 638 | }; |
| 639 | |
| 640 | return inputRecorderWrapper; |
| 641 | |
| 642 | function wrapUserInputListener(listenerDefine) { |
| 643 | assert( |
| 644 | getType(listenerDefine.listener) === 'function', |
| 645 | 'Must provide a function `listener`.' |
| 646 | ); |
| 647 | assert( |
| 648 | getType(listenerDefine.op) === 'string', |
| 649 | 'Must provide an `op` string to identify this listener.' |
| 650 | ); |
| 651 | |
| 652 | assert( |
| 653 | !inputRecorderWrapper.listenerDefineMap[listenerDefine.op], |
| 654 | '`op` ' + listenerDefine.op + ' overlapped.' |
| 655 | ); |
| 656 | inputRecorderWrapper.listenerDefineMap[listenerDefine.op] = listenerDefine; |
| 657 | |
| 658 | return function wrappedListener() { |
| 659 | assert(_inputId != null); |
| 660 | if (_inputsRecord && !shouldPrevent(_inputId, NANES_PREVENT_RECORD_INPUTS)) { |
| 661 | var recordWrapper = {id: _inputId, op: listenerDefine.op}; |
| 662 | if (listenerDefine.createRecordArgs) { |
| 663 | recordWrapper.args = listenerDefine.createRecordArgs.apply(this, arguments); |
| 664 | } |
| 665 | _inputsRecord.operations.push(recordWrapper); |
| 666 | } |
| 667 | return listenerDefine.listener.apply(this, arguments); |
| 668 | }; |
| 669 | } |
| 670 | } |
| 671 | |
| 672 | function setInputsState(state) { |
| 673 | var changedCreatedList = []; |
no outgoing calls
no test coverage detected
searching dependent graphs…