1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 tvcm.require('tvcm.settings');
8 tvcm.require('tracing.test_utils');
9 tvcm.require('tracing.record_selection_dialog');
11 tvcm.unittest.testSuite('tracing.record_selection_dialog_test', function() {
12 test('instantitate', function() {
14 for (var i = 0; i < 30; i++)
15 categories.push('cat-' + i);
16 for (var i = 0; i < 20; i++)
17 categories.push('disabled-by-default-cat-' + i);
18 categories.push('really-really-really-really-really-really-very-loong-cat');
20 var dlg = new tracing.RecordSelectionDialog();
21 dlg.categories = categories;
22 dlg.settings_key = 'key';
24 var showButton = document.createElement('button');
25 showButton.textContent = 'Show record selection dialog';
26 showButton.addEventListener('click', function(e) {
30 this.addHTMLOutput(showButton);
33 test('recordSelectionDialog_UpdateForm_NoSettings', function() {
34 var dlg = new tracing.RecordSelectionDialog();
35 dlg.categories = ['disabled-by-default-one', 'two', 'three'];
36 dlg.settings_key = 'key';
39 var checkboxes = dlg.getElementsByTagName('input');
40 assertEquals(3, checkboxes.length);
41 assertEquals('three', checkboxes[0].id);
42 assertEquals('three', checkboxes[0].value);
43 assertEquals(true, checkboxes[0].checked);
44 assertEquals('two', checkboxes[1].id);
45 assertEquals('two', checkboxes[1].value);
46 assertEquals(true, checkboxes[1].checked);
47 assertEquals('disabled-by-default-one', checkboxes[2].id);
48 assertEquals('disabled-by-default-one', checkboxes[2].value);
49 assertEquals(false, checkboxes[2].checked);
51 assertEquals('', dlg.categoryFilter());
53 var labels = dlg.getElementsByTagName('label');
54 assertEquals(3, labels.length);
55 assertEquals('three', labels[0].textContent);
56 assertEquals('two', labels[1].textContent);
57 assertEquals('one', labels[2].textContent);
60 test('recordSelectionDialog_UpdateForm_Settings', function() {
61 tvcm.Settings.set('two', true, 'categories');
62 tvcm.Settings.set('three', false, 'categories');
64 var dlg = new tracing.RecordSelectionDialog();
65 dlg.categories = ['disabled-by-default-one'];
66 dlg.settings_key = 'categories';
69 var checkboxes = dlg.getElementsByTagName('input');
70 assertEquals(3, checkboxes.length);
71 assertEquals('three', checkboxes[0].id);
72 assertEquals('three', checkboxes[0].value);
73 assertEquals(false, checkboxes[0].checked);
74 assertEquals('two', checkboxes[1].id);
75 assertEquals('two', checkboxes[1].value);
76 assertEquals(true, checkboxes[1].checked);
77 assertEquals('disabled-by-default-one', checkboxes[2].id);
78 assertEquals('disabled-by-default-one', checkboxes[2].value);
79 assertEquals(false, checkboxes[2].checked);
81 assertEquals('-three', dlg.categoryFilter());
83 var labels = dlg.getElementsByTagName('label');
84 assertEquals(3, labels.length);
85 assertEquals('three', labels[0].textContent);
86 assertEquals('two', labels[1].textContent);
87 assertEquals('one', labels[2].textContent);
90 test('recordSelectionDialog_UpdateForm_DisabledByDefault', function() {
91 var dlg = new tracing.RecordSelectionDialog();
92 dlg.categories = ['disabled-by-default-bar', 'baz'];
93 dlg.settings_key = 'categories';
96 assertEquals('', dlg.categoryFilter());
99 dlg.querySelector('input#disabled-by-default-bar').click();
101 assertEquals('disabled-by-default-bar', dlg.categoryFilter());
104 tvcm.Settings.get('disabled-by-default-foo', false, 'categories'));
107 test('selectAll', function() {
108 tvcm.Settings.set('two', true, 'categories');
109 tvcm.Settings.set('three', false, 'categories');
111 var dlg = new tracing.RecordSelectionDialog();
112 dlg.categories = ['disabled-by-default-one'];
113 dlg.settings_key = 'categories';
117 test('selectNone', function() {
118 tvcm.Settings.set('two', true, 'categories');
119 tvcm.Settings.set('three', false, 'categories');
121 var dlg = new tracing.RecordSelectionDialog();
122 dlg.categories = ['disabled-by-default-one'];
123 dlg.settings_key = 'categories';
126 // Enables the three option, two already enabled.
127 dlg.querySelector('.default-enabled-categories .all-btn').click();
128 assertEquals('', dlg.categoryFilter());
129 assertEquals(true, tvcm.Settings.get('three', false, 'categories'));
131 // Disables three and two.
132 dlg.querySelector('.default-enabled-categories .none-btn').click();
133 assertEquals('-three,-two', dlg.categoryFilter());
134 assertEquals(false, tvcm.Settings.get('two', false, 'categories'));
135 assertEquals(false, tvcm.Settings.get('three', false, 'categories'));
137 // Turn categories back on so they can be ignored.
138 dlg.querySelector('.default-enabled-categories .all-btn').click();
140 // Enables disabled category.
141 dlg.querySelector('.default-disabled-categories .all-btn').click();
142 assertEquals('disabled-by-default-one', dlg.categoryFilter());
144 tvcm.Settings.get('disabled-by-default-one', false, 'categories'));
146 // Turn disabled by default back off.
147 dlg.querySelector('.default-disabled-categories .none-btn').click();
148 assertEquals('', dlg.categoryFilter());
150 tvcm.Settings.get('disabled-by-default-one', false, 'categories'));