3 Copyright (c) 2014 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/analysis/toggle_container.html">
13 tv.unittest.testSuite(function() {
14 var THIS_DOC = document._currentScript.ownerDocument;
16 test('instantiateVisibleProperty', function() {
17 var container = THIS_DOC.createElement('div');
18 var firstToggleContainer = new TracingAnalysisToggleContainer();
19 var secondToggleContainer = new TracingAnalysisToggleContainer();
20 var defaultSettingsToggleContainer = new TracingAnalysisToggleContainer();
22 var visibleChild = THIS_DOC.createElement('div');
23 var hiddenChild = THIS_DOC.createElement('div');
24 var defaultHiddenChild = THIS_DOC.createElement('div');
26 var button1 = THIS_DOC.createElement('button');
27 button1.textContent = '1: Toggle Visibility';
29 var button2 = THIS_DOC.createElement('button');
30 button2.textContent = '2: Toggle Visibility';
32 var button3 = THIS_DOC.createElement('button');
33 button3.textContent = '3: Toggle Visibility';
35 var buttonToggleAll = THIS_DOC.createElement('button');
36 buttonToggleAll.textContent = 'Toggle All';
38 visibleChild.textContent = '1: Should be visible';
39 hiddenChild.textContent = '2: Should not be visible';
40 defaultHiddenChild.textContent = '3: Should also not be visible';
42 firstToggleContainer.visible = true;
43 secondToggleContainer.visible = false;
44 // Default toggle container should have default visibility set to false.
46 firstToggleContainer.appendChild(visibleChild);
47 secondToggleContainer.appendChild(hiddenChild);
48 defaultSettingsToggleContainer.appendChild(defaultHiddenChild);
50 container.appendChild(button1);
51 container.appendChild(button2);
52 container.appendChild(button3);
53 container.appendChild(buttonToggleAll);
54 container.appendChild(firstToggleContainer);
55 container.appendChild(secondToggleContainer);
56 container.appendChild(defaultSettingsToggleContainer);
58 firstToggleContainer.setToggleListener(button1, 'click');
59 secondToggleContainer.setToggleListener(button2, 'click');
60 defaultSettingsToggleContainer.setToggleListener(button3, 'click');
62 firstToggleContainer.setToggleListener(buttonToggleAll, 'click');
63 secondToggleContainer.setToggleListener(buttonToggleAll, 'click');
64 defaultSettingsToggleContainer.setToggleListener(buttonToggleAll, 'click');
66 this.addHTMLOutput(container);
69 test('visiblePropertyReflection', function() {
70 var toggleContainer = new TracingAnalysisToggleContainer();
72 assertFalse(toggleContainer.hasAttribute('visible'));
73 toggleContainer.visible = true;
74 assertTrue(toggleContainer.hasAttribute('visible'));
75 toggleContainer.visible = false;
76 assertFalse(toggleContainer.hasAttribute('visible'));
77 toggleContainer.setAttribute('visible', 'true');
78 assertTrue(toggleContainer.visible);
79 toggleContainer.removeAttribute('visible');
80 assertFalse(toggleContainer.visible);
83 test('setAndClearToggleListener', function() {
84 var toggleContainer = new TracingAnalysisToggleContainer();
86 var firstTarget = THIS_DOC.createElement('div');
87 var secondTarget = THIS_DOC.createElement('div');
88 var invalidTarget = THIS_DOC.createElement('div');
89 toggleContainer.setToggleListener(firstTarget, 'click');
90 toggleContainer.setToggleListener(secondTarget, 'click');
92 var clickEvent = new MouseEvent('click', {
98 firstTarget.dispatchEvent(clickEvent);
99 assertTrue(toggleContainer.visible);
101 firstTarget.dispatchEvent(clickEvent);
102 assertFalse(toggleContainer.visible);
104 secondTarget.dispatchEvent(clickEvent);
105 assertTrue(toggleContainer.visible);
107 secondTarget.dispatchEvent(clickEvent);
108 assertFalse(toggleContainer.visible);
110 toggleContainer.clearToggleListener(firstTarget, 'click');
111 firstTarget.dispatchEvent(clickEvent);
112 // This event should not toggle the state.
113 assertFalse(toggleContainer.visible);
115 secondTarget.dispatchEvent(clickEvent);
116 // This event should toggle the state.
117 assertTrue(toggleContainer.visible);
119 toggleContainer.clearToggleListener(invalidTarget, 'click');
120 secondTarget.dispatchEvent(clickEvent);
121 // This event should toggle the state.
122 assertFalse(toggleContainer.visible);
124 toggleContainer.clearToggleListener(secondTarget, 'invalidEventName');
125 secondTarget.dispatchEvent(clickEvent);
126 // This event should toggle the state.
127 assertTrue(toggleContainer.visible);
129 toggleContainer.clearToggleListener(secondTarget, 'click');
130 secondTarget.dispatchEvent(clickEvent);
131 // This event should not toggle the state as we've removed the listener.
132 assertTrue(toggleContainer.visible);