| <!DOCTYPE html> |
| <html> |
| <body> |
| <div id="editor" contenteditable><br></div> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script> |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| function config(config) { |
| editor.textContent = ''; |
| internals.setContinuousSpellCheckingEnabled(config.continuousSpellchecking); |
| internals.setAutomaticQuoteSubstitutionEnabled(config.smartQuote); |
| internals.setAutomaticLinkDetectionEnabled(config.smartLink); |
| internals.setAutomaticDashSubstitutionEnabled(config.smartDash); |
| internals.setAutomaticTextReplacementEnabled(config.textReplacement); |
| internals.setAutomaticSpellingCorrectionEnabled(config.autocorrection); |
| } |
| |
| function type(text) { |
| document.execCommand('InsertText', false, text); |
| } |
| |
| function tryAllCombinations(configOptions, config) { |
| if (!configOptions.length) { |
| debug(''); |
| evalAndLog('config(' + JSON.stringify(config) + ')'); |
| shouldBe('type("We\'re"); type(" "); type("good"); editor.textContent', '"We\u2019re good"'); |
| return; |
| } |
| var firstConfigOption = configOptions[0]; |
| var remainingOptions = configOptions.slice(1); |
| config[firstConfigOption] = true; |
| tryAllCombinations(remainingOptions, config); |
| |
| config[firstConfigOption] = false; |
| tryAllCombinations(remainingOptions, config); |
| } |
| |
| var editor = document.getElementById('editor'); |
| editor.focus(); |
| |
| if (!window.internals) |
| testFailed("This test requires internals to be ran manually. To test manually, type \"We're good\" with all combinations of spellchecking and substitutions options."); |
| else |
| tryAllCombinations(['continuousSpellchecking', 'smartLink', 'smartDash', 'textReplacement', 'autocorrection'], {smartQuote: true}); |
| |
| </script> |
| </body> |
| </html> |