diff -r 000000000000 -r 6474c204b198 browser/devtools/styleinspector/test/browser_computedview_style-editor-link.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/styleinspector/test/browser_computedview_style-editor-link.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,114 @@ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test the links from the computed view to the style editor + +const STYLESHEET_URL = "data:text/css,"+encodeURIComponent( + [".highlight {", + "color: blue", + "}"].join("\n")); + +const DOCUMENT_URL = "data:text/html,"+encodeURIComponent( + ['' + + '' + + 'Computed view style editor link test', + '
', + '', + '', + '', + '', + '

Some header text

', + '

hi.

', + '

I am a test-case. This text exists ', + 'solely to provide some things to ', + '', + 'highlight and count ', + 'style list-items in the box at right. If you are reading this, ', + 'you should go do something else instead. Maybe read a book. Or better ', + 'yet, write some test-cases for another bit of code. ', + 'some text

', + '

more text

', + '

even more text

', + '
', + '', + ''].join("\n")); + +let test = asyncTest(function*() { + yield addTab(DOCUMENT_URL); + + info("Opening the computed-view"); + let {toolbox, inspector, view} = yield openComputedView(); + + info("Selecting the test node"); + yield selectNode("span", inspector); + + yield testInlineStyle(view, inspector); + yield testInlineStyleSheet(view, toolbox); + yield testExternalStyleSheet(view, toolbox); +}); + +function* testInlineStyle(view, inspector) { + info("Testing inline style"); + + yield expandComputedViewPropertyByIndex(view, inspector, 0); + + let onWindow = waitForWindow(); + info("Clicking on the first rule-link in the computed-view"); + let link = getComputedViewLinkByIndex(view, 0); + link.click(); + + let win = yield onWindow; + + let windowType = win.document.documentElement.getAttribute("windowtype"); + is(windowType, "navigator:view-source", "View source window is open"); + info("Closing window"); + win.close(); +} + +function* testInlineStyleSheet(view, toolbox) { + info("Testing inline stylesheet"); + + info("Listening for toolbox switch to the styleeditor"); + let onSwitch = waitForStyleEditor(toolbox); + + info("Clicking an inline stylesheet"); + let link = getComputedViewLinkByIndex(view, 2); + link.click(); + let editor = yield onSwitch; + + ok(true, "Switched to the style-editor panel in the toolbox"); + + validateStyleEditorSheet(editor, 0); +} + +function* testExternalStyleSheet(view, toolbox) { + info("Testing external stylesheet"); + + info("Waiting for the stylesheet editor to be selected"); + let panel = toolbox.getCurrentPanel(); + let onSelected = panel.UI.once("editor-selected"); + + info("Switching back to the inspector panel in the toolbox"); + yield toolbox.selectTool("inspector"); + + info("Clicking on an external stylesheet link"); + let link = getComputedViewLinkByIndex(view, 1); + link.click(); + let editor = yield onSelected; + + is(toolbox.currentToolId, "styleeditor", "The style editor is selected again"); + validateStyleEditorSheet(editor, 1); +} + +function validateStyleEditorSheet(editor, expectedSheetIndex) { + info("Validating style editor stylesheet"); + let sheet = content.document.styleSheets[expectedSheetIndex]; + is(editor.styleSheet.href, sheet.href, "loaded stylesheet matches document stylesheet"); +}