From 77dcbd9858106bf88c1b004a1044ec244b2a4818 Mon Sep 17 00:00:00 2001 From: Rob Campbell Date: Mon, 3 Oct 2011 12:08:48 -0300 Subject: [PATCH] Bug 690361 - Switching tabs re-enables the highlighter; r=dcamp --- browser/devtools/highlighter/test/Makefile.in | 1 + .../test/browser_inspector_bug_690361.js | 139 ++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 browser/devtools/highlighter/test/browser_inspector_bug_690361.js diff --git a/browser/devtools/highlighter/test/Makefile.in b/browser/devtools/highlighter/test/Makefile.in index 01e5c4a5c06..a778e5c160a 100644 --- a/browser/devtools/highlighter/test/Makefile.in +++ b/browser/devtools/highlighter/test/Makefile.in @@ -60,6 +60,7 @@ _BROWSER_FILES = \ browser_inspector_editor.js \ browser_inspector_bug_566084_location_changed.js \ browser_inspector_infobar.js \ + browser_inspector_bug_690361.js \ $(NULL) # Disabled due to constant failures diff --git a/browser/devtools/highlighter/test/browser_inspector_bug_690361.js b/browser/devtools/highlighter/test/browser_inspector_bug_690361.js new file mode 100644 index 00000000000..7dd36b11ab5 --- /dev/null +++ b/browser/devtools/highlighter/test/browser_inspector_bug_690361.js @@ -0,0 +1,139 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Inspector Initialization and Shutdown Tests. + * + * The Initial Developer of the Original Code is + * The Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2011 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Rob Campbell + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +let doc; +let salutation; +let closing; + +function createDocument() +{ + doc.body.innerHTML = '
\n' + + '

Some header text

\n' + + '

hi.

\n' + + '

I am a test-case. This text exists ' + + 'solely to provide some things to test the inspector initialization.

\n' + + '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. ' + + 'Maybe more inspector test-cases!

\n' + + '

end transmission

\n' + + '
'; + doc.title = "Inspector Opening and Closing Test"; + startInspectorTests(); +} + +function startInspectorTests() +{ + ok(InspectorUI, "InspectorUI variable exists"); + Services.obs.addObserver(runInspectorTests, + InspectorUI.INSPECTOR_NOTIFICATIONS.OPENED, false); + InspectorUI.toggleInspectorUI(); +} + +function runInspectorTests() +{ + Services.obs.removeObserver(runInspectorTests, + InspectorUI.INSPECTOR_NOTIFICATIONS.OPENED); + Services.obs.addObserver(closeInspectorTests, + InspectorUI.INSPECTOR_NOTIFICATIONS.CLOSED, false); + + ok(InspectorUI.toolbar, "we have the toolbar."); + ok(!InspectorUI.toolbar.hidden, "toolbar is visible"); + ok(InspectorUI.inspecting, "Inspector is inspecting"); + ok(!InspectorUI.treePanel.isOpen(), "Inspector Tree Panel is not open"); + ok(InspectorUI.highlighter, "Highlighter is up"); + + salutation = doc.getElementById("salutation"); + InspectorUI.inspectNode(salutation); + + let button = document.getElementById("highlighter-close-button"); + button.click(); +} + +function closeInspectorTests() +{ + Services.obs.removeObserver(closeInspectorTests, + InspectorUI.INSPECTOR_NOTIFICATIONS.CLOSED); + Services.obs.addObserver(inspectorOpenedTrap, + InspectorUI.INSPECTOR_NOTIFICATIONS.OPENED, false); + + ok(!InspectorUI.isInspectorOpen, "Inspector Tree Panel is not open"); + + gBrowser.selectedTab = gBrowser.addTab(); + gBrowser.selectedBrowser.addEventListener("load", function() { + gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); + gBrowser.removeCurrentTab(); + }, true); + + gBrowser.tabContainer.addEventListener("TabSelect", finishInspectorTests, false); +} + +function inspectorOpenedTrap() +{ + ok(false, "Inspector opened! Should not have done so."); + InspectorUI.closeInspectorUI(false); +} + +function finishInspectorTests() +{ + gBrowser.tabContainer.removeEventListener("TabSelect", finishInspectorTests, false); + + Services.obs.removeObserver(inspectorOpenedTrap, + InspectorUI.INSPECTOR_NOTIFICATIONS.OPENED); + + requestLongerTimeout(4); // give the inspector a chance to open + executeSoon(function() { + gBrowser.removeCurrentTab(); + finish(); + }); +} + +function test() +{ + waitForExplicitFinish(); + gBrowser.selectedTab = gBrowser.addTab(); + gBrowser.selectedBrowser.addEventListener("load", function() { + gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); + doc = content.document; + waitForFocus(createDocument, content); + }, true); + + content.location = "data:text/html,basic tests for inspector"; +} +