| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 (function() { | 5 (function() { |
| 6 | 6 |
| 7 'use strict'; | 7 'use strict'; |
| 8 | 8 |
| 9 /** @type {(sinon.Spy|function():void)} */ | 9 /** @type {(sinon.Spy|function():void)} */ |
| 10 var onShow = null; | 10 var onShow = null; |
| 11 /** @type {(sinon.Spy|function():void)} */ | 11 /** @type {(sinon.Spy|function():void)} */ |
| 12 var onHide = null; | 12 var onHide = null; |
| 13 /** @type {remoting.MenuButton} */ | 13 /** @type {remoting.MenuButton} */ |
| 14 var menuButton = null; | 14 var menuButton = null; |
| 15 | 15 |
| 16 module('MenuButton', { | 16 QUnit.module('MenuButton', { |
| 17 setup: function() { | 17 beforeEach: function() { |
| 18 var fixture = document.getElementById('qunit-fixture'); | 18 var fixture = document.getElementById('qunit-fixture'); |
| 19 fixture.innerHTML = | 19 fixture.innerHTML = |
| 20 '<span class="menu-button" id="menu-button-container">' + | 20 '<span class="menu-button" id="menu-button-container">' + |
| 21 '<button class="menu-button-activator">Click me</button>' + | 21 '<button class="menu-button-activator">Click me</button>' + |
| 22 '<ul>' + | 22 '<ul>' + |
| 23 '<li id="menu-option-1">Option 1</li>' + | 23 '<li id="menu-option-1">Option 1</li>' + |
| 24 '</ul>' + | 24 '</ul>' + |
| 25 '</span>'; | 25 '</span>'; |
| 26 onShow = /** @type {(sinon.Spy|function():void)} */ (sinon.spy()); | 26 onShow = /** @type {(sinon.Spy|function():void)} */ (sinon.spy()); |
| 27 onHide = /** @type {(sinon.Spy|function():void)} */ (sinon.spy()); | 27 onHide = /** @type {(sinon.Spy|function():void)} */ (sinon.spy()); |
| 28 menuButton = new remoting.MenuButton( | 28 menuButton = new remoting.MenuButton( |
| 29 document.getElementById('menu-button-container'), | 29 document.getElementById('menu-button-container'), |
| 30 /** @type {function():void} */ (onShow), | 30 /** @type {function():void} */ (onShow), |
| 31 /** @type {function():void} */ (onHide)); | 31 /** @type {function():void} */ (onHide)); |
| 32 }, | 32 }, |
| 33 teardown: function() { | 33 afterEach: function() { |
| 34 onShow = null; | 34 onShow = null; |
| 35 onHide = null; | 35 onHide = null; |
| 36 menuButton = null; | 36 menuButton = null; |
| 37 } | 37 } |
| 38 }); | 38 }); |
| 39 | 39 |
| 40 test('should display on click', function() { | 40 QUnit.test('should display on click', function() { |
| 41 var menu = menuButton.menu(); | 41 var menu = menuButton.menu(); |
| 42 ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); | 42 QUnit.ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); |
| 43 menuButton.button().click(); | 43 menuButton.button().click(); |
| 44 ok(menu.offsetWidth != 0 && menu.offsetHeight != 0); | 44 QUnit.ok(menu.offsetWidth != 0 && menu.offsetHeight != 0); |
| 45 }); | 45 }); |
| 46 | 46 |
| 47 test('should dismiss when the menu is clicked', function() { | 47 QUnit.test('should dismiss when the menu is clicked', function() { |
| 48 var menu = menuButton.menu(); | 48 var menu = menuButton.menu(); |
| 49 menuButton.button().click(); | 49 menuButton.button().click(); |
| 50 menu.click(); | 50 menu.click(); |
| 51 ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); | 51 QUnit.ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); |
| 52 }); | 52 }); |
| 53 | 53 |
| 54 test('should dismiss when anything outside the menu is clicked', function() { | 54 QUnit.test('should dismiss when anything outside the menu is clicked', |
| 55 function() { |
| 55 var menu = menuButton.menu(); | 56 var menu = menuButton.menu(); |
| 56 menuButton.button().click(); | 57 menuButton.button().click(); |
| 57 var x = menu.offsetRight + 1; | 58 var x = menu.offsetRight + 1; |
| 58 var y = menu.offsetBottom + 1; | 59 var y = menu.offsetBottom + 1; |
| 59 var notMenu = document.elementFromPoint(x, y); | 60 var notMenu = document.elementFromPoint(x, y); |
| 60 base.debug.assert(notMenu != menu); | 61 base.debug.assert(notMenu != menu); |
| 61 notMenu.click(); | 62 notMenu.click(); |
| 62 ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); | 63 QUnit.ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); |
| 63 }); | 64 }); |
| 64 | 65 |
| 65 test('should dismiss when menu item is clicked', function() { | 66 QUnit.test('should dismiss when menu item is clicked', function() { |
| 66 var menu = menuButton.menu(); | 67 var menu = menuButton.menu(); |
| 67 menuButton.button().click(); | 68 menuButton.button().click(); |
| 68 var element = document.getElementById('menu-option-1'); | 69 var element = document.getElementById('menu-option-1'); |
| 69 element.click(); | 70 element.click(); |
| 70 ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); | 71 QUnit.ok(menu.offsetWidth == 0 && menu.offsetHeight == 0); |
| 71 }); | 72 }); |
| 72 | 73 |
| 73 test('should invoke callbacks', function() { | 74 QUnit.test('should invoke callbacks', function() { |
| 74 ok(!onShow.called); | 75 QUnit.ok(!onShow.called); |
| 75 menuButton.button().click(); | 76 menuButton.button().click(); |
| 76 ok(onShow.called); | 77 QUnit.ok(onShow.called); |
| 77 ok(!onHide.called); | 78 QUnit.ok(!onHide.called); |
| 78 menuButton.menu().click(); | 79 menuButton.menu().click(); |
| 79 ok(onHide.called); | 80 QUnit.ok(onHide.called); |
| 80 }); | 81 }); |
| 81 | 82 |
| 82 test('select method should set/unset background image', function() { | 83 QUnit.test('select method should set/unset background image', function() { |
| 83 var element = document.getElementById('menu-option-1'); | 84 var element = document.getElementById('menu-option-1'); |
| 84 var style = window.getComputedStyle(element); | 85 var style = window.getComputedStyle(element); |
| 85 ok(style.backgroundImage == 'none'); | 86 QUnit.ok(style.backgroundImage == 'none'); |
| 86 remoting.MenuButton.select(element, true); | 87 remoting.MenuButton.select(element, true); |
| 87 style = window.getComputedStyle(element); | 88 style = window.getComputedStyle(element); |
| 88 ok(style.backgroundImage != 'none'); | 89 QUnit.ok(style.backgroundImage != 'none'); |
| 89 remoting.MenuButton.select(element, false); | 90 remoting.MenuButton.select(element, false); |
| 90 style = window.getComputedStyle(element); | 91 style = window.getComputedStyle(element); |
| 91 ok(style.backgroundImage == 'none'); | 92 QUnit.ok(style.backgroundImage == 'none'); |
| 92 }); | 93 }); |
| 93 | 94 |
| 94 }()); | 95 }()); |
| OLD | NEW |