abstracttabhandler_test.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Copyright 2008 The Closure Library Authors. All Rights Reserved.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS-IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. goog.provide('goog.editor.plugins.AbstractTabHandlerTest');
  15. goog.setTestOnly('goog.editor.plugins.AbstractTabHandlerTest');
  16. goog.require('goog.editor.Field');
  17. goog.require('goog.editor.plugins.AbstractTabHandler');
  18. goog.require('goog.events.BrowserEvent');
  19. goog.require('goog.events.KeyCodes');
  20. goog.require('goog.testing.StrictMock');
  21. goog.require('goog.testing.editor.FieldMock');
  22. goog.require('goog.testing.jsunit');
  23. goog.require('goog.userAgent');
  24. var tabHandler;
  25. var editableField;
  26. var handleTabKeyCalled = false;
  27. function setUp() {
  28. editableField = new goog.testing.editor.FieldMock();
  29. editableField.inModalMode = goog.editor.Field.prototype.inModalMode;
  30. editableField.setModalMode = goog.editor.Field.prototype.setModalMode;
  31. tabHandler = new goog.editor.plugins.AbstractTabHandler();
  32. tabHandler.registerFieldObject(editableField);
  33. tabHandler.handleTabKey = function(e) {
  34. handleTabKeyCalled = true;
  35. return true;
  36. };
  37. }
  38. function tearDown() {
  39. tabHandler.dispose();
  40. }
  41. function testHandleKey() {
  42. var event = new goog.testing.StrictMock(goog.events.BrowserEvent);
  43. event.keyCode = goog.events.KeyCodes.TAB;
  44. event.ctrlKey = false;
  45. event.metaKey = false;
  46. assertTrue(
  47. 'Event must be handled when no modifier keys are pressed.',
  48. tabHandler.handleKeyboardShortcut(event, '', false));
  49. assertTrue(handleTabKeyCalled);
  50. handleTabKeyCalled = false;
  51. editableField.setModalMode(true);
  52. if (goog.userAgent.GECKO) {
  53. assertFalse(
  54. 'Event must not be handled when in modal mode',
  55. tabHandler.handleKeyboardShortcut(event, '', false));
  56. assertFalse(handleTabKeyCalled);
  57. } else {
  58. assertTrue(
  59. 'Event must be handled when in modal mode',
  60. tabHandler.handleKeyboardShortcut(event, '', false));
  61. assertTrue(handleTabKeyCalled);
  62. handleTabKeyCalled = false;
  63. }
  64. event.ctrlKey = true;
  65. assertFalse(
  66. 'Plugin must never handle tab key press when ctrlKey is pressed.',
  67. tabHandler.handleKeyboardShortcut(event, '', false));
  68. assertFalse(handleTabKeyCalled);
  69. event.ctrlKey = false;
  70. event.metaKey = true;
  71. assertFalse(
  72. 'Plugin must never handle tab key press when metaKey is pressed.',
  73. tabHandler.handleKeyboardShortcut(event, '', false));
  74. assertFalse(handleTabKeyCalled);
  75. }