| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2014 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. |
| --> |
| |
| <link rel="import" href="/core/analysis/toggle_container.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tv.b.unittest.testSuite(function() { |
| var THIS_DOC = document._currentScript.ownerDocument; |
| |
| test('instantiateVisibleProperty', function() { |
| var container = THIS_DOC.createElement('div'); |
| var firstToggleContainer = new TracingAnalysisToggleContainer(); |
| var secondToggleContainer = new TracingAnalysisToggleContainer(); |
| var defaultSettingsToggleContainer = new TracingAnalysisToggleContainer(); |
| |
| var visibleChild = THIS_DOC.createElement('div'); |
| var hiddenChild = THIS_DOC.createElement('div'); |
| var defaultHiddenChild = THIS_DOC.createElement('div'); |
| |
| var button1 = THIS_DOC.createElement('button'); |
| button1.textContent = '1: Toggle Visibility'; |
| |
| var button2 = THIS_DOC.createElement('button'); |
| button2.textContent = '2: Toggle Visibility'; |
| |
| var button3 = THIS_DOC.createElement('button'); |
| button3.textContent = '3: Toggle Visibility'; |
| |
| var buttonToggleAll = THIS_DOC.createElement('button'); |
| buttonToggleAll.textContent = 'Toggle All'; |
| |
| visibleChild.textContent = '1: Should be visible'; |
| hiddenChild.textContent = '2: Should not be visible'; |
| defaultHiddenChild.textContent = '3: Should also not be visible'; |
| |
| firstToggleContainer.visible = true; |
| secondToggleContainer.visible = false; |
| // Default toggle container should have default visibility set to false. |
| |
| firstToggleContainer.appendChild(visibleChild); |
| secondToggleContainer.appendChild(hiddenChild); |
| defaultSettingsToggleContainer.appendChild(defaultHiddenChild); |
| |
| container.appendChild(button1); |
| container.appendChild(button2); |
| container.appendChild(button3); |
| container.appendChild(buttonToggleAll); |
| container.appendChild(firstToggleContainer); |
| container.appendChild(secondToggleContainer); |
| container.appendChild(defaultSettingsToggleContainer); |
| |
| firstToggleContainer.setToggleListener(button1, 'click'); |
| secondToggleContainer.setToggleListener(button2, 'click'); |
| defaultSettingsToggleContainer.setToggleListener(button3, 'click'); |
| |
| firstToggleContainer.setToggleListener(buttonToggleAll, 'click'); |
| secondToggleContainer.setToggleListener(buttonToggleAll, 'click'); |
| defaultSettingsToggleContainer.setToggleListener(buttonToggleAll, 'click'); |
| |
| this.addHTMLOutput(container); |
| }); |
| |
| test('visiblePropertyReflection', function() { |
| var toggleContainer = new TracingAnalysisToggleContainer(); |
| |
| assert.isFalse(toggleContainer.hasAttribute('visible')); |
| toggleContainer.visible = true; |
| assert.isTrue(toggleContainer.hasAttribute('visible')); |
| toggleContainer.visible = false; |
| assert.isFalse(toggleContainer.hasAttribute('visible')); |
| toggleContainer.setAttribute('visible', 'true'); |
| assert.isTrue(toggleContainer.visible); |
| toggleContainer.removeAttribute('visible'); |
| assert.isFalse(toggleContainer.visible); |
| }); |
| |
| test('setAndClearToggleListener', function() { |
| var toggleContainer = new TracingAnalysisToggleContainer(); |
| |
| var firstTarget = THIS_DOC.createElement('div'); |
| var secondTarget = THIS_DOC.createElement('div'); |
| var invalidTarget = THIS_DOC.createElement('div'); |
| toggleContainer.setToggleListener(firstTarget, 'click'); |
| toggleContainer.setToggleListener(secondTarget, 'click'); |
| |
| var clickEvent = new MouseEvent('click', { |
| 'view': window, |
| 'bubbles': true, |
| 'cancelable': true |
| }); |
| |
| firstTarget.dispatchEvent(clickEvent); |
| assert.isTrue(toggleContainer.visible); |
| |
| firstTarget.dispatchEvent(clickEvent); |
| assert.isFalse(toggleContainer.visible); |
| |
| secondTarget.dispatchEvent(clickEvent); |
| assert.isTrue(toggleContainer.visible); |
| |
| secondTarget.dispatchEvent(clickEvent); |
| assert.isFalse(toggleContainer.visible); |
| |
| toggleContainer.clearToggleListener(firstTarget, 'click'); |
| firstTarget.dispatchEvent(clickEvent); |
| // This event should not toggle the state. |
| assert.isFalse(toggleContainer.visible); |
| |
| secondTarget.dispatchEvent(clickEvent); |
| // This event should toggle the state. |
| assert.isTrue(toggleContainer.visible); |
| |
| toggleContainer.clearToggleListener(invalidTarget, 'click'); |
| secondTarget.dispatchEvent(clickEvent); |
| // This event should toggle the state. |
| assert.isFalse(toggleContainer.visible); |
| |
| toggleContainer.clearToggleListener(secondTarget, 'invalidEventName'); |
| secondTarget.dispatchEvent(clickEvent); |
| // This event should toggle the state. |
| assert.isTrue(toggleContainer.visible); |
| |
| toggleContainer.clearToggleListener(secondTarget, 'click'); |
| secondTarget.dispatchEvent(clickEvent); |
| // This event should not toggle the state as we've removed the listener. |
| assert.isTrue(toggleContainer.visible); |
| }); |
| }); |
| </script> |