blob: 616ccd7bdfcaf36ce4434ee27a550c6fff7ccab1 [file] [log] [blame]
<!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>