blob: df7bd601b6f04233762bc28c4686d9af053e8c06 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2013 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="/ui/extras/about_tracing/record_selection_dialog.html">
<link rel="import" href="/base/settings.html">
<link rel="import" href="/core/test_utils.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() { // @suppress longLineCheck
test('instantitate', function() {
var categories = [];
for (var i = 0; i < 30; i++)
categories.push('cat-' + i);
for (var i = 0; i < 20; i++)
categories.push('disabled-by-default-cat-' + i);
categories.push('really-really-really-really-really-really-very-loong-cat');
categories.push('first,second,third');
categories.push('cc,disabled-by-default-cc.debug');
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = categories;
dlg.settings_key = 'key';
dlg.currentlyChosenPreset = [];
var showButton = document.createElement('button');
showButton.textContent = 'Show record selection dialog';
showButton.addEventListener('click', function(e) {
dlg.visible = true;
e.stopPropagation();
});
this.addHTMLOutput(showButton);
});
test('recordSelectionDialog_splitCategories', function() {
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories =
['cc,disabled-by-default-one,cc.debug', 'two,three', 'three'];
dlg.settings_key = 'key';
dlg.currentlyChosenPreset = [];
dlg.updateForm_();
var expected =
['"cc"', '"cc.debug"', '"disabled-by-default-one"', '"three"', '"two"'];
var labels = dlg.querySelectorAll('.categories input');
var results = [];
for (var i = 0; i < labels.length; i++) {
results.push('"' + labels[i].value + '"');
}
results = results.sort();
assert.deepEqual(results, expected);
});
test('recordSelectionDialog_UpdateForm_NoSettings', function() {
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-one', 'two', 'three'];
dlg.settings_key = 'key';
dlg.currentlyChosenPreset = [];
dlg.updateForm_();
var checkboxes = dlg.querySelectorAll('.categories input');
assert.equal(checkboxes.length, 3);
assert.equal(checkboxes[0].id, 'three');
assert.equal(checkboxes[0].value, 'three');
assert.isTrue(checkboxes[0].checked);
assert.equal(checkboxes[1].id, 'two');
assert.equal(checkboxes[1].value, 'two');
assert.isTrue(checkboxes[1].checked);
assert.equal(checkboxes[2].id, 'disabled-by-default-one');
assert.equal(checkboxes[2].value, 'disabled-by-default-one');
assert.isFalse(checkboxes[2].checked);
assert.equal(dlg.categoryFilter(), '');
var labels = dlg.querySelectorAll('.categories label');
assert.equal(labels.length, 3);
assert.equal(labels[0].textContent, 'three');
assert.equal(labels[1].textContent, 'two');
assert.equal(labels[2].textContent, 'one');
});
test('recordSelectionDialog_UpdateForm_Settings', function() {
tr.b.Settings.set('two', true, 'categories');
tr.b.Settings.set('three', false, 'categories');
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-one'];
dlg.settings_key = 'categories';
dlg.currentlyChosenPreset = [];
dlg.updateForm_();
var checkboxes = dlg.querySelectorAll('.categories input');
assert.equal(checkboxes.length, 3);
assert.equal(checkboxes[0].id, 'three');
assert.equal(checkboxes[0].value, 'three');
assert.isFalse(checkboxes[0].checked);
assert.equal(checkboxes[1].id, 'two');
assert.equal(checkboxes[1].value, 'two');
assert.isTrue(checkboxes[1].checked);
assert.equal(checkboxes[2].id, 'disabled-by-default-one');
assert.equal(checkboxes[2].value, 'disabled-by-default-one');
assert.isFalse(checkboxes[2].checked);
assert.equal(dlg.categoryFilter(), '-three');
var labels = dlg.querySelectorAll('.categories label');
assert.equal(labels.length, 3);
assert.equal(labels[0].textContent, 'three');
assert.equal(labels[1].textContent, 'two');
assert.equal(labels[2].textContent, 'one');
});
test('recordSelectionDialog_UpdateForm_DisabledByDefault', function() {
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-bar', 'baz'];
dlg.settings_key = 'categories';
dlg.currentlyChosenPreset = [];
dlg.updateForm_();
assert.equal(dlg.categoryFilter(), '');
var inputs =
dlg.querySelector('input#disabled-by-default-bar').click();
assert.equal(dlg.categoryFilter(), 'disabled-by-default-bar');
assert.isFalse(
tr.b.Settings.get('disabled-by-default-foo', false, 'categories'));
});
test('selectAll', function() {
tr.b.Settings.set('two', true, 'categories');
tr.b.Settings.set('three', false, 'categories');
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-one'];
dlg.settings_key = 'categories';
dlg.currentlyChosenPreset = [];
dlg.updateForm_();
});
test('selectNone', function() {
tr.b.Settings.set('two', true, 'categories');
tr.b.Settings.set('three', false, 'categories');
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-one'];
dlg.settings_key = 'categories';
dlg.currentlyChosenPreset = [];
dlg.updateForm_();
// Enables the three option, two already enabled.
dlg.querySelector('.default-enabled-categories .all-btn').click();
assert.equal(dlg.categoryFilter(), '');
assert.isTrue(tr.b.Settings.get('three', false, 'categories'));
// Disables three and two.
dlg.querySelector('.default-enabled-categories .none-btn').click();
assert.equal(dlg.categoryFilter(), '-three,-two');
assert.isFalse(tr.b.Settings.get('two', false, 'categories'));
assert.isFalse(tr.b.Settings.get('three', false, 'categories'));
// Turn categories back on so they can be ignored.
dlg.querySelector('.default-enabled-categories .all-btn').click();
// Enables disabled category.
dlg.querySelector('.default-disabled-categories .all-btn').click();
assert.equal(dlg.categoryFilter(), 'disabled-by-default-one');
assert.isTrue(
tr.b.Settings.get('disabled-by-default-one', false, 'categories'));
// Turn disabled by default back off.
dlg.querySelector('.default-disabled-categories .none-btn').click();
assert.equal(dlg.categoryFilter(), '');
assert.isFalse(
tr.b.Settings.get('disabled-by-default-one', false, 'categories'));
});
test('recordSelectionDialog_noPreset', function() {
tr.b.Settings.set('about_tracing.record_selection_dialog_preset', []);
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
assert.isFalse(dlg.usingPreset_());
});
test('recordSelectionDialog_defaultPreset', function() {
tr.b.Settings.set('two', true, 'categories');
tr.b.Settings.set('three', false, 'categories');
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-one'];
dlg.settings_key = 'categories';
// Note: currentlyChosenPreset is not set here, so the default is used.
dlg.updateForm_();
// Make sure the default filter is returned.
assert.equal(dlg.categoryFilter(), '-three,-two');
// Make sure the default tracing types are returned.
assert.equal(dlg.tracingRecordMode, 'record-until-full');
assert.isTrue(dlg.useSystemTracing);
assert.isFalse(dlg.useSampling);
// Make sure the manual settings are not visible.
var classList = dlg.categoriesView_.classList;
assert.isTrue(classList.contains('categories-column-view-hidden'));
// Verify manual settings do not modify the checkboxes.
var checkboxes = dlg.querySelectorAll('.categories input');
assert.equal(checkboxes.length, 3);
assert.equal(checkboxes[0].id, 'three');
assert.equal(checkboxes[0].value, 'three');
assert.isFalse(checkboxes[0].checked);
assert.equal(checkboxes[1].id, 'two');
assert.equal(checkboxes[1].value, 'two');
assert.isTrue(checkboxes[1].checked);
assert.equal(checkboxes[2].id, 'disabled-by-default-one');
assert.equal(checkboxes[2].value, 'disabled-by-default-one');
assert.isFalse(checkboxes[2].checked);
});
test('recordSelectionDialog_changePresets', function() {
tr.b.Settings.set('two', true, 'categories');
tr.b.Settings.set('three', false, 'categories');
tr.b.Settings.set('disabled-by-default-cc.debug', true, 'categories');
tr.b.Settings.set('recordSelectionDialog.tracingRecordMode',
'record-as-much-as-possible');
tr.b.Settings.set('recordSelectionDialog.useSystemTracing', true);
tr.b.Settings.set('recordSelectionDialog.useSampling', false);
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-one'];
dlg.settings_key = 'categories';
// Note: currentlyChosenPreset is not set here, so the default is used.
dlg.updateForm_();
// Preset mode is on.
assert.isTrue(dlg.usingPreset_());
// Make sure the default filter is returned.
assert.equal(dlg.categoryFilter(),
'-three,-two');
// Make sure the default tracing types are returned.
assert.equal(dlg.tracingRecordMode, 'record-as-much-as-possible');
assert.isTrue(dlg.useSystemTracing);
assert.isFalse(dlg.useSampling);
// Make sure the manual settings are not visible.
var classList = dlg.categoriesView_.classList;
assert.isTrue(classList.contains('categories-column-view-hidden'));
// Switch to manual settings and verify the default values are not returned.
dlg.currentlyChosenPreset = [];
// Preset mode is off.
assert.isFalse(dlg.usingPreset_());
// Make sure the default filter is returned.
assert.equal(dlg.categoryFilter(), '-three,disabled-by-default-cc.debug');
// Make sure the tracing types set by catalog are returned.
assert.equal(dlg.tracingRecordMode, 'record-as-much-as-possible');
assert.isTrue(dlg.useSystemTracing);
assert.isFalse(dlg.useSampling);
assert.isFalse(classList.contains('categories-column-view-hidden'));
// Switch to the graphics, rendering, and rasterization preset.
dlg.currentlyChosenPreset = ['blink', 'cc', 'renderer',
'disabled-by-default-cc.debug'];
assert.equal(dlg.categoryFilter(),
'disabled-by-default-cc.debug,-three,-two');
});
test('recordSelectionDialog_savedPreset', function() {
tr.b.Settings.set('two', true, 'categories');
tr.b.Settings.set('three', false, 'categories');
tr.b.Settings.set('recordSelectionDialog.tracingRecordMode',
'record-continuously');
tr.b.Settings.set('recordSelectionDialog.useSystemTracing', true);
tr.b.Settings.set('recordSelectionDialog.useSampling', true);
tr.b.Settings.set('tr.ui.e.about_tracing.record_selection_dialog_preset',
['blink', 'cc', 'renderer', 'cc.debug']);
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.categories = ['disabled-by-default-one'];
dlg.settings_key = 'categories';
dlg.updateForm_();
// Make sure the correct filter is returned.
assert.equal(dlg.categoryFilter(), '-three,-two');
// Make sure the correct tracing types are returned.
assert.equal(dlg.tracingRecordMode, 'record-continuously');
assert.isTrue(dlg.useSystemTracing);
assert.isTrue(dlg.useSampling);
// Make sure the manual settings are not visible.
var classList = dlg.categoriesView_.classList;
assert.isTrue(classList.contains('categories-column-view-hidden'));
// Switch to manual settings and verify the default values are not returned.
dlg.currentlyChosenPreset = [];
assert.equal(dlg.categoryFilter(), '-three');
assert.equal(dlg.tracingRecordMode, 'record-continuously');
assert.isTrue(dlg.useSystemTracing);
assert.isTrue(dlg.useSampling);
assert.isFalse(classList.contains('categories-column-view-hidden'));
});
test('recordSelectionDialog_categoryFilters', function() {
tr.b.Settings.set('default1', true, 'categories');
tr.b.Settings.set('disabled1', false, 'categories');
tr.b.Settings.set('disabled-by-default-cc.disabled2', false, 'categories');
tr.b.Settings.set('input', true, 'categories');
tr.b.Settings.set('blink', true, 'categories');
tr.b.Settings.set('cc', false, 'categories');
tr.b.Settings.set('disabled-by-default-cc.debug', true, 'categories');
var dlg = new tr.ui.e.about_tracing.RecordSelectionDialog();
dlg.settings_key = 'categories';
dlg.categories = [];
dlg.currentlyChosenPreset = [];
dlg.updateForm_();
assert.equal(dlg.categoryFilter(),
'-cc,-disabled1,disabled-by-default-cc.debug');
// Switch to the graphics, rendering, and rasterization preset.
dlg.currentlyChosenPreset = ['blink', 'cc', 'renderer',
'disabled-by-default-cc.debug'];
assert.equal(dlg.categoryFilter(),
'-default1,disabled-by-default-cc.debug,-disabled1,-input');
});
});
</script>