blob: 2a22274c15f742ee52f37b38a61769deb23e44c6 [file] [log] [blame]
// Copyright 2017 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.
(async function() {
TestRunner.addResult(`Tests history saving logic in TabbedEditorContainer.\n`);
await TestRunner.loadModule('sources_test_runner');
function dumpHistory(history) {
TestRunner.addResult(' history = ' + JSON.stringify(history._serializeToObject()) + '');
}
function updateScrollAndSelectionAndDump(history, url, scrollLineNumber, selection) {
history.updateScrollLineNumber(url, scrollLineNumber);
history.updateSelectionRange(url, selection);
dumpHistory(history);
}
function updateAndDump(history, urls) {
history.update(urls);
dumpHistory(history);
}
function removeAndDump(history, url) {
history.remove(url);
dumpHistory(history);
}
function url(index) {
return 'url_' + index;
}
var history = new Sources.TabbedEditorContainer.History([]);
dumpHistory(history);
// Emulate opening of several tabs.
updateAndDump(history, [url(1)]);
updateAndDump(history, [url(2), url(1)]);
updateAndDump(history, [url(3), url(2), url(1)]);
// Emulate switching between tabs.
updateAndDump(history, [url(2), url(3), url(1)]);
updateAndDump(history, [url(1), url(2), url(3)]);
// Emulate opening of several tabs from another page.
updateAndDump(history, [url(11)]);
updateAndDump(history, [url(12), url(11)]);
updateAndDump(history, [url(13), url(12), url(11)]);
// ... and switching between them.
updateAndDump(history, [url(12), url(13), url(11)]);
updateAndDump(history, [url(11), url(12), url(13)]);
updateScrollAndSelectionAndDump(history, url(11), 10, new TextUtils.TextRange(15, 5, 15, 10));
// Now close some tabs.
removeAndDump(history, url(11));
removeAndDump(history, url(13));
// Now open some other instead of them.
updateAndDump(history, [url(14), url(12)]);
updateAndDump(history, [url(15), url(14), url(12)]);
updateAndDump(history, [url(16), url(15), url(14), url(12)]);
// Close all of them one by one.
removeAndDump(history, url(16));
removeAndDump(history, url(15));
removeAndDump(history, url(14));
removeAndDump(history, url(12));
removeAndDump(history, url(1));
removeAndDump(history, url(2));
removeAndDump(history, url(3));
TestRunner.completeTest();
})();